drivers: Add assign event for current core for all Renesas drivers

Add assign event for current core for all Renesas drivers

Signed-off-by: Khoa Nguyen <khoa.nguyen.xh@renesas.com>
This commit is contained in:
Khoa Nguyen
2025-07-15 07:31:50 +00:00
committed by Benjamin Cabé
parent 7ea7e13b9c
commit db981f65e9
13 changed files with 55 additions and 15 deletions

View File

@@ -1106,7 +1106,11 @@ DT_FOREACH_STATUS_OKAY(renesas_ra_canfd_global, CAN_RENESAS_RA_GLOBAL_DEFINE)
EVENT_CAN_TX(DT_INST_PROP(index, channel)); \
R_ICU->IELSR_b[DT_INST_IRQ_BY_NAME(index, err, irq)].IELS = \
EVENT_CAN_CHERR(DT_INST_PROP(index, channel)); \
\
\
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_CAN_COMFRX(DT_INST_PROP(index, channel))); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_CAN_TX(DT_INST_PROP(index, channel))); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_CAN_CHERR(DT_INST_PROP(index, channel))); \
\
IRQ_CONNECT(DT_INST_IRQ_BY_NAME(index, rx, irq), \
DT_INST_IRQ_BY_NAME(index, rx, priority), canfd_common_fifo_rx_isr, \
NULL, 0); \

View File

