diff mbox series

[RFC,v2,1/5] dt-bindings: net: wireless: ath12k: describe WSI properties for QCN9274

Message ID 20241029173050.2188150-2-quic_rajkbhag@quicinc.com
State New
Headers show
Series [RFC,v2,1/5] dt-bindings: net: wireless: ath12k: describe WSI properties for QCN9274 | expand

Commit Message

Raj Kumar Bhagat Oct. 29, 2024, 5:30 p.m. UTC
QCN9274 device has WSI support. WSI stands for WLAN Serial Interface.
It is used for the exchange of specific control information across
radios based on the doorbell mechanism. This WSI connection is
essential to exchange control information among these devices

Hence, describe WSI interface supported in QCN9274 with the following
properties:

 - qcom,wsi-group-id: It represents the identifier assigned to the WSI
   connection. All the ath12k devices connected to same WSI connection
   have the same wsi-group-id.

 - qcom,wsi-master: Indicates if this device is the WSI master.

 - ports: This is a graph ports schema that has two ports: TX (port@0)
   and RX (port@1). This represents the actual WSI connection among
   multiple devices.

Also, describe the ath12k device property
"qcom,ath12k-calibration-variant". This is a common property among
ath12k devices.

Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
---
 .../bindings/net/wireless/qcom,ath12k.yaml    | 241 +++++++++++++++++-
 1 file changed, 232 insertions(+), 9 deletions(-)
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath12k.yaml b/Documentation/devicetree/bindings/net/wireless/qcom,ath12k.yaml
index 1b5884015b15..42bcd73dd159 100644
--- a/Documentation/devicetree/bindings/net/wireless/qcom,ath12k.yaml
+++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath12k.yaml
@@ -1,5 +1,6 @@ 
 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
 # Copyright (c) 2024 Linaro Limited
+# Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
 %YAML 1.2
 ---
 $id: http://devicetree.org/schemas/net/wireless/qcom,ath12k.yaml#
@@ -18,10 +19,17 @@  properties:
   compatible:
     enum:
       - pci17cb,1107  # WCN7850
+      - pci17cb,1109  # QCN9274
 
   reg:
     maxItems: 1
 
+  qcom,ath12k-calibration-variant:
+    $ref: /schemas/types.yaml#/definitions/string
+    description: |
+      string to uniquely identify variant of the calibration data for designs
+      with colliding bus and device ids
+
   vddaon-supply:
     description: VDD_AON supply regulator handle
 
@@ -49,21 +57,100 @@  properties:
   vddpcie1p8-supply:
     description: VDD_PCIE_1P8 supply regulator handle
 
+  wsi:
+    type: object
+    description: |
+      The ath12k devices (QCN9274) feature WSI support. WSI stands for
+      WLAN Serial Interface. It is used for the exchange of specific
+      control information across radios based on the doorbell mechanism.
+      This WSI connection is essential to exchange control information
+      among these devices.
+
+      Diagram to represent one WSI connection (one WSI group) among
+      three devices.
+
+               +-------+        +-------+        +-------+
+               | pcie2 |        | pcie3 |        | pcie1 |
+               |       |        |       |        |       |
+        +----->|  wsi  |------->|  wsi  |------->|  wsi  |-----+
+        |      | grp 0 |        | grp 0 |        | grp 2 |     |
+        |      +-------+        +-------+        +-------+     |
+        +------------------------------------------------------+
+
+      Diagram to represent two WSI connections (two separate WSI groups)
+      among four devices.
+
+           +-------+    +-------+          +-------+    +-------+
+           | pcie2 |    | pcie3 |          | pcie1 |    | pcie0 |
+           |       |    |       |          |       |    |       |
+       +-->|  wsi  |--->|  wsi  |--+   +-->|  wsi  |--->|  wsi  |--+
+       |   | grp 0 |    | grp 0 |  |   |   | grp 1 |    | grp 1 |  |
+       |   +-------+    +-------+  |   |   +-------+    +-------+  |
+       +---------------------------+   +---------------------------+
+
+    properties:
+      qcom,wsi-group-id:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description:
+          It represents the identifier assigned to the WSI connection. All
+          the ath12k devices connected to same WSI connection have the
+          same wsi-group-id.
+
+      qcom,wsi-master:
+        type: boolean
+        description:
+          Indicates if this device is the WSI master.
+
+      ports:
+        $ref: /schemas/graph.yaml#/properties/ports
+        description:
+          These ports are used to connect multiple WSI supported devices to
+          form the WSI group.
+
+        properties:
+          port@0:
+            $ref: /schemas/graph.yaml#/properties/port
+            description:
+              This is the TX port of WSI interface. It is attached to the RX
+              port of the next device in the WSI connection.
+
+          port@1:
+            $ref: /schemas/graph.yaml#/properties/port
+            description:
+              This is the RX port of WSI interface. It is attached to the TX
+              port of the previous device in the WSI connection.
+
+    required:
+      - qcom,wsi-group-id
+      - ports
+
+    additionalProperties: false
+
 required:
   - compatible
   - reg
