[PATCH ath-next 02/16] dt-bindings: net: wireless: ath11k: Add bindings for IPQ5018

Krzysztof Kozlowski krzk at kernel.org
Mon Sep 28 03:45:22 PDT 2026


On Wed, Sep 23, 2026 at 04:05:08PM +0400, George Moussalem wrote:
> Although support was added for IPQ5018, the bindings are missing, so
> let's add them.

So there is no ipq5018 compatible in existing file.

> 
> WiFi on IPQ5018 boards come in one of the following configurations:
> 1. IPQ5018 (standalone) + optional 5G/6G WiFi card (such as QCN9074)
> 2. IPQ5018 (MPD) + one or two 5G/6G QCN6122 WiFi chips where QCN6122
>    is an IPQ5018-specific companion chip.
> 
> IPQ5018 implements the multi-PD architecture as follows:
> 
>                      +-----------------------------+
>                      |     Q6 Remote Processor     |
>                      |            RootPD           |
>                      +--------------+--------------+
>                                     |
>                                     |
>                                     |
>               +---------------------+---------------------+
>               |                     |                     |
>         +-----v-----+         +-----v-----+         +-----v-----+
>         |  UserPD1  |         |  UserPD2  |         |  UserPD3  |
>         |  IPQ5018  |         | QCN6122 #1|         | QCN6122 #2|
>         |  (Radio)  |         |  (Radio)  |         |  (Radio)  |
>         +-----------+         +-----------+         +-----------+
> 
> The rootPD is responsible for managing the lifecycle of the UserPD and
> shared resources and providing SSR notifiers. There are different
> firmware blobs that include either the rootPD and userPD binaries for
> IPQ5018-only which auto-spawns the userPD for IPQ5018 WiFi, or for
> IPQ5018 and QCN6122 for which the userPDs for each radio must be spawned
> by the ath11k driver.
> 
> SMP2P is used for signaling between the host and the Q6 remote processor
> to manage the lifecycle of the userPDs, so add the required interrupts
> and smem-states for incoming and outgoing interrupts in the case of the
> IPQ5018 + QCN6122 MPD configuration. Otherwise, the SMP2P interrupts and
> smem-states are not required for the IPQ5018-only configuration.
> 
> In addition, document the memory regions needed for loading the BDF and
> M3 firmware as well as for assigning the M3 dump memory block.
> 
> Signed-off-by: George Moussalem <george.moussalem at outlook.com>
> ---
>  .../bindings/net/wireless/qcom,ath11k.yaml         | 423 ++++++++++++++++++++-
>  1 file changed, 410 insertions(+), 13 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml b/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml
> index a846cd704b19..621ad6d4ddad 100644
> --- a/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml
> +++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml

Where is the compatible update?

> @@ -29,8 +29,13 @@ properties:
>      minItems: 32
>      maxItems: 52

56

>  
> +  interrupts-extended:

git grep should tell you - it's not needed. Drop.

> +    minItems: 56
> +    maxItems: 56
> +
>    interrupt-names:
> -    maxItems: 52
> +    minItems: 32
> +    maxItems: 56
>  
>    qcom,rproc:
>      $ref: /schemas/types.yaml#/definitions/phandle
> @@ -56,11 +61,15 @@ properties:
>  
>    memory-region:
>      minItems: 1
> -    maxItems: 2
> +    maxItems: 3
>      description:
>        phandle to a node describing reserved memory (System RAM memory)
>        used by ath11k firmware (see bindings/reserved-memory/reserved-memory.txt)
>  
> +  memory-region-names:
> +    minItems: 1
> +    maxItems: 3

Names would have to be here. But why do you need it in the first place?

