diff mbox series

[v2,01/22] dt-bindings: net: wireless: describe the ath12k AHB module

Message ID 20241015182637.955753-2-quic_rajkbhag@quicinc.com
State New
Headers show
Series wifi: ath12k: add Ath12k AHB driver support for IPQ5332 | expand

Commit Message

Raj Kumar Bhagat Oct. 15, 2024, 6:26 p.m. UTC
Add device-tree bindings for the ATH12K module found in the IPQ5332
device.

Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
---
 .../net/wireless/qcom,ath12k-ahb.yaml         | 293 ++++++++++++++++++
 1 file changed, 293 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/net/wireless/qcom,ath12k-ahb.yaml

Comments

Krzysztof Kozlowski Oct. 16, 2024, 7:02 a.m. UTC | #1
On Tue, Oct 15, 2024 at 11:56:16PM +0530, Raj Kumar Bhagat wrote:
> Add device-tree bindings for the ATH12K module found in the IPQ5332
> device.
> 
> Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
> ---

That's a v2, what changed?

Did you ignore entire review? Limited review follows because of that (I
am not going to do the same work twice).

>  .../net/wireless/qcom,ath12k-ahb.yaml         | 293 ++++++++++++++++++
>  1 file changed, 293 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/net/wireless/qcom,ath12k-ahb.yaml
> 
> diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath12k-ahb.yaml b/Documentation/devicetree/bindings/net/wireless/qcom,ath12k-ahb.yaml
> new file mode 100644
> index 000000000000..54784e396d7e
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath12k-ahb.yaml
> @@ -0,0 +1,293 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +# Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/net/wireless/qcom,ath12k-ahb.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Qualcomm Technologies ath12k wireless devices (AHB)
> +
> +maintainers:
> +  - Kalle Valo <kvalo@kernel.org>
> +  - Jeff Johnson <jjohnson@kernel.org>
> +
> +description:
> +  Qualcomm Technologies IEEE 802.11be AHB devices.
> +
> +properties:
> +  compatible:
> +    enum:
> +      - qcom,ipq5332-wifi
> +
> +  reg:
> +    maxItems: 1
> +
> +  clocks:
> +    items:
> +      - description: XO clock used for copy engine
> +
> +  clock-names:
> +    items:
> +      - const: gcc_xo_clk

Drop _clk, drop gcc_. Look how this clock is called *everywhere* else.

