S5P: timer: Use pwm functions
authorMinkyu Kang <mk7.kang@samsung.com>
Thu, 10 Mar 2011 11:05:58 +0000 (20:05 +0900)
committerAlbert Aribaud <albert.aribaud@free.fr>
Sun, 27 Mar 2011 17:19:59 +0000 (19:19 +0200)
Use pwm functions for timer that is PWM timer 4.

Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
arch/arm/cpu/armv7/s5p-common/timer.c
arch/arm/include/asm/arch-s5pc1xx/pwm.h
arch/arm/include/asm/arch-s5pc2xx/pwm.h

index 651fd5ddff4bc62c3d41c7dbe8ef1199c35786ae..cf61ee0d48bf2cc571d417f29d77e80dfb16b267 100644 (file)
 #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;
 }
index de4dbce076e57aa5dc5e6e2f1934d13df952dba4..d0cf3cb853b84b4fab122752fad43ac8c53f2605 100644 (file)
 
 #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 {
index de4dbce076e57aa5dc5e6e2f1934d13df952dba4..d0cf3cb853b84b4fab122752fad43ac8c53f2605 100644 (file)
 
 #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 {