dt-bindings: staging: wfx: silabs,wfx yaml conversion

The device can be connected on SPI or on SDIO. The original file
described the two options separately. So, most of the file had to be
rewritten in order to match with the Yaml requirements.

Some device requirements are still written in the comments since they
cannot been expressed with the current scheme (e.g. reg must be set to 1
with SDIO, interrupt is mandatory with SPI, reset-gpio in SPI is
replaced by mmc-pwrseq in SDIO, etc...).

The examples provided have also been reworked in order to make
dt_binding_check happy.

Finally, also fix typo in the name of the file (siliabs instead of
silabs)

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20201007101943.749898-7-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Jérôme Pouiller 2020-10-07 12:19:42 +02:00 committed by Greg Kroah-Hartman
parent f9dc9f3750
commit 76c3bdd67d
2 changed files with 125 additions and 96 deletions

View file

@ -0,0 +1,125 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (c) 2020, Silicon Laboratories, Inc.
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/wireless/silabs,wfx.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Silicon Labs WFxxx devicetree bindings
maintainers:
- Jérôme Pouiller <jerome.pouiller@silabs.com>
description:
The WFxxx chip series can be connected via SPI or via SDIO.
For SDIO':'
The driver is able to detect a WFxxx chip on SDIO bus by matching its Vendor
ID and Product ID. However, driver will only provide limited features in
this case. Thus declaring WFxxx chip in device tree is recommended (and may
become mandatory in the future).
In addition, it is recommended to declare a mmc-pwrseq on SDIO host above
WFx. Without it, you may encounter issues with warm boot. The mmc-pwrseq
should be compatible with mmc-pwrseq-simple. Please consult
Documentation/devicetree/bindings/mmc/mmc-pwrseq-simple.txt for more
information.
For SPI':'
In add of the properties below, please consult
Documentation/devicetree/bindings/spi/spi-controller.yaml for optional SPI
related properties.
Note that in add of the properties below, the WFx driver also supports
`mac-address` and `local-mac-address` as described in
Documentation/devicetree/bindings/net/ethernet.txt
properties:
compatible:
const: silabs,wf200
reg:
description:
When used on SDIO bus, <reg> must be set to 1. When used on SPI bus, it is
the chip select address of the device as defined in the SPI devices
bindings.
maxItems: 1
spi-max-frequency:
description: (SPI only) Maximum SPI clocking speed of device in Hz.
maxItems: 1
interrupts:
description: The interrupt line. Triggers IRQ_TYPE_LEVEL_HIGH and
IRQ_TYPE_EDGE_RISING are both supported by the chip and the driver. When
SPI is used, this property is required. When SDIO is used, the "in-band"
interrupt provided by the SDIO bus is used unless an interrupt is defined
in the Device Tree.
maxItems: 1
reset-gpios:
description: (SPI only) Phandle of gpio that will be used to reset chip
during probe. Without this property, you may encounter issues with warm
boot. (For legacy purpose, the gpio in inverted when compatible ==
"silabs,wfx-spi")
For SDIO, the reset gpio should declared using a mmc-pwrseq.
maxItems: 1
wakeup-gpios:
description: Phandle of gpio that will be used to wake-up chip. Without this
property, driver will disable most of power saving features.
maxItems: 1
config-file:
description: Use an alternative file as PDS. Default is `wf200.pds`. Only
necessary for development/debug purpose.
maxItems: 1
required:
- compatible
- reg
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
spi0 {
#address-cells = <1>;
#size-cells = <0>;
wfx@0 {
compatible = "silabs,wf200";
pinctrl-names = "default";
pinctrl-0 = <&wfx_irq &wfx_gpios>;
reg = <0>;
interrupts-extended = <&gpio 16 IRQ_TYPE_EDGE_RISING>;
wakeup-gpios = <&gpio 12 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
spi-max-frequency = <42000000>;
};
};
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
wfx_pwrseq: wfx_pwrseq {
compatible = "mmc-pwrseq-simple";
pinctrl-names = "default";
pinctrl-0 = <&wfx_reset>;
reset-gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
};
mmc0 {
mmc-pwrseq = <&wfx_pwrseq>;
#address-cells = <1>;
#size-cells = <0>;
mmc@1 {
compatible = "silabs,wf200";
pinctrl-names = "default";
pinctrl-0 = <&wfx_wakeup>;
reg = <1>;
wakeup-gpios = <&gpio 12 GPIO_ACTIVE_HIGH>;
};
};
...

View file

@ -1,96 +0,0 @@
The WFxxx chip series can be connected via SPI or via SDIO.
SPI
---
You have to declare the WFxxx chip in your device tree.
Required properties:
- compatible: Should be "silabs,wf200"
- reg: Chip select address of device
- spi-max-frequency: Maximum SPI clocking speed of device in Hz
- interrupts-extended: Should contain interrupt line (interrupt-parent +
interrupt can also been used). Trigger should be `IRQ_TYPE_EDGE_RISING`.
Optional properties:
- reset-gpios: phandle of gpio that will be used to reset chip during probe.
Without this property, you may encounter issues with warm boot.
(Legacy: when compatible == "silabs,wfx-spi", the gpio is inverted.)
Please consult Documentation/devicetree/bindings/spi/spi-bus.txt for optional
SPI connection related properties,
Example:
&spi1 {
wfx {
compatible = "silabs,wf200";
pinctrl-names = "default";
pinctrl-0 = <&wfx_irq &wfx_gpios>;
interrupts-extended = <&gpio 16 IRQ_TYPE_EDGE_RISING>;
wakeup-gpios = <&gpio 12 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
reg = <0>;
spi-max-frequency = <42000000>;
};
};
SDIO
----
The driver is able to detect a WFxxx chip on SDIO bus by matching its Vendor ID
and Product ID. However, driver will only provide limited features in this
case. Thus declaring WFxxx chip in device tree is strongly recommended (and may
become mandatory in the future).
Required properties:
- compatible: Should be "silabs,wf200"
- reg: Should be 1
In addition, it is recommended to declare a mmc-pwrseq on SDIO host above WFx.
Without it, you may encounter issues with warm boot. mmc-pwrseq should be
compatible with mmc-pwrseq-simple. Please consult
Documentation/devicetree/bindings/mmc/mmc-pwrseq-simple.txt for more
information.
Example:
/ {
wfx_pwrseq: wfx_pwrseq {
compatible = "mmc-pwrseq-simple";
pinctrl-names = "default";
pinctrl-0 = <&wfx_reset>;
reset-gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
};
};
&mmc1 {
mmc-pwrseq = <&wfx_pwrseq>;
#address-size = <1>;
#size = <0>;
mmc@1 {
compatible = "silabs,wf200";
reg = <1>;
pinctrl-names = "default";
pinctrl-0 = <&wfx_wakeup>;
wakeup-gpios = <&gpio 12 GPIO_ACTIVE_HIGH>;
};
};
Note that #address-size and #size shoud already be defined in node mmc1, but it
is rarely the case.
Common properties
-----------------
Some properties are recognized either by SPI and SDIO versions:
- wakeup-gpios: phandle of gpio that will be used to wake-up chip. Without
this property, driver will disable most of power saving features.
- config-file: Use an alternative file as PDS. Default is `wf200.pds`. Only
necessary for development/debug purpose.
WFx driver also supports `mac-address` and `local-mac-address` as described in
Documentation/devicetree/bindings/net/ethernet.txt