summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAlexander Shiyan <shc_work@mail.ru>2012-04-12 20:20:18 +0400
committerSascha Hauer <s.hauer@pengutronix.de>2012-04-13 09:26:12 +0200
commitf5e301340cd769db67e5cdc8cdfaa2e54c0de6de (patch)
tree0bf46b11d33e14bdaedcd14fe1f3743f4989e66b /arch
parent1fe7a18cb8d03374bd92d676044578f1ea3662b0 (diff)
downloadbarebox-f5e301340cd769db67e5cdc8cdfaa2e54c0de6de.tar.gz
barebox-f5e301340cd769db67e5cdc8cdfaa2e54c0de6de.tar.xz
i.MX51: Allow to pass cpu clock to lowlevel init
Signed-off-by: Alexander Shiyan <shc_work@mail.ru> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/boards/eukrea_cpuimx51/eukrea_cpuimx51.c2
-rw-r--r--arch/arm/boards/freescale-mx51-pdk/board.c2
-rw-r--r--arch/arm/mach-imx/imx51.c13
-rw-r--r--arch/arm/mach-imx/include/mach/imx5.h2
4 files changed, 14 insertions, 5 deletions
diff --git a/arch/arm/boards/eukrea_cpuimx51/eukrea_cpuimx51.c b/arch/arm/boards/eukrea_cpuimx51/eukrea_cpuimx51.c
index 6de8f1f192..06a994aa23 100644
--- a/arch/arm/boards/eukrea_cpuimx51/eukrea_cpuimx51.c
+++ b/arch/arm/boards/eukrea_cpuimx51/eukrea_cpuimx51.c
@@ -139,7 +139,7 @@ static int eukrea_cpuimx51_console_init(void)
{
mxc_iomux_v3_setup_multiple_pads(eukrea_cpuimx51_pads, ARRAY_SIZE(eukrea_cpuimx51_pads));
- imx51_init_lowlevel();
+ imx51_init_lowlevel(800);
writel(0, 0x73fa8228);
writel(0, 0x73fa822c);
diff --git a/arch/arm/boards/freescale-mx51-pdk/board.c b/arch/arm/boards/freescale-mx51-pdk/board.c
index 6e8b418da2..76d99ff0c0 100644
--- a/arch/arm/boards/freescale-mx51-pdk/board.c
+++ b/arch/arm/boards/freescale-mx51-pdk/board.c
@@ -244,7 +244,7 @@ static int f3s_devices_init(void)
babbage_power_init();
console_flush();
- imx51_init_lowlevel();
+ imx51_init_lowlevel(800);
clock_notifier_call_chain();
armlinux_set_bootparams((void *)0x90000100);
diff --git a/arch/arm/mach-imx/imx51.c b/arch/arm/mach-imx/imx51.c
index 02704c1188..4cfd03bb52 100644
--- a/arch/arm/mach-imx/imx51.c
+++ b/arch/arm/mach-imx/imx51.c
@@ -186,7 +186,7 @@ coredevice_initcall(imx51_boot_save_loc);
#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, (( 6 << 4) + ((3 - 1) << 0)), ( 4 - 1), 3)
-void imx51_init_lowlevel(void)
+void imx51_init_lowlevel(unsigned int cpufreq_mhz)
{
void __iomem *ccm = (void __iomem *)MX51_CCM_BASE_ADDR;
u32 r;
@@ -220,7 +220,16 @@ void imx51_init_lowlevel(void)
/* Switch ARM to step clock */
writel(0x4, ccm + MX5_CCM_CCSR);
- setup_pll_800((void __iomem *)MX51_PLL1_BASE_ADDR);
+ switch (cpufreq_mhz) {
+ case 600:
+ setup_pll_600((void __iomem *)MX51_PLL1_BASE_ADDR);
+ break;
+ default:
+ /* Default maximum 800MHz */
+ setup_pll_800((void __iomem *)MX51_PLL1_BASE_ADDR);
+ break;
+ }
+
setup_pll_665((void __iomem *)MX51_PLL3_BASE_ADDR);
/* Switch peripheral to PLL 3 */
diff --git a/arch/arm/mach-imx/include/mach/imx5.h b/arch/arm/mach-imx/include/mach/imx5.h
index c33f75e9a4..4c19d28001 100644
--- a/arch/arm/mach-imx/include/mach/imx5.h
+++ b/arch/arm/mach-imx/include/mach/imx5.h
@@ -1,8 +1,8 @@
#ifndef __MACH_MX5_H
#define __MACH_MX5_H
+void imx51_init_lowlevel(unsigned int cpufreq_mhz);
void imx53_init_lowlevel(unsigned int cpufreq_mhz);
-void imx51_init_lowlevel(void);
void imx5_setup_pll(void __iomem *base, int freq, u32 op, u32 mfd, u32 mfn);
void imx5_init_lowlevel(void);