> +
> +  interrupts:
> +    items:
> +      - description: Ready interrupt
> +      - description: Spawn acknowledge interrupt
> +      - description: Stop acknowledge interrupt
> +      - description: misc-pulse1 interrupt events
> +      - description: misc-latch interrupt events
> +      - description: sw exception interrupt events
> +      - description: interrupt event for ring CE0
> +      - description: interrupt event for ring CE1
> +      - description: interrupt event for ring CE2
> +      - description: interrupt event for ring CE3
> +      - description: interrupt event for ring CE4
> +      - description: interrupt event for ring CE5
> +      - description: interrupt event for ring CE6
> +      - description: interrupt event for ring CE7
> +      - description: interrupt event for ring CE8
> +      - description: interrupt event for ring CE9
> +      - description: interrupt event for ring CE10
> +      - description: interrupt event for ring CE11
> +      - description: interrupt event for ring host2wbm-desc-feed
> +      - description: interrupt event for ring host2reo-re-injection
> +      - description: interrupt event for ring host2reo-command
> +      - description: interrupt event for ring host2rxdma-monitor-ring1
> +      - description: interrupt event for ring reo2ost-exception
> +      - description: interrupt event for ring wbm2host-rx-release
> +      - description: interrupt event for ring reo2host-status
> +      - description: interrupt event for ring reo2host-destination-ring4
> +      - description: interrupt event for ring reo2host-destination-ring3
> +      - description: interrupt event for ring reo2host-destination-ring2
> +      - description: interrupt event for ring reo2host-destination-ring1
> +      - description: interrupt event for ring rxdma2host-monitor-destination-mac3
> +      - description: interrupt event for ring rxdma2host-monitor-destination-mac2
> +      - description: interrupt event for ring rxdma2host-monitor-destination-mac1
> +      - description: interrupt event for ring host2rxdma-host-buf-ring-mac3
> +      - description: interrupt event for ring host2rxdma-host-buf-ring-mac2
> +      - description: interrupt event for ring host2rxdma-host-buf-ring-mac1
> +      - description: interrupt event for ring host2tcl-input-ring4
> +      - description: interrupt event for ring host2tcl-input-ring3
> +      - description: interrupt event for ring host2tcl-input-ring2
> +      - description: interrupt event for ring host2tcl-input-ring1
> +      - description: interrupt event for ring wbm2host-tx-completions-ring4
> +      - description: interrupt event for ring wbm2host-tx-completions-ring3
> +      - description: interrupt event for ring wbm2host-tx-completions-ring2
> +      - description: interrupt event for ring wbm2host-tx-completions-ring1
> +      - description: interrupt event for ring host2tx-monitor-ring1
> +      - description: interrupt event for ring txmon2host-monitor-destination-mac3
> +      - description: interrupt event for ring txmon2host-monitor-destination-mac2
> +      - description: interrupt event for ring txmon2host-monitor-destination-mac1
> +      - description: interrupt event for umac_reset
> +
> +  interrupt-names:
> +    items:
> +      - const: ready
> +      - const: spawn
> +      - const: stop-ack
> +      - const: misc-pulse1
> +      - const: misc-latch
> +      - const: sw-exception
> +      - const: ce0
> +      - const: ce1
> +      - const: ce2
> +      - const: ce3
> +      - const: ce4
> +      - const: ce5
> +      - const: ce6
> +      - const: ce7
> +      - const: ce8
> +      - const: ce9
> +      - const: ce10
> +      - const: ce11
> +      - const: host2wbm-desc-feed
> +      - const: host2reo-re-injection
> +      - const: host2reo-command
> +      - const: host2rxdma-monitor-ring1
> +      - const: reo2ost-exception
> +      - const: wbm2host-rx-release
> +      - const: reo2host-status
> +      - const: reo2host-destination-ring4
> +      - const: reo2host-destination-ring3
> +      - const: reo2host-destination-ring2
> +      - const: reo2host-destination-ring1
> +      - const: rxdma2host-monitor-destination-mac3
> +      - const: rxdma2host-monitor-destination-mac2
> +      - const: rxdma2host-monitor-destination-mac1
> +      - const: host2rxdma-host-buf-ring-mac3
> +      - const: host2rxdma-host-buf-ring-mac2
> +      - const: host2rxdma-host-buf-ring-mac1
> +      - const: host2tcl-input-ring4
> +      - const: host2tcl-input-ring3
> +      - const: host2tcl-input-ring2
> +      - const: host2tcl-input-ring1
> +      - const: wbm2host-tx-completions-ring4
> +      - const: wbm2host-tx-completions-ring3
> +      - const: wbm2host-tx-completions-ring2
> +      - const: wbm2host-tx-completions-ring1
> +      - const: host2tx-monitor-ring1
> +      - const: txmon2host-monitor-destination-mac3
> +      - const: txmon2host-monitor-destination-mac2
> +      - const: txmon2host-monitor-destination-mac1
> +      - const: umac_reset
> +
> +  memory-region:
> +    minItems: 1

upper constraint

> +    description:
> +      phandle to a node describing reserved memory (System RAM memory)
> +      used by ath12k firmware (see bindings/reserved-memory/reserved-memory.txt)
> +
> +  qcom,rproc:
> +    $ref: /schemas/types.yaml#/definitions/phandle
> +    description:
> +      DT entry of a WCSS node. WCSS node is the child node of q6 remoteproc driver.
> +      (see bindings/remoteproc/qcom,multipd-pil.yaml)

DT nodes are not children of drivers. But other DT nodes. Explain why
this phandle is needed, what is it for.

To me it looks like you incorrectly organized your nodes.

> +
> +  qcom,smem-states:
> +    $ref: /schemas/types.yaml#/definitions/phandle-array
> +    description: States used by the AP to signal the remote processor
> +    items:
> +      - description: Shutdown WCSS pd
> +      - description: Stop WCSS pd
> +      - description: Spawn WCSS pd
> +
> +  qcom,smem-state-names:
> +    description:
> +      Names of the states used by the AP to signal the remote processor
> +    items:
> +      - const: shutdown
> +      - const: stop
> +      - const: spawn
> +
> +required:
> +  - compatible
> +  - reg
> +  - clocks
> +  - clock-names
> +  - interrupts
> +  - interrupt-names
> +  - memory-region
> +  - qcom,rproc
> +  - qcom,smem-states
> +  - qcom,smem-state-names
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +

