Skip to content

Commit b357f81

Browse files
benothmn-stkartben
authored andcommitted
soc: stm32wbax: hci_if: Re-write enable/disable Radio IRQ with irq API
Migrate LINKLAYER_PLAT_EnableRadioIT and LINKLAYER_PLAT_DisableRadioIT from linklayer_plat.c (hal/stm32 module) and adapt it using irq Zephyr APIs. Correct casting of irq type between using NVIC APIs or irq Zephyr APIs Signed-off-by: Nidhal BEN OTHMEN <[email protected]>
1 parent 1b3feec commit b357f81

File tree

2 files changed

+27
-19
lines changed

2 files changed

+27
-19
lines changed

soc/st/stm32/stm32wbax/hci_if/host_stack_if.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,13 @@ static int stm32wba_ble_ctrl_init(void)
5858
{
5959
k_work_queue_init(&ble_ctrl_work_q);
6060
k_work_queue_start(&ble_ctrl_work_q, ble_ctrl_work_area,
61-
K_THREAD_STACK_SIZEOF(ble_ctrl_work_area),
62-
BLE_CTRL_THREAD_PRIO, NULL);
61+
K_THREAD_STACK_SIZEOF(ble_ctrl_work_area),
62+
BLE_CTRL_THREAD_PRIO, NULL);
6363

6464
k_work_queue_init(&ll_work_q);
6565
k_work_queue_start(&ll_work_q, ll_work_area,
66-
K_THREAD_STACK_SIZEOF(ll_work_area),
67-
LL_THREAD_PRIO, NULL);
66+
K_THREAD_STACK_SIZEOF(ll_work_area),
67+
LL_THREAD_PRIO, NULL);
6868

6969
k_work_init(&ble_ctrl_stack_work, &ble_ctrl_stack_handler);
7070
k_work_init(&bpka_work, &bpka_work_handler);

soc/st/stm32/stm32wbax/hci_if/linklayer_plat_adapt.c

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ void radio_high_prio_isr(void)
7474

7575
void radio_low_prio_isr(void)
7676
{
77-
irq_disable((IRQn_Type)RADIO_SW_LOW_INTR_NUM);
77+
irq_disable(RADIO_SW_LOW_INTR_NUM);
7878

7979
low_isr_callback();
8080

@@ -85,7 +85,7 @@ void radio_low_prio_isr(void)
8585
}
8686

8787
/* Re-enable SW radio low interrupt */
88-
irq_enable((IRQn_Type)RADIO_SW_LOW_INTR_NUM);
88+
irq_enable(RADIO_SW_LOW_INTR_NUM);
8989

9090
ISR_DIRECT_PM();
9191
}
@@ -96,22 +96,22 @@ void link_layer_register_isr(void)
9696
ARM_IRQ_DIRECT_DYNAMIC_CONNECT(RADIO_INTR_NUM, 0, 0, reschedule);
9797

9898
/* Ensure the IRQ is disabled before enabling it at run time */
99-
irq_disable((IRQn_Type)RADIO_INTR_NUM);
99+
irq_disable(RADIO_INTR_NUM);
100100

101-
irq_connect_dynamic((IRQn_Type)RADIO_INTR_NUM, RADIO_INTR_PRIO_HIGH_Z,
101+
irq_connect_dynamic(RADIO_INTR_NUM, RADIO_INTR_PRIO_HIGH_Z,
102102
(void (*)(const void *))radio_high_prio_isr, NULL, 0);
103103

104-
irq_enable((IRQn_Type)RADIO_INTR_NUM);
104+
irq_enable(RADIO_INTR_NUM);
105105

106106
ARM_IRQ_DIRECT_DYNAMIC_CONNECT(RADIO_SW_LOW_INTR_NUM, 0, 0, reschedule);
107107

108108
/* Ensure the IRQ is disabled before enabling it at run time */
109-
irq_disable((IRQn_Type)RADIO_SW_LOW_INTR_NUM);
109+
irq_disable(RADIO_SW_LOW_INTR_NUM);
110110

111-
irq_connect_dynamic((IRQn_Type)RADIO_SW_LOW_INTR_NUM, RADIO_SW_LOW_INTR_PRIO,
111+
irq_connect_dynamic(RADIO_SW_LOW_INTR_NUM, RADIO_SW_LOW_INTR_PRIO,
112112
(void (*)(const void *))radio_low_prio_isr, NULL, 0);
113113

114-
irq_enable((IRQn_Type)RADIO_SW_LOW_INTR_NUM);
114+
irq_enable(RADIO_SW_LOW_INTR_NUM);
115115
}
116116

117117

@@ -124,19 +124,15 @@ void LINKLAYER_PLAT_TriggerSwLowIT(uint8_t priority)
124124
/* Check if a SW low interrupt as already been raised.
125125
* Nested call far radio low isr are not supported
126126
**/
127-
128-
if (NVIC_GetActive(RADIO_SW_LOW_INTR_NUM) == 0) {
127+
if (NVIC_GetActive((IRQn_Type)RADIO_SW_LOW_INTR_NUM) == 0) {
129128
/* No nested SW low ISR, default behavior */
130-
131129
if (priority == 0) {
132130
low_isr_priority = RADIO_SW_LOW_INTR_PRIO;
133131
}
134-
135132
NVIC_SetPriority((IRQn_Type)RADIO_SW_LOW_INTR_NUM, low_isr_priority);
136133
} else {
137134
/* Nested call detected */
138135
/* No change for SW radio low interrupt priority for the moment */
139-
140136
if (priority != 0) {
141137
/* At the end of current SW radio low ISR, this pending SW
142138
* low interrupt will run with RADIO_INTR_PRIO_LOW_Z priority
@@ -208,11 +204,23 @@ void LINKLAYER_PLAT_DisableSpecificIRQ(uint8_t isr_type)
208204
}
209205
}
210206

207+
void LINKLAYER_PLAT_EnableRadioIT(void)
208+
{
209+
LOG_DBG("Enable RADIO IRQ");
210+
irq_enable(RADIO_INTR_NUM);
211+
}
212+
213+
void LINKLAYER_PLAT_DisableRadioIT(void)
214+
{
215+
LOG_DBG("Disable RADIO IRQ");
216+
irq_disable(RADIO_INTR_NUM);
217+
}
218+
211219
void LINKLAYER_PLAT_StartRadioEvt(void)
212220
{
213221
__HAL_RCC_RADIO_CLK_SLEEP_ENABLE();
214222

215-
NVIC_SetPriority(RADIO_INTR_NUM, RADIO_INTR_PRIO_HIGH_Z);
223+
NVIC_SetPriority((IRQn_Type)RADIO_INTR_NUM, RADIO_INTR_PRIO_HIGH_Z);
216224

217225
scm_notifyradiostate(SCM_RADIO_ACTIVE);
218226
}
@@ -221,7 +229,7 @@ void LINKLAYER_PLAT_StopRadioEvt(void)
221229
{
222230
__HAL_RCC_RADIO_CLK_SLEEP_DISABLE();
223231

224-
NVIC_SetPriority(RADIO_INTR_NUM, RADIO_INTR_PRIO_LOW_Z);
232+
NVIC_SetPriority((IRQn_Type)RADIO_INTR_NUM, RADIO_INTR_PRIO_LOW_Z);
225233

226234
scm_notifyradiostate(SCM_RADIO_NOT_ACTIVE);
227235
}

0 commit comments

Comments
 (0)