From 17ad33b5d5803042edce176b08a6ce94e6e048bf Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Wed, 3 Apr 2013 08:38:57 +0200 Subject: ARM: i.MX53: split lowlevel function into early/nonearly version clock_notifier_call_chain() can't be called before init time. Protecting it with IS_ENABLED(__PBL__) is not enough. This patch splits out a new imx53_init_lowlevel_early which can be called before init time and does not have the call to clock_notifier_call_chain() in it. Signed-off-by: Sascha Hauer --- arch/arm/boards/karo-tx53/lowlevel.c | 2 +- arch/arm/mach-imx/imx53.c | 12 ++++++++---- arch/arm/mach-imx/include/mach/imx5.h | 1 + 3 files changed, 10 insertions(+), 5 deletions(-) (limited to 'arch') diff --git a/arch/arm/boards/karo-tx53/lowlevel.c b/arch/arm/boards/karo-tx53/lowlevel.c index 32d2c8f2c1..f47f260722 100644 --- a/arch/arm/boards/karo-tx53/lowlevel.c +++ b/arch/arm/boards/karo-tx53/lowlevel.c @@ -14,7 +14,7 @@ void __naked barebox_arm_reset_vector(void) * so do the PLL setup here. */ if (IS_ENABLED(CONFIG_TX53_REV_XX30)) - imx53_init_lowlevel(800); + imx53_init_lowlevel_early(800); imx53_barebox_entry(0); } diff --git a/arch/arm/mach-imx/imx53.c b/arch/arm/mach-imx/imx53.c index b06a5d0f64..193406f670 100644 --- a/arch/arm/mach-imx/imx53.c +++ b/arch/arm/mach-imx/imx53.c @@ -75,7 +75,7 @@ static int imx53_init(void) } postcore_initcall(imx53_init); -void imx53_init_lowlevel(unsigned int cpufreq_mhz) +void imx53_init_lowlevel_early(unsigned int cpufreq_mhz) { void __iomem *ccm = (void __iomem *)MX53_CCM_BASE_ADDR; u32 r; @@ -188,8 +188,12 @@ void imx53_init_lowlevel(unsigned int cpufreq_mhz) writel(0xffffffff, ccm + MX5_CCM_CCGR6); writel(0xffffffff, ccm + MX53_CCM_CCGR7); - if (!IS_ENABLED(__PBL__)) - clock_notifier_call_chain(); - writel(0, ccm + MX5_CCM_CCDR); } + +void imx53_init_lowlevel(unsigned int cpufreq_mhz) +{ + imx53_init_lowlevel_early(cpufreq_mhz); + + clock_notifier_call_chain(); +} diff --git a/arch/arm/mach-imx/include/mach/imx5.h b/arch/arm/mach-imx/include/mach/imx5.h index ff570c40a4..7f5c2eff50 100644 --- a/arch/arm/mach-imx/include/mach/imx5.h +++ b/arch/arm/mach-imx/include/mach/imx5.h @@ -3,6 +3,7 @@ void imx51_init_lowlevel(unsigned int cpufreq_mhz); void imx53_init_lowlevel(unsigned int cpufreq_mhz); +void imx53_init_lowlevel_early(unsigned int cpufreq_mhz); void imx5_init_lowlevel(void); void imx5_setup_pll(void __iomem *base, int freq, u32 op, u32 mfd, u32 mfn); -- cgit v1.2.3