aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-imx
diff options
context:
space:
mode:
authorShawn Guo <shawn.guo@linaro.org>2011-09-28 05:16:07 -0400
committerSascha Hauer <s.hauer@pengutronix.de>2011-10-04 04:55:12 -0400
commitf548897ffc0510885af27e22a11f449fe5e0cbbd (patch)
tree0fdf27f5466df384626741edaf6f36bfc3a0d46a /arch/arm/mach-imx
parent41e7daf27a321848adcfcea9764ac8665133f3ea (diff)
arm/imx: remove cpu_is_xxx() check from __imx_ioremap()
This patch adds an ioremap hook imx_ioremap to be called in __imx_ioremap(). Any soc that needs a customized ioremap other than __arm_ioremap() can set up this hook in soc specific call. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-imx')
-rw-r--r--arch/arm/mach-imx/mm-imx3.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/mm-imx3.c b/arch/arm/mach-imx/mm-imx3.c
index 6fad0d62052e..9f0e82ec3398 100644
--- a/arch/arm/mach-imx/mm-imx3.c
+++ b/arch/arm/mach-imx/mm-imx3.c
@@ -58,6 +58,23 @@ static void imx3_idle(void)
58 : "=r" (reg)); 58 : "=r" (reg));
59} 59}
60 60
61static void __iomem *imx3_ioremap(unsigned long phys_addr, size_t size,
62 unsigned int mtype)
63{
64 if (mtype == MT_DEVICE) {
65 /*
66 * Access all peripherals below 0x80000000 as nonshared device
67 * on mx3, but leave l2cc alone. Otherwise cache corruptions
68 * can occur.
69 */
70 if (phys_addr < 0x80000000 &&
71 !addr_in_module(phys_addr, MX3x_L2CC))
72 mtype = MT_DEVICE_NONSHARED;
73 }
74
75 return __arm_ioremap(phys_addr, size, mtype);
76}
77
61void imx3_init_l2x0(void) 78void imx3_init_l2x0(void)
62{ 79{
63 void __iomem *l2x0_base; 80 void __iomem *l2x0_base;
@@ -127,6 +144,7 @@ void __init imx31_init_early(void)
127 mxc_set_cpu_type(MXC_CPU_MX31); 144 mxc_set_cpu_type(MXC_CPU_MX31);
128 mxc_arch_reset_init(MX31_IO_ADDRESS(MX31_WDOG_BASE_ADDR)); 145 mxc_arch_reset_init(MX31_IO_ADDRESS(MX31_WDOG_BASE_ADDR));
129 imx_idle = imx3_idle; 146 imx_idle = imx3_idle;
147 imx_ioremap = imx3_ioremap;
130} 148}
131 149
132void __init imx35_init_early(void) 150void __init imx35_init_early(void)
@@ -135,6 +153,7 @@ void __init imx35_init_early(void)
135 mxc_iomux_v3_init(MX35_IO_ADDRESS(MX35_IOMUXC_BASE_ADDR)); 153 mxc_iomux_v3_init(MX35_IO_ADDRESS(MX35_IOMUXC_BASE_ADDR));
136 mxc_arch_reset_init(MX35_IO_ADDRESS(MX35_WDOG_BASE_ADDR)); 154 mxc_arch_reset_init(MX35_IO_ADDRESS(MX35_WDOG_BASE_ADDR));
137 imx_idle = imx3_idle; 155 imx_idle = imx3_idle;
156 imx_ioremap = imx3_ioremap;
138} 157}
139 158
140void __init mx31_init_irq(void) 159void __init mx31_init_irq(void)