# 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>;
        };
    };
...
