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