driver: interrupt_controller: Add support for stm32l0x
Add kconfig and c code for stm32l0x interrupt controller driver Signed-off-by: Endre Karlson <endre.karlson@gmail.com>
This commit is contained in:
parent
ef1d32b8ef
commit
8e401e505e
@ -16,7 +16,7 @@ config EXTI_STM32
|
||||
config EXTI_STM32_EXTI1_0_IRQ_PRI
|
||||
int "EXTI1:0 IRQ priority"
|
||||
depends on EXTI_STM32
|
||||
depends on SOC_SERIES_STM32F0X
|
||||
depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32L0X
|
||||
default 0
|
||||
help
|
||||
IRQ priority of EXTI1:0 interrupt
|
||||
@ -24,7 +24,7 @@ config EXTI_STM32_EXTI1_0_IRQ_PRI
|
||||
config EXTI_STM32_EXTI3_2_IRQ_PRI
|
||||
int "EXTI3:2 IRQ priority"
|
||||
depends on EXTI_STM32
|
||||
depends on SOC_SERIES_STM32F0X
|
||||
depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32L0X
|
||||
default 0
|
||||
help
|
||||
IRQ priority of EXTI3:2 interrupt
|
||||
@ -32,12 +32,12 @@ config EXTI_STM32_EXTI3_2_IRQ_PRI
|
||||
config EXTI_STM32_EXTI15_4_IRQ_PRI
|
||||
int "EXTI15:4 IRQ priority"
|
||||
depends on EXTI_STM32
|
||||
depends on SOC_SERIES_STM32F0X
|
||||
depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32L0X
|
||||
default 0
|
||||
help
|
||||
IRQ priority of EXTI15:4 interrupt
|
||||
|
||||
if SOC_SERIES_STM32F0X!=y
|
||||
if SOC_SERIES_STM32F0X!=y && SOC_SERIES_STM32L0X!=y
|
||||
|
||||
config EXTI_STM32_EXTI0_IRQ_PRI
|
||||
int "EXTI0 IRQ priority"
|
||||
@ -88,7 +88,7 @@ config EXTI_STM32_EXTI15_10_IRQ_PRI
|
||||
help
|
||||
IRQ priority of EXTI15:10 interrupt
|
||||
|
||||
endif # SOC_SERIES_STM32F0X!=y
|
||||
endif # SOC_SERIES_STM32F0X!=y && SOC_SERIES_STM32L0X!=y
|
||||
|
||||
config EXTI_STM32_EXTI16_IRQ_PRI
|
||||
int "EXTI16 IRQ priority"
|
||||
|
||||
@ -35,6 +35,8 @@
|
||||
#define EXTI_LINES 29
|
||||
#elif CONFIG_SOC_SERIES_STM32F4X
|
||||
#define EXTI_LINES 23
|
||||
#elif defined(CONFIG_SOC_SERIES_STM32L0X)
|
||||
#define EXTI_LINES 30
|
||||
#elif defined(CONFIG_SOC_SERIES_STM32L4X)
|
||||
#define EXTI_LINES 40
|
||||
#endif
|
||||
@ -154,6 +156,23 @@ void stm32_exti_enable(int line)
|
||||
break;
|
||||
}
|
||||
}
|
||||
#elif defined(CONFIG_SOC_SERIES_STM32L0X)
|
||||
if (line >= 4 && line <= 15) {
|
||||
irqnum = STM32L0_IRQ_EXTI4_15;
|
||||
} else if (line >= 2 && line <= 3) {
|
||||
irqnum = STM32L0_IRQ_EXTI2_3;
|
||||
} else if (line >= 0 && line <= 1) {
|
||||
irqnum = STM32L0_IRQ_EXTI0_1;
|
||||
} else {
|
||||
/* > 15 are not mapped on an IRQ */
|
||||
/*
|
||||
* On STM32L0X, this function also support enabling EXTI
|
||||
* lines that are not connected to an IRQ. This might be used
|
||||
* by other drivers or boards, to allow the device wakeup on
|
||||
* some non-GPIO signals.
|
||||
*/
|
||||
return;
|
||||
}
|
||||
#elif defined(CONFIG_SOC_SERIES_STM32L4X)
|
||||
if (line >= 5 && line <= 9) {
|
||||
irqnum = STM32L4_IRQ_EXTI9_5;
|
||||
@ -254,7 +273,7 @@ static void __stm32_exti_isr(int min, int max, void *arg)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOC_SERIES_STM32F0X
|
||||
#if defined(CONFIG_SOC_SERIES_STM32F0X) || defined(CONFIG_SOC_SERIES_STM32L0X)
|
||||
static inline void __stm32_exti_isr_0_1(void *arg)
|
||||
{
|
||||
__stm32_exti_isr(0, 2, arg);
|
||||
@ -502,6 +521,19 @@ static void __stm32_exti_connect_irqs(struct device *dev)
|
||||
CONFIG_EXTI_STM32_EXTI22_IRQ_PRI,
|
||||
__stm32_exti_isr_22, DEVICE_GET(exti_stm32),
|
||||
0);
|
||||
#elif defined(CONFIG_SOC_SERIES_STM32L0X)
|
||||
IRQ_CONNECT(STM32L0_IRQ_EXTI0_1,
|
||||
CONFIG_EXTI_STM32_EXTI1_0_IRQ_PRI,
|
||||
__stm32_exti_isr_0_1, DEVICE_GET(exti_stm32),
|
||||
0);
|
||||
IRQ_CONNECT(STM32L0_IRQ_EXTI2_3,
|
||||
CONFIG_EXTI_STM32_EXTI3_2_IRQ_PRI,
|
||||
__stm32_exti_isr_2_3, DEVICE_GET(exti_stm32),
|
||||
0);
|
||||
IRQ_CONNECT(STM32L0_IRQ_EXTI4_15,
|
||||
CONFIG_EXTI_STM32_EXTI15_4_IRQ_PRI,
|
||||
__stm32_exti_isr_4_15, DEVICE_GET(exti_stm32),
|
||||
0);
|
||||
#elif defined(CONFIG_SOC_SERIES_STM32L4X)
|
||||
IRQ_CONNECT(STM32L4_IRQ_EXTI0,
|
||||
CONFIG_EXTI_STM32_EXTI0_IRQ_PRI,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user