218 lines
7.0 KiB
YAML
218 lines
7.0 KiB
YAML
# Copyright (c) 2020 Nordic Semiconductor ASA
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
description: |
|
|
Nordic nRF family RADIO peripheral.
|
|
|
|
This controls the 2.4 GHz radio transceiver on nRF5x
|
|
SoCs, which is available for use with Bluetooth, 802.15.4,
|
|
and proprietary wireless protocols (not all of these
|
|
protocols are available on all SoCs; consult the product
|
|
specifications for details).
|
|
|
|
This binding is not relevant to the nRF91x baseband radio.
|
|
|
|
Front-End Module (FEM) support
|
|
------------------------------
|
|
|
|
External front-end modules are range extenders used for boosting
|
|
the link robustness and link budget of wireless SoCs. If your
|
|
system includes an external FEM, set it up in the devicetree using
|
|
this binding's 'fem' property, like this example:
|
|
|
|
&radio {
|
|
fem = <&nrf_radio_fem>;
|
|
};
|
|
|
|
nrf_radio_fem: my-fem {
|
|
compatible = "...";
|
|
....
|
|
};
|
|
|
|
Currently supported "compatible" properties for the FEM node are:
|
|
|
|
- generic-fem-two-ctrl-pins
|
|
- nordic,nrf21540-fem
|
|
|
|
Refer to the bindings for these compatibles for more information
|
|
about how to configure the FEM.
|
|
|
|
Direction Finding Extension
|
|
---------------------------
|
|
|
|
Some radios support the Bluetooth Direction Finding Extension (DFE).
|
|
The 'dfe-supported' property will be set when it is available.
|
|
In this case, the 'dfegpio[n]-gpios' properties configure GPIO pins
|
|
to use to drive antenna switching.
|
|
|
|
Each dfegpio[n]-gpios property which is set is used to initialize the
|
|
corresponding PSEL.DFEGPIO[n] register.
|
|
|
|
None of the dfegpio[n]-gpios properties are marked 'required',
|
|
since which PSEL.DFEGPIO[n] registers will be used to drive
|
|
antenna switches depends on the use case. Nevertheless, at least two
|
|
antennas must be available to use DFE.
|
|
|
|
That in turn means that at least one dfegpio[n]-gpios
|
|
property must be provided if DFE is used, to give the radio the
|
|
possibility to switch between two antennas. To use 12 antennas,
|
|
4 GPIOs must be provided (since 4 GPIO pins support switching up to
|
|
16 antennas).
|
|
|
|
GPIOs are used in order, following the indices of the dfegpio[n]-gpios
|
|
properties. The order is important because it affects the mapping of
|
|
antenna switch patterns to GPIOs.
|
|
|
|
Antenna switching patterns
|
|
--------------------------
|
|
|
|
An antenna switching pattern is a binary number where each bit is
|
|
applied to a particular antenna GPIO pin. For example, the pattern
|
|
0x3 means that antenna GPIOs at indexes 0 and 1 will be set, while
|
|
the following are left unset.
|
|
|
|
The number of GPIOs specified with dfegpio[n]-gpios properties
|
|
affects the allowed pattern values. For example, when using four
|
|
GPIOs, the pattern count cannot be greater than 16, and the
|
|
maximum allowed value is 15.
|
|
|
|
Antenna switch patterns are stored in DFE internal memory by
|
|
writes to the SWITCHPATTERN register. DFE handling code applies
|
|
antenna switch patterns during Constant Tone Extension (CTE)
|
|
receive (Angle of Arrival mode) or transmission (Angle of
|
|
Departure mode) procedure.
|
|
|
|
DFE States
|
|
----------
|
|
|
|
There are four states of DFE operation:
|
|
|
|
* Idle: in this state, PDU transmission happens.
|
|
DFE uses SWITCHPATTERN[0] to select the antenna in this state.
|
|
(The 'dfe-pdu-antenna' property value described below is stored
|
|
in SWITCHPATTERN[0] by the radio controller code.)
|
|
|
|
* Guard: in this state, DFE prepares for reception or transmission
|
|
of CTE. For this state, DFE selects the antenna by applying
|
|
SWITCHPATTERN[1].
|
|
|
|
* Reference: in this state, DFE starts to receive or transmit CTE.
|
|
In AoA mode, DFE collects reference IQ samples. The selected
|
|
antenna is the same as in the guard state.
|
|
|
|
* Switch-sample: in this state, actual antenna switching happens.
|
|
DFE selects antennas by applying SWITCHPATTERN[2..N]. If the
|
|
number of switch-sample periods is greater than the number of
|
|
stored switching patterns, DFE loops back to SWITCHPATTERN[2].
|
|
|
|
|
|
compatible: "nordic,nrf-radio"
|
|
|
|
include: [base.yaml]
|
|
|
|
properties:
|
|
reg:
|
|
required: true
|
|
|
|
interrupts:
|
|
required: true
|
|
|
|
fem:
|
|
type: phandle
|
|
description: |
|
|
Phandle linking the RADIO node to its external front-end module.
|
|
|
|
coex:
|
|
type: phandle
|
|
description: |
|
|
Phandle linking the RADIO node to the external radio coexistence arbitrator.
|
|
|
|
dfe-supported:
|
|
type: boolean
|
|
description: |
|
|
If set, the radio hardware supports the Direction Finding Extension.
|
|
This property should be treated as read-only and should not be overridden;
|
|
the correct value is provided for your target's SoC already.
|
|
|
|
dfe-antenna-num:
|
|
type: int
|
|
required: false
|
|
description: |
|
|
Number of available antennas for the Direction Finding Extension.
|
|
|
|
This should only be set if dfe-supported is true. If you set this
|
|
property, the value must be at least two.
|
|
|
|
dfe-pdu-antenna:
|
|
type: int
|
|
required: false
|
|
description: |
|
|
Antenna switch pattern to be used for transmission of PDU before start
|
|
of transmission of Constant Tone Extension.
|
|
|
|
This should only be set if dfe-supported is true.
|
|
|
|
This pattern is stored in SWITCHPATTERN[0] before actual antenna
|
|
switching patterns. This pattern will also be used to drive GPIOs
|
|
when the radio releases control of GPIOs used to switch antennas.
|
|
|
|
dfegpio0-gpios:
|
|
type: phandle-array
|
|
required: false
|
|
description: |
|
|
Pin select for DFE pin 0. This should only be set if dfe-supported
|
|
is true.
|
|
|
|
For example, to use P0.2 on an nRF5x SoC:
|
|
|
|
dfegpio1-gpios = <&gpio0 2 0>;
|
|
|
|
To use P1.4:
|
|
|
|
dfegpio1-gpios = <&gpio1 4 0>;
|
|
|
|
Note the last 'flags' cell in the property is not used,
|
|
and should be set to 0 as shown.
|
|
|
|
dfegpio1-gpios:
|
|
type: phandle-array
|
|
required: false
|
|
description: |
|
|
Pin select for DFE pin 1. See description for dfegpio0-gpios.
|
|
|
|
dfegpio2-gpios:
|
|
type: phandle-array
|
|
required: false
|
|
description: |
|
|
Pin select for DFE pin 2. See description for dfegpio0-gpios.
|
|
|
|
dfegpio3-gpios:
|
|
type: phandle-array
|
|
required: false
|
|
description: |
|
|
Pin select for DFE pin 3. See description for dfegpio0-gpios.
|
|
|
|
dfegpio4-gpios:
|
|
type: phandle-array
|
|
required: false
|
|
description: |
|
|
Pin select for DFE pin 4. See description for dfegpio0-gpios.
|
|
|
|
dfegpio5-gpios:
|
|
type: phandle-array
|
|
required: false
|
|
description: |
|
|
Pin select for DFE pin 5. See description for dfegpio0-gpios.
|
|
|
|
dfegpio6-gpios:
|
|
type: phandle-array
|
|
required: false
|
|
description: |
|
|
Pin select for DFE pin 6. See description for dfegpio0-gpios.
|
|
|
|
dfegpio7-gpios:
|
|
type: phandle-array
|
|
required: false
|
|
description: |
|
|
Pin select for DFE pin 7. See description for dfegpio0-gpios.
|