armv7: s5pc1xx: don't use function pointer for clock functions
authorMinkyu Kang <mk7.kang@samsung.com>
Mon, 27 Dec 2010 06:55:48 +0000 (15:55 +0900)
committerAlbert Aribaud <albert.aribaud@free.fr>
Tue, 1 Feb 2011 23:54:44 +0000 (00:54 +0100)
Because of the bss area is cleared after relocation, we've lost pointers.
This patch fixed it.

Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
arch/arm/cpu/armv7/s5p-common/cpu_info.c
arch/arm/cpu/armv7/s5pc1xx/clock.c
arch/arm/include/asm/arch-s5pc1xx/clk.h

index 2f6c7085546af48580587d23f1847b5b09397801..c8a543a45282621e16846c7559960b06a127e787 100644 (file)
@@ -32,8 +32,6 @@ int arch_cpu_init(void)
 {
        s5p_set_cpu_id();
 
-       s5p_clock_init();
-
        return 0;
 }
 #endif
index 98a27e551dba5a5464e4663c2ead7112c803e5a0..e92647cdfc0d22efd36e2f98ce900098ba035e7f 100644 (file)
 #define CONFIG_SYS_CLK_FREQ_C110       24000000
 #endif
 
-unsigned long (*get_uart_clk)(int dev_index);
-unsigned long (*get_pwm_clk)(void);
-unsigned long (*get_arm_clk)(void);
-unsigned long (*get_pll_clk)(int);
-
 /* s5pc110: return pll clock frequency */
 static unsigned long s5pc100_get_pll_clk(int pllreg)
 {
@@ -316,15 +311,28 @@ static unsigned long s5pc1xx_get_pwm_clk(void)
                return s5pc100_get_pclk();
 }
 
-void s5p_clock_init(void)
+unsigned long get_pll_clk(int pllreg)
 {
-       if (cpu_is_s5pc110()) {
-               get_pll_clk = s5pc110_get_pll_clk;
-               get_arm_clk = s5pc110_get_arm_clk;
-       } else {
-               get_pll_clk = s5pc100_get_pll_clk;
-               get_arm_clk = s5pc100_get_arm_clk;
-       }
-       get_uart_clk = s5pc1xx_get_uart_clk;
-       get_pwm_clk = s5pc1xx_get_pwm_clk;
+       if (cpu_is_s5pc110())
+               return s5pc110_get_pll_clk(pllreg);
+       else
+               return s5pc100_get_pll_clk(pllreg);
+}
+
+unsigned long get_arm_clk(void)
+{
+       if (cpu_is_s5pc110())
+               return s5pc110_get_arm_clk();
+       else
+               return s5pc100_get_arm_clk();
+}
+
+unsigned long get_pwm_clk(void)
+{
+       return s5pc1xx_get_pwm_clk();
+}
+
+unsigned long get_uart_clk(int dev_index)
+{
+       return s5pc1xx_get_uart_clk(dev_index);
 }
index 3488eb7c1574ec7b479e80be9169cdf3f022fa45..4c389c1fc536a336daaecf496580c4151d827647 100644 (file)
 #define HPLL   3
 #define VPLL   4
 
-void s5p_clock_init(void);
-
-extern unsigned long (*get_pll_clk)(int pllreg);
-extern unsigned long (*get_arm_clk)(void);
-extern unsigned long (*get_pwm_clk)(void);
-extern unsigned long (*get_uart_clk)(int dev_index);
+unsigned long get_pll_clk(int pllreg);
+unsigned long get_arm_clk(void);
+unsigned long get_pwm_clk(void);
+unsigned long get_uart_clk(int dev_index);
 
 #endif