[PATCH 3/5] mx7: clock: add pwm enabling clock function
Thomas Bonnefille
thomas.bonnefille at bootlin.com
Wed Nov 26 00:41:55 CET 2025
Add function to enable the clock of the different PWM controllers on i.MX7.
Signed-off-by: Thomas Bonnefille <thomas.bonnefille at bootlin.com>
---
arch/arm/include/asm/arch-mx7/clock.h | 3 +++
arch/arm/mach-imx/mx7/clock.c | 29 +++++++++++++++++++++++++++++
2 files changed, 32 insertions(+)
diff --git a/arch/arm/include/asm/arch-mx7/clock.h b/arch/arm/include/asm/arch-mx7/clock.h
index 48c7c3367a5..03d1cc76e53 100644
--- a/arch/arm/include/asm/arch-mx7/clock.h
+++ b/arch/arm/include/asm/arch-mx7/clock.h
@@ -347,6 +347,9 @@ void clock_init(void);
#ifdef CONFIG_SYS_I2C_MXC
int enable_i2c_clk(unsigned char enable, unsigned i2c_num);
#endif
+#ifdef CONFIG_PWM_IMX
+int enable_pwm_clk(unsigned char enable, unsigned int pwm_num);
+#endif
#ifdef CONFIG_FEC_MXC
int set_clk_enet(enum enet_freq type);
#endif
diff --git a/arch/arm/mach-imx/mx7/clock.c b/arch/arm/mach-imx/mx7/clock.c
index a8328a0b224..72e0051373f 100644
--- a/arch/arm/mach-imx/mx7/clock.c
+++ b/arch/arm/mach-imx/mx7/clock.c
@@ -524,6 +524,35 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
return 0;
}
+#ifdef CONFIG_PWM_IMX
+/* pwm_num can be 0 - 3 */
+int enable_pwm_clk(unsigned char enable, unsigned int pwm_num)
+{
+ u32 target;
+
+ if (pwm_num >= 4)
+ return -EINVAL;
+
+ if (enable) {
+ clock_enable(CCGR_PWM1 + pwm_num, 0);
+
+ /* Set i2c root clock to PLL_SYS_MAIN_120M_CLK */
+
+ target = CLK_ROOT_ON |
+ PWM1_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK |
+ CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+ CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV2);
+ clock_set_target_val(PWM1_CLK_ROOT + pwm_num, target);
+
+ clock_enable(CCGR_PWM1 + pwm_num, 1);
+ } else {
+ clock_enable(CCGR_PWM1 + pwm_num, 0);
+ }
+
+ return 0;
+}
+#endif
+
#ifdef CONFIG_SYS_I2C_MXC
/* i2c_num can be 0 - 3 */
int enable_i2c_clk(unsigned char enable, unsigned i2c_num)
--
2.52.0
More information about the U-Boot
mailing list