Stray blank line

Best regards,
Krzysztof
Raj Kumar Bhagat Oct. 16, 2024, 8:37 a.m. UTC | #2
On 10/16/2024 12:32 PM, Krzysztof Kozlowski wrote:
> On Tue, Oct 15, 2024 at 11:56:16PM +0530, Raj Kumar Bhagat wrote:
>> Add device-tree bindings for the ATH12K module found in the IPQ5332
>> device.
>>
>> Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
>> ---
> 
> That's a v2, what changed?
> 
> Did you ignore entire review? Limited review follows because of that (I
> am not going to do the same work twice).
> 

Review comments in version 1 are addressed.

Per-patch version log is not added here. But we have consolidated version log
in the cover-letter. Will include per-patch version log from next version.

Below are the version log for v2:
- "qcom,board_id" property is dropped. This is not the direct dependency for Ath12k
  AHB support, hence it can be taken up separately.
- "qcom,bdf-addr" property is dropped in device-tree and moved to ath12k driver.
- Currently we have only one compatible enum (qcom,ipq5332-wifi), hence conditional
  if() check for defining the binding is removed.
- "reserved-memory" node is dropped from example DTS.
- "status" property is dropped in wifi node of example DTS.

>>  .../net/wireless/qcom,ath12k-ahb.yaml         | 293 ++++++++++++++++++
>>  1 file changed, 293 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/net/wireless/qcom,ath12k-ahb.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath12k-ahb.yaml b/Documentation/devicetree/bindings/net/wireless/qcom,ath12k-ahb.yaml
>> new file mode 100644
>> index 000000000000..54784e396d7e
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath12k-ahb.yaml
>> @@ -0,0 +1,293 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +# Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/net/wireless/qcom,ath12k-ahb.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Qualcomm Technologies ath12k wireless devices (AHB)
>> +
>> +maintainers:
>> +  - Kalle Valo <kvalo@kernel.org>
>> +  - Jeff Johnson <jjohnson@kernel.org>
>> +
>> +description:
>> +  Qualcomm Technologies IEEE 802.11be AHB devices.
>> +
>> +properties:
>> +  compatible:
>> +    enum:
>> +      - qcom,ipq5332-wifi
>> +
>> +  reg:
>> +    maxItems: 1
>> +
>> +  clocks:
>> +    items:
>> +      - description: XO clock used for copy engine
>> +
>> +  clock-names:
>> +    items:
>> +      - const: gcc_xo_clk
> 
> Drop _clk, drop gcc_. Look how this clock is called *everywhere* else.
> 

Thanks, Based on other bindings example, will rename to "xo"

