All of lore.kernel.org
 help / color / mirror / Atom feed
From: Minkyu Kang <mk7.kang@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/4] S5P: timer: Use pwm functions
Date: Thu, 10 Mar 2011 20:08:44 +0900	[thread overview]
Message-ID: <4D78B13C.4000203@samsung.com> (raw)

Use pwm functions for timer that is PWM timer 4.

Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
 arch/arm/cpu/armv7/s5p-common/timer.c   |   49 +++---------------------------
 arch/arm/include/asm/arch-s5pc1xx/pwm.h |    8 +----
 arch/arm/include/asm/arch-s5pc2xx/pwm.h |    8 +----
 3 files changed, 7 insertions(+), 58 deletions(-)

diff --git a/arch/arm/cpu/armv7/s5p-common/timer.c b/arch/arm/cpu/armv7/s5p-common/timer.c
index 651fd5d..cf61ee0 100644
--- a/arch/arm/cpu/armv7/s5p-common/timer.c
+++ b/arch/arm/cpu/armv7/s5p-common/timer.c
@@ -27,15 +27,7 @@
 #include <asm/io.h>
 #include <asm/arch/pwm.h>
 #include <asm/arch/clk.h>
-
-#define PRESCALER_1		(16 - 1)	/* prescaler of timer 2, 3, 4 */
-#define MUX_DIV_2		1		/* 1/2 period */
-#define MUX_DIV_4		2		/* 1/4 period */
-#define MUX_DIV_8		3		/* 1/8 period */
-#define MUX_DIV_16		4		/* 1/16 period */
-#define MUX4_DIV_SHIFT		16
-
-#define TCON_TIMER4_SHIFT	20
+#include <pwm.h>
 
 static unsigned long count_value;
 
@@ -51,41 +43,10 @@ static inline struct s5p_timer *s5p_get_base_timer(void)
 
 int timer_init(void)
 {
-	struct s5p_timer *const timer = s5p_get_base_timer();
-	u32 val;
-
-	/*
-	 * @ PWM Timer 4
-	 * Timer Freq(HZ) =
-	 *	PWM_CLK / { (prescaler_value + 1) * (divider_value) }
-	 */
-
-	/* set prescaler : 16 */
-	/* set divider : 2 */
-	writel((PRESCALER_1 & 0xff) << 8, &timer->tcfg0);
-	writel((MUX_DIV_2 & 0xf) << MUX4_DIV_SHIFT, &timer->tcfg1);
-
-	/* count_value = 2085937.5(HZ) (per 1 sec)*/
-	count_value = get_pwm_clk() / ((PRESCALER_1 + 1) *
-			(MUX_DIV_2 + 1));
-
-	/* count_value / 100 = 20859.375(HZ) (per 10 msec) */
-	count_value = count_value / 100;
-
-	/* set count value */
-	writel(count_value, &timer->tcntb4);
-	lastdec = count_value;
-
-	val = (readl(&timer->tcon) & ~(0x07 << TCON_TIMER4_SHIFT)) |
-		TCON4_AUTO_RELOAD;
-
-	/* auto reload & manual update */
-	writel(val | TCON4_UPDATE, &timer->tcon);
-
-	/* start PWM timer 4 */
-	writel(val | TCON4_START, &timer->tcon);
-
-	timestamp = 0;
+	/* PWM Timer 4 */
+	pwm_init(4, MUX_DIV_2, 0);
+	pwm_config(4, 0, 0);
+	pwm_enable(4);
 
 	return 0;
 }
diff --git a/arch/arm/include/asm/arch-s5pc1xx/pwm.h b/arch/arm/include/asm/arch-s5pc1xx/pwm.h
index de4dbce..d0cf3cb 100644
--- a/arch/arm/include/asm/arch-s5pc1xx/pwm.h
+++ b/arch/arm/include/asm/arch-s5pc1xx/pwm.h
@@ -34,19 +34,13 @@
 
 #define MUX_DIV_SHIFT(x)	(x * 4)
 
-/* Interval mode(Auto Reload) of PWM Timer 4 */
-#define TCON4_AUTO_RELOAD	(1 << 22)
-/* Update TCNTB4 */
-#define TCON4_UPDATE		(1 << 21)
-/* start bit of PWM Timer 4 */
-#define TCON4_START		(1 << 20)
-
 #define TCON_OFFSET(x)		((x + 1) * (!!x) << 2)
 
 #define TCON_START(x)		(1 << TCON_OFFSET(x))
 #define TCON_UPDATE(x)		(1 << (TCON_OFFSET(x) + 1))
 #define TCON_INVERTER(x)	(1 << (TCON_OFFSET(x) + 2))
 #define TCON_AUTO_RELOAD(x)	(1 << (TCON_OFFSET(x) + 3))
+#define TCON4_AUTO_RELOAD	(1 << 22)
 
 #ifndef __ASSEMBLY__
 struct s5p_timer {
diff --git a/arch/arm/include/asm/arch-s5pc2xx/pwm.h b/arch/arm/include/asm/arch-s5pc2xx/pwm.h
index de4dbce..d0cf3cb 100644
--- a/arch/arm/include/asm/arch-s5pc2xx/pwm.h
+++ b/arch/arm/include/asm/arch-s5pc2xx/pwm.h
@@ -34,19 +34,13 @@
 
 #define MUX_DIV_SHIFT(x)	(x * 4)
 
-/* Interval mode(Auto Reload) of PWM Timer 4 */
-#define TCON4_AUTO_RELOAD	(1 << 22)
-/* Update TCNTB4 */
-#define TCON4_UPDATE		(1 << 21)
-/* start bit of PWM Timer 4 */
-#define TCON4_START		(1 << 20)
-
 #define TCON_OFFSET(x)		((x + 1) * (!!x) << 2)
 
 #define TCON_START(x)		(1 << TCON_OFFSET(x))
 #define TCON_UPDATE(x)		(1 << (TCON_OFFSET(x) + 1))
 #define TCON_INVERTER(x)	(1 << (TCON_OFFSET(x) + 2))
 #define TCON_AUTO_RELOAD(x)	(1 << (TCON_OFFSET(x) + 3))
+#define TCON4_AUTO_RELOAD	(1 << 22)
 
 #ifndef __ASSEMBLY__
 struct s5p_timer {
-- 
1.7.1

             reply	other threads:[~2011-03-10 11:08 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-10 11:08 Minkyu Kang [this message]
2011-03-16  7:25 ` [U-Boot] [PATCH 1/4] S5P: timer: Use pwm functions Minkyu Kang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D78B13C.4000203@samsung.com \
    --to=mk7.kang@samsung.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.