From fa9a131029cc5438b6be1bed417a77aa42fee1bb Mon Sep 17 00:00:00 2001 From: Jiafei Pan Date: Fri, 21 Jun 2024 17:30:55 +0800 Subject: [PATCH] drivers: clock_control: mcux_ccm_rev2: add ENET clk for imx93 Add ENET clock support in the ccm driver for imx93. Signed-off-by: Jiafei Pan --- .../clock_control_mcux_ccm_rev2.c | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/drivers/clock_control/clock_control_mcux_ccm_rev2.c b/drivers/clock_control/clock_control_mcux_ccm_rev2.c index 188fe976df4f..371914c36e00 100644 --- a/drivers/clock_control/clock_control_mcux_ccm_rev2.c +++ b/drivers/clock_control/clock_control_mcux_ccm_rev2.c @@ -17,16 +17,33 @@ LOG_MODULE_REGISTER(clock_control); static int mcux_ccm_on(const struct device *dev, clock_control_subsys_t sub_system) { + uint32_t clock_name = (uintptr_t)sub_system; + uint32_t peripheral, instance; + + peripheral = (clock_name & IMX_CCM_PERIPHERAL_MASK); + instance = (clock_name & IMX_CCM_INSTANCE_MASK); + switch (peripheral) { #ifdef CONFIG_ETH_NXP_ENET - if ((uint32_t)sub_system == IMX_CCM_ENET_CLK) { - CLOCK_EnableClock(kCLOCK_Enet); -#ifdef CONFIG_ETH_NXP_ENET_1G - } else if ((uint32_t)sub_system == IMX_CCM_ENET1G_CLK) { - CLOCK_EnableClock(kCLOCK_Enet_1g); + +#ifdef CONFIG_SOC_MIMX9352_A55 +#define ENET1G_CLOCK kCLOCK_Enet1 +#else +#define ENET_CLOCK kCLOCK_Enet +#define ENET1G_CLOCK kCLOCK_Enet_1g #endif - } +#ifdef ENET_CLOCK + case IMX_CCM_ENET_CLK: + CLOCK_EnableClock(ENET_CLOCK); + return 0; #endif - return 0; + case IMX_CCM_ENET1G_CLK: + CLOCK_EnableClock(ENET1G_CLOCK); + return 0; +#endif + default: + (void)instance; + return 0; + } } static int mcux_ccm_off(const struct device *dev, @@ -116,7 +133,11 @@ static int mcux_ccm_get_subsys_rate(const struct device *dev, #ifdef CONFIG_ETH_NXP_ENET case IMX_CCM_ENET_CLK: case IMX_CCM_ENET1G_CLK: +#ifdef CONFIG_SOC_MIMX9352_A55 + clock_root = kCLOCK_Root_WakeupAxi; +#else clock_root = kCLOCK_Root_Bus; +#endif break; #endif