summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-04-03 08:38:57 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2013-04-05 08:27:52 +0200
commit17ad33b5d5803042edce176b08a6ce94e6e048bf (patch)
tree1d005083027608fbb2da6b7a45018fe90394bfdd /arch
parent389785f106cba465d05b94fc421a86863e60c73e (diff)
downloadbarebox-17ad33b5d5803042edce176b08a6ce94e6e048bf.tar.gz
barebox-17ad33b5d5803042edce176b08a6ce94e6e048bf.tar.xz
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 <s.hauer@pengutronix.de>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/boards/karo-tx53/lowlevel.c2
-rw-r--r--arch/arm/mach-imx/imx53.c12
-rw-r--r--arch/arm/mach-imx/include/mach/imx5.h1
3 files changed, 10 insertions, 5 deletions
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);