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