On 12/15/25 11:53 PM, Krzysztof Kozlowski wrote:
On Tue, Dec 09, 2025 at 06:37:23PM -0600, Alexandru Gagniuc wrote:
Convert the QCS404 and IPQ WCSS Peripheral Image Loader bindings to DT
schema. The text bindngs incorrectly implied that IPQ8074 needs only
one qcom,smem-states entry. This is only true for QCS404. IPQ8074
requires both "stop" and "shutdown".

Signed-off-by: Alexandru Gagniuc <[email protected]>

Don't add fake addresses to CC. I could not respond to this email
because of that!

Okay.

---
  .../remoteproc/qcom,ipq9574-wcss-pil.yaml     | 167 ++++++++++++++++++
  .../bindings/remoteproc/qcom,q6v5.txt         | 102 -----------
  2 files changed, 167 insertions(+), 102 deletions(-)
  create mode 100644 
Documentation/devicetree/bindings/remoteproc/qcom,ipq9574-wcss-pil.yaml
  delete mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt

diff --git 
a/Documentation/devicetree/bindings/remoteproc/qcom,ipq9574-wcss-pil.yaml 
b/Documentation/devicetree/bindings/remoteproc/qcom,ipq9574-wcss-pil.yaml
new file mode 100644
index 0000000000000..d28f42661d084
--- /dev/null
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,ipq9574-wcss-pil.yaml

Filename based on the compatible, so for example:
qcom,ipq8074-wcss-pil.yaml
Okay.
@@ -0,0 +1,167 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/remoteproc/qcom,ipq9574-wcss-pil.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm IPQ WCSS Peripheral Image Loader
+
+maintainers:
+  - Placeholder Maintainer <[email protected]>

This must be a real person. Fallback is your SoC maintainer.

I can't find an official maintainer for IPQ8074 or IPQ9574. I could list myself, but you know a lot about these bindings. Is it okay if I list you as the maintainer of this binding, Krzysztof?

+
+  reg-names:
+    items:
+      - const: qdsp6
+      - const: rmb
+
+  interrupts-extended:

No, you only need interrupts. Please look at other bindings - how they
write this.

I thought I needed interrupts-extended if the interrupts use more than one interrupt controller. Is that not the case?

+    minItems: 5

Drop

+    maxItems: 5
+
+  interrupt-names:
+    items:
+      - const: wdog
+      - const: fatal
+      - const: ready
+      - const: handover
+      - const: stop-ack
+
+  resets:
+    minItems: 3

Drop
I will drop all the items you identified as excessive.>
+    maxItems: 3
+
+  reset-names:
+    items:
+      - const: wcss_aon_reset
+      - const: wcss_reset
+      - const: wcss_q6_reset
+
+  clocks:
+    minItems: 10
+    maxItems: 13

Why is this flexible? Wasn't in the old binding and nothing in the
commit msg explained a change in the binding.

I was thinking ahead to the next patch in the series that adds IPQ9574 binding. It makes more sense to keep it at 10 fot this patch, like you suggest.

+
+  clock-names:
+    minItems: 10
+    maxItems: 13
+
+  cx-supply:
+    description:
+      reference to the regulators used for the booting of the Hexagon core
+
+  memory-region:
+    description: Reference to wcss reserved-memory region

Drop description. Missing maxItems, please look at other bindings. Don't
write your own style, but look how we already wrote remoteproc bindings
(the latest).

Is "maxItems: 1" the correct thing to add here?
+
+  qcom,halt-regs:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    description:
+      A phandle reference to a syscon representing TCSR followed by the three
+      offsets within syscon for q6, wcss and nc halt registers.
+    items:
+      - items:
+          - description: phandle to TCSR_MUTEX registers
+          - description: offset to the Q6 halt register
+          - description: offset to the wcss halt register
+          - description: offset to the nc halt register
+
+  qcom,smem-states:
+    $ref: /schemas/types.yaml#/definitions/phandle-array

That's incomplete - missing constraints. Are you sure you wrote this
code the same way we already did for other devices?

I am not sure. It seems to match qcom,qcs404-cdsp-pil.yaml or qcom,wcnss.yaml. What constraints are you expecting here?

+    description: States used by the AP to signal the remote processor
+
+  qcom,smem-state-names:
+    description:
+      Names of the states used by the AP to signal the remote processor
+
+  glink-edge:
+    $ref: /schemas/remoteproc/qcom,glink-edge.yaml#
+    description:
+      Qualcomm G-Link subnode which represents communication edge, channels
+      and devices related to the Modem.
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - interrupts-extended
+  - interrupt-names
+  - memory-region
+  - qcom,halt-regs
+  - qcom,smem-states
+  - qcom,smem-state-names
+
+allOf:

Seems you do not reference other schemas. I am going to repeat myself
for 10th time: are you sure you followed other devices?

It's the sixth time, but I see your point. Comparing to qcom,qcs404-cdsp-pil.yaml or qcom,wcnss.yaml, I can't see what's missing. What do I need here?


+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,ipq8074-wcss-pil
+    then:
+      properties:
+        qcom,smem-states:
+          items:
+            - description: Shutdown Q6
+            - description: Stop Q6
+        qcom,smem-state-names:
+          items:
+            - const: shutdown
+            - const: stop

Missing clocks

The text binding that this replaces implies no clocks for IPQ8074. What would you like me to add instead?

Missing blank line

+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,qcs404-wcss-pil
+    then:
+      properties:
+        qcom,smem-states:
+          maxItems: 1
+        qcom,smem-state-names:
+          items:
+            - const: stop

+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,qcs404-wcss-pil
+    then:
+      properties:
+        clocks:
+          minItems: 10
+          maxItems: 10
+        clock-names:
+          items:
+            - const: xo
+            - const: gcc_abhs_cbcr
+            - const: gcc_axim_cbcr
+            - const: lcc_ahbfabric_cbc
+            - const: tcsr_lcc_cbc
+            - const: lcc_abhs_cbc
+            - const: lcc_tcm_slave_cbc
+            - const: lcc_abhm_cbc
+            - const: lcc_axim_cbc
+            - const: lcc_bcr_sleep

All this goes to previous if.

Okay

+      required:
+        - clocks
+        - clock-names
+        - cx-supply
+
+additionalProperties: false

Missing example.

I plan to add the example in the next patch in the series that adds IPQ9547 binding. I don't have the resources to test IPQ8074 or QCS404, and I want to be sure that the example I add is tested.

Alex

Reply via email to