Documentation / devicetree / bindings / net / wireless / silabs,wfx.yaml


Based on kernel version 6.8. Page generated on 2024-03-11 21:26 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
# 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'.

  local-mac-address: true

  mac-address: true

required:
  - compatible
  - reg

allOf:
  - $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>;
        };
    };
...