| /* |
| * Copyright (c) 2019 Nordic Semiconductor ASA |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include "ll_irqs.h" |
| |
| #define SetPendingIRQ(x) (EVENT_UNIT->INTPTPENDSET |= (uint32_t)(1 << (x))) |
| |
| static inline void hal_swi_init(void) |
| { |
| /* No platform-specific initialization required. */ |
| } |
| |
| /* SW IRQs required for the SW defined BLE Controller on RV32M1. */ |
| #if defined(CONFIG_BT_LL_SW_SPLIT) |
| /* Split architecture uses max. two SWI */ |
| #define HAL_SWI_RADIO_IRQ LL_SWI4_IRQn |
| #define HAL_SWI_WORKER_IRQ LL_RTC0_IRQn |
| |
| #if !defined(CONFIG_BT_CTLR_LOW_LAT) && \ |
| (CONFIG_BT_CTLR_ULL_HIGH_PRIO == CONFIG_BT_CTLR_ULL_LOW_PRIO) |
| #define HAL_SWI_JOB_IRQ HAL_SWI_WORKER_IRQ |
| #else |
| #define HAL_SWI_JOB_IRQ LL_SWI5_IRQn |
| #endif |
| |
| static inline void hal_swi_lll_pend(void) |
| { |
| SetPendingIRQ(HAL_SWI_RADIO_IRQ); |
| } |
| |
| #else |
| #error "CTRL architecture not defined" |
| #endif |
| |
| static inline void hal_swi_worker_pend(void) |
| { |
| SetPendingIRQ(HAL_SWI_WORKER_IRQ); |
| } |
| |
| static inline void hal_swi_job_pend(void) |
| { |
| SetPendingIRQ(HAL_SWI_JOB_IRQ); |
| } |