Skip to content

Commit c8807e9

Browse files
Phuc Phamnhutnguyenkc
authored andcommitted
hal: renesas: rzt: Add ADC support for RZ/T series
Add HAL FSP ADC files for RZ/T series Signed-off-by: Phuc Pham <[email protected]> Signed-off-by: Nhut Nguyen <[email protected]>
1 parent 81eed2c commit c8807e9

File tree

4 files changed

+1917
-0
lines changed

4 files changed

+1917
-0
lines changed

drivers/rz/fsp/inc/api/r_elc_api.h

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
/*
2+
* Copyright (c) 2020 - 2024 Renesas Electronics Corporation and/or its affiliates
3+
*
4+
* SPDX-License-Identifier: BSD-3-Clause
5+
*/
6+
7+
/*******************************************************************************************************************//**
8+
* @ingroup RENESAS_SYSTEM_INTERFACES
9+
* @defgroup ELC_API ELC Interface
10+
* @brief Interface for the Event Link Controller.
11+
*
12+
*
13+
*
14+
* @{
15+
**********************************************************************************************************************/
16+
17+
#ifndef R_ELC_API_H
18+
#define R_ELC_API_H
19+
20+
/***********************************************************************************************************************
21+
* Includes
22+
**********************************************************************************************************************/
23+
24+
/* Register definitions, common services and error codes. */
25+
#include "bsp_api.h"
26+
27+
/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */
28+
FSP_HEADER
29+
30+
/**********************************************************************************************************************
31+
* Macro definitions
32+
**********************************************************************************************************************/
33+
#ifndef ELC_PERIPHERAL_NUM
34+
#define ELC_PERIPHERAL_NUM (23U)
35+
#endif
36+
37+
/**********************************************************************************************************************
38+
* Typedef definitions
39+
**********************************************************************************************************************/
40+
41+
#ifndef BSP_OVERRIDE_ELC_PERIPHERAL_T
42+
43+
/** Possible peripherals to be linked to event signals (not all available on all MCUs) */
44+
typedef enum e_elc_peripheral
45+
{
46+
ELC_PERIPHERAL_GPT_A = (0),
47+
ELC_PERIPHERAL_GPT_B = (1),
48+
ELC_PERIPHERAL_GPT_C = (2),
49+
ELC_PERIPHERAL_GPT_D = (3),
50+
ELC_PERIPHERAL_GPT_E = (4),
51+
ELC_PERIPHERAL_GPT_F = (5),
52+
ELC_PERIPHERAL_GPT_G = (6),
53+
ELC_PERIPHERAL_GPT_H = (7),
54+
ELC_PERIPHERAL_ADC0 = (8),
55+
ELC_PERIPHERAL_ADC0_B = (9),
56+
ELC_PERIPHERAL_ADC1 = (10),
57+
ELC_PERIPHERAL_ADC1_B = (11),
58+
ELC_PERIPHERAL_DAC0 = (12),
59+
ELC_PERIPHERAL_DAC1 = (13),
60+
ELC_PERIPHERAL_IOPORT1 = (14),
61+
ELC_PERIPHERAL_IOPORT2 = (15),
62+
ELC_PERIPHERAL_IOPORT3 = (16),
63+
ELC_PERIPHERAL_IOPORT4 = (17),
64+
ELC_PERIPHERAL_CTSU = (18),
65+
ELC_PERIPHERAL_DA8_0 = (19),
66+
ELC_PERIPHERAL_DA8_1 = (20),
67+
ELC_PERIPHERAL_SDADC0 = (22),
68+
} elc_peripheral_t;
69+
70+
#endif
71+
72+
/** ELC control block. Allocate an instance specific control block to pass into the ELC API calls.
73+
*/
74+
typedef void elc_ctrl_t;
75+
76+
/** Main configuration structure for the Event Link Controller */
77+
typedef struct st_elc_cfg
78+
{
79+
elc_event_t const link[ELC_PERIPHERAL_NUM]; ///< Event link register settings
80+
void const * p_extend; ///< Extension parameter for hardware specific settings
81+
} elc_cfg_t;
82+
83+
#ifndef BSP_OVERRIDE_ELC_SOFTWARE_EVENT_T
84+
85+
/** Software event number */
86+
typedef enum e_elc_software_event
87+
{
88+
ELC_SOFTWARE_EVENT_0, ///< Software event 0
89+
ELC_SOFTWARE_EVENT_1, ///< Software event 1
90+
} elc_software_event_t;
91+
92+
#endif
93+
94+
/** ELC driver structure. General ELC functions implemented at the HAL layer follow this API. */
95+
typedef struct st_elc_api
96+
{
97+
/** Initialize all links in the Event Link Controller.
98+
*
99+
* @param[in] p_ctrl Pointer to control structure.
100+
* @param[in] p_cfg Pointer to configuration structure.
101+
**/
102+
fsp_err_t (* open)(elc_ctrl_t * const p_ctrl, elc_cfg_t const * const p_cfg);
103+
104+
/** Disable all links in the Event Link Controller and close the API.
105+
*
106+
* @param[in] p_ctrl Pointer to control structure.
107+
**/
108+
fsp_err_t (* close)(elc_ctrl_t * const p_ctrl);
109+
110+
/** Generate a software event in the Event Link Controller.
111+
*
112+
* @param[in] p_ctrl Pointer to control structure.
113+
* @param[in] eventNum Software event number to be generated.
114+
**/
115+
fsp_err_t (* softwareEventGenerate)(elc_ctrl_t * const p_ctrl, elc_software_event_t event_num);
116+
117+
/** Create a single event link.
118+
*
119+
* @param[in] p_ctrl Pointer to control structure.
120+
* @param[in] peripheral The peripheral block that will receive the event signal.
121+
* @param[in] signal The event signal.
122+
**/
123+
fsp_err_t (* linkSet)(elc_ctrl_t * const p_ctrl, elc_peripheral_t peripheral, elc_event_t signal);
124+
125+
/** Break an event link.
126+
*
127+
* @param[in] p_ctrl Pointer to control structure.
128+
* @param[in] peripheral The peripheral that should no longer be linked.
129+
**/
130+
fsp_err_t (* linkBreak)(elc_ctrl_t * const p_ctrl, elc_peripheral_t peripheral);
131+
132+
/** Enable the operation of the Event Link Controller.
133+
*
134+
* @param[in] p_ctrl Pointer to control structure.
135+
**/
136+
fsp_err_t (* enable)(elc_ctrl_t * const p_ctrl);
137+
138+
/** Disable the operation of the Event Link Controller.
139+
*
140+
* @param[in] p_ctrl Pointer to control structure.
141+
**/
142+
fsp_err_t (* disable)(elc_ctrl_t * const p_ctrl);
143+
} elc_api_t;
144+
145+
/** This structure encompasses everything that is needed to use an instance of this interface. */
146+
typedef struct st_elc_instance
147+
{
148+
elc_ctrl_t * p_ctrl; ///< Pointer to the control structure for this instance
149+
elc_cfg_t const * p_cfg; ///< Pointer to the configuration structure for this instance
150+
elc_api_t const * p_api; ///< Pointer to the API structure for this instance
151+
} elc_instance_t;
152+
153+
/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */
154+
FSP_FOOTER
155+
156+
#endif
157+
158+
/*******************************************************************************************************************//**
159+
* @} (end defgroup ELC_API)
160+
**********************************************************************************************************************/

0 commit comments

Comments
 (0)