xref: /linux/Documentation/devicetree/bindings/net/wireless/qcom,ath12k-wsi.yaml (revision 1cc3462159babb69c84c39cb1b4e262aef3ea325)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2# Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
3%YAML 1.2
4---
5$id: http://devicetree.org/schemas/net/wireless/qcom,ath12k-wsi.yaml#
6$schema: http://devicetree.org/meta-schemas/core.yaml#
7
8title: Qualcomm Technologies ath12k wireless devices (PCIe) with WSI interface
9
10maintainers:
11  - Jeff Johnson <jjohnson@kernel.org>
12
13description: |
14  Qualcomm Technologies IEEE 802.11be PCIe devices with WSI interface.
15
16  The ath12k devices (QCN9274) feature WSI support. WSI stands for
17  WLAN Serial Interface. It is used for the exchange of specific
18  control information across radios based on the doorbell mechanism.
19  This WSI connection is essential to exchange control information
20  among these devices.
21
22  The WSI interface includes TX and RX ports, which are used to connect
23  multiple WSI-supported devices together, forming a WSI group.
24
25  Diagram to represent one WSI connection (one WSI group) among
26  three devices.
27
28           +-------+        +-------+        +-------+
29           | pcie1 |        | pcie2 |        | pcie3 |
30           |       |        |       |        |       |
31    +----->|  wsi  |------->|  wsi  |------->|  wsi  |-----+
32    |      | grp 0 |        | grp 0 |        | grp 0 |     |
33    |      +-------+        +-------+        +-------+     |
34    +------------------------------------------------------+
35
36  Diagram to represent two WSI connections (two separate WSI groups)
37  among four devices.
38
39       +-------+    +-------+          +-------+    +-------+
40       | pcie0 |    | pcie1 |          | pcie2 |    | pcie3 |
41       |       |    |       |          |       |    |       |
42   +-->|  wsi  |--->|  wsi  |--+   +-->|  wsi  |--->|  wsi  |--+
43   |   | grp 0 |    | grp 0 |  |   |   | grp 1 |    | grp 1 |  |
44   |   +-------+    +-------+  |   |   +-------+    +-------+  |
45   +---------------------------+   +---------------------------+
46
47properties:
48  compatible:
49    enum:
50      - pci17cb,1109  # QCN9274
51
52  reg:
53    maxItems: 1
54
55  qcom,ath12k-calibration-variant:
56    $ref: /schemas/types.yaml#/definitions/string
57    description:
58      String to uniquely identify variant of the calibration data for designs
59      with colliding bus and device ids
60
61  qcom,wsi-controller:
62    $ref: /schemas/types.yaml#/definitions/flag
63    description:
64      The WSI controller device in the WSI group aids (is capable) to
65      synchronize the Timing Synchronization Function (TSF) clock across
66      all devices in the WSI group.
67
68  ports:
69    $ref: /schemas/graph.yaml#/properties/ports
70    properties:
71      port@0:
72        $ref: /schemas/graph.yaml#/properties/port
73        description:
74          This is the TX port of WSI interface. It is attached to the RX
75          port of the next device in the WSI connection.
76
77      port@1:
78        $ref: /schemas/graph.yaml#/properties/port
79        description:
80          This is the RX port of WSI interface. It is attached to the TX
81          port of the previous device in the WSI connection.
82
83required:
84  - compatible
85  - reg
86
87additionalProperties: false
88
89examples:
90  - |
91    pcie {
92        #address-cells = <3>;
93        #size-cells = <2>;
94
95        pcie@0 {
96            device_type = "pci";
97            reg = <0x0 0x0 0x0 0x0 0x0>;
98            #address-cells = <3>;
99            #size-cells = <2>;
100            ranges;
101
102            wifi@0 {
103                compatible = "pci17cb,1109";
104                reg = <0x0 0x0 0x0 0x0 0x0>;
105
106                qcom,ath12k-calibration-variant = "RDP433_1";
107
108                ports {
109                    #address-cells = <1>;
110                    #size-cells = <0>;
111
112                    port@0 {
113                        reg = <0>;
114
115                        wifi1_wsi_tx: endpoint {
116                            remote-endpoint = <&wifi2_wsi_rx>;
117                        };
118                    };
119
120                    port@1 {
121                        reg = <1>;
122
123                        wifi1_wsi_rx: endpoint {
124                            remote-endpoint = <&wifi3_wsi_tx>;
125                        };
126                    };
127                };
128            };
129        };
130
131        pcie@1 {
132            device_type = "pci";
133            reg = <0x0 0x0 0x1 0x0 0x0>;
134            #address-cells = <3>;
135            #size-cells = <2>;
136            ranges;
137
138            wifi@0 {
139                compatible = "pci17cb,1109";
140                reg = <0x0 0x0 0x0 0x0 0x0>;
141
142                qcom,ath12k-calibration-variant = "RDP433_2";
143                qcom,wsi-controller;
144
145                ports {
146                    #address-cells = <1>;
147                    #size-cells = <0>;
148
149                    port@0 {
150                        reg = <0>;
151
152                        wifi2_wsi_tx: endpoint {
153                            remote-endpoint = <&wifi3_wsi_rx>;
154                        };
155                    };
156
157                    port@1 {
158                        reg = <1>;
159
160                        wifi2_wsi_rx: endpoint {
161                            remote-endpoint = <&wifi1_wsi_tx>;
162                        };
163                    };
164                };
165            };
166        };
167
168        pcie@2 {
169            device_type = "pci";
170            reg = <0x0 0x0 0x2 0x0 0x0>;
171            #address-cells = <3>;
172            #size-cells = <2>;
173            ranges;
174
175            wifi@0 {
176                compatible = "pci17cb,1109";
177                reg = <0x0 0x0 0x0 0x0 0x0>;
178
179                qcom,ath12k-calibration-variant = "RDP433_3";
180
181                ports {
182                    #address-cells = <1>;
183                    #size-cells = <0>;
184
185                    port@0 {
186                        reg = <0>;
187
188                        wifi3_wsi_tx: endpoint {
189                            remote-endpoint = <&wifi1_wsi_rx>;
190                        };
191                    };
192
193                    port@1 {
194                        reg = <1>;
195
196                        wifi3_wsi_rx: endpoint {
197                            remote-endpoint = <&wifi2_wsi_tx>;
198                        };
199                    };
200                };
201            };
202        };
203    };
204