Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion drivers/flash/Kconfig.nrf
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ choice SOC_FLASH_NRF_RADIO_SYNC_CHOICE

config SOC_FLASH_NRF_RADIO_SYNC_TICKER
bool "Nordic nRFx flash driver synchronized with radio"
depends on BT_LL_SW_SPLIT
depends on BT_LL_SW_SPLIT && !SOC_SERIES_NRF54HX
help
Enable synchronization between flash memory driver and radio using
Bluetooth LE LL controller ticker API.
Expand Down
2 changes: 1 addition & 1 deletion drivers/flash/Kconfig.nrf_rram
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ choice SOC_FLASH_NRF_RADIO_SYNC_CHOICE

config SOC_FLASH_NRF_RADIO_SYNC_TICKER
bool "Nordic nRFx flash driver synchronized with radio"
depends on BT_LL_SW_SPLIT
depends on BT_LL_SW_SPLIT && !SOC_SERIES_NRF54HX
help
Enable synchronization between flash memory driver and radio using
Bluetooth LE LL controller ticker API.
Expand Down
2 changes: 2 additions & 0 deletions dts/vendor/nordic/nrf54h20.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@
min-residency-us = <700>;
exit-latency-us = <5>;
};

idle_cache_disabled: idle_cache_disabled {
compatible = "zephyr,power-state";
power-state-name = "suspend-to-idle";
Expand Down Expand Up @@ -500,6 +501,7 @@
compatible = "nordic,bt-hci-sdc";
status = "disabled";
};

