summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-imx/imx53.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2012-02-13 11:37:37 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2012-02-13 11:38:39 +0100
commit54fc71251cc9bfb148b34757e7f882832ebed3c0 (patch)
tree810546d454d8bc3f4c60febe8795deba10c63224 /arch/arm/mach-imx/imx53.c
parent99d72d3033d4c502b1aa3b8709484fda71372768 (diff)
downloadbarebox-54fc71251cc9bfb148b34757e7f882832ebed3c0.tar.gz
barebox-54fc71251cc9bfb148b34757e7f882832ebed3c0.tar.xz
ARM i.MX5: Allow to pass cpu clock to lowlevel init
Some variants of the i.MX53 do not allow to run at 1GHz, so pass a cpu frequency parameter to the lowlevel init function. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-imx/imx53.c')
-rw-r--r--arch/arm/mach-imx/imx53.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/arm/mach-imx/imx53.c b/arch/arm/mach-imx/imx53.c
index 2fb18e7f13..4f7d1cbc00 100644
--- a/arch/arm/mach-imx/imx53.c
+++ b/arch/arm/mach-imx/imx53.c
@@ -47,11 +47,12 @@ static int imx53_init(void)
coredevice_initcall(imx53_init);
#define setup_pll_1000(base) imx5_setup_pll((base), 1000, ((10 << 4) + ((1 - 1) << 0)), (12 - 1), 5)
+#define setup_pll_800(base) imx5_setup_pll((base), 800, ((8 << 4) + ((1 - 1) << 0)), (3 - 1), 1)
#define setup_pll_400(base) imx5_setup_pll((base), 400, ((8 << 4) + ((2 - 1) << 0)), (3 - 1), 1)
#define setup_pll_455(base) imx5_setup_pll((base), 455, ((9 << 4) + ((2 - 1) << 0)), (48 - 1), 23)
#define setup_pll_216(base) imx5_setup_pll((base), 216, ((8 << 4) + ((2 - 1) << 0)), (1 - 1), 1)
-void imx53_init_lowlevel(void)
+void imx53_init_lowlevel(unsigned int cpufreq_mhz)
{
void __iomem *ccm = (void __iomem *)MX53_CCM_BASE_ADDR;
u32 r;
@@ -82,7 +83,11 @@ void imx53_init_lowlevel(void)
/* Switch ARM to step clock */
writel(0x4, ccm + MX5_CCM_CCSR);
- setup_pll_1000((void __iomem *)MX53_PLL1_BASE_ADDR);
+ if (cpufreq_mhz == 1000)
+ setup_pll_1000((void __iomem *)MX53_PLL1_BASE_ADDR);
+ else
+ setup_pll_800((void __iomem *)MX53_PLL1_BASE_ADDR);
+
setup_pll_400((void __iomem *)MX53_PLL3_BASE_ADDR);
/* Switch peripheral to PLL3 */