[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