1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/soc/qcom/qcom,wcnss.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm WCNSS
8
9maintainers:
10  - Andy Gross <agross@kernel.org>
11  - Bjorn Andersson <bjorn.andersson@linaro.org>
12
13description:
14  The Qualcomm WCNSS hardware consists of control block and a BT, WiFi and FM
15  radio block, all using SMD as command channels.
16
17properties:
18  compatible:
19    const: qcom,wcnss
20
21  firmware-name:
22    $ref: /schemas/types.yaml#/definitions/string
23    default: "wlan/prima/WCNSS_qcom_wlan_nv.bin"
24    description:
25      Relative firmware image path for the WLAN NV blob.
26
27  qcom,mmio:
28    $ref: /schemas/types.yaml#/definitions/phandle
29    description: |
30      Reference to a node specifying the wcnss "ccu" and "dxe" register blocks.
31      The node must be compatible with one of the following::
32           - qcom,riva"
33           - qcom,pronto"
34
35  qcom,smd-channels:
36    $ref: /schemas/types.yaml#/definitions/string
37    const: WCNSS_CTRL
38    description:
39      Standard SMD property specifying the SMD channel used for communication
40      with the WiFi firmware.
41
42  bluetooth:
43    type: object
44    additionalProperties: false
45    properties:
46      compatible:
47        const: qcom,wcnss-bt
48
49      local-bd-address:
50        $ref: /schemas/types.yaml#/definitions/uint8-array
51        maxItems: 6
52        description:
53          See Documentation/devicetree/bindings/net/bluetooth.txt
54
55    required:
56      - compatible
57
58  wifi:
59    additionalProperties: false
60    type: object
61    properties:
62      compatible:
63        const: qcom,wcnss-wlan
64
65      interrupts:
66        maxItems: 2
67
68      interrupt-names:
69        items:
70          - const: tx
71          - const: rx
72
73      qcom,smem-states:
74        $ref: /schemas/types.yaml#/definitions/phandle-array
75        maxItems: 2
76        description:
77          Should reference the tx-enable and tx-rings-empty SMEM states.
78
79      qcom,smem-state-names:
80        items:
81          - const: tx-enable
82          - const: tx-rings-empty
83        description:
84          Names of SMEM states.
85
86    required:
87      - compatible
88      - interrupts
89      - interrupt-names
90      - qcom,smem-states
91      - qcom,smem-state-names
92
93required:
94  - compatible
95  - qcom,mmio
96  - qcom,smd-channels
97
98additionalProperties: false
99
100examples:
101  - |
102    #include <dt-bindings/interrupt-controller/arm-gic.h>
103
104    smd-edge {
105        interrupts = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>;
106
107        qcom,ipc = <&apcs 8 17>;
108        qcom,smd-edge = <6>;
109        qcom,remote-pid = <4>;
110
111        label = "pronto";
112
113        wcnss {
114            compatible = "qcom,wcnss";
115            qcom,smd-channels = "WCNSS_CTRL";
116
117            qcom,mmio = <&pronto>;
118
119            bluetooth {
120                compatible = "qcom,wcnss-bt";
121                /* BD address 00:11:22:33:44:55 */
122                local-bd-address = [ 55 44 33 22 11 00 ];
123            };
124
125            wifi {
126                compatible = "qcom,wcnss-wlan";
127
128                interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
129                             <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
130                interrupt-names = "tx", "rx";
131
132                qcom,smem-states = <&apps_smsm 10>, <&apps_smsm 9>;
133                qcom,smem-state-names = "tx-enable", "tx-rings-empty";
134            };
135        };
136    };
137