bt_hci_controller: bt_hci_controller {
compatible = "zephyr,bt-hci-ll-sw-split";
status = "disabled";
Expand Down
43 changes: 22 additions & 21 deletions subsys/bluetooth/controller/Kconfig.ll_sw_split
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Zephyr Bluetooth Controller configuration options

# Copyright (c) 2016-2017 Nordic Semiconductor ASA
# Copyright (c) 2016-2025 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

if BT_LL_SW_SPLIT
Expand All @@ -10,14 +10,15 @@ config BT_LLL_VENDOR_NORDIC
depends on SOC_COMPATIBLE_NRF
depends on !$(dt_nodelabel_enabled,timer0)
depends on !$(dt_nodelabel_enabled,rtc0)

select BT_CTLR_ENTROPY_SUPPORT
select ENTROPY_NRF5_RNG if BT_CTLR_ENTROPY && !SOC_COMPATIBLE_NRF54LX
select CLOCK_CONTROL
select ENTROPY_NRF5_RNG if BT_CTLR_ENTROPY && \
!SOC_COMPATIBLE_NRF54LX && \
!SOC_SERIES_NRF54HX
select ENTROPY_NRF5_BIAS_CORRECTION if ENTROPY_NRF5_RNG
select EXPERIMENTAL if !ENTROPY_HAS_DRIVER

select BT_HAS_HCI_VS
select BT_HCI_VS_FATAL_ERROR_SUPPORT
select BT_CTLR_ENTROPY_SUPPORT
select BT_CTLR_CRYPTO_SUPPORT
select BT_CTLR_LE_ENC_SUPPORT if BT_CTLR_CRYPTO_SUPPORT && \
!BT_CTLR_DATA_LENGTH_CLEAR && \
Expand All @@ -30,6 +31,7 @@ config BT_LLL_VENDOR_NORDIC
select BT_CTLR_DATA_LEN_UPDATE_SUPPORT if !BT_CTLR_LE_ENC_SUPPORT || \
HAS_HW_NRF_CCM_LFLEN_8BIT || \
SOC_COMPATIBLE_NRF54LX || \
SOC_SERIES_NRF54HX || \
BT_CTLR_DATA_LENGTH_CLEAR
select BT_CTLR_EXT_SCAN_FP_SUPPORT
select BT_CTLR_PHY_2M_SUPPORT if HAS_HW_NRF_RADIO_BLE_2M || \
Expand All @@ -54,32 +56,28 @@ config BT_LLL_VENDOR_NORDIC
select BT_CTLR_SYNC_TRANSFER_SENDER_SUPPORT
select BT_CTLR_DTM_HCI_SUPPORT
select BT_CTLR_CONN_RSSI_SUPPORT

select BT_CTLR_XTAL_ADVANCED_SUPPORT
select BT_CTLR_SCHED_ADVANCED_SUPPORT
select BT_CTLR_TIFS_HW_SUPPORT
select BT_CTLR_ULL_LLL_PRIO_SUPPORT

select BT_TICKER_REMAINDER_SUPPORT if !SOC_COMPATIBLE_NRF54LX
select BT_CTLR_ASSERT_OPTIMIZE_FOR_SIZE_SUPPORT if CPU_CORTEX_M
select BT_TICKER_UPDATE if BT_BROADCASTER || BT_CONN || \
(BT_OBSERVER && BT_CTLR_ADV_EXT)
select BT_TICKER_START_REMAINDER if BT_TICKER_REMAINDER_SUPPORT && BT_CTLR_CENTRAL_ISO
select BT_TICKER_REMAINDER_SUPPORT if !BT_CTLR_NRF_GRTC
select BT_TICKER_START_REMAINDER if BT_TICKER_REMAINDER_SUPPORT && \
BT_CTLR_CENTRAL_ISO
select BT_TICKER_REMAINDER_GET if BT_TICKER_REMAINDER_SUPPORT && \
(BT_BROADCASTER && BT_CTLR_ADV_EXT)
select BT_TICKER_LAZY_GET if BT_CTLR_ADV_PERIODIC || BT_CTLR_CONN_ISO || BT_CTLR_SYNC_TRANSFER_SENDER

select BT_TICKER_LAZY_GET if BT_CTLR_ADV_PERIODIC || BT_CTLR_CONN_ISO || \
BT_CTLR_SYNC_TRANSFER_SENDER
select BT_TICKER_PREFER_START_BEFORE_STOP if BT_TICKER_SLOT_AGNOSTIC

select BT_CTLR_ASSERT_OPTIMIZE_FOR_SIZE_SUPPORT if CPU_CORTEX_M

default y
help
Use Nordic Lower Link Layer implementation.

config BT_LLL_VENDOR_OPENISA
bool "Use OpenISA LLL"
depends on SOC_OPENISA_RV32M1

select BT_HAS_HCI_VS
select BT_CTLR_ENTROPY_SUPPORT
select BT_CTLR_CRYPTO_SUPPORT
Expand All @@ -88,10 +86,8 @@ config BT_LLL_VENDOR_OPENISA
select BT_CTLR_PRIVACY_SUPPORT if BT_CTLR_CRYPTO_SUPPORT
select BT_CTLR_PHY_UPDATE_SUPPORT
select BT_CTLR_EXT_REJ_IND_SUPPORT

select BT_TICKER_REMAINDER_SUPPORT
select BT_TICKER_UPDATE if BT_BROADCASTER || BT_CONN

default y
help
Use OpenISA Lower Link Layer implementation.
Expand Down Expand Up @@ -942,7 +938,7 @@ config BT_CTLR_RX_PDU_META

config BT_CTLR_NRF_GRTC
bool "Use nRF GRTC peripheral"
depends on SOC_COMPATIBLE_NRF54LX
depends on SOC_COMPATIBLE_NRF54LX || SOC_SERIES_NRF54HX
select BT_TICKER_CNTR_FREE_RUNNING
default y
help
Expand Down Expand Up @@ -974,7 +970,10 @@ config BT_CTLR_NRF_GRTC_AUTOEN_DEFAULT

config BT_CTLR_RADIO_ENABLE_FAST
bool "Use tTXEN/RXEN,FAST ramp-up"
depends on SOC_COMPATIBLE_NRF52X || SOC_COMPATIBLE_NRF53X || SOC_COMPATIBLE_NRF54LX
depends on SOC_COMPATIBLE_NRF52X || \
SOC_COMPATIBLE_NRF53X || \
SOC_COMPATIBLE_NRF54LX || \
SOC_SERIES_NRF54HX
select BT_CTLR_SW_SWITCH_SINGLE_TIMER if SOC_COMPATIBLE_NRF54LX
default y
help
Expand All @@ -996,8 +995,10 @@ config BT_CTLR_TIFS_HW

config BT_CTLR_SW_SWITCH_SINGLE_TIMER
bool "Single TIMER tIFS Trx SW switching"
depends on (!BT_CTLR_TIFS_HW) && (SOC_COMPATIBLE_NRF52X || SOC_COMPATIBLE_NRF53X || \
SOC_COMPATIBLE_NRF54LX)
depends on (!BT_CTLR_TIFS_HW) && (SOC_COMPATIBLE_NRF52X || \
SOC_COMPATIBLE_NRF53X || \
SOC_COMPATIBLE_NRF54LX || \
SOC_SERIES_NRF54HX)
help
Implement the tIFS Trx SW switch with the same TIMER
instance, as the one used for Bluetooth event timing. Requires
Expand Down
6 changes: 6 additions & 0 deletions subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/cntr.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,18 @@ void cntr_init(void)
* with ability to select/set IRQ group.
* Shared interrupts is an option? It may add ISR latencies?
*/
#if defined(CONFIG_SOC_COMPATIBLE_NRF54LX)
NRF_GRTC->INTENSET1 = HAL_CNTR_GRTC_INTENSET_COMPARE_TICKER_Msk;
if (IS_ENABLED(CONFIG_SOC_SERIES_BSIM_NRF54LX)) {
extern void nhw_GRTC_regw_sideeffects_INTENSET(uint32_t inst, uint32_t n);

nhw_GRTC_regw_sideeffects_INTENSET(0, 1);
}
#elif defined(CONFIG_SOC_SERIES_NRF54HX)
NRF_GRTC->INTENSET6 = HAL_CNTR_GRTC_INTENSET_COMPARE_TICKER_Msk;
#else
#error "Unknown SoC."
#endif

#if defined(CONFIG_BT_CTLR_NRF_GRTC_START)
NRF_GRTC->MODE = ((GRTC_MODE_SYSCOUNTEREN_Enabled <<
Expand Down
15 changes: 11 additions & 4 deletions subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/ecb.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,13 @@
#if defined(NRF54L_SERIES)
#define NRF_ECB NRF_ECB00
#define ECB_IRQn ECB00_IRQn

#elif defined(NRF54H_SERIES)
#define NRF_ECB NRF_ECB030
#define ECB_IRQn ECB030_IRQn
#endif

Check notice on line 29 in subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/ecb.c

View workflow job for this annotation

GitHub Actions / Run compliance checks on patch series (PR)

You may want to run clang-format on this change

subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/ecb.c:29 -#define NRF_ECB NRF_ECB030 -#define ECB_IRQn ECB030_IRQn +#define NRF_ECB NRF_ECB030 +#define ECB_IRQn ECB030_IRQn

#if defined(NRF54L_SERIES) || defined(NRF54H_SERIES)
#define ECB_INTENSET_ERRORECB_Msk ECB_INTENSET_ERROR_Msk
#define ECB_INTENSET_ENDECB_Msk ECB_INTENSET_END_Msk
#define TASKS_STARTECB TASKS_START
Expand Down Expand Up @@ -49,7 +56,7 @@
uint8_t clear_text[16];
uint8_t cipher_text[16];

#if defined(NRF54L_SERIES)
#if defined(NRF54L_SERIES) || defined(NRF54H_SERIES)
struct ecb_job_ptr in[2];
struct ecb_job_ptr out[2];
#endif /* NRF54L_SERIES */
Expand All @@ -60,7 +67,7 @@
do {
nrf_ecb_task_trigger(NRF_ECB, NRF_ECB_TASK_STOPECB);

#if defined(NRF54L_SERIES)
#if defined(NRF54L_SERIES) || defined(NRF54H_SERIES)
NRF_ECB->KEY.VALUE[3] = sys_get_be32(&ep->key[0]);
NRF_ECB->KEY.VALUE[2] = sys_get_be32(&ep->key[4]);
NRF_ECB->KEY.VALUE[1] = sys_get_be32(&ep->key[8]);
Expand Down Expand Up @@ -153,7 +160,7 @@
}

/* setup the encryption h/w */
#if defined(NRF54L_SERIES)
#if defined(NRF54L_SERIES) || defined(NRF54H_SERIES)
NRF_ECB->KEY.VALUE[3] = sys_get_be32(&e->in_key_be[0]);
NRF_ECB->KEY.VALUE[2] = sys_get_be32(&e->in_key_be[4]);
NRF_ECB->KEY.VALUE[1] = sys_get_be32(&e->in_key_be[8]);
Expand Down Expand Up @@ -196,7 +203,7 @@

static void isr_ecb(const void *arg)
{
#if defined(NRF54L_SERIES)
#if defined(NRF54L_SERIES) || defined(NRF54H_SERIES)
struct ecb *e = (void *)((uint8_t *)NRF_ECB->ECBDATAPTR -
sizeof(struct ecb));
#else /* !NRF54L_SERIES */
Expand Down
Loading
Loading