diff --git a/subsys/bluetooth/controller/Kconfig b/subsys/bluetooth/controller/Kconfig index a8cad31c40d..db1401e585e 100644 --- a/subsys/bluetooth/controller/Kconfig +++ b/subsys/bluetooth/controller/Kconfig @@ -284,8 +284,16 @@ config BLUETOOTH_CONTROLLER_SCHED_ADVANCED Disabling this feature will lead to overlapping role in timespace leading to skipped events amongst active roles. +config BLUETOOTH_CONTROLLER_RADIO_ENABLE_FAST + bool "Use tTXEN/RXEN,FAST ramp-up" + depends on SOC_SERIES_NRF52X + default y if SOC_NRF52840 + help + Enable use of fast radio ramp-up mode. + config BLUETOOTH_CONTROLLER_TIFS_HW bool "H/w Accelerated tIFS Trx switching" + depends on !BLUETOOTH_CONTROLLER_RADIO_ENABLE_FAST default y help Enable use of hardware accelerated tIFS Trx switching. diff --git a/subsys/bluetooth/controller/hal/nrf5/radio.c b/subsys/bluetooth/controller/hal/nrf5/radio.c index 116e456ba53..4489ef195e5 100644 --- a/subsys/bluetooth/controller/hal/nrf5/radio.c +++ b/subsys/bluetooth/controller/hal/nrf5/radio.c @@ -93,6 +93,12 @@ void radio_phy_set(u8_t phy, u8_t flags) } NRF_RADIO->MODE = (mode << RADIO_MODE_MODE_Pos) & RADIO_MODE_MODE_Msk; + +#if defined(CONFIG_BLUETOOTH_CONTROLLER_RADIO_ENABLE_FAST) + NRF_RADIO->MODECNF0 |= (RADIO_MODECNF0_RU_Fast << + RADIO_MODECNF0_RU_Pos) & + RADIO_MODECNF0_RU_Msk; +#endif /* CONFIG_BLUETOOTH_CONTROLLER_RADIO_ENABLE_FAST */ } void radio_tx_power_set(u32_t power) @@ -211,7 +217,9 @@ u32_t radio_tx_ready_delay_get(u8_t phy, u8_t flags) #if defined(CONFIG_SOC_SERIES_NRF51X) return 140; #elif defined(CONFIG_SOC_SERIES_NRF52X) -#if defined(CONFIG_SOC_NRF52840) +#if defined(CONFIG_BLUETOOTH_CONTROLLER_RADIO_ENABLE_FAST) + return 40; +#elif defined(CONFIG_SOC_NRF52840) switch (phy) { default: #if defined(CONFIG_BLUETOOTH_CONTROLLER_TIFS_HW) @@ -272,7 +280,9 @@ u32_t radio_rx_ready_delay_get(u8_t phy) #if defined(CONFIG_SOC_SERIES_NRF51X) return 138; #elif defined(CONFIG_SOC_SERIES_NRF52X) -#if defined(CONFIG_SOC_NRF52840) +#if defined(CONFIG_BLUETOOTH_CONTROLLER_RADIO_ENABLE_FAST) + return 40; +#elif defined(CONFIG_SOC_NRF52840) switch (phy) { default: #if defined(CONFIG_BLUETOOTH_CONTROLLER_TIFS_HW) diff --git a/tests/bluetooth/init/prj_controller_4_0.conf b/tests/bluetooth/init/prj_controller_4_0.conf index abe98159765..248bdad77f3 100644 --- a/tests/bluetooth/init/prj_controller_4_0.conf +++ b/tests/bluetooth/init/prj_controller_4_0.conf @@ -12,6 +12,7 @@ CONFIG_BLUETOOTH_CONTROLLER_PHY=n CONFIG_BLUETOOTH_CONTROLLER_CHAN_SEL_2=n CONFIG_BLUETOOTH_CONTROLLER_ADV_EXT=n CONFIG_BLUETOOTH_CONTROLLER_TIFS_HW=y +CONFIG_BLUETOOTH_CONTROLLER_RADIO_ENABLE_FAST=n CONFIG_BLUETOOTH_CONTROLLER_FAST_ENC=n CONFIG_BLUETOOTH_CONTROLLER_CONN_RSSI=n CONFIG_BLUETOOTH_CONTROLLER_ADV_INDICATION=n diff --git a/tests/bluetooth/init/prj_controller_dbg.conf b/tests/bluetooth/init/prj_controller_dbg.conf index 416c2d711a9..4ab31884d0c 100644 --- a/tests/bluetooth/init/prj_controller_dbg.conf +++ b/tests/bluetooth/init/prj_controller_dbg.conf @@ -15,6 +15,7 @@ CONFIG_BLUETOOTH_CONTROLLER_PHY_CODED=y CONFIG_BLUETOOTH_CONTROLLER_CHAN_SEL_2=y CONFIG_BLUETOOTH_CONTROLLER_ADV_EXT=y CONFIG_BLUETOOTH_CONTROLLER_TIFS_HW=n +CONFIG_BLUETOOTH_CONTROLLER_RADIO_ENABLE_FAST=y CONFIG_BLUETOOTH_CONTROLLER_FAST_ENC=y CONFIG_BLUETOOTH_CONTROLLER_CONN_RSSI=y CONFIG_BLUETOOTH_CONTROLLER_ADV_INDICATION=y diff --git a/tests/bluetooth/init/prj_controller_tiny.conf b/tests/bluetooth/init/prj_controller_tiny.conf index ad6352aaba2..a77a247af2a 100644 --- a/tests/bluetooth/init/prj_controller_tiny.conf +++ b/tests/bluetooth/init/prj_controller_tiny.conf @@ -12,6 +12,7 @@ CONFIG_BLUETOOTH_CONTROLLER_PHY=n CONFIG_BLUETOOTH_CONTROLLER_CHAN_SEL_2=n CONFIG_BLUETOOTH_CONTROLLER_ADV_EXT=n CONFIG_BLUETOOTH_CONTROLLER_TIFS_HW=y +CONFIG_BLUETOOTH_CONTROLLER_RADIO_ENABLE_FAST=n CONFIG_BLUETOOTH_CONTROLLER_FAST_ENC=n CONFIG_BLUETOOTH_CONTROLLER_CONN_RSSI=n CONFIG_BLUETOOTH_CONTROLLER_ADV_INDICATION=n