[PATCH 001/149] exynos: Rework legacy PWM usage

Tom Rini trini at konsulko.com
Sun Dec 4 16:03:26 CET 2022


The way that the timer support is currently done for exynos/nexell
platforms relies on the legacy PWM infrastructure, and that needs to be
updated. However, we really cannot safely undef CONFIG_DM_PWM to build
the timer.c file without warnings. For now, rename the relevant legacy
functions to be prefixed with s5p_ and add prototypes to the arch pwm.h
files.

Cc: Minkyu Kang <mk7.kang at samsung.com>
Cc: Jaehoon Chung <jh80.chung at samsung.com>
Cc: Dzmitry Sankouski <dsankouski at gmail.com>
Cc: Stefan Bosch <stefan_b at posteo.net>
Signed-off-by: Tom Rini <trini at konsulko.com>
---
 arch/arm/cpu/armv7/s5p-common/pwm.c      | 11 +++++------
 arch/arm/cpu/armv7/s5p-common/timer.c    | 10 +++-------
 arch/arm/mach-exynos/include/mach/pwm.h  |  5 +++++
 arch/arm/mach-nexell/include/mach/pwm.h  |  5 +++++
 arch/arm/mach-s5pc1xx/include/mach/pwm.h |  5 +++++
 board/friendlyarm/nanopi2/board.c        |  4 ++--
 board/friendlyarm/nanopi2/onewire.c      |  4 ++--
 7 files changed, 27 insertions(+), 17 deletions(-)

diff --git a/arch/arm/cpu/armv7/s5p-common/pwm.c b/arch/arm/cpu/armv7/s5p-common/pwm.c
index aef2e5574b41..5068327d3c5f 100644
--- a/arch/arm/cpu/armv7/s5p-common/pwm.c
+++ b/arch/arm/cpu/armv7/s5p-common/pwm.c
@@ -7,12 +7,11 @@
 
 #include <common.h>
 #include <errno.h>
-#include <pwm.h>
 #include <asm/io.h>
 #include <asm/arch/pwm.h>
 #include <asm/arch/clk.h>
 
-int pwm_enable(int pwm_id)
+int s5p_pwm_enable(int pwm_id)
 {
 	const struct s5p_timer *pwm =
 #if defined(CONFIG_ARCH_NEXELL)
@@ -30,7 +29,7 @@ int pwm_enable(int pwm_id)
 	return 0;
 }
 
