From 4cc6098af8e13eb37d7697e255d4ce0bed2206f3 Mon Sep 17 00:00:00 2001 From: Joakim Andersson Date: Tue, 15 Sep 2020 16:45:38 +0200 Subject: [PATCH] Bluetooth: controller: Select controller features from SoC capabilities Select the controller feature support for data length and LE 2M PHY based on the SoC hardware capabilities instead of relying on SoC family. Signed-off-by: Joakim Andersson --- boards/posix/nrf52_bsim/Kconfig.board | 5 +++++ soc/arm/nordic_nrf/Kconfig.peripherals | 6 ++++++ soc/arm/nordic_nrf/nrf52/Kconfig.soc | 14 ++++++++++++++ soc/arm/nordic_nrf/nrf53/Kconfig.soc | 3 +++ subsys/bluetooth/controller/Kconfig | 10 ++++++++-- subsys/bluetooth/controller/Kconfig.ll_sw_split | 10 +++++++--- 6 files changed, 43 insertions(+), 5 deletions(-) diff --git a/boards/posix/nrf52_bsim/Kconfig.board b/boards/posix/nrf52_bsim/Kconfig.board index 1c298a2ed7a..10074c709fe 100644 --- a/boards/posix/nrf52_bsim/Kconfig.board +++ b/boards/posix/nrf52_bsim/Kconfig.board @@ -14,6 +14,11 @@ config BOARD_NRF52_BSIM # of it), so that the corresponding driver becomes available (see # dependencies of the ENTROPY_NRF5_RNG option). select HAS_HW_NRF_RNG + # Indicate that CCM supports 8 bit length field, to support full + # length LL PDUs. + select HAS_HW_NRF_CCM_LFLEN_8BIT + # Indicate 2M support so that Phy procedure can be enabled. + select HAS_HW_NRF_RADIO_BLE_2M # Do the same for the CLOCK and POWER peripherals, so that the nrfx # drivers for them can be used. select HAS_HW_NRF_CLOCK diff --git a/soc/arm/nordic_nrf/Kconfig.peripherals b/soc/arm/nordic_nrf/Kconfig.peripherals index b29bd097fdd..d85639b71dc 100644 --- a/soc/arm/nordic_nrf/Kconfig.peripherals +++ b/soc/arm/nordic_nrf/Kconfig.peripherals @@ -21,6 +21,9 @@ config HAS_HW_NRF_CC312 config HAS_HW_NRF_CCM bool +config HAS_HW_NRF_CCM_LFLEN_8BIT + bool + config HAS_HW_NRF_CLOCK bool @@ -109,6 +112,9 @@ config HAS_HW_NRF_QDEC config HAS_HW_NRF_QSPI bool +config HAS_HW_NRF_RADIO_BLE_2M + bool + config HAS_HW_NRF_RADIO_BLE_CODED bool diff --git a/soc/arm/nordic_nrf/nrf52/Kconfig.soc b/soc/arm/nordic_nrf/nrf52/Kconfig.soc index 6d75b575e4b..905b0f7eea7 100644 --- a/soc/arm/nordic_nrf/nrf52/Kconfig.soc +++ b/soc/arm/nordic_nrf/nrf52/Kconfig.soc @@ -8,6 +8,7 @@ config SOC_NRF52805 bool select HAS_HW_NRF_BPROT select HAS_HW_NRF_CCM + select HAS_HW_NRF_CCM_LFLEN_8BIT select HAS_HW_NRF_CLOCK select HAS_HW_NRF_ECB select HAS_HW_NRF_EGU0 @@ -18,6 +19,7 @@ config SOC_NRF52805 select HAS_HW_NRF_POWER select HAS_HW_NRF_PPI select HAS_HW_NRF_QDEC + select HAS_HW_NRF_RADIO_BLE_2M select HAS_HW_NRF_RNG select HAS_HW_NRF_RTC0 select HAS_HW_NRF_RTC1 @@ -47,6 +49,7 @@ config SOC_NRF52810 bool select HAS_HW_NRF_BPROT select HAS_HW_NRF_CCM + select HAS_HW_NRF_CCM_LFLEN_8BIT select HAS_HW_NRF_CLOCK select HAS_HW_NRF_COMP select HAS_HW_NRF_ECB @@ -60,6 +63,7 @@ config SOC_NRF52810 select HAS_HW_NRF_PPI select HAS_HW_NRF_PWM0 select HAS_HW_NRF_QDEC + select HAS_HW_NRF_RADIO_BLE_2M select HAS_HW_NRF_RNG select HAS_HW_NRF_RTC0 select HAS_HW_NRF_RTC1 @@ -89,6 +93,7 @@ config SOC_NRF52811 bool select HAS_HW_NRF_BPROT select HAS_HW_NRF_CCM + select HAS_HW_NRF_CCM_LFLEN_8BIT select HAS_HW_NRF_CLOCK select HAS_HW_NRF_COMP select HAS_HW_NRF_ECB @@ -102,6 +107,7 @@ config SOC_NRF52811 select HAS_HW_NRF_PPI select HAS_HW_NRF_PWM0 select HAS_HW_NRF_QDEC + select HAS_HW_NRF_RADIO_BLE_2M select HAS_HW_NRF_RADIO_BLE_CODED select HAS_HW_NRF_RADIO_IEEE802154 select HAS_HW_NRF_RNG @@ -136,6 +142,7 @@ config SOC_NRF52820 bool select HAS_HW_NRF_ACL select HAS_HW_NRF_CCM + select HAS_HW_NRF_CCM_LFLEN_8BIT select HAS_HW_NRF_CLOCK select HAS_HW_NRF_COMP select HAS_HW_NRF_ECB @@ -150,6 +157,7 @@ config SOC_NRF52820 select HAS_HW_NRF_POWER select HAS_HW_NRF_PPI select HAS_HW_NRF_QDEC + select HAS_HW_NRF_RADIO_BLE_2M select HAS_HW_NRF_RADIO_BLE_CODED select HAS_HW_NRF_RNG select HAS_HW_NRF_RTC0 @@ -189,6 +197,7 @@ config SOC_NRF52832 select CPU_HAS_FPU select HAS_HW_NRF_BPROT select HAS_HW_NRF_CCM + select HAS_HW_NRF_CCM_LFLEN_8BIT select HAS_HW_NRF_CLOCK select HAS_HW_NRF_COMP select HAS_HW_NRF_ECB @@ -211,6 +220,7 @@ config SOC_NRF52832 select HAS_HW_NRF_PWM1 select HAS_HW_NRF_PWM2 select HAS_HW_NRF_QDEC + select HAS_HW_NRF_RADIO_BLE_2M select HAS_HW_NRF_RNG select HAS_HW_NRF_RTC0 select HAS_HW_NRF_RTC1 @@ -254,6 +264,7 @@ config SOC_NRF52833 select CPU_HAS_FPU select HAS_HW_NRF_ACL select HAS_HW_NRF_CCM + select HAS_HW_NRF_CCM_LFLEN_8BIT select HAS_HW_NRF_CLOCK select HAS_HW_NRF_COMP select HAS_HW_NRF_ECB @@ -279,6 +290,7 @@ config SOC_NRF52833 select HAS_HW_NRF_PWM2 select HAS_HW_NRF_PWM3 select HAS_HW_NRF_QDEC + select HAS_HW_NRF_RADIO_BLE_2M select HAS_HW_NRF_RADIO_BLE_CODED select HAS_HW_NRF_RADIO_IEEE802154 select HAS_HW_NRF_RNG @@ -328,6 +340,7 @@ config SOC_NRF52840 select HAS_HW_NRF_ACL select HAS_HW_NRF_CC310 select HAS_HW_NRF_CCM + select HAS_HW_NRF_CCM_LFLEN_8BIT select HAS_HW_NRF_CLOCK select HAS_HW_NRF_COMP select HAS_HW_NRF_ECB @@ -354,6 +367,7 @@ config SOC_NRF52840 select HAS_HW_NRF_PWM3 select HAS_HW_NRF_QDEC select HAS_HW_NRF_QSPI + select HAS_HW_NRF_RADIO_BLE_2M select HAS_HW_NRF_RADIO_BLE_CODED select HAS_HW_NRF_RADIO_IEEE802154 select HAS_HW_NRF_RNG diff --git a/soc/arm/nordic_nrf/nrf53/Kconfig.soc b/soc/arm/nordic_nrf/nrf53/Kconfig.soc index 6817d17b7a6..cba29b95e90 100644 --- a/soc/arm/nordic_nrf/nrf53/Kconfig.soc +++ b/soc/arm/nordic_nrf/nrf53/Kconfig.soc @@ -70,6 +70,8 @@ config SOC_NRF5340_CPUNET bool select HAS_HW_NRF_ACL select HAS_HW_NRF_CLOCK + select HAS_HW_NRF_CCM + select HAS_HW_NRF_CCM_LFLEN_8BIT select HAS_HW_NRF_DPPIC select HAS_HW_NRF_EGU0 select HAS_HW_NRF_GPIO0 @@ -78,6 +80,7 @@ config SOC_NRF5340_CPUNET select HAS_HW_NRF_IPC select HAS_HW_NRF_NVMC_PE select HAS_HW_NRF_POWER + select HAS_HW_NRF_RADIO_BLE_2M select HAS_HW_NRF_RADIO_BLE_CODED select HAS_HW_NRF_RADIO_IEEE802154 select HAS_HW_NRF_RNG diff --git a/subsys/bluetooth/controller/Kconfig b/subsys/bluetooth/controller/Kconfig index 41f983bfc40..c22b8c5f9e7 100644 --- a/subsys/bluetooth/controller/Kconfig +++ b/subsys/bluetooth/controller/Kconfig @@ -32,6 +32,12 @@ config BT_CTLR_EXT_SCAN_FP_SUPPORT config BT_CTLR_PHY_UPDATE_SUPPORT bool +config BT_CTLR_PHY_2M_SUPPORT + bool + +config BT_CTLR_PHY_CODED_SUPPORT + bool + config BT_CTLR_ADV_EXT_SUPPORT bool @@ -334,14 +340,14 @@ config BT_CTLR_PHY config BT_CTLR_PHY_2M bool "2Mbps PHY Support" - depends on BT_CTLR_PHY && (!SOC_SERIES_NRF51X || BT_CTLR_PHY_2M_NRF) + depends on BT_CTLR_PHY && BT_CTLR_PHY_2M_SUPPORT default y help Enable support for Bluetooth 5.0 2Mbps PHY in the Controller. config BT_CTLR_PHY_CODED bool "Coded PHY Support" - depends on BT_CTLR_PHY && HAS_HW_NRF_RADIO_BLE_CODED + depends on BT_CTLR_PHY && BT_CTLR_PHY_CODED_SUPPORT default y help Enable support for Bluetooth 5.0 Coded PHY in the Controller. diff --git a/subsys/bluetooth/controller/Kconfig.ll_sw_split b/subsys/bluetooth/controller/Kconfig.ll_sw_split index 523e7ccaa7a..9fbf1ebbb56 100644 --- a/subsys/bluetooth/controller/Kconfig.ll_sw_split +++ b/subsys/bluetooth/controller/Kconfig.ll_sw_split @@ -16,12 +16,16 @@ config BT_LLL_VENDOR_NORDIC select BT_CTLR_CONN_PARAM_REQ_SUPPORT select BT_CTLR_EXT_REJ_IND_SUPPORT select BT_CTLR_SLAVE_FEAT_REQ_SUPPORT - select BT_CTLR_DATA_LEN_UPDATE_SUPPORT if !SOC_SERIES_NRF51X || \ + select BT_CTLR_DATA_LEN_UPDATE_SUPPORT if HAS_HW_NRF_CCM_LFLEN_8BIT || \ BT_CTLR_DATA_LENGTH_CLEAR select BT_CTLR_PRIVACY_SUPPORT if !SOC_SERIES_NRF51X select BT_CTLR_EXT_SCAN_FP_SUPPORT - select BT_CTLR_PHY_UPDATE_SUPPORT if !SOC_SERIES_NRF51X || \ - BT_CTLR_PHY_2M_NRF + + select BT_CTLR_PHY_2M_SUPPORT if HAS_HW_NRF_RADIO_BLE_2M || \ + BT_CTLR_PHY_2M_NRF + select BT_CTLR_PHY_CODED_SUPPORT if HAS_HW_NRF_RADIO_BLE_CODED + select BT_CTLR_PHY_UPDATE_SUPPORT if BT_CTLR_PHY_2M_SUPPORT || \ + BT_CTLR_PHY_CODED_SUPPORT select BT_CTLR_ADV_EXT_SUPPORT select BT_CTLR_ADV_PERIODIC_SUPPORT select BT_CTLR_CHAN_SEL_2_SUPPORT