>> +
>> +  interrupts:
>> +    items:
>> +      - description: Ready interrupt
>> +      - description: Spawn acknowledge interrupt
>> +      - description: Stop acknowledge interrupt
>> +      - description: misc-pulse1 interrupt events
>> +      - description: misc-latch interrupt events
>> +      - description: sw exception interrupt events
>> +      - description: interrupt event for ring CE0
>> +      - description: interrupt event for ring CE1
>> +      - description: interrupt event for ring CE2
>> +      - description: interrupt event for ring CE3
>> +      - description: interrupt event for ring CE4
>> +      - description: interrupt event for ring CE5
>> +      - description: interrupt event for ring CE6
>> +      - description: interrupt event for ring CE7
>> +      - description: interrupt event for ring CE8
>> +      - description: interrupt event for ring CE9
>> +      - description: interrupt event for ring CE10
>> +      - description: interrupt event for ring CE11
>> +      - description: interrupt event for ring host2wbm-desc-feed
>> +      - description: interrupt event for ring host2reo-re-injection
>> +      - description: interrupt event for ring host2reo-command
>> +      - description: interrupt event for ring host2rxdma-monitor-ring1
>> +      - description: interrupt event for ring reo2ost-exception
>> +      - description: interrupt event for ring wbm2host-rx-release
>> +      - description: interrupt event for ring reo2host-status
>> +      - description: interrupt event for ring reo2host-destination-ring4
>> +      - description: interrupt event for ring reo2host-destination-ring3
>> +      - description: interrupt event for ring reo2host-destination-ring2
>> +      - description: interrupt event for ring reo2host-destination-ring1
>> +      - description: interrupt event for ring rxdma2host-monitor-destination-mac3
>> +      - description: interrupt event for ring rxdma2host-monitor-destination-mac2
>> +      - description: interrupt event for ring rxdma2host-monitor-destination-mac1
>> +      - description: interrupt event for ring host2rxdma-host-buf-ring-mac3
>> +      - description: interrupt event for ring host2rxdma-host-buf-ring-mac2
>> +      - description: interrupt event for ring host2rxdma-host-buf-ring-mac1
>> +      - description: interrupt event for ring host2tcl-input-ring4
>> +      - description: interrupt event for ring host2tcl-input-ring3
>> +      - description: interrupt event for ring host2tcl-input-ring2
>> +      - description: interrupt event for ring host2tcl-input-ring1
>> +      - description: interrupt event for ring wbm2host-tx-completions-ring4
>> +      - description: interrupt event for ring wbm2host-tx-completions-ring3
>> +      - description: interrupt event for ring wbm2host-tx-completions-ring2
>> +      - description: interrupt event for ring wbm2host-tx-completions-ring1
>> +      - description: interrupt event for ring host2tx-monitor-ring1
>> +      - description: interrupt event for ring txmon2host-monitor-destination-mac3
>> +      - description: interrupt event for ring txmon2host-monitor-destination-mac2
>> +      - description: interrupt event for ring txmon2host-monitor-destination-mac1
>> +      - description: interrupt event for umac_reset
>> +
>> +  interrupt-names:
>> +    items:
>> +      - const: ready
>> +      - const: spawn
>> +      - const: stop-ack
>> +      - const: misc-pulse1
>> +      - const: misc-latch
>> +      - const: sw-exception
>> +      - const: ce0
>> +      - const: ce1
>> +      - const: ce2
>> +      - const: ce3
>> +      - const: ce4
>> +      - const: ce5
>> +      - const: ce6
>> +      - const: ce7
>> +      - const: ce8
>> +      - const: ce9
>> +      - const: ce10
>> +      - const: ce11
>> +      - const: host2wbm-desc-feed
>> +      - const: host2reo-re-injection
>> +      - const: host2reo-command
>> +      - const: host2rxdma-monitor-ring1
>> +      - const: reo2ost-exception
>> +      - const: wbm2host-rx-release
>> +      - const: reo2host-status
>> +      - const: reo2host-destination-ring4
>> +      - const: reo2host-destination-ring3
>> +      - const: reo2host-destination-ring2
>> +      - const: reo2host-destination-ring1
>> +      - const: rxdma2host-monitor-destination-mac3
>> +      - const: rxdma2host-monitor-destination-mac2
>> +      - const: rxdma2host-monitor-destination-mac1
>> +      - const: host2rxdma-host-buf-ring-mac3
>> +      - const: host2rxdma-host-buf-ring-mac2
>> +      - const: host2rxdma-host-buf-ring-mac1
>> +      - const: host2tcl-input-ring4
>> +      - const: host2tcl-input-ring3
>> +      - const: host2tcl-input-ring2
>> +      - const: host2tcl-input-ring1
>> +      - const: wbm2host-tx-completions-ring4
>> +      - const: wbm2host-tx-completions-ring3
>> +      - const: wbm2host-tx-completions-ring2
>> +      - const: wbm2host-tx-completions-ring1
>> +      - const: host2tx-monitor-ring1
>> +      - const: txmon2host-monitor-destination-mac3
>> +      - const: txmon2host-monitor-destination-mac2
>> +      - const: txmon2host-monitor-destination-mac1
>> +      - const: umac_reset
>> +
>> +  memory-region:
>> +    minItems: 1
> 
> upper constraint
> 
>> +    description:
>> +      phandle to a node describing reserved memory (System RAM memory)
>> +      used by ath12k firmware (see bindings/reserved-memory/reserved-memory.txt)
>> +
>> +  qcom,rproc:
>> +    $ref: /schemas/types.yaml#/definitions/phandle
>> +    description:
>> +      DT entry of a WCSS node. WCSS node is the child node of q6 remoteproc driver.
>> +      (see bindings/remoteproc/qcom,multipd-pil.yaml)
> 
> DT nodes are not children of drivers. But other DT nodes. Explain why
> this phandle is needed, what is it for.
> 
> To me it looks like you incorrectly organized your nodes.
> 

