5
5
*/
6
6
7
7
#include <zephyr/drivers/clock_control.h>
8
- #include <zephyr/dt-bindings/clock/renesas_rzg_clock.h>
9
8
#include <zephyr/kernel.h>
9
+ #include <zephyr/sys/util.h>
10
+ #include <bsp_api.h>
11
+
12
+ #if defined(CONFIG_SOC_SERIES_RZG3S )
13
+ #include <zephyr/dt-bindings/clock/renesas_rzg_clock.h>
14
+ #elif defined(CONFIG_SOC_SERIES_RZA3UL )
15
+ #include <zephyr/dt-bindings/clock/renesas_rza_clock.h>
16
+ #elif defined(CONFIG_SOC_SERIES_RZV2L )
17
+ #include <zephyr/dt-bindings/clock/renesas_rzv_clock.h>
18
+ #endif
19
+
20
+ #define RZ_CLOCK_DIV (clock_id ) ((clock_id & RZ_CLOCK_DIV_MASK) >> RZ_CLOCK_DIV_SHIFT)
21
+ #define RZ_CLOCK_IP (clock_id ) ((clock_id & RZ_IP_MASK) >> RZ_IP_SHIFT)
22
+ #define RZ_CLOCK_IP_CHANNEL (clock_id ) ((clock_id & RZ_IP_CH_MASK) >> RZ_IP_CH_SHIFT)
23
+ #define RZ_CLOCK_SRC (clock_id ) ((clock_id & RZ_CLOCK_MASK) >> RZ_CLOCK_SHIFT)
10
24
11
25
#define DT_DRV_COMPAT renesas_rz_cpg
12
26
@@ -18,15 +32,15 @@ static int clock_control_renesas_rz_on(const struct device *dev, clock_control_s
18
32
19
33
uint32_t * clock_id = (uint32_t * )sys ;
20
34
21
- uint32_t ip = (* clock_id & RZ_IP_MASK ) >> RZ_IP_SHIFT ;
22
- uint32_t ch = (* clock_id & RZ_IP_CH_MASK ) >> RZ_IP_CH_SHIFT ;
35
+ uint32_t ip = RZ_CLOCK_IP (* clock_id ) ;
36
+ uint32_t ch = RZ_CLOCK_IP_CHANNEL (* clock_id ) ;
23
37
24
38
switch (ip ) {
25
39
case RZ_IP_GTM :
26
40
R_BSP_MODULE_START (FSP_IP_GTM , ch );
27
41
break ;
28
- case RZ_IP_GPT :
29
- R_BSP_MODULE_START (FSP_IP_GPT , ch );
42
+ case RZ_IP_SCI :
43
+ R_BSP_MODULE_START (FSP_IP_SCI , ch );
30
44
break ;
31
45
case RZ_IP_SCIF :
32
46
R_BSP_MODULE_START (FSP_IP_SCIF , ch );
@@ -37,18 +51,32 @@ static int clock_control_renesas_rz_on(const struct device *dev, clock_control_s
37
51
case RZ_IP_RSPI :
38
52
R_BSP_MODULE_START (FSP_IP_RSPI , ch );
39
53
break ;
54
+ case RZ_IP_CANFD :
55
+ R_BSP_MODULE_START (FSP_IP_CANFD , ch );
56
+ break ;
57
+ #if !defined(CONFIG_SOC_SERIES_RZV2L )
58
+ case RZ_IP_ADC :
59
+ R_BSP_MODULE_START (FSP_IP_ADC , ch );
60
+ break ;
61
+ case RZ_IP_WDT :
62
+ R_BSP_MODULE_START (FSP_IP_WDT , ch );
63
+ break ;
64
+ #endif
65
+ #if !defined(CONFIG_SOC_SERIES_RZA3UL )
66
+ case RZ_IP_GPT :
67
+ R_BSP_MODULE_START (FSP_IP_GPT , ch );
68
+ break ;
40
69
case RZ_IP_MHU :
41
70
R_BSP_MODULE_START (FSP_IP_MHU , ch );
42
71
break ;
43
72
case RZ_IP_DMAC :
44
73
R_BSP_MODULE_START (FSP_IP_DMAC , ch );
45
74
break ;
46
- case RZ_IP_CANFD :
47
- R_BSP_MODULE_START (FSP_IP_CANFD , ch );
48
- break ;
49
- case RZ_IP_ADC :
50
- R_BSP_MODULE_START (FSP_IP_ADC , ch );
75
+ #else
76
+ case RZ_IP_DMAC :
77
+ R_BSP_MODULE_START (FSP_IP_DMAC_NS , ch );
51
78
break ;
79
+ #endif
52
80
default :
53
81
return - EINVAL ; /* Invalid FSP IP Module */
54
82
}
@@ -64,15 +92,15 @@ static int clock_control_renesas_rz_off(const struct device *dev, clock_control_
64
92
65
93
uint32_t * clock_id = (uint32_t * )sys ;
66
94
67
- uint32_t ip = (* clock_id & RZ_IP_MASK ) >> RZ_IP_SHIFT ;
68
- uint32_t ch = (* clock_id & RZ_IP_CH_MASK ) >> RZ_IP_CH_SHIFT ;
95
+ uint32_t ip = RZ_CLOCK_IP (* clock_id ) ;
96
+ uint32_t ch = RZ_CLOCK_IP_CHANNEL (* clock_id ) ;
69
97
70
98
switch (ip ) {
71
99
case RZ_IP_GTM :
72
100
R_BSP_MODULE_STOP (FSP_IP_GTM , ch );
73
101
break ;
74
- case RZ_IP_GPT :
75
- R_BSP_MODULE_STOP (FSP_IP_GPT , ch );
102
+ case RZ_IP_SCI :
103
+ R_BSP_MODULE_STOP (FSP_IP_SCI , ch );
76
104
break ;
77
105
case RZ_IP_SCIF :
78
106
R_BSP_MODULE_STOP (FSP_IP_SCIF , ch );
@@ -83,21 +111,36 @@ static int clock_control_renesas_rz_off(const struct device *dev, clock_control_
83
111
case RZ_IP_RSPI :
84
112
R_BSP_MODULE_STOP (FSP_IP_RSPI , ch );
85
113
break ;
114
+ case RZ_IP_CANFD :
115
+ R_BSP_MODULE_STOP (FSP_IP_CANFD , ch );
116
+ break ;
117
+ #if !defined(CONFIG_SOC_SERIES_RZV2L )
118
+ case RZ_IP_ADC :
119
+ R_BSP_MODULE_STOP (FSP_IP_ADC , ch );
120
+ break ;
121
+ case RZ_IP_WDT :
122
+ R_BSP_MODULE_STOP (FSP_IP_WDT , ch );
123
+ break ;
124
+ #endif
125
+ #if !defined(CONFIG_SOC_SERIES_RZA3UL )
126
+ case RZ_IP_GPT :
127
+ R_BSP_MODULE_STOP (FSP_IP_GPT , ch );
128
+ break ;
86
129
case RZ_IP_MHU :
87
130
R_BSP_MODULE_STOP (FSP_IP_MHU , ch );
88
131
break ;
89
132
case RZ_IP_DMAC :
90
133
R_BSP_MODULE_STOP (FSP_IP_DMAC , ch );
91
134
break ;
92
- case RZ_IP_CANFD :
93
- R_BSP_MODULE_STOP (FSP_IP_CANFD , ch );
94
- break ;
95
- case RZ_IP_ADC :
96
- R_BSP_MODULE_STOP (FSP_IP_ADC , ch );
135
+ #else
136
+ case RZ_IP_DMAC :
137
+ R_BSP_MODULE_STOP (FSP_IP_DMAC_NS , ch );
97
138
break ;
139
+ #endif
98
140
default :
99
- return - EINVAL ; /* Invalid */
141
+ return - EINVAL ; /* Invalid FSP IP Module */
100
142
}
143
+
101
144
return 0 ;
102
145
}
103
146
@@ -110,8 +153,8 @@ static int clock_control_renesas_rz_get_rate(const struct device *dev, clock_con
110
153
111
154
uint32_t * clock_id = (uint32_t * )sys ;
112
155
113
- fsp_priv_clock_t clk_src = (* clock_id & RZ_CLOCK_MASK ) >> RZ_CLOCK_SHIFT ;
114
- uint32_t clk_div = (* clock_id & RZ_CLOCK_DIV_MASK ) >> RZ_CLOCK_DIV_SHIFT ;
156
+ fsp_priv_clock_t clk_src = RZ_CLOCK_SRC (* clock_id ) ;
157
+ uint32_t clk_div = RZ_CLOCK_DIV (* clock_id ) ;
115
158
116
159
uint32_t clk_hz = R_FSP_SystemClockHzGet (clk_src );
117
160
* rate = clk_hz / clk_div ;
0 commit comments