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
9title: Silicon Labs WFxxx devicetree bindings
10
11maintainers:
12  - Jérôme Pouiller <jerome.pouiller@silabs.com>
13
14description: >
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
38properties:
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
87additionalProperties: false
88
89required:
90  - compatible
91  - reg
92
93examples:
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...
139