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

The example is to be added in a subsequent commit that adds the
IPQ9574 binding.

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

---
Changes since RFC
 - rename binding from ipq9574 to ipq8074
 - use a real person instead of placeholder as maintainer
 - drop redundant minItems and descriptions
 - merge if: clauses as suggested by Krzysztof
 - various other fixes suggested by Krzysztof

I used my name as a placeholder for the "maintainer" field. Krzysztof
mentioned to get the "SOC maintainer" using get_maintainer. I don't
know how to do that, and I don't see anyone listed for QCS404,
IPQ8074, or IPQ9574. The bindings apply to any of those SOCs.
---
 .../remoteproc/qcom,ipq8074-wcss-pil.yaml     | 156 ++++++++++++++++++
 .../bindings/remoteproc/qcom,q6v5.txt         | 102 ------------
 2 files changed, 156 insertions(+), 102 deletions(-)
 create mode 100644 
Documentation/devicetree/bindings/remoteproc/qcom,ipq8074-wcss-pil.yaml
 delete mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt

diff --git 
a/Documentation/devicetree/bindings/remoteproc/qcom,ipq8074-wcss-pil.yaml 
b/Documentation/devicetree/bindings/remoteproc/qcom,ipq8074-wcss-pil.yaml
new file mode 100644
index 0000000000000..dea46cb9f93fe
--- /dev/null
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,ipq8074-wcss-pil.yaml
@@ -0,0 +1,156 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/remoteproc/qcom,ipq8074-wcss-pil.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm IPQ WCSS Peripheral Image Loader
+
+maintainers:
+  - Alexandru Gagniuc <[email protected]>
+
+description:
+  The IPQ WCSS peripheral image loader is used to load firmware on the Qualcomm
+  Q6 processor that exposes WiFi-6 devices to the OS via the AHB bus. It is
+  generally used by ath11k to start up the wireless firmware.
+
+properties:
+  compatible:
+    enum:
+      - qcom,ipq8074-wcss-pil
+      - qcom,qcs404-wcss-pil
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: qdsp6
+      - const: rmb
+
+  interrupts:
+    maxItems: 5
+
+  interrupt-names:
+    items:
+      - const: wdog
+      - const: fatal
+      - const: ready
+      - const: handover
+      - const: stop-ack
+
+  resets:
+    maxItems: 3
+
+  reset-names:
+    items:
+      - const: wcss_aon_reset
+      - const: wcss_reset
+      - const: wcss_q6_reset
+
+  clocks:
+    maxItems: 10
+
+  clock-names:
+    maxItems: 10
+
+  cx-supply:
+    description:
+      reference to the regulators used for the booting of the Hexagon core
+
+  memory-region:
+    maxItems: 1
+
+  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
+    maxItems: 2
+    description: States used by the AP to signal the remote processor
+
+  qcom,smem-state-names:
+    maxItems: 2
+    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:
+  - 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
+        clock-names: false
+        clocks: false
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,qcs404-wcss-pil
+    then:
+      properties:
+        qcom,smem-states:
+          maxItems: 1
+        qcom,smem-state-names:
+          items:
+            - const: stop
+        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
+      required:
+        - clocks
+        - clock-names
+        - cx-supply
+
+additionalProperties: false
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt 
b/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt
deleted file mode 100644
index 573a88b606773..0000000000000
--- a/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt
+++ /dev/null
@@ -1,102 +0,0 @@
-Qualcomm Hexagon Peripheral Image Loader
-
-This document defines the binding for a component that loads and boots firmware
-on the Qualcomm Hexagon core.
-
-- compatible:
-       Usage: required
-       Value type: <string>
-       Definition: must be one of:
-                   "qcom,ipq8074-wcss-pil"
-                   "qcom,qcs404-wcss-pil"
-
-- reg:
-       Usage: required
-       Value type: <prop-encoded-array>
-       Definition: must specify the base address and size of the qdsp6 and
-                   rmb register blocks
-
-- reg-names:
-       Usage: required
-       Value type: <stringlist>
-       Definition: must be "q6dsp" and "rmb"
-
-- interrupts-extended:
-       Usage: required
-       Value type: <prop-encoded-array>
-       Definition: reference to the interrupts that match interrupt-names
-
-- interrupt-names:
-       Usage: required
-       Value type: <stringlist>
-       Definition: must be "wdog", "fatal", "ready", "handover", "stop-ack"
-
-- clocks:
-       Usage: required
-       Value type: <phandle>
-       Definition: reference to the clocks that match clock-names
-
-- clock-names:
-       Usage: required
-       Value type: <stringlist>
-       Definition: The clocks needed depend on the compatible string:
-       qcom,ipq8074-wcss-pil:
-                   no clock names required
-       qcom,qcs404-wcss-pil:
-                   must be "xo", "gcc_abhs_cbcr", "gcc_abhs_cbcr",
-                   "gcc_axim_cbcr", "lcc_ahbfabric_cbc", "tcsr_lcc_cbc",
-                   "lcc_abhs_cbc", "lcc_tcm_slave_cbc", "lcc_abhm_cbc",
-                   "lcc_axim_cbc", "lcc_bcr_sleep"
-
-- resets:
-       Usage: required
-       Value type: <phandle>
-       Definition: reference to the list of 3 reset-controllers for the
-                   wcss sub-system
-
-- reset-names:
-       Usage: required
-       Value type: <stringlist>
-       Definition: must be "wcss_aon_reset", "wcss_reset", "wcss_q6_reset"
-                   for the wcss sub-system
-
-- memory-region:
-       Usage: required
-       Value type: <phandle>
-       Definition: reference to wcss reserved-memory region.
-
-For the compatible string below the following supplies are required:
-  "qcom,qcs404-wcss-pil"
-- cx-supply:
-       Usage: required
-       Value type: <phandle>
-       Definition: reference to the regulators to be held on behalf of the
-                   booting of the Hexagon core
-
-- qcom,smem-states:
-       Usage: required
-       Value type: <phandle>
-       Definition: reference to the smem state for requesting the Hexagon to
-                   shut down
-
-- qcom,smem-state-names:
-       Usage: required
-       Value type: <stringlist>
-       Definition: must be "stop"
-
-- qcom,halt-regs:
-       Usage: required
-       Value type: <prop-encoded-array>
-       Definition: a phandle reference to a syscon representing TCSR followed
-                   by the three offsets within syscon for q6, wcss and nc
-                   halt registers.
-
-- memory-region:
-       Usage: required
-       Value type: <phandle>
-       Definition: reference to the reserved-memory for the region
-
-The Hexagon node may also have an subnode named either "smd-edge" or
-"glink-edge" that describes the communication edge, channels and devices
-related to the Hexagon.  See ../soc/qcom/qcom,smd.yaml and
-../soc/qcom/qcom,glink.txt for details on how to describe these.
-- 
2.45.1


Reply via email to