This phandle is required by wifi driver (ath12k) to retrieve the correct remote processor
(rproc_get_by_phandle()). Ath12k driver needs this rproc to interact with the remote
processor (example: booting-up remote processor).

In next version, will correct the description based on existing bindings (qcom,ath11k.yaml).

>> +
>> +  qcom,smem-states:
>> +    $ref: /schemas/types.yaml#/definitions/phandle-array
>> +    description: States used by the AP to signal the remote processor
>> +    items:
>> +      - description: Shutdown WCSS pd
>> +      - description: Stop WCSS pd
>> +      - description: Spawn WCSS pd
>> +
>> +  qcom,smem-state-names:
>> +    description:
>> +      Names of the states used by the AP to signal the remote processor
>> +    items:
>> +      - const: shutdown
>> +      - const: stop
>> +      - const: spawn
>> +
>> +required:
>> +  - compatible
>> +  - reg
>> +  - clocks
>> +  - clock-names
>> +  - interrupts
>> +  - interrupt-names
>> +  - memory-region
>> +  - qcom,rproc
>> +  - qcom,smem-states
>> +  - qcom,smem-state-names
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> +  - |
>> +
> 
> Stray blank line
> 

Will update in next version.

> Best regards,
> Krzysztof
>
Krzysztof Kozlowski Oct. 16, 2024, 9 a.m. UTC | #3
On 16/10/2024 10:37, Raj Kumar Bhagat wrote:
> On 10/16/2024 12:32 PM, Krzysztof Kozlowski wrote:
>> On Tue, Oct 15, 2024 at 11:56:16PM +0530, Raj Kumar Bhagat wrote:
>>> Add device-tree bindings for the ATH12K module found in the IPQ5332
>>> device.
>>>
>>> Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
>>> ---
>>
>> That's a v2, what changed?
>>
>> Did you ignore entire review? Limited review follows because of that (I
>> am not going to do the same work twice).
>>
> 
> Review comments in version 1 are addressed.
> 
> Per-patch version log is not added here. But we have consolidated version log
> in the cover-letter. Will include per-patch version log from next version.

Hm? There is no such in cover letter. There is description, dependencies
and list of commits which indicates end (format-patch standard stuff).
> 
> Below are the version log for v2:
> - "qcom,board_id" property is dropped. This is not the direct dependency for Ath12k
>   AHB support, hence it can be taken up separately.
> - "qcom,bdf-addr" property is dropped in device-tree and moved to ath12k driver.
> - Currently we have only one compatible enum (qcom,ipq5332-wifi), hence conditional
>   if() check for defining the binding is removed.
> - "reserved-memory" node is dropped from example DTS.
> - "status" property is dropped in wifi node of example DTS.


>>> +
>>> +  clock-names:
>>> +    items:
>>> +      - const: gcc_xo_clk
>>
>> Drop _clk, drop gcc_. Look how this clock is called *everywhere* else.
>>
> 
> Thanks, Based on other bindings example, will rename to "xo"

git grep gcc_xo_clk -> nothing like that!

...

>>> +
>>> +  memory-region:
>>> +    minItems: 1
>>
>> upper constraint
>>
>>> +    description:
>>> +      phandle to a node describing reserved memory (System RAM memory)
>>> +      used by ath12k firmware (see bindings/reserved-memory/reserved-memory.txt)
>>> +
>>> +  qcom,rproc:
>>> +    $ref: /schemas/types.yaml#/definitions/phandle
>>> +    description:
>>> +      DT entry of a WCSS node. WCSS node is the child node of q6 remoteproc driver.
>>> +      (see bindings/remoteproc/qcom,multipd-pil.yaml)
>>
>> DT nodes are not children of drivers. But other DT nodes. Explain why
>> this phandle is needed, what is it for.
>>
>> To me it looks like you incorrectly organized your nodes.
>>
> 
> This phandle is required by wifi driver (ath12k) to retrieve the correct remote processor
> (rproc_get_by_phandle()). Ath12k driver needs this rproc to interact with the remote
> processor (example: booting-up remote processor).

