Commit c7681440 authored by Khoa Nguyen's avatar Khoa Nguyen Committed by Benjamin Cabé
Browse files

drivers: Correct value of event macro for all Renesas SoC



Since the RA2L1 uses the macro "ICU_EVENT" instead of
"ELC_EVENT" (which is currently used) to input into
the IELSR register, the ek_ra2l1 board cannot assign
any interrupts for any driver.

This commit aim to correct the Event macro to input correct
value for IELSR register on all the Renesas SoC by using
"BSP_PRV_IELS_ENUM" macro.

Signed-off-by: default avatarKhoa Nguyen <khoa.nguyen.xh@renesas.com>
parent cd06e803
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
/*
 * Copyright (c) 2024 Renesas Electronics Corporation
 * Copyright (c) 2024-2025 Renesas Electronics Corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */
@@ -319,11 +319,12 @@ static int adc_ra_init(const struct device *dev)
	return 0;
}

#define EVENT_ADC_SCAN_END(idx) BSP_PRV_IELS_ENUM(CONCAT(EVENT_ADC, idx, _SCAN_END))

#define IRQ_CONFIGURE_FUNC(idx)                                                                    \
	static void adc_ra_configure_func_##idx(void)                                              \
	{                                                                                          \
		R_ICU->IELSR[DT_INST_IRQ_BY_NAME(idx, scanend, irq)] =                             \
			ELC_EVENT_ADC##idx##_SCAN_END;                                             \
		R_ICU->IELSR[DT_INST_IRQ_BY_NAME(idx, scanend, irq)] = EVENT_ADC_SCAN_END(idx);    \
		IRQ_CONNECT(DT_INST_IRQ_BY_NAME(idx, scanend, irq),                                \
			    DT_INST_IRQ_BY_NAME(idx, scanend, priority), adc_ra_isr,               \
			    DEVICE_DT_INST_GET(idx), 0);                                           \
+8 −12
Original line number Diff line number Diff line
@@ -1011,8 +1011,8 @@ static DEVICE_API(can, can_renesas_ra_driver_api) = {
};

#define CAN_RENESAS_RA_GLOBAL_IRQ_INIT()                                                           \
	R_ICU->IELSR_b[VECTOR_NUMBER_CAN_GLERR].IELS = ELC_EVENT_CAN_GLERR;                        \
	R_ICU->IELSR_b[VECTOR_NUMBER_CAN_RXF].IELS = ELC_EVENT_CAN_RXF;                            \
	R_ICU->IELSR_b[VECTOR_NUMBER_CAN_GLERR].IELS = BSP_PRV_IELS_ENUM(EVENT_CAN_GLERR);         \
	R_ICU->IELSR_b[VECTOR_NUMBER_CAN_RXF].IELS = BSP_PRV_IELS_ENUM(EVENT_CAN_RXF);             \
	IRQ_CONNECT(VECTOR_NUMBER_CAN_GLERR,                                                       \
		    DT_IRQ_BY_NAME(DT_INST(0, renesas_ra_canfd_global), glerr, priority),          \
		    canfd_error_isr, NULL, 0);                                                     \
@@ -1074,22 +1074,18 @@ DEVICE_DT_DEFINE(DT_COMPAT_GET_ANY_STATUS_OKAY(renesas_ra_canfd_global), can_ren
		 NULL, NULL, &g_can_renesas_ra_global_cfg, PRE_KERNEL_2, CONFIG_CAN_INIT_PRIORITY,
		 NULL)

#define _ELC_EVENT_CAN_COMFRX(channel) ELC_EVENT_CAN##channel##_COMFRX
#define _ELC_EVENT_CAN_TX(channel)     ELC_EVENT_CAN##channel##_TX
#define _ELC_EVENT_CAN_CHERR(channel)  ELC_EVENT_CAN##channel##_CHERR

#define ELC_EVENT_CAN_COMFRX(channel) _ELC_EVENT_CAN_COMFRX(channel)
#define ELC_EVENT_CAN_TX(channel)     _ELC_EVENT_CAN_TX(channel)
#define ELC_EVENT_CAN_CHERR(channel)  _ELC_EVENT_CAN_CHERR(channel)
#define EVENT_CAN_COMFRX(channel) BSP_PRV_IELS_ENUM(CONCAT(EVENT_CAN, channel, _COMFRX))
#define EVENT_CAN_TX(channel)     BSP_PRV_IELS_ENUM(CONCAT(EVENT_CAN, channel, _TX))
#define EVENT_CAN_CHERR(channel)  BSP_PRV_IELS_ENUM(CONCAT(EVENT_CAN, channel, _CHERR))

#define CAN_RENESAS_RA_CHANNEL_IRQ_INIT(index)                                                     \
	{                                                                                          \
		R_ICU->IELSR_b[DT_INST_IRQ_BY_NAME(index, rx, irq)].IELS =                         \
			ELC_EVENT_CAN_COMFRX(DT_INST_PROP(index, channel));                        \
			EVENT_CAN_COMFRX(DT_INST_PROP(index, channel));                            \
		R_ICU->IELSR_b[DT_INST_IRQ_BY_NAME(index, tx, irq)].IELS =                         \
			ELC_EVENT_CAN_TX(DT_INST_PROP(index, channel));                            \
			EVENT_CAN_TX(DT_INST_PROP(index, channel));                                \
		R_ICU->IELSR_b[DT_INST_IRQ_BY_NAME(index, err, irq)].IELS =                        \
			ELC_EVENT_CAN_CHERR(DT_INST_PROP(index, channel));                         \
			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,    \
+5 −8
Original line number Diff line number Diff line
/*
 * Copyright (c) 2024 Renesas Electronics Corporation
 * Copyright (c) 2024-2025 Renesas Electronics Corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */
@@ -535,11 +535,8 @@ static DEVICE_API(counter, ra_agt_driver_api) = {

#define TIMER(idx) DT_INST_PARENT(idx)

#define _ELC_EVENT_AGT_INT(channel)       ELC_EVENT_AGT##channel##_INT
#define _ELC_EVENT_AGT_COMPARE_A(channel) ELC_EVENT_AGT##channel##_COMPARE_A

#define ELC_EVENT_AGT_INT(channel)       _ELC_EVENT_AGT_INT(channel)
#define ELC_EVENT_AGT_COMPARE_A(channel) _ELC_EVENT_AGT_COMPARE_A(channel)
#define EVENT_AGT_INT(channel)       BSP_PRV_IELS_ENUM(CONCAT(EVENT_AGT, channel, _INT))
#define EVENT_AGT_COMPARE_A(channel) BSP_PRV_IELS_ENUM(CONCAT(EVENT_AGT, channel, _COMPARE_A))

#define AGT_DEVICE_INIT_RA(n)                                                                      \
	static const struct counter_ra_agt_config ra_agt_config_##n = {                            \
@@ -570,14 +567,14 @@ static DEVICE_API(counter, ra_agt_driver_api) = {
	static int counter_ra_agt_##n##_init(const struct device *dev)                             \
	{                                                                                          \
		R_ICU->IELSR[DT_IRQ_BY_NAME(TIMER(n), agti, irq)] =                                \
			ELC_EVENT_AGT_INT(DT_PROP(TIMER(n), channel));                             \
			EVENT_AGT_INT(DT_PROP(TIMER(n), channel));                                 \
		IRQ_CONNECT(DT_IRQ_BY_NAME(TIMER(n), agti, irq),                                   \
			    DT_IRQ_BY_NAME(TIMER(n), agti, priority), counter_ra_agt_agti_isr,     \
			    DEVICE_DT_INST_GET(n), 0);                                             \
		irq_enable(DT_IRQ_BY_NAME(TIMER(n), agti, irq));                                   \
                                                                                                   \
		R_ICU->IELSR[DT_IRQ_BY_NAME(TIMER(n), agtcmai, irq)] =                             \
			ELC_EVENT_AGT_COMPARE_A(DT_PROP(TIMER(n), channel));                       \
			EVENT_AGT_COMPARE_A(DT_PROP(TIMER(n), channel));                           \
		IRQ_CONNECT(DT_IRQ_BY_NAME(TIMER(n), agtcmai, irq),                                \
			    DT_IRQ_BY_NAME(TIMER(n), agtcmai, priority),                           \
			    counter_ra_agt_agtcmai_isr, DEVICE_DT_INST_GET(n), 0);                 \
+3 −2
Original line number Diff line number Diff line
/*
 * Copyright (c) 2024 Renesas Electronics Corporation
 * Copyright (c) 2024-2025 Renesas Electronics Corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */
@@ -275,7 +275,8 @@ static int display_init(const struct device *dev)
#define IRQ_CONFIGURE_FUNC(id)                                                                     \
	static void glcdc_renesas_ra_configure_func_##id(void)                                     \
	{                                                                                          \
		R_ICU->IELSR[DT_INST_IRQ_BY_NAME(id, line, irq)] = ELC_EVENT_GLCDC_LINE_DETECT;    \
		R_ICU->IELSR[DT_INST_IRQ_BY_NAME(id, line, irq)] =                                 \
			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);                                            \
+3 −3
Original line number Diff line number Diff line
/*
 * Copyright (c) 2024 Renesas Electronics Corporation
 * Copyright (c) 2024-2025 Renesas Electronics Corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */
@@ -370,7 +370,7 @@ static void renesas_ra_eth_thread(void *p1, void *p2, void *p3)
	}
}

#define ELC_EVENT_EDMAC_EINT(channel) ELC_EVENT_EDMAC##channel##_EINT
#define EVENT_EDMAC_EINT(channel) BSP_PRV_IELS_ENUM(CONCAT(EVENT_EDMAC, channel, _EINT))

/* Bindings to the platform */
int renesas_ra_eth_init(const struct device *dev)
@@ -391,7 +391,7 @@ int renesas_ra_eth_init(const struct device *dev)
		return -EINVAL;
	}

	R_ICU->IELSR[DT_INST_IRQN(0)] = ELC_EVENT_EDMAC_EINT(0);
	R_ICU->IELSR[DT_INST_IRQN(0)] = EVENT_EDMAC_EINT(0);

	IRQ_CONNECT(DT_INST_IRQN(0), DT_INST_IRQ(0, priority), renesas_ra_eth_isr,
		    DEVICE_DT_INST_GET(0), 0);
Loading