aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-mx5
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-11-01 23:31:25 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-11-01 23:31:25 -0400
commit16ee792e45cf0c97ce061fce03c36cab5551ec72 (patch)
treedc68af705fbac4b5d71325aa972730199bb187dd /arch/arm/mach-mx5
parentf906fb1d70e016726fccfb0d978c5d425503db9d (diff)
parentefa62e1355f0495f37f1296754b8880947c8da72 (diff)
Merge branch 'next/devel' of git://git.linaro.org/people/arnd/arm-soc
* 'next/devel' of git://git.linaro.org/people/arnd/arm-soc: (50 commits) ARM: tegra: update defconfig arm/tegra: Harmony: Configure PMC for low-level interrupts arm/tegra: device tree support for ventana board arm/tegra: add support for ventana pinmuxing arm/tegra: prepare Seaboard pinmux code for derived boards arm/tegra: pinmux: ioremap registers gpio/tegra: Convert to a platform device arm/tegra: Convert pinmux driver to a platform device arm/dt: Tegra: Add pinmux node to tegra20.dtsi arm/tegra: Prep boards for gpio/pinmux conversion to pdevs ARM: mx5: fix clock usage for suspend ARM i.MX entry-macro.S: remove now unused code ARM i.MX boards: use CONFIG_MULTI_IRQ_HANDLER ARM i.MX tzic: add handle_irq function ARM i.MX avic: add handle_irq function ARM: mx25: Add the missing IIM base definition ARM i.MX avic: convert to use generic irq chip mx31moboard: Add poweroff support ARM: mach-qong: Add watchdog support ARM: davinci: AM18x: Add wl1271/wlan support ... Fix up conflicts in: arch/arm/mach-at91/at91sam9g45.c arch/arm/mach-mx5/devices-imx53.h arch/arm/plat-mxc/include/mach/memory.h
Diffstat (limited to 'arch/arm/mach-mx5')
-rw-r--r--arch/arm/mach-mx5/Kconfig18
-rw-r--r--arch/arm/mach-mx5/board-cpuimx51.c1
-rw-r--r--arch/arm/mach-mx5/board-cpuimx51sd.c1
-rw-r--r--arch/arm/mach-mx5/board-mx50_rdp.c1
-rw-r--r--arch/arm/mach-mx5/board-mx51_3ds.c1
-rw-r--r--arch/arm/mach-mx5/board-mx51_babbage.c1
-rw-r--r--arch/arm/mach-mx5/board-mx51_efikamx.c12
-rw-r--r--arch/arm/mach-mx5/board-mx51_efikasb.c19
-rw-r--r--arch/arm/mach-mx5/board-mx53_ard.c1
-rw-r--r--arch/arm/mach-mx5/board-mx53_evk.c1
-rw-r--r--arch/arm/mach-mx5/board-mx53_loco.c21
-rw-r--r--arch/arm/mach-mx5/board-mx53_smd.c1
-rw-r--r--arch/arm/mach-mx5/clock-mx51-mx53.c6
-rw-r--r--arch/arm/mach-mx5/cpu.c74
-rw-r--r--arch/arm/mach-mx5/devices-imx53.h1
-rw-r--r--arch/arm/mach-mx5/mx51_efika.c1
16 files changed, 81 insertions, 79 deletions
diff --git a/arch/arm/mach-mx5/Kconfig b/arch/arm/mach-mx5/Kconfig
index 5e42c73881a5..3d4c31306ca7 100644
--- a/arch/arm/mach-mx5/Kconfig
+++ b/arch/arm/mach-mx5/Kconfig
@@ -1,8 +1,9 @@
1if ARCH_MX503 || ARCH_MX51 1if ARCH_MX5
2
2# ARCH_MX5/50/53 are left to mark places where prevent multi-soc in single 3# ARCH_MX5/50/53 are left to mark places where prevent multi-soc in single
3# image. So for most time, SOC_IMX50/51/53 should be used. 4# image. So for most time, SOC_IMX50/51/53 should be used.
4 5
5config ARCH_MX5 6config ARCH_MX51
6 bool 7 bool
7 8
8config ARCH_MX50 9config ARCH_MX50
@@ -19,7 +20,6 @@ config SOC_IMX50
19 select ARCH_MXC_IOMUX_V3 20 select ARCH_MXC_IOMUX_V3
20 select ARCH_MXC_AUDMUX_V2 21 select ARCH_MXC_AUDMUX_V2
21 select ARCH_HAS_CPUFREQ 22 select ARCH_HAS_CPUFREQ
22 select ARCH_MX5
23 select ARCH_MX50 23 select ARCH_MX50
24 24
25config SOC_IMX51 25config SOC_IMX51
@@ -30,7 +30,7 @@ config SOC_IMX51
30 select ARCH_MXC_IOMUX_V3 30 select ARCH_MXC_IOMUX_V3
31 select ARCH_MXC_AUDMUX_V2 31 select ARCH_MXC_AUDMUX_V2
32 select ARCH_HAS_CPUFREQ 32 select ARCH_HAS_CPUFREQ
33 select ARCH_MX5 33 select ARCH_MX51
34 34
35config SOC_IMX53 35config SOC_IMX53
36 bool 36 bool
@@ -38,10 +38,8 @@ config SOC_IMX53
38 select ARM_L1_CACHE_SHIFT_6 38 select ARM_L1_CACHE_SHIFT_6
39 select MXC_TZIC 39 select MXC_TZIC
40 select ARCH_MXC_IOMUX_V3 40 select ARCH_MXC_IOMUX_V3
41 select ARCH_MX5
42 select ARCH_MX53 41 select ARCH_MX53
43 42
44if ARCH_MX50_SUPPORTED
45#comment "i.MX50 machines:" 43#comment "i.MX50 machines:"
46 44
47config MACH_MX50_RDP 45config MACH_MX50_RDP
@@ -56,9 +54,6 @@ config MACH_MX50_RDP
56 Include support for MX50 reference design platform (RDP) board. This 54 Include support for MX50 reference design platform (RDP) board. This
57 includes specific configurations for the board and its peripherals. 55 includes specific configurations for the board and its peripherals.
58 56
59endif # ARCH_MX50_SUPPORTED
60
61if ARCH_MX51
62comment "i.MX51 machines:" 57comment "i.MX51 machines:"
63 58
64config MACH_MX51_BABBAGE 59config MACH_MX51_BABBAGE
@@ -174,9 +169,6 @@ config MACH_MX51_EFIKASB
174 Include support for Genesi Efika Smartbook. This includes specific 169 Include support for Genesi Efika Smartbook. This includes specific
175 configurations for the board and its peripherals. 170 configurations for the board and its peripherals.
176 171
177endif # ARCH_MX51
178
179if ARCH_MX53_SUPPORTED
180comment "i.MX53 machines:" 172comment "i.MX53 machines:"
181 173
182config MACH_MX53_EVK 174config MACH_MX53_EVK
@@ -228,6 +220,4 @@ config MACH_MX53_ARD
228 Include support for MX53 ARD platform. This includes specific 220 Include support for MX53 ARD platform. This includes specific
229 configurations for the board and its peripherals. 221 configurations for the board and its peripherals.
230 222
231endif # ARCH_MX53_SUPPORTED
232
233endif 223endif
diff --git a/arch/arm/mach-mx5/board-cpuimx51.c b/arch/arm/mach-mx5/board-cpuimx51.c
index 190a6e73ec7b..1fc110348040 100644
--- a/arch/arm/mach-mx5/board-cpuimx51.c
+++ b/arch/arm/mach-mx5/board-cpuimx51.c
@@ -294,6 +294,7 @@ MACHINE_START(EUKREA_CPUIMX51, "Eukrea CPUIMX51 Module")
294 .map_io = mx51_map_io, 294 .map_io = mx51_map_io,
295 .init_early = imx51_init_early, 295 .init_early = imx51_init_early,
296 .init_irq = mx51_init_irq, 296 .init_irq = mx51_init_irq,
297 .handle_irq = imx51_handle_irq,
297 .timer = &mxc_timer, 298 .timer = &mxc_timer,
298 .init_machine = eukrea_cpuimx51_init, 299 .init_machine = eukrea_cpuimx51_init,
299MACHINE_END 300MACHINE_END
diff --git a/arch/arm/mach-mx5/board-cpuimx51sd.c b/arch/arm/mach-mx5/board-cpuimx51sd.c
index 72410d201f88..52a11c1898e6 100644
--- a/arch/arm/mach-mx5/board-cpuimx51sd.c
+++ b/arch/arm/mach-mx5/board-cpuimx51sd.c
@@ -332,6 +332,7 @@ MACHINE_START(EUKREA_CPUIMX51SD, "Eukrea CPUIMX51SD")
332 .map_io = mx51_map_io, 332 .map_io = mx51_map_io,
333 .init_early = imx51_init_early, 333 .init_early = imx51_init_early,
334 .init_irq = mx51_init_irq, 334 .init_irq = mx51_init_irq,
335 .handle_irq = imx51_handle_irq,
335 .timer = &mxc_timer, 336 .timer = &mxc_timer,
336 .init_machine = eukrea_cpuimx51sd_init, 337 .init_machine = eukrea_cpuimx51sd_init,
337MACHINE_END 338MACHINE_END
diff --git a/arch/arm/mach-mx5/board-mx50_rdp.c b/arch/arm/mach-mx5/board-mx50_rdp.c
index 7de25c6712eb..fc3621d90bde 100644
--- a/arch/arm/mach-mx5/board-mx50_rdp.c
+++ b/arch/arm/mach-mx5/board-mx50_rdp.c
@@ -219,6 +219,7 @@ MACHINE_START(MX50_RDP, "Freescale MX50 Reference Design Platform")
219 .map_io = mx50_map_io, 219 .map_io = mx50_map_io,
220 .init_early = imx50_init_early, 220 .init_early = imx50_init_early,
221 .init_irq = mx50_init_irq, 221 .init_irq = mx50_init_irq,
222 .handle_irq = imx50_handle_irq,
222 .timer = &mx50_rdp_timer, 223 .timer = &mx50_rdp_timer,
223 .init_machine = mx50_rdp_board_init, 224 .init_machine = mx50_rdp_board_init,
224MACHINE_END 225MACHINE_END
diff --git a/arch/arm/mach-mx5/board-mx51_3ds.c b/arch/arm/mach-mx5/board-mx51_3ds.c
index f988be7324fb..05783906db2b 100644
--- a/arch/arm/mach-mx5/board-mx51_3ds.c
+++ b/arch/arm/mach-mx5/board-mx51_3ds.c
@@ -172,6 +172,7 @@ MACHINE_START(MX51_3DS, "Freescale MX51 3-Stack Board")
172 .map_io = mx51_map_io, 172 .map_io = mx51_map_io,
173 .init_early = imx51_init_early, 173 .init_early = imx51_init_early,
174 .init_irq = mx51_init_irq, 174 .init_irq = mx51_init_irq,
175 .handle_irq = imx51_handle_irq,
175 .timer = &mx51_3ds_timer, 176 .timer = &mx51_3ds_timer,
176 .init_machine = mx51_3ds_init, 177 .init_machine = mx51_3ds_init,
177MACHINE_END 178MACHINE_END
diff --git a/arch/arm/mach-mx5/board-mx51_babbage.c b/arch/arm/mach-mx5/board-mx51_babbage.c
index 622b2de7d0e8..5993208a8f00 100644
--- a/arch/arm/mach-mx5/board-mx51_babbage.c
+++ b/arch/arm/mach-mx5/board-mx51_babbage.c
@@ -418,6 +418,7 @@ MACHINE_START(MX51_BABBAGE, "Freescale MX51 Babbage Board")
418 .map_io = mx51_map_io, 418 .map_io = mx51_map_io,
419 .init_early = imx51_init_early, 419 .init_early = imx51_init_early,
420 .init_irq = mx51_init_irq, 420 .init_irq = mx51_init_irq,
421 .handle_irq = imx51_handle_irq,
421 .timer = &mx51_babbage_timer, 422 .timer = &mx51_babbage_timer,
422 .init_machine = mx51_babbage_init, 423 .init_machine = mx51_babbage_init,
423MACHINE_END 424MACHINE_END
diff --git a/arch/arm/mach-mx5/board-mx51_efikamx.c b/arch/arm/mach-mx5/board-mx51_efikamx.c
index d231b3e1e522..a9e48662cf75 100644
--- a/arch/arm/mach-mx5/board-mx51_efikamx.c
+++ b/arch/arm/mach-mx5/board-mx51_efikamx.c
@@ -161,6 +161,11 @@ static const struct gpio_led_platform_data
161 .num_leds = ARRAY_SIZE(mx51_efikamx_leds), 161 .num_leds = ARRAY_SIZE(mx51_efikamx_leds),
162}; 162};
163 163
164static struct esdhc_platform_data sd_pdata = {
165 .cd_type = ESDHC_CD_CONTROLLER,
166 .wp_type = ESDHC_WP_CONTROLLER,
167};
168
164static struct gpio_keys_button mx51_efikamx_powerkey[] = { 169static struct gpio_keys_button mx51_efikamx_powerkey[] = {
165 { 170 {
166 .code = KEY_POWER, 171 .code = KEY_POWER,
@@ -237,9 +242,11 @@ static void __init mx51_efikamx_init(void)
237 242
238 /* on < 1.2 boards both SD controllers are used */ 243 /* on < 1.2 boards both SD controllers are used */
239 if (system_rev < 0x12) { 244 if (system_rev < 0x12) {
240 imx51_add_sdhci_esdhc_imx(1, NULL); 245 imx51_add_sdhci_esdhc_imx(0, NULL);
246 imx51_add_sdhci_esdhc_imx(1, &sd_pdata);
241 mx51_efikamx_leds[2].default_trigger = "mmc1"; 247 mx51_efikamx_leds[2].default_trigger = "mmc1";
242 } 248 } else
249 imx51_add_sdhci_esdhc_imx(0, &sd_pdata);
243 250
244 gpio_led_register_device(-1, &mx51_efikamx_leds_data); 251 gpio_led_register_device(-1, &mx51_efikamx_leds_data);
245 imx_add_gpio_keys(&mx51_efikamx_powerkey_data); 252 imx_add_gpio_keys(&mx51_efikamx_powerkey_data);
@@ -282,6 +289,7 @@ MACHINE_START(MX51_EFIKAMX, "Genesi EfikaMX nettop")
282 .map_io = mx51_map_io, 289 .map_io = mx51_map_io,
283 .init_early = imx51_init_early, 290 .init_early = imx51_init_early,
284 .init_irq = mx51_init_irq, 291 .init_irq = mx51_init_irq,
292 .handle_irq = imx51_handle_irq,
285 .timer = &mx51_efikamx_timer, 293 .timer = &mx51_efikamx_timer,
286 .init_machine = mx51_efikamx_init, 294 .init_machine = mx51_efikamx_init,
287MACHINE_END 295MACHINE_END
diff --git a/arch/arm/mach-mx5/board-mx51_efikasb.c b/arch/arm/mach-mx5/board-mx51_efikasb.c
index d4e98f0e33f5..38c4a3e28d3c 100644
--- a/arch/arm/mach-mx5/board-mx51_efikasb.c
+++ b/arch/arm/mach-mx5/board-mx51_efikasb.c
@@ -54,6 +54,7 @@
54#define EFIKASB_RFKILL IMX_GPIO_NR(3, 1) 54#define EFIKASB_RFKILL IMX_GPIO_NR(3, 1)
55 55
56#define MX51_PAD_PWRKEY IOMUX_PAD(0x48c, 0x0f8, 1, 0x0, 0, PAD_CTL_PUS_100K_UP | PAD_CTL_PKE) 56#define MX51_PAD_PWRKEY IOMUX_PAD(0x48c, 0x0f8, 1, 0x0, 0, PAD_CTL_PUS_100K_UP | PAD_CTL_PKE)
57#define MX51_PAD_SD1_CD IOMUX_PAD(0x47c, 0x0e8, 1, __NA_, 0, MX51_ESDHC_PAD_CTRL)
57 58
58static iomux_v3_cfg_t mx51efikasb_pads[] = { 59static iomux_v3_cfg_t mx51efikasb_pads[] = {
59 /* USB HOST2 */ 60 /* USB HOST2 */
@@ -95,6 +96,8 @@ static iomux_v3_cfg_t mx51efikasb_pads[] = {
95 96
96 /* BT */ 97 /* BT */
97 MX51_PAD_EIM_A17__GPIO2_11, 98 MX51_PAD_EIM_A17__GPIO2_11,
99
100 MX51_PAD_SD1_CD,
98}; 101};
99 102
100static int initialize_usbh2_port(struct platform_device *pdev) 103static int initialize_usbh2_port(struct platform_device *pdev)
@@ -180,6 +183,18 @@ static const struct gpio_keys_platform_data mx51_efikasb_keys_data __initconst =
180 .nbuttons = ARRAY_SIZE(mx51_efikasb_keys), 183 .nbuttons = ARRAY_SIZE(mx51_efikasb_keys),
181}; 184};
182 185
186static struct esdhc_platform_data sd0_pdata = {
187#define EFIKASB_SD1_CD IMX_GPIO_NR(2, 27)
188 .cd_gpio = EFIKASB_SD1_CD,
189 .cd_type = ESDHC_CD_GPIO,
190 .wp_type = ESDHC_WP_CONTROLLER,
191};
192
193static struct esdhc_platform_data sd1_pdata = {
194 .cd_type = ESDHC_CD_CONTROLLER,
195 .wp_type = ESDHC_WP_CONTROLLER,
196};
197
183static struct regulator *pwgt1, *pwgt2; 198static struct regulator *pwgt1, *pwgt2;
184 199
185static void mx51_efikasb_power_off(void) 200static void mx51_efikasb_power_off(void)
@@ -248,7 +263,8 @@ static void __init efikasb_board_init(void)
248 263
249 mx51_efikasb_board_id(); 264 mx51_efikasb_board_id();
250 mx51_efikasb_usb(); 265 mx51_efikasb_usb();
251 imx51_add_sdhci_esdhc_imx(1, NULL); 266 imx51_add_sdhci_esdhc_imx(0, &sd0_pdata);
267 imx51_add_sdhci_esdhc_imx(1, &sd1_pdata);
252 268
253 gpio_led_register_device(-1, &mx51_efikasb_leds_data); 269 gpio_led_register_device(-1, &mx51_efikasb_leds_data);
254 imx_add_gpio_keys(&mx51_efikasb_keys_data); 270 imx_add_gpio_keys(&mx51_efikasb_keys_data);
@@ -268,6 +284,7 @@ MACHINE_START(MX51_EFIKASB, "Genesi Efika Smartbook")
268 .map_io = mx51_map_io, 284 .map_io = mx51_map_io,
269 .init_early = imx51_init_early, 285 .init_early = imx51_init_early,
270 .init_irq = mx51_init_irq, 286 .init_irq = mx51_init_irq,
287 .handle_irq = imx51_handle_irq,
271 .init_machine = efikasb_board_init, 288 .init_machine = efikasb_board_init,
272 .timer = &mx51_efikasb_timer, 289 .timer = &mx51_efikasb_timer,
273MACHINE_END 290MACHINE_END
diff --git a/arch/arm/mach-mx5/board-mx53_ard.c b/arch/arm/mach-mx5/board-mx53_ard.c
index 9d844f102382..614edcb0aa7e 100644
--- a/arch/arm/mach-mx5/board-mx53_ard.c
+++ b/arch/arm/mach-mx5/board-mx53_ard.c
@@ -250,6 +250,7 @@ MACHINE_START(MX53_ARD, "Freescale MX53 ARD Board")
250 .map_io = mx53_map_io, 250 .map_io = mx53_map_io,
251 .init_early = imx53_init_early, 251 .init_early = imx53_init_early,
252 .init_irq = mx53_init_irq, 252 .init_irq = mx53_init_irq,
253 .handle_irq = imx53_handle_irq,
253 .timer = &mx53_ard_timer, 254 .timer = &mx53_ard_timer,
254 .init_machine = mx53_ard_board_init, 255 .init_machine = mx53_ard_board_init,
255MACHINE_END 256MACHINE_END
diff --git a/arch/arm/mach-mx5/board-mx53_evk.c b/arch/arm/mach-mx5/board-mx53_evk.c
index 1b417b06b736..6a3e6168e322 100644
--- a/arch/arm/mach-mx5/board-mx53_evk.c
+++ b/arch/arm/mach-mx5/board-mx53_evk.c
@@ -167,6 +167,7 @@ MACHINE_START(MX53_EVK, "Freescale MX53 EVK Board")
167 .map_io = mx53_map_io, 167 .map_io = mx53_map_io,
168 .init_early = imx53_init_early, 168 .init_early = imx53_init_early,
169 .init_irq = mx53_init_irq, 169 .init_irq = mx53_init_irq,
170 .handle_irq = imx53_handle_irq,
170 .timer = &mx53_evk_timer, 171 .timer = &mx53_evk_timer,
171 .init_machine = mx53_evk_board_init, 172 .init_machine = mx53_evk_board_init,
172MACHINE_END 173MACHINE_END
diff --git a/arch/arm/mach-mx5/board-mx53_loco.c b/arch/arm/mach-mx5/board-mx53_loco.c
index 940aac932fa3..0af2766f8610 100644
--- a/arch/arm/mach-mx5/board-mx53_loco.c
+++ b/arch/arm/mach-mx5/board-mx53_loco.c
@@ -22,6 +22,7 @@
22#include <linux/clk.h> 22#include <linux/clk.h>
23#include <linux/delay.h> 23#include <linux/delay.h>
24#include <linux/gpio.h> 24#include <linux/gpio.h>
25#include <linux/i2c.h>
25 26
26#include <mach/common.h> 27#include <mach/common.h>
27#include <mach/hardware.h> 28#include <mach/hardware.h>
@@ -42,6 +43,7 @@
42#define LOCO_SD3_CD IMX_GPIO_NR(3, 11) 43#define LOCO_SD3_CD IMX_GPIO_NR(3, 11)
43#define LOCO_SD3_WP IMX_GPIO_NR(3, 12) 44#define LOCO_SD3_WP IMX_GPIO_NR(3, 12)
44#define LOCO_SD1_CD IMX_GPIO_NR(3, 13) 45#define LOCO_SD1_CD IMX_GPIO_NR(3, 13)
46#define LOCO_ACCEL_EN IMX_GPIO_NR(6, 14)
45 47
46static iomux_v3_cfg_t mx53_loco_pads[] = { 48static iomux_v3_cfg_t mx53_loco_pads[] = {
47 /* FEC */ 49 /* FEC */
@@ -64,6 +66,10 @@ static iomux_v3_cfg_t mx53_loco_pads[] = {
64 MX53_PAD_KEY_ROW0__AUDMUX_AUD5_TXD, 66 MX53_PAD_KEY_ROW0__AUDMUX_AUD5_TXD,
65 MX53_PAD_KEY_COL1__AUDMUX_AUD5_TXFS, 67 MX53_PAD_KEY_COL1__AUDMUX_AUD5_TXFS,
66 MX53_PAD_KEY_ROW1__AUDMUX_AUD5_RXD, 68 MX53_PAD_KEY_ROW1__AUDMUX_AUD5_RXD,
69 /* I2C1 */
70 MX53_PAD_CSI0_DAT8__I2C1_SDA,
71 MX53_PAD_CSI0_DAT9__I2C1_SCL,
72 MX53_PAD_NANDF_CS1__GPIO6_14, /* Accelerometer Enable */
67 /* I2C2 */ 73 /* I2C2 */
68 MX53_PAD_KEY_COL3__I2C2_SCL, 74 MX53_PAD_KEY_COL3__I2C2_SCL,
69 MX53_PAD_KEY_ROW3__I2C2_SDA, 75 MX53_PAD_KEY_ROW3__I2C2_SDA,
@@ -257,8 +263,15 @@ static const struct gpio_led_platform_data mx53loco_leds_data __initconst = {
257 .num_leds = ARRAY_SIZE(mx53loco_leds), 263 .num_leds = ARRAY_SIZE(mx53loco_leds),
258}; 264};
259 265
266static struct i2c_board_info mx53loco_i2c_devices[] = {
267 {
268 I2C_BOARD_INFO("mma8450", 0x1C),
269 },
270};
271
260static void __init mx53_loco_board_init(void) 272static void __init mx53_loco_board_init(void)
261{ 273{
274 int ret;
262 imx53_soc_init(); 275 imx53_soc_init();
263 276
264 mxc_iomux_v3_setup_multiple_pads(mx53_loco_pads, 277 mxc_iomux_v3_setup_multiple_pads(mx53_loco_pads,
@@ -267,6 +280,13 @@ static void __init mx53_loco_board_init(void)
267 mx53_loco_fec_reset(); 280 mx53_loco_fec_reset();
268 imx53_add_fec(&mx53_loco_fec_data); 281 imx53_add_fec(&mx53_loco_fec_data);
269 imx53_add_imx2_wdt(0, NULL); 282 imx53_add_imx2_wdt(0, NULL);
283
284 ret = gpio_request_one(LOCO_ACCEL_EN, GPIOF_OUT_INIT_HIGH, "accel_en");
285 if (ret)
286 pr_err("Cannot request ACCEL_EN pin: %d\n", ret);
287
288 i2c_register_board_info(0, mx53loco_i2c_devices,
289 ARRAY_SIZE(mx53loco_i2c_devices));
270 imx53_add_imx_i2c(0, &mx53_loco_i2c_data); 290 imx53_add_imx_i2c(0, &mx53_loco_i2c_data);
271 imx53_add_imx_i2c(1, &mx53_loco_i2c_data); 291 imx53_add_imx_i2c(1, &mx53_loco_i2c_data);
272 imx53_add_sdhci_esdhc_imx(0, &mx53_loco_sd1_data); 292 imx53_add_sdhci_esdhc_imx(0, &mx53_loco_sd1_data);
@@ -289,6 +309,7 @@ MACHINE_START(MX53_LOCO, "Freescale MX53 LOCO Board")
289 .map_io = mx53_map_io, 309 .map_io = mx53_map_io,
290 .init_early = imx53_init_early, 310 .init_early = imx53_init_early,
291 .init_irq = mx53_init_irq, 311 .init_irq = mx53_init_irq,
312 .handle_irq = imx53_handle_irq,
292 .timer = &mx53_loco_timer, 313 .timer = &mx53_loco_timer,
293 .init_machine = mx53_loco_board_init, 314 .init_machine = mx53_loco_board_init,
294MACHINE_END 315MACHINE_END
diff --git a/arch/arm/mach-mx5/board-mx53_smd.c b/arch/arm/mach-mx5/board-mx53_smd.c
index efcab68840ae..d12fd3043ba6 100644
--- a/arch/arm/mach-mx5/board-mx53_smd.c
+++ b/arch/arm/mach-mx5/board-mx53_smd.c
@@ -156,6 +156,7 @@ MACHINE_START(MX53_SMD, "Freescale MX53 SMD Board")
156 .map_io = mx53_map_io, 156 .map_io = mx53_map_io,
157 .init_early = imx53_init_early, 157 .init_early = imx53_init_early,
158 .init_irq = mx53_init_irq, 158 .init_irq = mx53_init_irq,
159 .handle_irq = imx53_handle_irq,
159 .timer = &mx53_smd_timer, 160 .timer = &mx53_smd_timer,
160 .init_machine = mx53_smd_board_init, 161 .init_machine = mx53_smd_board_init,
161MACHINE_END 162MACHINE_END
diff --git a/arch/arm/mach-mx5/clock-mx51-mx53.c b/arch/arm/mach-mx5/clock-mx51-mx53.c
index c2dafe406304..b94879e8679f 100644
--- a/arch/arm/mach-mx5/clock-mx51-mx53.c
+++ b/arch/arm/mach-mx5/clock-mx51-mx53.c
@@ -1573,9 +1573,8 @@ int __init mx51_clocks_init(unsigned long ckil, unsigned long osc,
1573 clk_enable(&main_bus_clk); 1573 clk_enable(&main_bus_clk);
1574 1574
1575 clk_enable(&iim_clk); 1575 clk_enable(&iim_clk);
1576 mx51_revision(); 1576 imx_print_silicon_rev("i.MX51", mx51_revision());
1577 clk_disable(&iim_clk); 1577 clk_disable(&iim_clk);
1578 mx51_display_revision();
1579 1578
1580 /* move usb_phy_clk to 24MHz */ 1579 /* move usb_phy_clk to 24MHz */
1581 clk_set_parent(&usb_phy1_clk, &osc_clk); 1580 clk_set_parent(&usb_phy1_clk, &osc_clk);
@@ -1617,9 +1616,8 @@ int __init mx53_clocks_init(unsigned long ckil, unsigned long osc,
1617 clk_enable(&main_bus_clk); 1616 clk_enable(&main_bus_clk);
1618 1617
1619 clk_enable(&iim_clk); 1618 clk_enable(&iim_clk);
1620 mx53_revision(); 1619 imx_print_silicon_rev("i.MX53", mx53_revision());
1621 clk_disable(&iim_clk); 1620 clk_disable(&iim_clk);
1622 mx53_display_revision();
1623 1621
1624 /* Set SDHC parents to be PLL2 */ 1622 /* Set SDHC parents to be PLL2 */
1625 clk_set_parent(&esdhc1_clk, &pll2_sw_clk); 1623 clk_set_parent(&esdhc1_clk, &pll2_sw_clk);
diff --git a/arch/arm/mach-mx5/cpu.c b/arch/arm/mach-mx5/cpu.c
index 86f87da59c64..5c5328257dca 100644
--- a/arch/arm/mach-mx5/cpu.c
+++ b/arch/arm/mach-mx5/cpu.c
@@ -18,7 +18,7 @@
18#include <mach/hardware.h> 18#include <mach/hardware.h>
19#include <asm/io.h> 19#include <asm/io.h>
20 20
21static int cpu_silicon_rev = -1; 21static int mx5_cpu_rev = -1;
22 22
23#define IIM_SREV 0x24 23#define IIM_SREV 0x24
24#define MX50_HW_ADADIG_DIGPROG 0xB0 24#define MX50_HW_ADADIG_DIGPROG 0xB0
@@ -28,11 +28,14 @@ static int get_mx51_srev(void)
28 void __iomem *iim_base = MX51_IO_ADDRESS(MX51_IIM_BASE_ADDR); 28 void __iomem *iim_base = MX51_IO_ADDRESS(MX51_IIM_BASE_ADDR);
29 u32 rev = readl(iim_base + IIM_SREV) & 0xff; 29 u32 rev = readl(iim_base + IIM_SREV) & 0xff;
30 30
31 if (rev == 0x0) 31 switch (rev) {
32 case 0x0:
32 return IMX_CHIP_REVISION_2_0; 33 return IMX_CHIP_REVISION_2_0;
33 else if (rev == 0x10) 34 case 0x10:
34 return IMX_CHIP_REVISION_3_0; 35 return IMX_CHIP_REVISION_3_0;
35 return 0; 36 default:
37 return IMX_CHIP_REVISION_UNKNOWN;
38 }
36} 39}
37 40
38/* 41/*
@@ -45,33 +48,13 @@ int mx51_revision(void)
45 if (!cpu_is_mx51()) 48 if (!cpu_is_mx51())
46 return -EINVAL; 49 return -EINVAL;
47 50
48 if (cpu_silicon_rev == -1) 51 if (mx5_cpu_rev == -1)
49 cpu_silicon_rev = get_mx51_srev(); 52 mx5_cpu_rev = get_mx51_srev();
50 53
51 return cpu_silicon_rev; 54 return mx5_cpu_rev;
52} 55}
53EXPORT_SYMBOL(mx51_revision); 56EXPORT_SYMBOL(mx51_revision);
54 57
55void mx51_display_revision(void)
56{
57 int rev;
58 char *srev;
59 rev = mx51_revision();
60
61 switch (rev) {
62 case IMX_CHIP_REVISION_2_0:
63 srev = IMX_CHIP_REVISION_2_0_STRING;
64 break;
65 case IMX_CHIP_REVISION_3_0:
66 srev = IMX_CHIP_REVISION_3_0_STRING;
67 break;
68 default:
69 srev = IMX_CHIP_REVISION_UNKNOWN_STRING;
70 }
71 printk(KERN_INFO "CPU identified as i.MX51, silicon rev %s\n", srev);
72}
73EXPORT_SYMBOL(mx51_display_revision);
74
75#ifdef CONFIG_NEON 58#ifdef CONFIG_NEON
76 59
77/* 60/*
@@ -121,10 +104,10 @@ int mx53_revision(void)
121 if (!cpu_is_mx53()) 104 if (!cpu_is_mx53())
122 return -EINVAL; 105 return -EINVAL;
123 106
124 if (cpu_silicon_rev == -1) 107 if (mx5_cpu_rev == -1)
125 cpu_silicon_rev = get_mx53_srev(); 108 mx5_cpu_rev = get_mx53_srev();
126 109
127 return cpu_silicon_rev; 110 return mx5_cpu_rev;
128} 111}
129EXPORT_SYMBOL(mx53_revision); 112EXPORT_SYMBOL(mx53_revision);
130 113
@@ -134,7 +117,7 @@ static int get_mx50_srev(void)
134 u32 rev; 117 u32 rev;
135 118
136 if (!anatop) { 119 if (!anatop) {
137 cpu_silicon_rev = -EINVAL; 120 mx5_cpu_rev = -EINVAL;
138 return 0; 121 return 0;
139 } 122 }
140 123
@@ -159,36 +142,13 @@ int mx50_revision(void)
159 if (!cpu_is_mx50()) 142 if (!cpu_is_mx50())
160 return -EINVAL; 143 return -EINVAL;
161 144
162 if (cpu_silicon_rev == -1) 145 if (mx5_cpu_rev == -1)
163 cpu_silicon_rev = get_mx50_srev(); 146 mx5_cpu_rev = get_mx50_srev();
164 147
165 return cpu_silicon_rev; 148 return mx5_cpu_rev;
166} 149}
167EXPORT_SYMBOL(mx50_revision); 150EXPORT_SYMBOL(mx50_revision);
168 151
169void mx53_display_revision(void)
170{
171 int rev;
172 char *srev;
173 rev = mx53_revision();
174
175 switch (rev) {
176 case IMX_CHIP_REVISION_1_0:
177 srev = IMX_CHIP_REVISION_1_0_STRING;
178 break;
179 case IMX_CHIP_REVISION_2_0:
180 srev = IMX_CHIP_REVISION_2_0_STRING;
181 break;
182 case IMX_CHIP_REVISION_2_1:
183 srev = IMX_CHIP_REVISION_2_1_STRING;
184 break;
185 default:
186 srev = IMX_CHIP_REVISION_UNKNOWN_STRING;
187 }
188 printk(KERN_INFO "CPU identified as i.MX53, silicon rev %s\n", srev);
189}
190EXPORT_SYMBOL(mx53_display_revision);
191
192static int __init post_cpu_init(void) 152static int __init post_cpu_init(void)
193{ 153{
194 unsigned int reg; 154 unsigned int reg;
diff --git a/arch/arm/mach-mx5/devices-imx53.h b/arch/arm/mach-mx5/devices-imx53.h
index 7fe5e462fdca..6e1e5d1f8c3a 100644
--- a/arch/arm/mach-mx5/devices-imx53.h
+++ b/arch/arm/mach-mx5/devices-imx53.h
@@ -44,4 +44,5 @@ extern const struct imx_imx_keypad_data imx53_imx_keypad_data;
44extern const struct imx_pata_imx_data imx53_pata_imx_data; 44extern const struct imx_pata_imx_data imx53_pata_imx_data;
45#define imx53_add_pata_imx() \ 45#define imx53_add_pata_imx() \
46 imx_add_pata_imx(&imx53_pata_imx_data) 46 imx_add_pata_imx(&imx53_pata_imx_data)
47
47extern struct platform_device *__init imx53_add_ahci_imx(void); 48extern struct platform_device *__init imx53_add_ahci_imx(void);
diff --git a/arch/arm/mach-mx5/mx51_efika.c b/arch/arm/mach-mx5/mx51_efika.c
index 83c57027de75..b004e178417d 100644
--- a/arch/arm/mach-mx5/mx51_efika.c
+++ b/arch/arm/mach-mx5/mx51_efika.c
@@ -607,7 +607,6 @@ void __init efika_board_common_init(void)
607 ARRAY_SIZE(mx51efika_pads)); 607 ARRAY_SIZE(mx51efika_pads));
608 imx51_add_imx_uart(0, &uart_pdata); 608 imx51_add_imx_uart(0, &uart_pdata);
609 mx51_efika_usb(); 609 mx51_efika_usb();
610 imx51_add_sdhci_esdhc_imx(0, NULL);
611 610
612 /* FIXME: comes from original code. check this. */ 611 /* FIXME: comes from original code. check this. */
613 if (mx51_revision() < IMX_CHIP_REVISION_2_0) 612 if (mx51_revision() < IMX_CHIP_REVISION_2_0)