drivers: serial: uart_mcux_lpuart: add support for LPUARTs with two IRQs
Add support for NXP MCUX LPUART devices with separate IRQ lines for transmit and receive status interrupts (e.g. the Kinetis KE1xF SoC series). Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
This commit is contained in:
parent
168e129175
commit
56dfb62e40
3 changed files with 52 additions and 20 deletions
|
@ -310,11 +310,19 @@ DEVICE_AND_API_INIT(uart_0, DT_UART_MCUX_LPUART_0_NAME,
|
|||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||
static void mcux_lpuart_config_func_0(struct device *dev)
|
||||
{
|
||||
IRQ_CONNECT(DT_UART_MCUX_LPUART_0_IRQ,
|
||||
DT_UART_MCUX_LPUART_0_IRQ_PRI,
|
||||
IRQ_CONNECT(DT_UART_MCUX_LPUART_0_IRQ_0,
|
||||
DT_UART_MCUX_LPUART_0_IRQ_0_PRI,
|
||||
mcux_lpuart_isr, DEVICE_GET(uart_0), 0);
|
||||
|
||||
irq_enable(DT_UART_MCUX_LPUART_0_IRQ);
|
||||
irq_enable(DT_UART_MCUX_LPUART_0_IRQ_0);
|
||||
|
||||
#ifdef DT_UART_MCUX_LPUART_0_IRQ_1
|
||||
IRQ_CONNECT(DT_UART_MCUX_LPUART_0_IRQ_1,
|
||||
DT_UART_MCUX_LPUART_0_IRQ_1_PRI,
|
||||
mcux_lpuart_isr, DEVICE_GET(uart_0), 0);
|
||||
|
||||
irq_enable(DT_UART_MCUX_LPUART_0_IRQ_1);
|
||||
#endif /* DT_UART_MCUX_LPUART_0_IRQ_1 */
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -348,11 +356,19 @@ DEVICE_AND_API_INIT(uart_1, DT_UART_MCUX_LPUART_1_NAME,
|
|||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||
static void mcux_lpuart_config_func_1(struct device *dev)
|
||||
{
|
||||
IRQ_CONNECT(DT_UART_MCUX_LPUART_1_IRQ,
|
||||
DT_UART_MCUX_LPUART_1_IRQ_PRI,
|
||||
IRQ_CONNECT(DT_UART_MCUX_LPUART_1_IRQ_0,
|
||||
DT_UART_MCUX_LPUART_1_IRQ_0_PRI,
|
||||
mcux_lpuart_isr, DEVICE_GET(uart_1), 0);
|
||||
|
||||
irq_enable(DT_UART_MCUX_LPUART_1_IRQ);
|
||||
irq_enable(DT_UART_MCUX_LPUART_1_IRQ_0);
|
||||
|
||||
#ifdef DT_UART_MCUX_LPUART_1_IRQ_1
|
||||
IRQ_CONNECT(DT_UART_MCUX_LPUART_1_IRQ_1,
|
||||
DT_UART_MCUX_LPUART_1_IRQ_1_PRI,
|
||||
mcux_lpuart_isr, DEVICE_GET(uart_1), 0);
|
||||
|
||||
irq_enable(DT_UART_MCUX_LPUART_1_IRQ_1);
|
||||
#endif /* DT_UART_MCUX_LPUART_1_IRQ_1 */
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -386,11 +402,19 @@ DEVICE_AND_API_INIT(uart_2, DT_UART_MCUX_LPUART_2_NAME,
|
|||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||
static void mcux_lpuart_config_func_2(struct device *dev)
|
||||
{
|
||||
IRQ_CONNECT(DT_UART_MCUX_LPUART_2_IRQ,
|
||||
DT_UART_MCUX_LPUART_2_IRQ_PRI,
|
||||
IRQ_CONNECT(DT_UART_MCUX_LPUART_2_IRQ_0,
|
||||
DT_UART_MCUX_LPUART_2_IRQ_0_PRI,
|
||||
mcux_lpuart_isr, DEVICE_GET(uart_2), 0);
|
||||
|
||||
irq_enable(DT_UART_MCUX_LPUART_2_IRQ);
|
||||
irq_enable(DT_UART_MCUX_LPUART_2_IRQ_0);
|
||||
|
||||
#ifdef DT_UART_MCUX_LPUART_2_IRQ_1
|
||||
IRQ_CONNECT(DT_UART_MCUX_LPUART_2_IRQ_1,
|
||||
DT_UART_MCUX_LPUART_2_IRQ_1_PRI,
|
||||
mcux_lpuart_isr, DEVICE_GET(uart_2), 0);
|
||||
|
||||
irq_enable(DT_UART_MCUX_LPUART_2_IRQ_1);
|
||||
#endif /* DT_UART_MCUX_LPUART_2_IRQ_1 */
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -424,11 +448,19 @@ DEVICE_AND_API_INIT(uart_3, DT_UART_MCUX_LPUART_3_NAME,
|
|||
#ifdef CONFIG_UART_INTERRUPT_DRIVEN
|
||||
static void mcux_lpuart_config_func_3(struct device *dev)
|
||||
{
|
||||
IRQ_CONNECT(DT_UART_MCUX_LPUART_3_IRQ,
|
||||
DT_UART_MCUX_LPUART_3_IRQ_PRI,
|
||||
IRQ_CONNECT(DT_UART_MCUX_LPUART_3_IRQ_0,
|
||||
DT_UART_MCUX_LPUART_3_IRQ_0_PRI,
|
||||
mcux_lpuart_isr, DEVICE_GET(uart_3), 0);
|
||||
|
||||
irq_enable(DT_UART_MCUX_LPUART_3_IRQ);
|
||||
irq_enable(DT_UART_MCUX_LPUART_3_IRQ_0);
|
||||
|
||||
#ifdef DT_UART_MCUX_LPUART_3_IRQ_1
|
||||
IRQ_CONNECT(DT_UART_MCUX_LPUART_3_IRQ_1,
|
||||
DT_UART_MCUX_LPUART_3_IRQ_1_PRI,
|
||||
mcux_lpuart_isr, DEVICE_GET(uart_3), 0);
|
||||
|
||||
irq_enable(DT_UART_MCUX_LPUART_3_IRQ_1);
|
||||
#endif /* DT_UART_MCUX_LPUART_3_IRQ_1 */
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue