dt-bindings: soc: qcom,wcnss: convert to dtschema
authorKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Tue, 5 Apr 2022 06:57:52 +0000 (08:57 +0200)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Tue, 12 Apr 2022 02:36:31 +0000 (21:36 -0500)
Convert the Qualcomm WCNSS bindings to DT Schema.

Changes against original bindings: fix qcom,smd-channels and
qcom,smem-states names (how they are used in DTS and driver), enforce
child node naming of bluetooth and wifi.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20220405065752.27389-3-krzysztof.kozlowski@linaro.org
Documentation/devicetree/bindings/soc/qcom/qcom,wcnss.txt [deleted file]
Documentation/devicetree/bindings/soc/qcom/qcom,wcnss.yaml [new file with mode: 0644]

diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,wcnss.txt b/Documentation/devicetree/bindings/soc/qcom/qcom,wcnss.txt
deleted file mode 100644 (file)
index 1382b64..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-Qualcomm WCNSS Binding
-
-This binding describes the Qualcomm WCNSS hardware. It consists of control
-block and a BT, WiFi and FM radio block, all using SMD as command channels.
-
-- compatible:
-       Usage: required
-       Value type: <string>
-       Definition: must be: "qcom,wcnss",
-
-- qcom,smd-channel:
-       Usage: required
-       Value type: <string>
-       Definition: standard SMD property specifying the SMD channel used for
-                   communication with the WiFi firmware.
-                   Should be "WCNSS_CTRL".
-
-- qcom,mmio:
-       Usage: required
-       Value type: <prop-encoded-array>
-       Definition: reference to a node specifying the wcnss "ccu" and "dxe"
-                   register blocks. The node must be compatible with one of
-                   the following:
-                   "qcom,riva",
-                   "qcom,pronto"
-
-- firmware-name:
-       Usage: optional
-       Value type: <string>
-       Definition: specifies the relative firmware image path for the WLAN NV
-                   blob. Defaults to "wlan/prima/WCNSS_qcom_wlan_nv.bin" if
-                   not specified.
-
-= SUBNODES
-The subnodes of the wcnss node are optional and describe the individual blocks in
-the WCNSS.
-
-== Bluetooth
-The following properties are defined to the bluetooth node:
-
-- compatible:
-       Usage: required
-       Value type: <string>
-       Definition: must be:
-                   "qcom,wcnss-bt"
-
-- local-bd-address:
-       Usage: optional
-       Value type: <u8 array>
-       Definition: see Documentation/devicetree/bindings/net/bluetooth.txt
-
-== WiFi
-The following properties are defined to the WiFi node:
-
-- compatible:
-       Usage: required
-       Value type: <string>
-       Definition: must be one of:
-                   "qcom,wcnss-wlan",
-
-- interrupts:
-       Usage: required
-       Value type: <prop-encoded-array>
-       Definition: should specify the "rx" and "tx" interrupts
-
-- interrupt-names:
-       Usage: required
-       Value type: <stringlist>
-       Definition: must contain "rx" and "tx"
-
-- qcom,smem-state:
-       Usage: required
-       Value type: <prop-encoded-array>
-       Definition: should reference the tx-enable and tx-rings-empty SMEM states
-
-- qcom,smem-state-names:
-       Usage: required
-       Value type: <stringlist>
-       Definition: must contain "tx-enable" and "tx-rings-empty"
-
-= EXAMPLE
-The following example represents a SMD node, with one edge representing the
-"pronto" subsystem, with the wcnss device and its wcn3680 BT and WiFi blocks
-described; as found on the 8974 platform.
-
-smd {
-       compatible = "qcom,smd";
-
-       pronto-edge {
-               interrupts = <0 142 1>;
-
-               qcom,ipc = <&apcs 8 17>;
-               qcom,smd-edge = <6>;
-
-               wcnss {
-                       compatible = "qcom,wcnss";
-                       qcom,smd-channels = "WCNSS_CTRL";
-
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       qcom,mmio = <&pronto>;
-
-                       bt {
-                               compatible = "qcom,wcnss-bt";
-
-                               /* BD address 00:11:22:33:44:55 */
-                               local-bd-address = [ 55 44 33 22 11 00 ];
-                       };
-
-                       wlan {
-                               compatible = "qcom,wcnss-wlan";
-
-                               interrupts = <0 145 0>, <0 146 0>;
-                               interrupt-names = "tx", "rx";
-
-                               qcom,smem-state = <&apps_smsm 10>, <&apps_smsm 9>;
-                               qcom,smem-state-names = "tx-enable", "tx-rings-empty";
-                       };
-               };
-       };
-};
-
-soc {
-       pronto: pronto {
-               compatible = "qcom,pronto";
-
-               reg = <0xfb204000 0x2000>, <0xfb202000 0x1000>, <0xfb21b000 0x3000>;
-               reg-names = "ccu", "dxe", "pmu";
-       };
-};
diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,wcnss.yaml b/Documentation/devicetree/bindings/soc/qcom/qcom,wcnss.yaml
new file mode 100644 (file)
index 0000000..d891ecf
--- /dev/null
@@ -0,0 +1,137 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/qcom/qcom,wcnss.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm WCNSS
+
+maintainers:
+  - Andy Gross <agross@kernel.org>
+  - Bjorn Andersson <bjorn.andersson@linaro.org>
+
+description:
+  The Qualcomm WCNSS hardware consists of control block and a BT, WiFi and FM
+  radio block, all using SMD as command channels.
+
+properties:
+  compatible:
+    const: qcom,wcnss
+
+  firmware-name:
+    $ref: /schemas/types.yaml#/definitions/string
+    default: "wlan/prima/WCNSS_qcom_wlan_nv.bin"
+    description:
+      Relative firmware image path for the WLAN NV blob.
+
+  qcom,mmio:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: |
+      Reference to a node specifying the wcnss "ccu" and "dxe" register blocks.
+      The node must be compatible with one of the following::
+           - qcom,riva"
+           - qcom,pronto"
+
+  qcom,smd-channels:
+    $ref: /schemas/types.yaml#/definitions/string
+    const: WCNSS_CTRL
+    description:
+      Standard SMD property specifying the SMD channel used for communication
+      with the WiFi firmware.
+
+  bluetooth:
+    type: object
+    additionalProperties: false
+    properties:
+      compatible:
+        const: qcom,wcnss-bt
+
+      local-bd-address:
+        $ref: /schemas/types.yaml#/definitions/uint8-array
+        maxItems: 6
+        description:
+          See Documentation/devicetree/bindings/net/bluetooth.txt
+
+    required:
+      - compatible
+
+  wifi:
+    additionalProperties: false
+    type: object
+    properties:
+      compatible:
+        const: qcom,wcnss-wlan
+
+      interrupts:
+        maxItems: 2
+
+      interrupt-names:
+        items:
+          - const: tx
+          - const: rx
+
+      qcom,smem-states:
+        $ref: /schemas/types.yaml#/definitions/phandle-array
+        maxItems: 2
+        description:
+          Should reference the tx-enable and tx-rings-empty SMEM states.
+
+      qcom,smem-state-names:
+        $ref: /schemas/types.yaml#/definitions/string-array
+        items:
+          - const: tx-enable
+          - const: tx-rings-empty
+        description:
+          Names of SMEM states.
+
+    required:
+      - compatible
+      - interrupts
+      - interrupt-names
+      - qcom,smem-states
+      - qcom,smem-state-names
+
+required:
+  - compatible
+  - qcom,mmio
+  - qcom,smd-channels
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    smd-edge {
+        interrupts = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>;
+
+        qcom,ipc = <&apcs 8 17>;
+        qcom,smd-edge = <6>;
+        qcom,remote-pid = <4>;
+
+        label = "pronto";
+
+        wcnss {
+            compatible = "qcom,wcnss";
+            qcom,smd-channels = "WCNSS_CTRL";
+
+            qcom,mmio = <&pronto>;
+
+            bluetooth {
+                compatible = "qcom,wcnss-bt";
+                /* BD address 00:11:22:33:44:55 */
+                local-bd-address = [ 55 44 33 22 11 00 ];
+            };
+
+            wifi {
+                compatible = "qcom,wcnss-wlan";
+
+                interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
+                             <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
+                interrupt-names = "tx", "rx";
+
+                qcom,smem-states = <&apps_smsm 10>, <&apps_smsm 9>;
+                qcom,smem-state-names = "tx-enable", "tx-rings-empty";
+            };
+        };
+    };