Merge tag 'arm-dt-5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[platform/kernel/linux-starfive.git] / Documentation / devicetree / bindings / net / wireless / silabs,wfx.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 # Copyright (c) 2020, Silicon Laboratories, Inc.
3 %YAML 1.2
4 ---
5
6 $id: http://devicetree.org/schemas/net/wireless/silabs,wfx.yaml#
7 $schema: http://devicetree.org/meta-schemas/core.yaml#
8
9 title: Silicon Labs WFxxx devicetree bindings
10
11 maintainers:
12   - Jérôme Pouiller <jerome.pouiller@silabs.com>
13
14 description: >
15   Support for the Wifi chip WFxxx from Silicon Labs. Currently, the only device
16   from the WFxxx series is the WF200 described here:
17      https://www.silabs.com/documents/public/data-sheets/wf200-datasheet.pdf
18
19   The WF200 can be connected via SPI or via SDIO.
20
21   For SDIO:
22
23     Declaring the WFxxx chip in device tree is mandatory (usually, the VID/PID is
24     sufficient for the SDIO devices).
25
26     It is recommended to declare a mmc-pwrseq on SDIO host above WFx. Without
27     it, you may encounter issues during reboot. The mmc-pwrseq should be
28     compatible with mmc-pwrseq-simple. Please consult
29     Documentation/devicetree/bindings/mmc/mmc-pwrseq-simple.yaml for more
30     information.
31
32   For SPI:
33
34     In add of the properties below, please consult
35     Documentation/devicetree/bindings/spi/spi-controller.yaml for optional SPI
36     related properties.
37
38 properties:
39   compatible:
40     items:
41       - enum:
42           - prt,prtt1c-wfm200 # Protonic PRTT1C Board
43           - silabs,brd4001a # WGM160P Evaluation Board
44           - silabs,brd8022a # WF200 Evaluation Board
45           - silabs,brd8023a # WFM200 Evaluation Board
46       - const: silabs,wf200 # Chip alone without antenna
47
48   reg:
49     description:
50       When used on SDIO bus, <reg> must be set to 1. When used on SPI bus, it is
51       the chip select address of the device as defined in the SPI devices
52       bindings.
53     maxItems: 1
54
55   spi-max-frequency: true
56
57   interrupts:
58     description: The interrupt line. Should be IRQ_TYPE_EDGE_RISING. When SPI is
59       used, this property is required. When SDIO is used, the "in-band"
60       interrupt provided by the SDIO bus is used unless an interrupt is defined
61       in the Device Tree.
62     maxItems: 1
63
64   reset-gpios:
65     description: (SPI only) Phandle of gpio that will be used to reset chip
66       during probe. Without this property, you may encounter issues with warm
67       boot.
68
69       For SDIO, the reset gpio should declared using a mmc-pwrseq.
70     maxItems: 1
71
72   wakeup-gpios:
73     description: Phandle of gpio that will be used to wake-up chip. Without this
74       property, driver will disable most of power saving features.
75     maxItems: 1
76
77   silabs,antenna-config-file:
78     $ref: /schemas/types.yaml#/definitions/string
79     description: Use an alternative file for antenna configuration (aka
80       "Platform Data Set" in Silabs jargon). Default depends of "compatible"
81       string. For "silabs,wf200", the default is 'wf200.pds'.
82
83   local-mac-address: true
84
85   mac-address: true
86
87 additionalProperties: false
88
89 required:
90   - compatible
91   - reg
92
93 examples:
94   - |
95     #include <dt-bindings/gpio/gpio.h>
96     #include <dt-bindings/interrupt-controller/irq.h>
97
98     spi {
99         #address-cells = <1>;
100         #size-cells = <0>;
101
102         wifi@0 {
103             compatible = "silabs,brd8022a", "silabs,wf200";
104             pinctrl-names = "default";
105             pinctrl-0 = <&wfx_irq &wfx_gpios>;
106             reg = <0>;
107             interrupts-extended = <&gpio 16 IRQ_TYPE_EDGE_RISING>;
108             wakeup-gpios = <&gpio 12 GPIO_ACTIVE_HIGH>;
109             reset-gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
110             spi-max-frequency = <42000000>;
111         };
112     };
113
114   - |
115     #include <dt-bindings/gpio/gpio.h>
116     #include <dt-bindings/interrupt-controller/irq.h>
117
118     wfx_pwrseq: wfx_pwrseq {
119         compatible = "mmc-pwrseq-simple";
120         pinctrl-names = "default";
121         pinctrl-0 = <&wfx_reset>;
122         reset-gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
123     };
124
125     mmc {
126         mmc-pwrseq = <&wfx_pwrseq>;
127         #address-cells = <1>;
128         #size-cells = <0>;
129
130         wifi@1 {
131             compatible = "silabs,brd8022a", "silabs,wf200";
132             pinctrl-names = "default";
133             pinctrl-0 = <&wfx_wakeup>;
134             reg = <1>;
135             wakeup-gpios = <&gpio 12 GPIO_ACTIVE_HIGH>;
136         };
137     };
138 ...