That's driver aspect. Why does the hardware needs it?

WiFi is the remote processor, so I would expect this being a child. Or
just drop entirely.

You keep using here arguments how you designed your drivers, which is
not valid. Sorry, fix your drivers... or use arguments in terms of hardware.


> 
> In next version, will correct the description based on existing bindings (qcom,ath11k.yaml).

Sorry, let's don't copy existing solutions just because they exist.



Best regards,
Krzysztof
Dmitry Baryshkov Oct. 16, 2024, 10:28 a.m. UTC | #4
On Tue, Oct 15, 2024 at 11:56:16PM +0530, Raj Kumar Bhagat wrote:
> Add device-tree bindings for the ATH12K module found in the IPQ5332
> device.
> 
> Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
> ---
>  .../net/wireless/qcom,ath12k-ahb.yaml         | 293 ++++++++++++++++++
>  1 file changed, 293 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/net/wireless/qcom,ath12k-ahb.yaml

Generic comment, please add qcom,ath12k-calibration-variant
Raj Kumar Bhagat Nov. 27, 2024, 7:24 a.m. UTC | #5
On 10/16/2024 2:30 PM, Krzysztof Kozlowski wrote:
>>>> +    description:
>>>> +      phandle to a node describing reserved memory (System RAM memory)
>>>> +      used by ath12k firmware (see bindings/reserved-memory/reserved-memory.txt)
>>>> +
>>>> +  qcom,rproc:
>>>> +    $ref: /schemas/types.yaml#/definitions/phandle
>>>> +    description:
>>>> +      DT entry of a WCSS node. WCSS node is the child node of q6 remoteproc driver.
>>>> +      (see bindings/remoteproc/qcom,multipd-pil.yaml)
>>> DT nodes are not children of drivers. But other DT nodes. Explain why
>>> this phandle is needed, what is it for.
>>>
>>> To me it looks like you incorrectly organized your nodes.
>>>
>> This phandle is required by wifi driver (ath12k) to retrieve the correct remote processor
>> (rproc_get_by_phandle()). Ath12k driver needs this rproc to interact with the remote
>> processor (example: booting-up remote processor).
> That's driver aspect. Why does the hardware needs it?
> 
> WiFi is the remote processor, so I would expect this being a child. Or
> just drop entirely.
> 
> You keep using here arguments how you designed your drivers, which is
> not valid. Sorry, fix your drivers... or use arguments in terms of hardware.
> 
> 
>> In next version, will correct the description based on existing bindings (qcom,ath11k.yaml).
> Sorry, let's don't copy existing solutions just because they exist.

