| /* |
| * Copyright (c) 2021 Nordic Semiconductor ASA |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /* |
| * Generic helper macros for getting radio front-end module (FEM) |
| * settings from devicetree. The main task here is to check the |
| * devicetree compatible of the node the fem property points at, and |
| * pull in a subheader that translates from that compatible's specific |
| * properties to the generic macros required by the nRF5 radio HAL. |
| */ |
| |
| #include <zephyr/devicetree.h> |
| #include <zephyr/dt-bindings/gpio/gpio.h> |
| |
| #if DT_NODE_HAS_PROP(DT_NODELABEL(radio), fem) |
| #define FEM_NODE DT_PHANDLE(DT_NODELABEL(radio), fem) |
| #if DT_NODE_HAS_STATUS(FEM_NODE, okay) |
| #define HAL_RADIO_HAVE_FEM |
| #endif /* DT_NODE_HAS_STATUS(FEM_NODE, okay) */ |
| #endif /* DT_NODE_HAS_PROP(DT_NODELABEL(radio), fem)) */ |
| |
| /* Does FEM_NODE have a particular DT compatible? */ |
| #define FEM_HAS_COMPAT(compat) DT_NODE_HAS_COMPAT(FEM_NODE, compat) |
| |
| /* Does FEM_NODE have a particular DT property defined? */ |
| #define FEM_HAS_PROP(prop) DT_NODE_HAS_PROP(FEM_NODE, prop) |
| |
| /* |
| * Device-specific settings are pulled in based FEM_NODE's compatible |
| * property. |
| */ |
| |
| #ifdef HAL_RADIO_HAVE_FEM |
| #if FEM_HAS_COMPAT(generic_fem_two_ctrl_pins) |
| #include "radio_nrf5_fem_generic.h" |
| #elif FEM_HAS_COMPAT(nordic_nrf21540_fem) |
| #include "radio_nrf5_fem_nrf21540.h" |
| #else |
| #error "radio node fem property has an unsupported compatible" |
| #endif /* FEM_HAS_COMPAT(generic_fem_two_ctrl_pins) */ |
| #endif /* HAL_RADIO_HAVE_FEM */ |
| |
| /* |
| * Define POL_INV macros expected by radio_nrf5_dppi as needed. |
| */ |
| |
| #ifdef HAL_RADIO_GPIO_HAVE_PA_PIN |
| #if DT_GPIO_FLAGS(FEM_NODE, HAL_RADIO_GPIO_PA_PROP) & GPIO_ACTIVE_LOW |
| #define HAL_RADIO_GPIO_PA_POL_INV |
| #endif |
| #endif /* HAL_RADIO_GPIO_HAVE_PA_PIN */ |
| |
| #ifdef HAL_RADIO_GPIO_HAVE_LNA_PIN |
| #if DT_GPIO_FLAGS(FEM_NODE, HAL_RADIO_GPIO_LNA_PROP) & GPIO_ACTIVE_LOW |
| #define HAL_RADIO_GPIO_LNA_POL_INV |
| #endif |
| #endif /* HAL_RADIO_GPIO_HAVE_LNA_PIN */ |