Skip to content

Commit 95cfe00

Browse files
khoatranyjduynguyenxa
authored andcommitted
drivers: clock_control: Add clock control driver for sub-clock on Renesas
RA family Add clock control driver support for sub-clock Renesas RA family Signed-off-by: Khoa Tran <[email protected]>
1 parent 0932595 commit 95cfe00

File tree

3 files changed

+72
-0
lines changed

3 files changed

+72
-0
lines changed

drivers/clock_control/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_SMARTBOND clock_cont
4242
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NUMAKER_SCC clock_control_numaker_scc.c)
4343
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NXP_S32 clock_control_nxp_s32.c)
4444
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_RENESAS_RA_CGC clock_control_renesas_ra_cgc.c)
45+
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_RENESAS_RA_SUBCLK clock_control_renesas_ra_cgc_subclk.c)
4546
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_RENESAS_RX_ROOT clock_control_renesas_rx_root_cgc.c)
4647
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_RENESAS_RX_PLL clock_control_renesas_rx_pll_cgc.c)
4748
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_RENESAS_RX_PCLK clock_control_renesas_rx_pclk_cgc.c)

drivers/clock_control/Kconfig.renesas_ra_cgc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,14 @@ config CLOCK_CONTROL_RENESAS_RA_CGC
88
depends on HAS_RENESAS_RA_FSP
99
help
1010
Enable support for Renesas RA CGC driver.
11+
12+
if CLOCK_CONTROL_RENESAS_RA_CGC
13+
14+
config CLOCK_CONTROL_RENESAS_RA_SUBCLK
15+
bool "Renesas RA sub clock source"
16+
default y
17+
depends on DT_HAS_RENESAS_RA_CGC_SUBCLK_ENABLED
18+
help
19+
Enable Renesas RA sub clock driver
20+
21+
endif
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/*
2+
* Copyright (c) 2025 Renesas Electronics Corporation
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#define DT_DRV_COMPAT renesas_ra_cgc_subclk
8+
9+
#include <string.h>
10+
#include <zephyr/drivers/clock_control.h>
11+
#include <zephyr/kernel.h>
12+
#include <soc.h>
13+
14+
struct clock_control_ra_subclk_cfg {
15+
uint32_t rate;
16+
};
17+
18+
static int clock_control_renesas_ra_subclk_on(const struct device *dev, clock_control_subsys_t sys)
19+
{
20+
ARG_UNUSED(dev);
21+
ARG_UNUSED(sys);
22+
23+
return -ENOTSUP;
24+
}
25+
26+
static int clock_control_renesas_ra_subclk_off(const struct device *dev, clock_control_subsys_t sys)
27+
{
28+
ARG_UNUSED(dev);
29+
ARG_UNUSED(sys);
30+
31+
return -ENOTSUP;
32+
}
33+
34+
static int clock_control_renesas_ra_subclk_get_rate(const struct device *dev,
35+
clock_control_subsys_t sys, uint32_t *rate)
36+
{
37+
const struct clock_control_ra_subclk_cfg *config = dev->config;
38+
39+
ARG_UNUSED(dev);
40+
ARG_UNUSED(sys);
41+
42+
*rate = config->rate;
43+
return 0;
44+
}
45+
46+
static DEVICE_API(clock_control, clock_control_renesas_ra_subclk_api) = {
47+
.on = clock_control_renesas_ra_subclk_on,
48+
.off = clock_control_renesas_ra_subclk_off,
49+
.get_rate = clock_control_renesas_ra_subclk_get_rate,
50+
};
51+
52+
#define RENESAS_RA_SUBCLK_INIT(idx) \
53+
static const struct clock_control_ra_subclk_cfg clock_control_ra_subclk_cfg##idx = { \
54+
.rate = DT_INST_PROP(idx, clock_frequency), \
55+
}; \
56+
DEVICE_DT_INST_DEFINE(idx, NULL, NULL, NULL, &clock_control_ra_subclk_cfg##idx, \
57+
PRE_KERNEL_1, CONFIG_CLOCK_CONTROL_INIT_PRIORITY, \
58+
&clock_control_renesas_ra_subclk_api);
59+
60+
DT_INST_FOREACH_STATUS_OKAY(RENESAS_RA_SUBCLK_INIT);

0 commit comments

Comments
 (0)