# 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

maintainers:
  - Jérôme Pouiller <jerome.pouiller@silabs.com>

description: >
  Support for the Wifi chip WFxxx from Silicon Labs. Currently, the only device
  from the WFxxx series is the WF200 described here:
     https://www.silabs.com/documents/public/data-sheets/wf200-datasheet.pdf

  The WF200 can be connected via SPI or via SDIO.

  For SDIO:

    Declaring the WFxxx chip in device tree is mandatory (usually, the VID/PID is
    sufficient for the SDIO devices).

    It is recommended to declare a mmc-pwrseq on SDIO host above WFx. Without
    it, you may encounter issues during reboot. The mmc-pwrseq should be
    compatible with mmc-pwrseq-simple. Please consult
    Documentation/devicetree/bindings/mmc/mmc-pwrseq-simple.yaml for more
    information.

properties:
  compatible:
    items:
      - enum:
          - prt,prtt1c-wfm200 # Protonic PRTT1C Board
          - silabs,brd4001a # WGM160P Evaluation Board
          - silabs,brd8022a # WF200 Evaluation Board
          - silabs,brd8023a # WFM200 Evaluation Board
      - const: silabs,wf200 # Chip alone without antenna

  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

  interrupts:
    description: The interrupt line. Should be IRQ_TYPE_EDGE_RISING. 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 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

  silabs,antenna-config-file:
    $ref: /schemas/types.yaml#/definitions/string
    description: Use an alternative file for antenna configuration (aka
      "Platform Data Set" in Silabs jargon). Default depends of "compatible"
      string. For "silabs,wf200", the default is 'wf200.pds'.

required:
  - compatible
  - reg

allOf:
  - $ref: /schemas/net/wireless/wireless-controller.yaml#
  - $ref: /schemas/spi/spi-peripheral-props.yaml#

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>

    spi {
        #address-cells = <1>;
        #size-cells = <0>;

        wifi@0 {
            compatible = "silabs,brd8022a", "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>;
    };

    mmc {
        mmc-pwrseq = <&wfx_pwrseq>;
        #address-cells = <1>;
        #size-cells = <0>;

        wifi@1 {
            compatible = "silabs,brd8022a", "silabs,wf200";
            pinctrl-names = "default";
            pinctrl-0 = <&wfx_wakeup>;
            reg = <1>;
            wakeup-gpios = <&gpio 12 GPIO_ACTIVE_HIGH>;
        };
    };
...
