diff options
author | Shawn Guo <shawn.guo@linaro.org> | 2011-09-28 05:16:07 -0400 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2011-10-04 04:55:12 -0400 |
commit | f548897ffc0510885af27e22a11f449fe5e0cbbd (patch) | |
tree | 0fdf27f5466df384626741edaf6f36bfc3a0d46a /arch/arm/mach-imx/mm-imx3.c | |
parent | 41e7daf27a321848adcfcea9764ac8665133f3ea (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/mm-imx3.c')
-rw-r--r-- | arch/arm/mach-imx/mm-imx3.c | 19 |
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 | ||
61 | static 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 | |||
61 | void imx3_init_l2x0(void) | 78 | void 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 | ||
132 | void __init imx35_init_early(void) | 150 | void __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 | ||
140 | void __init mx31_init_irq(void) | 159 | void __init mx31_init_irq(void) |