Re: [PATCH ath-next 02/16] dt-bindings: net: wireless: ath11k: Add bindings for IPQ5018
From: Krzysztof Kozlowski
Date: Mon Sep 28 2026 - 06:46:45 EST
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@xxxxxxxxxxx>
> ---
> .../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