1 /*
2 * Copyright (c) 2020 - 2024 Renesas Electronics Corporation and/or its affiliates
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6 
7 #ifndef BSP_ELC_H
8 #define BSP_ELC_H
9 
10 /*******************************************************************************************************************//**
11  * @addtogroup BSP_MCU_RA2A1
12  * @{
13  **********************************************************************************************************************/
14 
15 /***********************************************************************************************************************
16  * Macro definitions
17  **********************************************************************************************************************/
18 
19 /***********************************************************************************************************************
20  * Typedef definitions
21  **********************************************************************************************************************/
22 
23 /***********************************************************************************************************************
24  * Exported global variables
25  **********************************************************************************************************************/
26 
27 /***********************************************************************************************************************
28  * Exported global functions (to be accessed by other files)
29  **********************************************************************************************************************/
30 
31 /* UNCRUSTIFY-OFF */
32 
33 /** Sources of event signals to be linked to other peripherals or the CPU
34  * @note This list is device specific.
35  * */
36 typedef enum e_elc_event_ra2a1
37 {
38     ELC_EVENT_NONE                          = (0x0),   // Link disabled
39     ELC_EVENT_ICU_IRQ0                      = (0x001), // External pin interrupt 0
40     ELC_EVENT_ICU_IRQ1                      = (0x002), // External pin interrupt 1
41     ELC_EVENT_ICU_IRQ2                      = (0x003), // External pin interrupt 2
42     ELC_EVENT_ICU_IRQ3                      = (0x004), // External pin interrupt 3
43     ELC_EVENT_ICU_IRQ4                      = (0x005), // External pin interrupt 4
44     ELC_EVENT_ICU_IRQ5                      = (0x006), // External pin interrupt 5
45     ELC_EVENT_ICU_IRQ6                      = (0x007), // External pin interrupt 6
46     ELC_EVENT_ICU_IRQ7                      = (0x008), // External pin interrupt 7
47     ELC_EVENT_DTC_COMPLETE                  = (0x009), // DTC transfer complete
48     ELC_EVENT_DTC_END                       = (0x00A), // DTC transfer end
49     ELC_EVENT_ICU_SNOOZE_CANCEL             = (0x00B), // Canceling from Snooze mode
50     ELC_EVENT_FCU_FRDYI                     = (0x00C), // Flash ready interrupt
51     ELC_EVENT_LVD_LVD1                      = (0x00D), // Voltage monitor 1 interrupt
52     ELC_EVENT_LVD_LVD2                      = (0x00E), // Voltage monitor 2 interrupt
53     ELC_EVENT_CGC_MOSC_STOP                 = (0x00F), // Main Clock oscillation stop
54     ELC_EVENT_LPM_SNOOZE_REQUEST            = (0x010), // Snooze entry
55     ELC_EVENT_AGT0_INT                      = (0x011), // AGT interrupt
56     ELC_EVENT_AGT0_COMPARE_A                = (0x012), // Compare match A
57     ELC_EVENT_AGT0_COMPARE_B                = (0x013), // Compare match B
58     ELC_EVENT_AGT1_INT                      = (0x014), // AGT interrupt
59     ELC_EVENT_AGT1_COMPARE_A                = (0x015), // Compare match A
60     ELC_EVENT_AGT1_COMPARE_B                = (0x016), // Compare match B
61     ELC_EVENT_IWDT_UNDERFLOW                = (0x017), // IWDT underflow
62     ELC_EVENT_WDT_UNDERFLOW                 = (0x018), // WDT0 underflow
63     ELC_EVENT_RTC_ALARM                     = (0x019), // Alarm interrupt
64     ELC_EVENT_RTC_PERIOD                    = (0x01A), // Periodic interrupt
65     ELC_EVENT_RTC_CARRY                     = (0x01B), // Carry interrupt
66     ELC_EVENT_ADC0_SCAN_END                 = (0x01C), // End of A/D scanning operation
67     ELC_EVENT_ADC0_SCAN_END_B               = (0x01D), // A/D scan end interrupt for group B
68     ELC_EVENT_ADC0_WINDOW_A                 = (0x01E), // Window A Compare match interrupt
69     ELC_EVENT_ADC0_WINDOW_B                 = (0x01F), // Window B Compare match interrupt
70     ELC_EVENT_ADC0_COMPARE_MATCH            = (0x020), // Compare match
71     ELC_EVENT_ADC0_COMPARE_MISMATCH         = (0x021), // Compare mismatch
72     ELC_EVENT_ACMPHS0_INT                   = (0x022), // High Speed Comparator channel 0 interrupt
73     ELC_EVENT_ACMPLP0_INT                   = (0x023), // Low Power Comparator channel 0 interrupt
74     ELC_EVENT_ACMPLP1_INT                   = (0x024), // Low Power Comparator channel 1 interrupt
75     ELC_EVENT_USBFS_INT                     = (0x025), // USBFS interrupt
76     ELC_EVENT_USBFS_RESUME                  = (0x026), // USBFS resume interrupt
77     ELC_EVENT_IIC0_RXI                      = (0x027), // Receive data full
78     ELC_EVENT_IIC0_TXI                      = (0x028), // Transmit data empty
79     ELC_EVENT_IIC0_TEI                      = (0x029), // Transmit end
80     ELC_EVENT_IIC0_ERI                      = (0x02A), // Transfer error
81     ELC_EVENT_IIC0_WUI                      = (0x02B), // Wakeup interrupt
82     ELC_EVENT_IIC1_RXI                      = (0x02C), // Receive data full
83     ELC_EVENT_IIC1_TXI                      = (0x02D), // Transmit data empty
84     ELC_EVENT_IIC1_TEI                      = (0x02E), // Transmit end
85     ELC_EVENT_IIC1_ERI                      = (0x02F), // Transfer error
86     ELC_EVENT_CTSU_WRITE                    = (0x030), // Write request interrupt
87     ELC_EVENT_CTSU_READ                     = (0x031), // Measurement data transfer request interrupt
88     ELC_EVENT_CTSU_END                      = (0x032), // Measurement end interrupt
89     ELC_EVENT_KEY_INT                       = (0x033), // Key interrupt
90     ELC_EVENT_DOC_INT                       = (0x034), // Data operation circuit interrupt
91     ELC_EVENT_CAC_FREQUENCY_ERROR           = (0x035), // Frequency error interrupt
92     ELC_EVENT_CAC_MEASUREMENT_END           = (0x036), // Measurement end interrupt
93     ELC_EVENT_CAC_OVERFLOW                  = (0x037), // Overflow interrupt
94     ELC_EVENT_CAN0_ERROR                    = (0x038), // Error interrupt
95     ELC_EVENT_CAN0_FIFO_RX                  = (0x039), // Receive FIFO interrupt
96     ELC_EVENT_CAN0_FIFO_TX                  = (0x03A), // Transmit FIFO interrupt
97     ELC_EVENT_CAN0_MAILBOX_RX               = (0x03B), // Reception complete interrupt
98     ELC_EVENT_CAN0_MAILBOX_TX               = (0x03C), // Transmission complete interrupt
99     ELC_EVENT_IOPORT_EVENT_1                = (0x03D), // Port 1 event
100     ELC_EVENT_IOPORT_EVENT_2                = (0x03E), // Port 2 event
101     ELC_EVENT_ELC_SOFTWARE_EVENT_0          = (0x03F), // Software event 0
102     ELC_EVENT_ELC_SOFTWARE_EVENT_1          = (0x040), // Software event 1
103     ELC_EVENT_POEG0_EVENT                   = (0x041), // Port Output disable 0 interrupt
104     ELC_EVENT_POEG1_EVENT                   = (0x042), // Port Output disable 1 interrupt
105     ELC_EVENT_SDADC0_ADI                    = (0x043), // End of SD A/D conversion (type 1)
106     ELC_EVENT_SDADC0_SCANEND                = (0x044), // End of SD A/D scan
107     ELC_EVENT_SDADC0_CALIEND                = (0x045), // End of SD A/D A/D calibration
108     ELC_EVENT_GPT0_CAPTURE_COMPARE_A        = (0x046), // Capture/Compare match A
109     ELC_EVENT_GPT0_CAPTURE_COMPARE_B        = (0x047), // Capture/Compare match B
110     ELC_EVENT_GPT0_COMPARE_C                = (0x048), // Compare match C
111     ELC_EVENT_GPT0_COMPARE_D                = (0x049), // Compare match D
112     ELC_EVENT_GPT0_COUNTER_OVERFLOW         = (0x04A), // Overflow
113     ELC_EVENT_GPT0_COUNTER_UNDERFLOW        = (0x04B), // Underflow
114     ELC_EVENT_GPT1_CAPTURE_COMPARE_A        = (0x04C), // Capture/Compare match A
115     ELC_EVENT_GPT1_CAPTURE_COMPARE_B        = (0x04D), // Capture/Compare match B
116     ELC_EVENT_GPT1_COMPARE_C                = (0x04E), // Compare match C
117     ELC_EVENT_GPT1_COMPARE_D                = (0x04F), // Compare match D
118     ELC_EVENT_GPT1_COUNTER_OVERFLOW         = (0x050), // Overflow
119     ELC_EVENT_GPT1_COUNTER_UNDERFLOW        = (0x051), // Underflow
120     ELC_EVENT_GPT2_CAPTURE_COMPARE_A        = (0x052), // Capture/Compare match A
121     ELC_EVENT_GPT2_CAPTURE_COMPARE_B        = (0x053), // Capture/Compare match B
122     ELC_EVENT_GPT2_COMPARE_C                = (0x054), // Compare match C
123     ELC_EVENT_GPT2_COMPARE_D                = (0x055), // Compare match D
124     ELC_EVENT_GPT2_COUNTER_OVERFLOW         = (0x056), // Overflow
125     ELC_EVENT_GPT2_COUNTER_UNDERFLOW        = (0x057), // Underflow
126     ELC_EVENT_GPT3_CAPTURE_COMPARE_A        = (0x058), // Capture/Compare match A
127     ELC_EVENT_GPT3_CAPTURE_COMPARE_B        = (0x059), // Capture/Compare match B
128     ELC_EVENT_GPT3_COMPARE_C                = (0x05A), // Compare match C
129     ELC_EVENT_GPT3_COMPARE_D                = (0x05B), // Compare match D
130     ELC_EVENT_GPT3_COUNTER_OVERFLOW         = (0x05C), // Overflow
131     ELC_EVENT_GPT3_COUNTER_UNDERFLOW        = (0x05D), // Underflow
132     ELC_EVENT_GPT4_CAPTURE_COMPARE_A        = (0x05E), // Capture/Compare match A
133     ELC_EVENT_GPT4_CAPTURE_COMPARE_B        = (0x05F), // Capture/Compare match B
134     ELC_EVENT_GPT4_COMPARE_C                = (0x060), // Compare match C
135     ELC_EVENT_GPT4_COMPARE_D                = (0x061), // Compare match D
136     ELC_EVENT_GPT4_COUNTER_OVERFLOW         = (0x062), // Overflow
137     ELC_EVENT_GPT4_COUNTER_UNDERFLOW        = (0x063), // Underflow
138     ELC_EVENT_GPT5_CAPTURE_COMPARE_A        = (0x064), // Capture/Compare match A
139     ELC_EVENT_GPT5_CAPTURE_COMPARE_B        = (0x065), // Capture/Compare match B
140     ELC_EVENT_GPT5_COMPARE_C                = (0x066), // Compare match C
141     ELC_EVENT_GPT5_COMPARE_D                = (0x067), // Compare match D
142     ELC_EVENT_GPT5_COUNTER_OVERFLOW         = (0x068), // Overflow
143     ELC_EVENT_GPT5_COUNTER_UNDERFLOW        = (0x069), // Underflow
144     ELC_EVENT_GPT6_CAPTURE_COMPARE_A        = (0x06A), // Capture/Compare match A
145     ELC_EVENT_GPT6_CAPTURE_COMPARE_B        = (0x06B), // Capture/Compare match B
146     ELC_EVENT_GPT6_COMPARE_C                = (0x06C), // Compare match C
147     ELC_EVENT_GPT6_COMPARE_D                = (0x06D), // Compare match D
148     ELC_EVENT_GPT6_COUNTER_OVERFLOW         = (0x06E), // Overflow
149     ELC_EVENT_GPT6_COUNTER_UNDERFLOW        = (0x06F), // Underflow
150     ELC_EVENT_OPS_UVW_EDGE                  = (0x070), // UVW edge event
151     ELC_EVENT_SCI0_RXI                      = (0x071), // Receive data full
152     ELC_EVENT_SCI0_TXI                      = (0x072), // Transmit data empty
153     ELC_EVENT_SCI0_TEI                      = (0x073), // Transmit end
154     ELC_EVENT_SCI0_ERI                      = (0x074), // Receive error
155     ELC_EVENT_SCI0_AM                       = (0x075), // Address match event
156     ELC_EVENT_SCI0_RXI_OR_ERI               = (0x076), // Receive data full/Receive error
157     ELC_EVENT_SCI1_RXI                      = (0x077), // Receive data full
158     ELC_EVENT_SCI1_TXI                      = (0x078), // Transmit data empty
159     ELC_EVENT_SCI1_TEI                      = (0x079), // Transmit end
160     ELC_EVENT_SCI1_ERI                      = (0x07A), // Receive error
161     ELC_EVENT_SCI1_AM                       = (0x07B), // Address match event
162     ELC_EVENT_SCI9_RXI                      = (0x07C), // Receive data full
163     ELC_EVENT_SCI9_TXI                      = (0x07D), // Transmit data empty
164     ELC_EVENT_SCI9_TEI                      = (0x07E), // Transmit end
165     ELC_EVENT_SCI9_ERI                      = (0x07F), // Receive error
166     ELC_EVENT_SCI9_AM                       = (0x080), // Address match event
167     ELC_EVENT_SPI0_RXI                      = (0x081), // Receive buffer full
168     ELC_EVENT_SPI0_TXI                      = (0x082), // Transmit buffer empty
169     ELC_EVENT_SPI0_IDLE                     = (0x083), // Idle
170     ELC_EVENT_SPI0_ERI                      = (0x084), // Error
171     ELC_EVENT_SPI0_TEI                      = (0x085), // Transmission complete event
172     ELC_EVENT_SPI1_RXI                      = (0x086), // Receive buffer full
173     ELC_EVENT_SPI1_TXI                      = (0x087), // Transmit buffer empty
174     ELC_EVENT_SPI1_IDLE                     = (0x088), // Idle
175     ELC_EVENT_SPI1_ERI                      = (0x089), // Error
176     ELC_EVENT_SPI1_TEI                      = (0x08A), // Transmission complete event
177     ELC_EVENT_AES_WRREQ                     = (0x08B), // AES Write Request
178     ELC_EVENT_AES_RDREQ                     = (0x08C), // AES Read Request
179     ELC_EVENT_TRNG_RDREQ                    = (0x08D)  // TRNG Read Request
180 } elc_event_t;
181 
182 #define BSP_PRV_VECT_ENUM(event,group)  (ELC_ ## event)
183 
184 #define ELC_PERIPHERAL_NUM    (23U)
185 #define BSP_OVERRIDE_ELC_PERIPHERAL_T
186 /** Possible peripherals to be linked to event signals
187  * @note This list is device specific.
188  * */
189 typedef enum e_elc_peripheral
190 {
191     ELC_PERIPHERAL_GPT_A         = (0),
192     ELC_PERIPHERAL_GPT_B         = (1),
193     ELC_PERIPHERAL_GPT_C         = (2),
194     ELC_PERIPHERAL_GPT_D         = (3),
195     ELC_PERIPHERAL_ADC0          = (8),
196     ELC_PERIPHERAL_ADC0_B        = (9),
197     ELC_PERIPHERAL_DAC0          = (12),
198     ELC_PERIPHERAL_IOPORT1       = (14),
199     ELC_PERIPHERAL_IOPORT2       = (15),
200     ELC_PERIPHERAL_CTSU          = (18),
201     ELC_PERIPHERAL_DA8_0         = (19),
202     ELC_PERIPHERAL_DA8_1         = (20),
203     ELC_PERIPHERAL_SDADC0        = (22)
204 } elc_peripheral_t;
205 
206 /** Positions of event link set registers (ELSRs) available on this MCU */
207 #define BSP_ELC_PERIPHERAL_MASK  (0x005CD30FU)
208 
209 /* UNCRUSTIFY-ON */
210 /** @} (end addtogroup BSP_MCU_RA2A1) */
211 
212 #endif
213