> +
>    iommus:
>      minItems: 1
>      maxItems: 2
> @@ -78,20 +87,11 @@ properties:
>    qcom,smem-states:
>      $ref: /schemas/types.yaml#/definitions/phandle-array
>      description: State bits used by the AP to signal the WLAN Q6.
> -    items:
> -      - description: Signal bits used to enable/disable low power mode
> -          on WCN6750 in the case of WoW (Wake on Wireless).
> -        items:
> -          - description: Phandle to the Shared Memory Point 2 Point device
> -              handling the communication with a remote processor
> -          - description: Single bit index to toggle in the value sent to
> -              the remote processor
> -            maximum: 32
> +    minItems: 1
> +    maxItems: 3
>  
>    qcom,smem-state-names:
>      description: The names of the state bits used for SMP2P output.
> -    items:
> -      - const: wlan-smp2p-out

Why isn't all this in qcom,ipq5332-wifi.yaml?

>  
>  required:
>    - compatible
> @@ -103,6 +103,242 @@ additionalProperties: false
>  
>  allOf:
>    - $ref: ieee80211.yaml#
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - qcom,ipq5018-wifi
> +    then:
> +      properties:
> +        interrupts:
> +          items:
> +            - description: misc-pulse1 interrupt events
> +            - description: misc-latch interrupt events
> +            - description: sw exception interrupt events
> +            - description: watchdog 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-ring3
> +            - description: interrupt event for ring host2rxdma-monitor-ring2
> +            - 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 ppdu-end-interrupts-mac3
> +            - description: interrupt event for ring ppdu-end-interrupts-mac2
> +            - description: interrupt event for ring ppdu-end-interrupts-mac1
> +            - description: interrupt event for ring rxdma2host-monitor-status-ring-mac3
> +            - description: interrupt event for ring rxdma2host-monitor-status-ring-mac2
> +            - description: interrupt event for ring rxdma2host-monitor-status-ring-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 rxdma2host-destination-ring-mac3
> +            - description: interrupt event for ring rxdma2host-destination-ring-mac2
> +            - description: interrupt event for ring rxdma2host-destination-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-ring3
> +            - description: interrupt event for ring wbm2host-tx-completions-ring2
> +            - description: interrupt event for ring wbm2host-tx-completions-ring1
> +            - description: interrupt event for ring tcl2host-status-ring
> +        interrupts-extended:
> +          items:
> +            - description: misc-pulse1 interrupt events
> +            - description: misc-latch interrupt events
> +            - description: sw exception interrupt events
> +            - description: watchdog 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-ring3
> +            - description: interrupt event for ring host2rxdma-monitor-ring2
> +            - 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 ppdu-end-interrupts-mac3
> +            - description: interrupt event for ring ppdu-end-interrupts-mac2
> +            - description: interrupt event for ring ppdu-end-interrupts-mac1
> +            - description: interrupt event for ring rxdma2host-monitor-status-ring-mac3
> +            - description: interrupt event for ring rxdma2host-monitor-status-ring-mac2
> +            - description: interrupt event for ring rxdma2host-monitor-status-ring-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 rxdma2host-destination-ring-mac3
> +            - description: interrupt event for ring rxdma2host-destination-ring-mac2
> +            - description: interrupt event for ring rxdma2host-destination-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-ring3
> +            - description: interrupt event for ring wbm2host-tx-completions-ring2
> +            - description: interrupt event for ring wbm2host-tx-completions-ring1
> +            - description: interrupt event for ring tcl2host-status-ring
> +            - description: Q6 firmware user PD fatal interrupt event
> +            - description: Q6 firmware user PD ready interrupt event
> +            - description: Q6 firmware user PD spawn interrupt event
> +            - description: Q6 firmware user PD stop ack interrupt event
> +        interrupt-names:
> +          minItems: 52
> +          items:
> +            - const: misc-pulse1
> +            - const: misc-latch
> +            - const: sw-exception
> +            - const: watchdog
> +            - 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-ring3
> +            - const: host2rxdma-monitor-ring2
> +            - 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: ppdu-end-interrupts-mac3
> +            - const: ppdu-end-interrupts-mac2
> +            - const: ppdu-end-interrupts-mac1
> +            - const: rxdma2host-monitor-status-ring-mac3
> +            - const: rxdma2host-monitor-status-ring-mac2
> +            - const: rxdma2host-monitor-status-ring-mac1
> +            - const: host2rxdma-host-buf-ring-mac3
> +            - const: host2rxdma-host-buf-ring-mac2
> +            - const: host2rxdma-host-buf-ring-mac1
> +            - const: rxdma2host-destination-ring-mac3
> +            - const: rxdma2host-destination-ring-mac2
> +            - const: rxdma2host-destination-ring-mac1
> +            - const: host2tcl-input-ring4
> +            - const: host2tcl-input-ring3
> +            - const: host2tcl-input-ring2
> +            - const: host2tcl-input-ring1
> +            - const: wbm2host-tx-completions-ring3
> +            - const: wbm2host-tx-completions-ring2
> +            - const: wbm2host-tx-completions-ring1
> +            - const: tcl2host-status-ring
> +            - const: fatal
> +            - const: ready
> +            - const: spawn
> +            - const: stop-ack
> +        memory-region:
> +          items:
> +            - description: memory region for Q6 firmware
> +            - description: memory region for M3 firmware
> +            - description: memory region for M3 dump
> +        memory-region-names:
> +          items:
> +            - const: q6-region
> +            - const: m3-region
> +            - const: m3-dump
> +        qcom,smem-states:
> +          items:
> +            - description: Signal bit used to shutdown Q6 user PD
> +              items:
> +                - description: Phandle to the Shared Memory Point 2 Point device
> +                - description: Single bit index to toggle in the value sent to the remote processor
> +                  maximum: 32
> +            - description: Signal bit used to stop Q6 user PD
> +              items:
> +                - description: Phandle to the Shared Memory Point 2 Point device
> +                - description: Single bit index to toggle in the value sent to the remote processor
> +                  maximum: 32
> +            - description: Signal bit used to spawn Q6 user PD
> +              items:
> +                - description: Phandle to the Shared Memory Point 2 Point device
> +                - description: Single bit index to toggle in the value sent to the remote processor
> +                  maximum: 32
> +        qcom,smem-state-names:
> +          items:
> +            - const: shutdown
> +            - const: stop
> +            - const: spawn
> +      allOf:
> +        - anyOf:
> +            - required:
> +                - interrupts
> +            - required:
> +                - interrupts-extended
> +        - if:
> +            required:
> +              - interrupts-extended
> +          then:
> +            properties:
> +              interrupt-names:
> +                minItems: 56
> +            required:
> +              - interrupts-extended
> +              - memory-region
> +              - memory-region-names
> +              - qcom,smem-states
> +              - qcom,smem-state-names
> +          else:
> +            properties:
> +              interrupt-names:
> +                minItems: 52
> +                maxItems: 52
> +
>    - if:
>        properties:
>          compatible:
> @@ -265,6 +501,19 @@ allOf:
>              - description: interrupt event for ring DP20
>              - description: interrupt event for ring DP21
>              - description: interrupt event for ring DP22
> +        qcom,smem-states:
> +          items:
> +            - description: Signal bits used to enable/disable low power mode
> +                on WCN6750 in the case of WoW (Wake on Wireless).
> +              items:
> +                - description: Phandle to the Shared Memory Point 2 Point device
> +                    handling the communication with a remote processor
> +                - description: Single bit index to toggle in the value sent to
> +                    the remote processor
> +                  maximum: 32
> +        qcom,smem-state-names:
> +          items:
> +            - const: wlan-smp2p-out
>  
>  examples:
>    - |
> @@ -464,3 +713,151 @@ examples:
>              iommus = <&apps_smmu 0x1c02 0x1>;
>          };
>      };
> +
> +  - |

No, three examples are enough. No need for fourth.

Best regards,
Krzysztof




More information about the ath11k mailing list