@@ -203,10 +203,14 @@ DEVICE_DT_DEFINE(DT_COMPAT_GET_ANY_STATUS_OKAY(renesas_ra_acmphs_global),
acmphs_renesas_ra_global_init, NULL, NULL, &acmphs_renesas_ra_global_config,
PRE_KERNEL_2, CONFIG_COMPARATOR_INIT_PRIORITY, NULL)
#define EVENT_ACMPHS_INT(channel) BSP_PRV_IELS_ENUM(CONCAT(EVENT_ACMPHS, channel, _INT))
#define ACMPHS_RENESAS_RA_IRQ_INIT(idx) \
{ \
R_ICU->IELSR_b[DT_INST_IRQ_BY_NAME(idx, hs, irq)].IELS = \
BSP_PRV_IELS_ENUM(CONCAT(EVENT_ACMPHS, DT_INST_PROP(idx, channel), _INT)); \
EVENT_ACMPHS_INT(DT_INST_PROP(idx, channel)); \
\
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_ACMPHS_INT(DT_INST_PROP(idx, channel))); \
\
IRQ_CONNECT(DT_INST_IRQ_BY_NAME(idx, hs, irq), \
DT_INST_IRQ_BY_NAME(idx, hs, priority), comp_hs_int_isr, \

View File

@@ -536,6 +536,7 @@ static DEVICE_API(counter, agt_renesas_ra_driver_api) = {
#define AGT_IRQ_CONFIG(inst, name, event, isr) \
IF_ENABLED(DT_IRQ_HAS_NAME(TIMER(inst), name), \
(R_ICU->IELSR[DT_IRQ_BY_NAME(TIMER(inst), name, irq)] = event; \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(event); \
IRQ_CONNECT(DT_IRQ_BY_NAME(TIMER(inst), name, irq), \
DT_IRQ_BY_NAME(TIMER(inst), name, priority), \
isr, DEVICE_DT_INST_GET(inst), 0); \

View File

@@ -420,6 +420,7 @@ static int display_init(const struct device *dev)
{ \
R_ICU->IELSR[DT_INST_IRQ_BY_NAME(id, line, irq)] = \
BSP_PRV_IELS_ENUM(EVENT_GLCDC_LINE_DETECT); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(BSP_PRV_IELS_ENUM(EVENT_GLCDC_LINE_DETECT)); \
IRQ_CONNECT(DT_INST_IRQ_BY_NAME(id, line, irq), \
DT_INST_IRQ_BY_NAME(id, line, priority), renesas_ra_glcdc_isr, \
DEVICE_DT_INST_GET(id), 0); \

View File

@@ -499,6 +499,11 @@ static DEVICE_API(i2c, i2c_ra_iic_driver_api) = {
R_ICU->IELSR[DT_INST_IRQ_BY_NAME(index, eri, irq)] = \
EVENT_IIC_ERI(DT_INST_PROP(index, channel)); \
\
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_IIC_RXI(DT_INST_PROP(index, channel))); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_IIC_TXI(DT_INST_PROP(index, channel))); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_IIC_TEI(DT_INST_PROP(index, channel))); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_IIC_ERI(DT_INST_PROP(index, channel))); \
\
IRQ_CONNECT(DT_INST_IRQ_BY_NAME(index, rxi, irq), \
DT_INST_IRQ_BY_NAME(index, rxi, priority), iic_master_rxi_isr, \
DEVICE_DT_INST_GET(index), 0); \

View File

@@ -593,13 +593,9 @@ static const struct i2c_driver_api renesas_ra_sci_b_i2c_driver_api = {
#endif /* CONFIG_I2C_CALLBACK */
};
#define _ELC_EVENT_SCI_RXI(channel) ELC_EVENT_SCI##channel##_RXI
#define _ELC_EVENT_SCI_TXI(channel) ELC_EVENT_SCI##channel##_TXI
#define _ELC_EVENT_SCI_TEI(channel) ELC_EVENT_SCI##channel##_TEI
#define ELC_EVENT_SCI_RXI(channel) _ELC_EVENT_SCI_RXI(channel)
#define ELC_EVENT_SCI_TXI(channel) _ELC_EVENT_SCI_TXI(channel)
#define ELC_EVENT_SCI_TEI(channel) _ELC_EVENT_SCI_TEI(channel)
#define EVENT_SCI_RXI(channel) BSP_PRV_IELS_ENUM(CONCAT(EVENT_SCI, channel, _RXI))
#define EVENT_SCI_TXI(channel) BSP_PRV_IELS_ENUM(CONCAT(EVENT_SCI, channel, _TXI))
#define EVENT_SCI_TEI(channel) BSP_PRV_IELS_ENUM(CONCAT(EVENT_SCI, channel, _TEI))
#ifndef CONFIG_I2C_RENESAS_RA_SCI_B_DTC
#define SCI_B_I2C_DTC_INIT(index)
@@ -663,7 +659,8 @@ static const struct i2c_driver_api renesas_ra_sci_b_i2c_driver_api = {
#define RXI_TRANSFER(index) \
/* rxi */ \
R_ICU->IELSR[DT_IRQ_BY_NAME(DT_INST_PARENT(index), rxi, irq)] = \
ELC_EVENT_SCI_RXI(DT_INST_PROP(index, channel)); \
EVENT_SCI_RXI(DT_INST_PROP(index, channel)); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_SCI_RXI(DT_INST_PROP(index, channel))); \
IRQ_CONNECT(DT_IRQ_BY_NAME(DT_INST_PARENT(index), rxi, irq), \
DT_IRQ_BY_NAME(DT_INST_PARENT(index), rxi, priority), sci_b_i2c_rxi_isr, \
DEVICE_DT_INST_GET(index), 0); \
@@ -677,7 +674,8 @@ static const struct i2c_driver_api renesas_ra_sci_b_i2c_driver_api = {
\
/* txi */ \
R_ICU->IELSR[DT_IRQ_BY_NAME(DT_INST_PARENT(index), txi, irq)] = \
ELC_EVENT_SCI_TXI(DT_INST_PROP(index, channel)); \
EVENT_SCI_TXI(DT_INST_PROP(index, channel)); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_SCI_TXI(DT_INST_PROP(index, channel))); \
IRQ_CONNECT(DT_IRQ_BY_NAME(DT_INST_PARENT(index), txi, irq), \
DT_IRQ_BY_NAME(DT_INST_PARENT(index), txi, priority), \
sci_b_i2c_txi_isr, DEVICE_DT_INST_GET(index), 0); \
@@ -685,7 +683,8 @@ static const struct i2c_driver_api renesas_ra_sci_b_i2c_driver_api = {
\
/* tei */ \
R_ICU->IELSR[DT_IRQ_BY_NAME(DT_INST_PARENT(index), tei, irq)] = \
ELC_EVENT_SCI_TEI(DT_INST_PROP(index, channel)); \
EVENT_SCI_TEI(DT_INST_PROP(index, channel)); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_SCI_TEI(DT_INST_PROP(index, channel))); \
IRQ_CONNECT(DT_IRQ_BY_NAME(DT_INST_PARENT(index), tei, irq), \
DT_IRQ_BY_NAME(DT_INST_PARENT(index), tei, priority), \
sci_b_i2c_tei_isr, DEVICE_DT_INST_GET(index), 0); \

View File

@@ -299,6 +299,7 @@ static int mipi_dsi_renesas_ra_init(const struct device *dev)
{ \
R_ICU->IELSR[DT_INST_IRQ_BY_NAME(id, sq0, irq)] = \
BSP_PRV_IELS_ENUM(EVENT_MIPIDSI_SEQ0); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(BSP_PRV_IELS_ENUM(EVENT_MIPIDSI_SEQ0)); \
IRQ_CONNECT(DT_INST_IRQ_BY_NAME(id, sq0, irq), \
DT_INST_IRQ_BY_NAME(id, sq0, priority), mipi_dsi_seq0_isr, NULL, 0); \
irq_enable(DT_INST_IRQ_BY_NAME(id, sq0, irq)); \

View File

@@ -149,6 +149,8 @@ static int gpio_ra_interrupt_init(const struct device *dev)
return 0;
}
#define EVENT_ICU_IRQ(channel) BSP_PRV_IELS_ENUM(CONCAT(EVENT_ICU_IRQ, channel))
#define GPIO_INTERRUPT_INIT(index) \
static const struct gpio_ra_irq_config gpio_ra_irq_config##index = { \
.reg = DT_INST_REG_ADDR(index), \
@@ -164,7 +166,10 @@ static int gpio_ra_interrupt_init(const struct device *dev)
static int gpio_ra_irq_init##index(const struct device *dev) \
{ \
R_ICU->IELSR[DT_INST_IRQ(index, irq)] = \
BSP_PRV_IELS_ENUM(UTIL_CAT(EVENT_ICU_IRQ, DT_INST_PROP(index, channel))); \
EVENT_ICU_IRQ(DT_INST_PROP(index, channel)); \
\
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_ICU_IRQ(DT_INST_PROP(index, channel))); \
\
IRQ_CONNECT(DT_INST_IRQ(index, irq), DT_INST_IRQ(index, priority), gpio_ra_isr, \
DEVICE_DT_INST_GET(index), 0); \
return gpio_ra_interrupt_init(dev); \

View File

@@ -554,6 +554,10 @@ static int pwm_renesas_ra_init(const struct device *dev)
#ifdef CONFIG_PWM_CAPTURE
#define PWM_RA_IRQ_CONFIG_INIT(index) \
do { \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE( \
EVENT_GPT_CAPTURE_COMPARE_A(DT_INST_PROP(index, channel))); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE( \
EVENT_GPT_COUNTER_OVERFLOW(DT_INST_PROP(index, channel))); \
\
IRQ_CONNECT(DT_INST_IRQ_BY_NAME(index, gtioca, irq), \
DT_INST_IRQ_BY_NAME(index, gtioca, priority), \

View File

@@ -606,6 +606,11 @@ static DEVICE_API(sdhc, sdhc_api) = {
R_ICU->IELSR[DT_INST_IRQ_BY_NAME(index, dma_req, irq)] = \
EVENT_SDMMC_DMA_REQ(DT_INST_PROP(index, channel)); \
\
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_SDMMC_ACCS(DT_INST_PROP(index, channel))); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_SDMMC_CARD(DT_INST_PROP(index, channel))); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE( \
EVENT_SDMMC_DMA_REQ(DT_INST_PROP(index, channel))); \
\
IRQ_CONNECT(DT_INST_IRQ_BY_NAME(index, accs, irq), \
DT_INST_IRQ_BY_NAME(index, accs, priority), ra_sdmmc_accs_isr, \
DEVICE_DT_INST_GET(index), 0); \

View File

@@ -1148,13 +1148,13 @@ static void uart_ra_sci_b_eri_isr(const struct device *dev)
#endif /* defined(CONFIG_UART_INTERRUPT_DRIVEN) || defined(CONFIG_UART_ASYNC_API) */
#if defined(CONFIG_UART_INTERRUPT_DRIVEN) || defined(CONFIG_UART_ASYNC_API)
#define EVENT_SCI_RXI(channel) BSP_PRV_IELS_ENUM(CONCAT(EVENT_SCI, channel, _RXI))
#define EVENT_SCI_TXI(channel) BSP_PRV_IELS_ENUM(CONCAT(EVENT_SCI, channel, _TXI))
#define EVENT_SCI_TEI(channel) BSP_PRV_IELS_ENUM(CONCAT(EVENT_SCI, channel, _TEI))
#define EVENT_SCI_ERI(channel) BSP_PRV_IELS_ENUM(CONCAT(EVENT_SCI, channel, _ERI))
#if defined(CONFIG_UART_INTERRUPT_DRIVEN) || defined(CONFIG_UART_ASYNC_API)
#define UART_RA_SCI_B_IRQ_CONFIG_INIT(index) \
do { \
R_ICU->IELSR[DT_IRQ_BY_NAME(DT_INST_PARENT(index), rxi, irq)] = \
@@ -1166,6 +1166,11 @@ static void uart_ra_sci_b_eri_isr(const struct device *dev)
R_ICU->IELSR[DT_IRQ_BY_NAME(DT_INST_PARENT(index), eri, irq)] = \
EVENT_SCI_ERI(DT_INST_PROP(index, channel)); \
\
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_SCI_RXI(DT_INST_PROP(index, channel))); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_SCI_TXI(DT_INST_PROP(index, channel))); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_SCI_TEI(DT_INST_PROP(index, channel))); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_SCI_ERI(DT_INST_PROP(index, channel))); \
\
IRQ_CONNECT(DT_IRQ_BY_NAME(DT_INST_PARENT(index), rxi, irq), \
DT_IRQ_BY_NAME(DT_INST_PARENT(index), rxi, priority), \
uart_ra_sci_b_rxi_isr, DEVICE_DT_INST_GET(index), 0); \

