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