In the IPQ5332 platform, the WiFi component, known as the Wireless Control Subsystem (WCSS),
functions as the wireless controller. Additionally, there is a separate hardware module, the
Qualcomm Hexagon DSP(q6 remote processor), which is utilized for offloading WiFi processing
tasks. These two hardware modules operate in conjunction, necessitating a phandle in the WiFi
node that references the remote processor. Despite their interdependence, these modules are
distinct from a hardware perspective.
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath12k-ahb.yaml b/Documentation/devicetree/bindings/net/wireless/qcom,ath12k-ahb.yaml
new file mode 100644
index 000000000000..54784e396d7e
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath12k-ahb.yaml
@@ -0,0 +1,293 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/wireless/qcom,ath12k-ahb.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Technologies ath12k wireless devices (AHB)
+
+maintainers:
+  - Kalle Valo <kvalo@kernel.org>
+  - Jeff Johnson <jjohnson@kernel.org>
+
+description:
+  Qualcomm Technologies IEEE 802.11be AHB devices.
+
+properties:
+  compatible:
+    enum:
+      - qcom,ipq5332-wifi
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: XO clock used for copy engine
+
+  clock-names:
+    items:
+      - const: gcc_xo_clk
+
+  interrupts:
+    items:
+      - description: Ready interrupt
+      - description: Spawn acknowledge interrupt
+      - description: Stop acknowledge interrupt
+      - description: misc-pulse1 interrupt events
+      - description: misc-latch interrupt events
+      - description: sw exception interrupt events
+      - description: interrupt event for ring CE0
+      - description: interrupt event for ring CE1
+      - description: interrupt event for ring CE2
+      - description: interrupt event for ring CE3
+      - description: interrupt event for ring CE4
+      - description: interrupt event for ring CE5
+      - description: interrupt event for ring CE6
+      - description: interrupt event for ring CE7
+      - description: interrupt event for ring CE8
+      - description: interrupt event for ring CE9
+      - description: interrupt event for ring CE10
+      - description: interrupt event for ring CE11
+      - description: interrupt event for ring host2wbm-desc-feed
+      - description: interrupt event for ring host2reo-re-injection
+      - description: interrupt event for ring host2reo-command
+      - description: interrupt event for ring host2rxdma-monitor-ring1
+      - description: interrupt event for ring reo2ost-exception
+      - description: interrupt event for ring wbm2host-rx-release
+      - description: interrupt event for ring reo2host-status
+      - description: interrupt event for ring reo2host-destination-ring4
+      - description: interrupt event for ring reo2host-destination-ring3
+      - description: interrupt event for ring reo2host-destination-ring2
+      - description: interrupt event for ring reo2host-destination-ring1
+      - description: interrupt event for ring rxdma2host-monitor-destination-mac3
+      - description: interrupt event for ring rxdma2host-monitor-destination-mac2
+      - description: interrupt event for ring rxdma2host-monitor-destination-mac1
+      - description: interrupt event for ring host2rxdma-host-buf-ring-mac3
+      - description: interrupt event for ring host2rxdma-host-buf-ring-mac2
+      - description: interrupt event for ring host2rxdma-host-buf-ring-mac1
+      - description: interrupt event for ring host2tcl-input-ring4
+      - description: interrupt event for ring host2tcl-input-ring3
+      - description: interrupt event for ring host2tcl-input-ring2
+      - description: interrupt event for ring host2tcl-input-ring1
+      - description: interrupt event for ring wbm2host-tx-completions-ring4
+      - description: interrupt event for ring wbm2host-tx-completions-ring3
+      - description: interrupt event for ring wbm2host-tx-completions-ring2
+      - description: interrupt event for ring wbm2host-tx-completions-ring1
+      - description: interrupt event for ring host2tx-monitor-ring1
+      - description: interrupt event for ring txmon2host-monitor-destination-mac3
+      - description: interrupt event for ring txmon2host-monitor-destination-mac2
+      - description: interrupt event for ring txmon2host-monitor-destination-mac1
+      - description: interrupt event for umac_reset
+
+  interrupt-names:
+    items:
+      - const: ready
+      - const: spawn
+      - const: stop-ack
+      - const: misc-pulse1
+      - const: misc-latch
+      - const: sw-exception
+      - const: ce0
+      - const: ce1
+      - const: ce2
+      - const: ce3
+      - const: ce4
+      - const: ce5
+      - const: ce6
+      - const: ce7
+      - const: ce8
+      - const: ce9
+      - const: ce10
+      - const: ce11
+      - const: host2wbm-desc-feed
+      - const: host2reo-re-injection
+      - const: host2reo-command
+      - const: host2rxdma-monitor-ring1
+      - const: reo2ost-exception
+      - const: wbm2host-rx-release
+      - const: reo2host-status
+      - const: reo2host-destination-ring4
+      - const: reo2host-destination-ring3
+      - const: reo2host-destination-ring2
+      - const: reo2host-destination-ring1
+      - const: rxdma2host-monitor-destination-mac3
+      - const: rxdma2host-monitor-destination-mac2
+      - const: rxdma2host-monitor-destination-mac1
+      - const: host2rxdma-host-buf-ring-mac3
+      - const: host2rxdma-host-buf-ring-mac2
+      - const: host2rxdma-host-buf-ring-mac1
+      - const: host2tcl-input-ring4
+      - const: host2tcl-input-ring3
+      - const: host2tcl-input-ring2
+      - const: host2tcl-input-ring1
+      - const: wbm2host-tx-completions-ring4
+      - const: wbm2host-tx-completions-ring3
+      - const: wbm2host-tx-completions-ring2
+      - const: wbm2host-tx-completions-ring1
+      - const: host2tx-monitor-ring1
+      - const: txmon2host-monitor-destination-mac3
+      - const: txmon2host-monitor-destination-mac2
+      - const: txmon2host-monitor-destination-mac1
+      - const: umac_reset
+
+  memory-region:
+    minItems: 1
+    description:
+      phandle to a node describing reserved memory (System RAM memory)
+      used by ath12k firmware (see bindings/reserved-memory/reserved-memory.txt)
+
+  qcom,rproc:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      DT entry of a WCSS node. WCSS node is the child node of q6 remoteproc driver.
+      (see bindings/remoteproc/qcom,multipd-pil.yaml)
+
+  qcom,smem-states:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    description: States used by the AP to signal the remote processor
+    items:
+      - description: Shutdown WCSS pd
+      - description: Stop WCSS pd
+      - description: Spawn WCSS pd
+
+  qcom,smem-state-names:
+    description:
+      Names of the states used by the AP to signal the remote processor
+    items:
+      - const: shutdown
+      - const: stop
+      - const: spawn
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - interrupts
+  - interrupt-names
+  - memory-region
+  - qcom,rproc
+  - qcom,smem-states
+  - qcom,smem-state-names
+
+additionalProperties: false
+
+examples:
+  - |
+
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/qcom,ipq5332-gcc.h>
+
+    wifi0: wifi@c0000000 {
+        compatible = "qcom,ipq5332-wifi";
+        reg = <0xc000000 0x1000000>;
+        clocks = <&gcc GCC_XO_CLK>;
+        clock-names = "gcc_xo_clk";
+        interrupts-extended = <&wcss_smp2p_in 9 IRQ_TYPE_NONE>,
+                              <&wcss_smp2p_in 12 IRQ_TYPE_NONE>,
+                              <&wcss_smp2p_in 11 IRQ_TYPE_NONE>,
+                              <&intc GIC_SPI 559 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 560 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 561 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 422 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 423 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 424 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 425 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 426 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 427 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 428 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 429 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 430 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 431 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 432 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 433 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 491 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 495 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 493 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 544 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 457 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 466 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 497 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 454 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 453 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 452 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 451 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 488 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 488 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 484 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 554 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 554 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 549 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 507 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 500 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 499 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 498 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 450 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 449 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 448 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 447 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 543 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 486 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 486 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 482 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 419 IRQ_TYPE_EDGE_RISING>;
+        interrupt-names = "ready",
+                          "spawn",
+                          "stop-ack",
+                          "misc-pulse1",
+                          "misc-latch",
+                          "sw-exception",
+                          "ce0",
+                          "ce1",
+                          "ce2",
+                          "ce3",
+                          "ce4",
+                          "ce5",
+                          "ce6",
+                          "ce7",
+                          "ce8",
+                          "ce9",
+                          "ce10",
+                          "ce11",
+                          "host2wbm-desc-feed",
+                          "host2reo-re-injection",
+                          "host2reo-command",
+                          "host2rxdma-monitor-ring1",
+                          "reo2ost-exception",
+                          "wbm2host-rx-release",
+                          "reo2host-status",
+                          "reo2host-destination-ring4",
+                          "reo2host-destination-ring3",
+                          "reo2host-destination-ring2",
+                          "reo2host-destination-ring1",
+                          "rxdma2host-monitor-destination-mac3",
+                          "rxdma2host-monitor-destination-mac2",
+                          "rxdma2host-monitor-destination-mac1",
+                          "host2rxdma-host-buf-ring-mac3",
+                          "host2rxdma-host-buf-ring-mac2",
+                          "host2rxdma-host-buf-ring-mac1",
+                          "host2tcl-input-ring4",
+                          "host2tcl-input-ring3",
+                          "host2tcl-input-ring2",
+                          "host2tcl-input-ring1",
+                          "wbm2host-tx-completions-ring4",
+                          "wbm2host-tx-completions-ring3",
+                          "wbm2host-tx-completions-ring2",
+                          "wbm2host-tx-completions-ring1",
+                          "host2tx-monitor-ring1",
+                          "txmon2host-monitor-destination-mac3",
+                          "txmon2host-monitor-destination-mac2",
+                          "txmon2host-monitor-destination-mac1",
+                          "umac_reset";
+
+        memory-region = <&q6_region>;
+        qcom,rproc = <&q6v5_wcss>;
+        qcom,smem-states = <&wcss_smp2p_out 8>,
+                           <&wcss_smp2p_out 9>,
+                           <&wcss_smp2p_out 10>;
+        qcom,smem-state-names = "shutdown",
+                                "stop",
+                                "spawn";
+    };