# Copyright (c) 2020, 2021 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0


description: |
    This is a representation of the nRF21540 Radio Front-End module.

    See the "nordic,nrf21540-fem-spi" binding to configure the SPI
    interface. The SPI interface should be configured as a child node
    of the SPI bus you have connected to the FEM. Then you "connect"
    the FEM and SPI configurations using the spi-if property.

    Here is an example nRF21540 configuration with a SPI interface
    selected, using the SPIM0 peripheral found on several nRF5 SoCs:

      &spi0 {
              compatible = "nordic,nrf-spim";
              status = "okay";
              cs-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
              /* ... MISO/MOSI/SCK pin configuration goes here ... */

              my_spi_if: nrf21540-spi@0 {
                      compatible = "nordic,nrf21540-fem-spi";
                      reg = <0>;
                      spi-max-frequency = <8000000>;
              };
      };

      nrf_radio_fem: nrf21540 {
              compatible = "nordic,nrf21540-fem";
              tx-en-gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
              rx-en-gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>;
              spi-if = <&my_spi_if>;
              pdn-gpios = <...>;
              ant-sel-gpios = <...>;
              mode-gpios = <...>;
              /* ... other nRF21540 properties go here ... */
      };

      &radio {
              fem = <&nrf_radio_fem>;
      };

    In the above example, the nRF21540 is configured for use with:

      - TX_EN on P0.2 (from 'tx-en-gpios')
      - RX_EN on P0.5 (from 'rx-en-gpios')
      - SPI communication via SPIM0 (the bus, or parent node, of
        the 'my_spi_if' node
      - CSN on P1.3 (from index 0 in the bus node's 'cs-gpios' property)

    You must perform any additional required SPI pin configuration
    (nRF21540 MISO, MOSI, and SCK pins) within the SPI bus node
    ('spi0' in the above example). See your SPI node's binding for
    details on these pin mux properties. You can use any SPI node
    available in your SoC's devicetree.

    Configure any other nRF21540 pins as needed using 'pdn-gpios',
    'ant-sel-gpios', and 'mode-gpios' properties. If unsure about the
    format, use 'tx-en-gpios' as an example.

    Finally, the nRF5 SoC's radio peripheral is set up for use with
    the nRF21540 via the 'fem' property in the 'radio' node.

compatible: "nordic,nrf21540-fem"

include: base.yaml

properties:
  tx-en-gpios:
    type: phandle-array
    description: |
        GPIO of the SOC controlling TX_EN pin of the nRF21540
  rx-en-gpios:
    type: phandle-array
    description: |
        GPIO of the SOC controlling RX_EN pin of the nRF21540
  pdn-gpios:
    type: phandle-array
    description: |
        GPIO of the SOC controlling PDN pin of the nRF21540
  ant-sel-gpios:
    type: phandle-array
    description: |
        GPIO of the SOC controlling ANT-SEL pin of the nRF21540
  mode-gpios:
    type: phandle-array
    description: |
        GPIO of the SOC controlling MODE pin of the nRF21540
  spi-if:
    type: phandle
    description: |
        Reference to the nordic,nrf21540-fem-spi SPI bus interface.

        This must be present to support SPI control of the FEM.
  tx-en-settle-time-us:
    type: int
    default: 11
    description: |
        Settling time in microseconds from state PG to TX.

        Default value is based on Table 6 of the nRF21540 Product
        Specification (v1.0), and can be overridden for tuned
        configurations.
  rx-en-settle-time-us:
    type: int
    default: 11
    description: |
        Settling time in microseconds from state PG to RX.

        Default value is based on Table 6 of the nRF21540 Product
        Specification (v1.0), and can be overridden for tuned
        configurations.
  pdn-settle-time-us:
    type: int
    default: 18
    description: |
        Settling time in microseconds from state PD to PG.

        Default value is based on Table 6 of the nRF21540 Product
        Specification (v1.0), and can be overridden for tuned
        configurations.
  trx-hold-time-us:
    type: int
    default: 3
    description: |
        Power-off time in microseconds when changing from RX or TX to PG.

        Default value is based on Table 6 of the nRF21540 Product
        Specification (v1.0), and can be overridden for tuned
        configurations.
  supply-voltage-mv:
    type: int
    description: |
        nRF21540 supply voltage in mV.

        This is used if compensation for nRF21540 supply voltage is supported
        by software.
