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

From: George Moussalem

Date: Tue Sep 29 2026 - 06:09:51 EST


On 9/28/26 14:45, Krzysztof Kozlowski wrote:
> 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.

The compatible is there, but it's not further specified. But as per your
suggestion, I'll move it entirely to qcom,ipq5332-wifi.yaml.>
>>
>> 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.

Noted, thanks!

>
>> + 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?

It's for the ability to override the default hard-coded addresses
defined in the HW params. The memory address/region to load the BDF into
varies per architecture (regular non-MPD vs MPD). The current HW params
define the one for the regular architecture. As with IPQ5332, there's a
need to override that and assign the right memory regions for the BDF
and M3 dump.

Unlike IPQ5018 and IPQ5332, QCN6122 doesn't have its own m3-region to
load its M3 firmware maps to the one of IPQ5018. Hence, the need to
define the m3-region per board.

So for QCN6122, it would look like:
memory-region = <&q6_region_qcn6122_1>,
<&q6_region_ipq5018>,
<&m3_dump_qcn6122_1>;
memory-region-names = "q6-region",
"m3-region",
"m3-dump";

>
>> +
>> 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?

Will move it there, thanks.

>
>>
>> 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.

Noted, will remove in next version.

>
> Best regards,
> Krzysztof

Best regards,
George