View File

@@ -634,6 +634,11 @@ static void ra_spi_eri_isr(const struct device *dev)
R_ICU->IELSR[DT_INST_IRQ_BY_NAME(index, eri, irq)] = \
EVENT_SPI_ERI(DT_INST_PROP(index, channel)); \
\
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_SPI_RXI(DT_INST_PROP(index, channel))); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_SPI_TXI(DT_INST_PROP(index, channel))); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_SPI_TEI(DT_INST_PROP(index, channel))); \
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(EVENT_SPI_ERI(DT_INST_PROP(index, channel))); \
\
IRQ_CONNECT(DT_INST_IRQ_BY_NAME(index, rxi, irq), \
DT_INST_IRQ_BY_NAME(index, rxi, priority), ra_spi_rxi_isr, \
DEVICE_DT_INST_GET(index), 0); \

View File

@@ -173,6 +173,7 @@ static int sys_clock_driver_init(void)
/* Set up interrupts for timer instance 0. */
R_ICU->IELSR[RA_ULPT_INST0_IRQN] = ELC_EVENT_ULPT_INT(RA_ULPT_INST0_CHANNEL);
BSP_ASSIGN_EVENT_TO_CURRENT_CORE(ELC_EVENT_ULPT_INT(RA_ULPT_INST0_CHANNEL));
IRQ_CONNECT(RA_ULPT_INST0_IRQN, RA_ULPT_INST0_IRQP, ra_ulpt_timer_isr, NULL, 0);
irq_enable(RA_ULPT_INST0_IRQN);