armv7: s5pc1xx: don't use function pointer for clock functions

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>
master
Minkyu Kang 14 years ago committed by Albert Aribaud
parent 724bd3c50f
commit 3c152165c7
  1. 2
      arch/arm/cpu/armv7/s5p-common/cpu_info.c
  2. 38
      arch/arm/cpu/armv7/s5pc1xx/clock.c
  3. 10
      arch/arm/include/asm/arch-s5pc1xx/clk.h

@ -32,8 +32,6 @@ int arch_cpu_init(void)
{
s5p_set_cpu_id();
s5p_clock_init();
return 0;
}
#endif

@ -38,11 +38,6 @@
#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);
}

@ -29,11 +29,9 @@
#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

Loading…
Cancel
Save