-  - vddaon-supply
-  - vddwlcx-supply
-  - vddwlmx-supply
-  - vddrfacmn-supply
-  - vddrfa0p8-supply
-  - vddrfa1p2-supply
-  - vddrfa1p8-supply
-  - vddpcie0p9-supply
-  - vddpcie1p8-supply
 
 additionalProperties: false
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - pci17cb,1107
+    then:
+      required:
+        - vddaon-supply
+        - vddwlcx-supply
+        - vddwlmx-supply
+        - vddrfacmn-supply
+        - vddrfa0p8-supply
+        - vddrfa1p2-supply
+        - vddrfa1p8-supply
+        - vddpcie0p9-supply
+        - vddpcie1p8-supply
+
 examples:
   - |
     #include <dt-bindings/clock/qcom,rpmh.h>
@@ -97,3 +184,139 @@  examples:
             };
         };
     };
+
+  - |
+    pcie1 {
+        #address-cells = <3>;
+        #size-cells = <2>;
+
+        pcie@0 {
+            device_type = "pci";
+            reg = <0x0 0x0 0x0 0x0 0x0>;
+            #address-cells = <3>;
+            #size-cells = <2>;
+            ranges;
+
+            wifi1@0 {
+                compatible = "pci17cb,1109";
+                reg = <0x0 0x0 0x0 0x0 0x0>;
+
+                qcom,ath12k-calibration-variant = "RDP433_1";
+
+                wsi {
+                    qcom,wsi-group-id = <0>;
+
+                    ports {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+
+                        port@0 {
+                            reg = <0>;
+
+                            wifi1_wsi_tx: endpoint {
+                                remote-endpoint = <&wifi2_wsi_rx>;
+                            };
+                        };
+
+                        port@1 {
+                            reg = <1>;
+
+                            wifi1_wsi_rx: endpoint {
+                                remote-endpoint = <&wifi3_wsi_tx>;
+                            };
+                        };
+                    };
+                };
+            };
+        };
+    };
+
+    pcie2 {
+        #address-cells = <3>;
+        #size-cells = <2>;
+
+        pcie@0 {
+            device_type = "pci";
+            reg = <0x0 0x0 0x0 0x0 0x0>;
+            #address-cells = <3>;
+            #size-cells = <2>;
+            ranges;
+
+            wifi2@0 {
+                compatible = "pci17cb,1109";
+                reg = <0x0 0x0 0x0 0x0 0x0>;
+
+                qcom,ath12k-calibration-variant = "RDP433_2";
+
+                wsi {
+                    qcom,wsi-group-id = <0>;
+
+                    ports {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+
+                        port@0 {
+                            reg = <0>;
+
+                            wifi2_wsi_tx: endpoint {
+                                remote-endpoint = <&wifi3_wsi_rx>;
+                            };
+                        };
+
+                        port@1 {
+                            reg = <1>;
+
+                            wifi2_wsi_rx: endpoint {
+                                remote-endpoint = <&wifi1_wsi_tx>;
+                            };
+                        };
+                    };
+                };
+            };
+        };
+    };
+
+    pcie3 {
+        #address-cells = <3>;
+        #size-cells = <2>;
+
+        pcie@0 {
+            device_type = "pci";
+            reg = <0x0 0x0 0x0 0x0 0x0>;
+            #address-cells = <3>;
+            #size-cells = <2>;
+            ranges;
+
+            wifi3@0 {
+                compatible = "pci17cb,1109";
+                reg = <0x0 0x0 0x0 0x0 0x0>;
+
+                qcom,ath12k-calibration-variant = "RDP433_3";
+
+                wsi {
+                    qcom,wsi-group-id = <0>;
+
+                    ports {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+
+                        port@0 {
+                            reg = <0>;
+
+                            wifi3_wsi_tx: endpoint {
+                                remote-endpoint = <&wifi1_wsi_rx>;
+                            };
+                        };
+
+                        port@1 {
+                            reg = <1>;
+
+                            wifi3_wsi_rx: endpoint {
+                                remote-endpoint = <&wifi2_wsi_tx>;
+                            };
+                        };
+                    };
+                };
+            };
+        };
+    };