-void pwm_disable(int pwm_id)
+void s5p_pwm_disable(int pwm_id)
 {
 	const struct s5p_timer *pwm =
 #if defined(CONFIG_ARCH_NEXELL)
@@ -92,7 +91,7 @@ static unsigned long pwm_calc_tin(int pwm_id, unsigned long freq)
 
 #define NS_IN_SEC 1000000000UL
 
-int pwm_config(int pwm_id, int duty_ns, int period_ns)
+int s5p_pwm_config(int pwm_id, int duty_ns, int period_ns)
 {
 	const struct s5p_timer *pwm =
 #if defined(CONFIG_ARCH_NEXELL)
@@ -157,7 +156,7 @@ int pwm_config(int pwm_id, int duty_ns, int period_ns)
 	return 0;
 }
 
-int pwm_init(int pwm_id, int div, int invert)
+int s5p_pwm_init(int pwm_id, int div, int invert)
 {
 	u32 val;
 	const struct s5p_timer *pwm =
@@ -219,7 +218,7 @@ int pwm_init(int pwm_id, int div, int invert)
 		val |= TCON_INVERTER(pwm_id);
 	writel(val, &pwm->tcon);
 
-	pwm_enable(pwm_id);
+	s5p_pwm_enable(pwm_id);
 
 	return 0;
 }
diff --git a/arch/arm/cpu/armv7/s5p-common/timer.c b/arch/arm/cpu/armv7/s5p-common/timer.c
index 8533d04878c2..f4a045e2f0d2 100644
--- a/arch/arm/cpu/armv7/s5p-common/timer.c
+++ b/arch/arm/cpu/armv7/s5p-common/timer.c
@@ -16,10 +16,6 @@
 #include <asm/arch/clk.h>
 #include <linux/delay.h>
 
-/* Use the old PWM interface for now */
-#undef CONFIG_DM_PWM
-#include <pwm.h>
-
 DECLARE_GLOBAL_DATA_PTR;
 
 unsigned long get_current_tick(void);
@@ -49,9 +45,9 @@ static unsigned long timer_get_us_down(void)
 int timer_init(void)
 {
 	/* PWM Timer 4 */
-	pwm_init(4, MUX_DIV_4, 0);
-	pwm_config(4, 100000, 100000);
-	pwm_enable(4);
+	s5p_pwm_init(4, MUX_DIV_4, 0);
+	s5p_pwm_config(4, 100000, 100000);
+	s5p_pwm_enable(4);
 
 	/* Use this as the current monotonic time in us */
 	gd->arch.timer_reset_value = 0;
diff --git a/arch/arm/mach-exynos/include/mach/pwm.h b/arch/arm/mach-exynos/include/mach/pwm.h
index 417fc15551d5..17372492d586 100644
--- a/arch/arm/mach-exynos/include/mach/pwm.h
+++ b/arch/arm/mach-exynos/include/mach/pwm.h
@@ -49,6 +49,11 @@ struct s5p_timer {
 	unsigned int	tcnto4;
 	unsigned int	tintcstat;
 };
+
+int s5p_pwm_init (int pwm_id, int div, int invert);
+int s5p_pwm_config (int pwm_id, int duty_ns, int period_ns);
+int s5p_pwm_enable (int pwm_id);
+void s5p_pwm_disable (int pwm_id);
 #endif	/* __ASSEMBLY__ */
 
 #endif
diff --git a/arch/arm/mach-nexell/include/mach/pwm.h b/arch/arm/mach-nexell/include/mach/pwm.h
index 08a287d308ff..1e12058dd534 100644
--- a/arch/arm/mach-nexell/include/mach/pwm.h
+++ b/arch/arm/mach-nexell/include/mach/pwm.h
@@ -49,6 +49,11 @@ struct s5p_timer {
 	unsigned int	tcnto4;
 	unsigned int	tintcstat;
 };
+
+int s5p_pwm_init (int pwm_id, int div, int invert);
+int s5p_pwm_config (int pwm_id, int duty_ns, int period_ns);
+int s5p_pwm_enable (int pwm_id);
+void s5p_pwm_disable (int pwm_id);
 #endif	/* __ASSEMBLY__ */
 
 #endif
diff --git a/arch/arm/mach-s5pc1xx/include/mach/pwm.h b/arch/arm/mach-s5pc1xx/include/mach/pwm.h
index 1a531beddc63..6d53e52f6497 100644
--- a/arch/arm/mach-s5pc1xx/include/mach/pwm.h
+++ b/arch/arm/mach-s5pc1xx/include/mach/pwm.h
@@ -49,6 +49,11 @@ struct s5p_timer {
 	unsigned int	tcnto4;
 	unsigned int	tintcstat;
 };
+
+int s5p_pwm_init (int pwm_id, int div, int invert);
+int s5p_pwm_config (int pwm_id, int duty_ns, int period_ns);
+int s5p_pwm_enable (int pwm_id);
+void s5p_pwm_disable (int pwm_id);
 #endif	/* __ASSEMBLY__ */
 
 #endif
diff --git a/board/friendlyarm/nanopi2/board.c b/board/friendlyarm/nanopi2/board.c
index 954197282e6b..393c5a447d6f 100644
--- a/board/friendlyarm/nanopi2/board.c
+++ b/board/friendlyarm/nanopi2/board.c
@@ -80,9 +80,9 @@ static void bd_backlight_on(void)
 
 #elif defined(BACKLIGHT_CH)
 	/* pwm backlight ON: HIGH, ON: LOW */
-	pwm_init(BACKLIGHT_CH,
+	s5p_pwm_init(BACKLIGHT_CH,
 		 BACKLIGHT_DIV, BACKLIGHT_INV);
-	pwm_config(BACKLIGHT_CH,
+	s5p_pwm_config(BACKLIGHT_CH,
 		   TO_DUTY_NS(BACKLIGHT_DUTY, BACKLIGHT_HZ),
 		   TO_PERIOD_NS(BACKLIGHT_HZ));
 #endif
diff --git a/board/friendlyarm/nanopi2/onewire.c b/board/friendlyarm/nanopi2/onewire.c
index fb356639be2f..56f0f2dfceba 100644
--- a/board/friendlyarm/nanopi2/onewire.c
+++ b/board/friendlyarm/nanopi2/onewire.c
@@ -9,8 +9,8 @@
 #include <errno.h>
 #include <asm/io.h>
 #include <asm/arch/clk.h>
+#include <asm/arch/pwm.h>
 #include <i2c.h>
-#include <pwm.h>
 
 #include <irq_func.h>
 
@@ -102,7 +102,7 @@ static int onewire_init_timer(void)
 	/* range: 1080~1970 */
 	period_ns -= 1525;
 
-	return pwm_config(PWM_CH, period_ns >> 1, period_ns);
+	return s5p_pwm_config(PWM_CH, period_ns >> 1, period_ns);
 }
 
 static void wait_one_tick(void)
-- 
2.25.1



More information about the U-Boot mailing list