aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-imx
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2016-09-21 16:34:46 -0400
committerArnd Bergmann <arnd@arndb.de>2016-09-21 16:34:46 -0400
commitb315dac3e877bd75af601e41946f1e8c3f2542da (patch)
tree533100e83cbdf2f18f85c35924110496f81407c1 /arch/arm/mach-imx
parentd6fbd37bc1468de4190da35ab7f4495f0ad9315b (diff)
parent23fe1fd01c1e065907fdcd5cbfd35c02e5a418a2 (diff)
Merge tag 'imx-legacy-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into next/soc
Pull "i.MX legacy board file changes for 4.9" from Shawn Guo: It includes a patch series that moves registrations and initializations of all peripherals which are GPIO line consumers for all legacy boards from .init_machine to .init_late init level. This is needed to proactively prevent boot time issues on the legacy boards due to the deprioritized init level of the GPIO controller driver (set lower than IOMUX controller driver init level), which is shared among all i.MX SoCs. * tag 'imx-legacy-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux: ARM: imx legacy: pca100: move peripheral initialization to .init_late ARM: imx legacy: mx27ads: move peripheral initialization to .init_late ARM: imx legacy: mx21ads: move peripheral initialization to .init_late ARM: imx legacy: pcm043: move peripheral initialization to .init_late ARM: imx legacy: mx35-3ds: move peripheral initialization to .init_late ARM: imx legacy: mx27-3ds: move peripheral initialization to .init_late ARM: imx legacy: imx27-visstrim-m10: move peripheral initialization to .init_late ARM: imx legacy: vpr200: move peripheral initialization to .init_late ARM: imx legacy: mx31moboard: move peripheral initialization to .init_late ARM: imx legacy: armadillo5x0: move peripheral initialization to .init_late ARM: imx legacy: qong: move peripheral initialization to .init_late ARM: imx legacy: mx31-3ds: move peripheral initialization to .init_late ARM: imx legacy: pcm037: move peripheral initialization to .init_late ARM: imx legacy: mx31lilly: move peripheral initialization to .init_late ARM: imx legacy: mx31ads: move peripheral initialization to .init_late ARM: imx legacy: mx31lite: move peripheral initialization to .init_late ARM: imx legacy: kzm: move peripheral initialization to .init_late
Diffstat (limited to 'arch/arm/mach-imx')
-rw-r--r--arch/arm/mach-imx/mach-armadillo5x0.c39
-rw-r--r--arch/arm/mach-imx/mach-imx27_visstrim_m10.c24
-rw-r--r--arch/arm/mach-imx/mach-kzm_arm11_01.c9
-rw-r--r--arch/arm/mach-imx/mach-mx21ads.c13
-rw-r--r--arch/arm/mach-imx/mach-mx27_3ds.c30
-rw-r--r--arch/arm/mach-imx/mach-mx27ads.c13
-rw-r--r--arch/arm/mach-imx/mach-mx31_3ds.c39
-rw-r--r--arch/arm/mach-imx/mach-mx31ads.c18
-rw-r--r--arch/arm/mach-imx/mach-mx31lilly.c50
-rw-r--r--arch/arm/mach-imx/mach-mx31lite.c68
-rw-r--r--arch/arm/mach-imx/mach-mx31moboard.c23
-rw-r--r--arch/arm/mach-imx/mach-mx35_3ds.c15
-rw-r--r--arch/arm/mach-imx/mach-pca100.c26
-rw-r--r--arch/arm/mach-imx/mach-pcm037.c67
-rw-r--r--arch/arm/mach-imx/mach-pcm043.c10
-rw-r--r--arch/arm/mach-imx/mach-qong.c2
-rw-r--r--arch/arm/mach-imx/mach-vpr200.c29
-rw-r--r--arch/arm/mach-imx/mx31lilly-db.c20
-rw-r--r--arch/arm/mach-imx/mx31lite-db.c33
19 files changed, 301 insertions, 227 deletions
diff --git a/arch/arm/mach-imx/mach-armadillo5x0.c b/arch/arm/mach-imx/mach-armadillo5x0.c
index eaee47a2fcc0..17a97ba2cecf 100644
--- a/arch/arm/mach-imx/mach-armadillo5x0.c
+++ b/arch/arm/mach-imx/mach-armadillo5x0.c
@@ -493,24 +493,12 @@ static void __init armadillo5x0_init(void)
493 493
494 regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies)); 494 regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
495 495
496 armadillo5x0_smc911x_resources[1].start =
497 gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
498 armadillo5x0_smc911x_resources[1].end =
499 gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
500 platform_add_devices(devices, ARRAY_SIZE(devices));
501 imx_add_gpio_keys(&armadillo5x0_button_data);
502 imx31_add_imx_i2c1(NULL); 496 imx31_add_imx_i2c1(NULL);
503 497
504 /* Register UART */ 498 /* Register UART */
505 imx31_add_imx_uart0(&uart_pdata); 499 imx31_add_imx_uart0(&uart_pdata);
506 imx31_add_imx_uart1(&uart_pdata); 500 imx31_add_imx_uart1(&uart_pdata);
507 501
508 /* SMSC9118 IRQ pin */
509 gpio_direction_input(MX31_PIN_GPIO1_0);
510
511 /* Register SDHC */
512 imx31_add_mxc_mmc(0, &sdhc_pdata);
513
514 /* Register FB */ 502 /* Register FB */
515 imx31_add_ipu_core(); 503 imx31_add_ipu_core();
516 imx31_add_mx3_sdc_fb(&mx3fb_pdata); 504 imx31_add_mx3_sdc_fb(&mx3fb_pdata);
@@ -527,21 +515,39 @@ static void __init armadillo5x0_init(void)
527 /* set NAND page size to 2k if not configured via boot mode pins */ 515 /* set NAND page size to 2k if not configured via boot mode pins */
528 imx_writel(imx_readl(mx3_ccm_base + MXC_CCM_RCSR) | (1 << 30), 516 imx_writel(imx_readl(mx3_ccm_base + MXC_CCM_RCSR) | (1 << 30),
529 mx3_ccm_base + MXC_CCM_RCSR); 517 mx3_ccm_base + MXC_CCM_RCSR);
518}
519
520static void __init armadillo5x0_late(void)
521{
522 armadillo5x0_smc911x_resources[1].start =
523 gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
524 armadillo5x0_smc911x_resources[1].end =
525 gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
526 platform_add_devices(devices, ARRAY_SIZE(devices));
527
528 imx_add_gpio_keys(&armadillo5x0_button_data);
529
530 /* SMSC9118 IRQ pin */
531 gpio_direction_input(MX31_PIN_GPIO1_0);
532
533 /* Register SDHC */
534 imx31_add_mxc_mmc(0, &sdhc_pdata);
530 535
531 /* RTC */ 536 /* RTC */
532 /* Get RTC IRQ and register the chip */ 537 /* Get RTC IRQ and register the chip */
533 if (gpio_request(ARMADILLO5X0_RTC_GPIO, "rtc") == 0) { 538 if (!gpio_request(ARMADILLO5X0_RTC_GPIO, "rtc")) {
534 if (gpio_direction_input(ARMADILLO5X0_RTC_GPIO) == 0) 539 if (!gpio_direction_input(ARMADILLO5X0_RTC_GPIO))
535 armadillo5x0_i2c_rtc.irq = gpio_to_irq(ARMADILLO5X0_RTC_GPIO); 540 armadillo5x0_i2c_rtc.irq =
541 gpio_to_irq(ARMADILLO5X0_RTC_GPIO);
536 else 542 else
537 gpio_free(ARMADILLO5X0_RTC_GPIO); 543 gpio_free(ARMADILLO5X0_RTC_GPIO);
538 } 544 }
545
539 if (armadillo5x0_i2c_rtc.irq == 0) 546 if (armadillo5x0_i2c_rtc.irq == 0)
540 pr_warn("armadillo5x0_init: failed to get RTC IRQ\n"); 547 pr_warn("armadillo5x0_init: failed to get RTC IRQ\n");
541 i2c_register_board_info(1, &armadillo5x0_i2c_rtc, 1); 548 i2c_register_board_info(1, &armadillo5x0_i2c_rtc, 1);
542 549
543 /* USB */ 550 /* USB */
544
545 usbotg_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS | 551 usbotg_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS |
546 ULPI_OTG_DRVVBUS_EXT); 552 ULPI_OTG_DRVVBUS_EXT);
547 if (usbotg_pdata.otg) 553 if (usbotg_pdata.otg)
@@ -565,5 +571,6 @@ MACHINE_START(ARMADILLO5X0, "Armadillo-500")
565 .init_irq = mx31_init_irq, 571 .init_irq = mx31_init_irq,
566 .init_time = armadillo5x0_timer_init, 572 .init_time = armadillo5x0_timer_init,
567 .init_machine = armadillo5x0_init, 573 .init_machine = armadillo5x0_init,
574 .init_late = armadillo5x0_late,
568 .restart = mxc_restart, 575 .restart = mxc_restart,
569MACHINE_END 576MACHINE_END
diff --git a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
index ede2bdbb5dd5..dd75a4756761 100644
--- a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
+++ b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
@@ -540,7 +540,6 @@ static void __init visstrim_m10_revision(void)
540static void __init visstrim_m10_board_init(void) 540static void __init visstrim_m10_board_init(void)
541{ 541{
542 int ret; 542 int ret;
543 int mo_version;
544 543
545 imx27_soc_init(); 544 imx27_soc_init();
546 visstrim_m10_revision(); 545 visstrim_m10_revision();
@@ -550,11 +549,6 @@ static void __init visstrim_m10_board_init(void)
550 if (ret) 549 if (ret)
551 pr_err("Failed to setup pins (%d)\n", ret); 550 pr_err("Failed to setup pins (%d)\n", ret);
552 551
553 ret = gpio_request_array(visstrim_m10_gpios,
554 ARRAY_SIZE(visstrim_m10_gpios));
555 if (ret)
556 pr_err("Failed to request gpios (%d)\n", ret);
557
558 imx27_add_imx_ssi(0, &visstrim_m10_ssi_pdata); 552 imx27_add_imx_ssi(0, &visstrim_m10_ssi_pdata);
559 imx27_add_imx_uart0(&uart_pdata); 553 imx27_add_imx_uart0(&uart_pdata);
560 554
@@ -566,12 +560,26 @@ static void __init visstrim_m10_board_init(void)
566 imx27_add_mxc_mmc(0, &visstrim_m10_sdhc_pdata); 560 imx27_add_mxc_mmc(0, &visstrim_m10_sdhc_pdata);
567 imx27_add_mxc_ehci_otg(&visstrim_m10_usbotg_pdata); 561 imx27_add_mxc_ehci_otg(&visstrim_m10_usbotg_pdata);
568 imx27_add_fec(NULL); 562 imx27_add_fec(NULL);
569 imx_add_gpio_keys(&visstrim_gpio_keys_platform_data); 563
570 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); 564 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
565}
566
567static void __init visstrim_m10_late_init(void)
568{
569 int mo_version, ret;
570
571 ret = gpio_request_array(visstrim_m10_gpios,
572 ARRAY_SIZE(visstrim_m10_gpios));
573 if (ret)
574 pr_err("Failed to request gpios (%d)\n", ret);
575
576 imx_add_gpio_keys(&visstrim_gpio_keys_platform_data);
577
571 imx_add_platform_device("mx27vis", 0, NULL, 0, &snd_mx27vis_pdata, 578 imx_add_platform_device("mx27vis", 0, NULL, 0, &snd_mx27vis_pdata,
572 sizeof(snd_mx27vis_pdata)); 579 sizeof(snd_mx27vis_pdata));
573 platform_device_register_resndata(NULL, "soc-camera-pdrv", 0, NULL, 0, 580 platform_device_register_resndata(NULL, "soc-camera-pdrv", 0, NULL, 0,
574 &iclink_tvp5150, sizeof(iclink_tvp5150)); 581 &iclink_tvp5150, sizeof(iclink_tvp5150));
582
575 gpio_led_register_device(0, &visstrim_m10_led_data); 583 gpio_led_register_device(0, &visstrim_m10_led_data);
576 584
577 /* Use mother board version to decide what video devices we shall use */ 585 /* Use mother board version to decide what video devices we shall use */
@@ -591,6 +599,7 @@ static void __init visstrim_m10_board_init(void)
591 visstrim_deinterlace_init(); 599 visstrim_deinterlace_init();
592 visstrim_analog_camera_init(); 600 visstrim_analog_camera_init();
593 } 601 }
602
594 visstrim_coda_init(); 603 visstrim_coda_init();
595} 604}
596 605
@@ -607,5 +616,6 @@ MACHINE_START(IMX27_VISSTRIM_M10, "Vista Silicon Visstrim_M10")
607 .init_irq = mx27_init_irq, 616 .init_irq = mx27_init_irq,
608 .init_time = visstrim_m10_timer_init, 617 .init_time = visstrim_m10_timer_init,
609 .init_machine = visstrim_m10_board_init, 618 .init_machine = visstrim_m10_board_init,
619 .init_late = visstrim_m10_late_init,
610 .restart = mxc_restart, 620 .restart = mxc_restart,
611MACHINE_END 621MACHINE_END
diff --git a/arch/arm/mach-imx/mach-kzm_arm11_01.c b/arch/arm/mach-imx/mach-kzm_arm11_01.c
index 31df4361996f..8288acfe7221 100644
--- a/arch/arm/mach-imx/mach-kzm_arm11_01.c
+++ b/arch/arm/mach-imx/mach-kzm_arm11_01.c
@@ -245,13 +245,17 @@ static void __init kzm_board_init(void)
245 245
246 mxc_iomux_setup_multiple_pins(kzm_pins, 246 mxc_iomux_setup_multiple_pins(kzm_pins,
247 ARRAY_SIZE(kzm_pins), "kzm"); 247 ARRAY_SIZE(kzm_pins), "kzm");
248 kzm_init_ext_uart();
249 kzm_init_smsc9118();
250 kzm_init_imx_uart(); 248 kzm_init_imx_uart();
251 249
252 pr_info("Clock input source is 26MHz\n"); 250 pr_info("Clock input source is 26MHz\n");
253} 251}
254 252
253static void __init kzm_late_init(void)
254{
255 kzm_init_ext_uart();
256 kzm_init_smsc9118();
257}
258
255/* 259/*
256 * This structure defines static mappings for the kzm-arm11-01 board. 260 * This structure defines static mappings for the kzm-arm11-01 board.
257 */ 261 */
@@ -291,5 +295,6 @@ MACHINE_START(KZM_ARM11_01, "Kyoto Microcomputer Co., Ltd. KZM-ARM11-01")
291 .init_irq = mx31_init_irq, 295 .init_irq = mx31_init_irq,
292 .init_time = kzm_timer_init, 296 .init_time = kzm_timer_init,
293 .init_machine = kzm_board_init, 297 .init_machine = kzm_board_init,
298 .init_late = kzm_late_init,
294 .restart = mxc_restart, 299 .restart = mxc_restart,
295MACHINE_END 300MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx21ads.c b/arch/arm/mach-imx/mach-mx21ads.c
index 9986f9a697c8..5e366824814f 100644
--- a/arch/arm/mach-imx/mach-mx21ads.c
+++ b/arch/arm/mach-imx/mach-mx21ads.c
@@ -302,12 +302,16 @@ static void __init mx21ads_board_init(void)
302 imx21_add_imx_uart0(&uart_pdata_rts); 302 imx21_add_imx_uart0(&uart_pdata_rts);
303 imx21_add_imx_uart2(&uart_pdata_norts); 303 imx21_add_imx_uart2(&uart_pdata_norts);
304 imx21_add_imx_uart3(&uart_pdata_rts); 304 imx21_add_imx_uart3(&uart_pdata_rts);
305 imx21_add_mxc_mmc(0, &mx21ads_sdhc_pdata);
306 imx21_add_mxc_nand(&mx21ads_nand_board_info); 305 imx21_add_mxc_nand(&mx21ads_nand_board_info);
307 306
308 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
309
310 imx21_add_imx_fb(&mx21ads_fb_data); 307 imx21_add_imx_fb(&mx21ads_fb_data);
308}
309
310static void __init mx21ads_late_init(void)
311{
312 imx21_add_mxc_mmc(0, &mx21ads_sdhc_pdata);
313
314 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
311 315
312 mx21ads_cs8900_resources[1].start = 316 mx21ads_cs8900_resources[1].start =
313 gpio_to_irq(MX21ADS_CS8900A_IRQ_GPIO); 317 gpio_to_irq(MX21ADS_CS8900A_IRQ_GPIO);
@@ -328,6 +332,7 @@ MACHINE_START(MX21ADS, "Freescale i.MX21ADS")
328 .init_early = imx21_init_early, 332 .init_early = imx21_init_early,
329 .init_irq = mx21_init_irq, 333 .init_irq = mx21_init_irq,
330 .init_time = mx21ads_timer_init, 334 .init_time = mx21ads_timer_init,
331 .init_machine = mx21ads_board_init, 335 .init_machine = mx21ads_board_init,
336 .init_late = mx21ads_late_init,
332 .restart = mxc_restart, 337 .restart = mxc_restart,
333MACHINE_END 338MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx27_3ds.c b/arch/arm/mach-imx/mach-mx27_3ds.c
index 9ef4640f3660..7ba651a9b5b8 100644
--- a/arch/arm/mach-imx/mach-mx27_3ds.c
+++ b/arch/arm/mach-imx/mach-mx27_3ds.c
@@ -485,17 +485,32 @@ static const struct imxi2c_platform_data mx27_3ds_i2c0_data __initconst = {
485 485
486static void __init mx27pdk_init(void) 486static void __init mx27pdk_init(void)
487{ 487{
488 int ret;
489 imx27_soc_init(); 488 imx27_soc_init();
490 489
491 mxc_gpio_setup_multiple_pins(mx27pdk_pins, ARRAY_SIZE(mx27pdk_pins), 490 mxc_gpio_setup_multiple_pins(mx27pdk_pins, ARRAY_SIZE(mx27pdk_pins),
492 "mx27pdk"); 491 "mx27pdk");
493 mx27_3ds_sdhc1_enable_level_translator();
494 imx27_add_imx_uart0(&uart_pdata); 492 imx27_add_imx_uart0(&uart_pdata);
495 imx27_add_fec(NULL); 493 imx27_add_fec(NULL);
496 imx27_add_imx_keypad(&mx27_3ds_keymap_data); 494 imx27_add_imx_keypad(&mx27_3ds_keymap_data);
497 imx27_add_mxc_mmc(0, &sdhc1_pdata);
498 imx27_add_imx2_wdt(); 495 imx27_add_imx2_wdt();
496
497 imx27_add_spi_imx1(&spi2_pdata);
498 imx27_add_spi_imx0(&spi1_pdata);
499
500 imx27_add_imx_i2c(0, &mx27_3ds_i2c0_data);
501 platform_add_devices(devices, ARRAY_SIZE(devices));
502 imx27_add_imx_fb(&mx27_3ds_fb_data);
503
504 imx27_add_imx_ssi(0, &mx27_3ds_ssi_pdata);
505}
506
507static void __init mx27pdk_late_init(void)
508{
509 int ret;
510
511 mx27_3ds_sdhc1_enable_level_translator();
512 imx27_add_mxc_mmc(0, &sdhc1_pdata);
513
499 otg_phy_init(); 514 otg_phy_init();
500 515
501 if (otg_mode_host) { 516 if (otg_mode_host) {
@@ -509,17 +524,12 @@ static void __init mx27pdk_init(void)
509 if (!otg_mode_host) 524 if (!otg_mode_host)
510 imx27_add_fsl_usb2_udc(&otg_device_pdata); 525 imx27_add_fsl_usb2_udc(&otg_device_pdata);
511 526
512 imx27_add_spi_imx1(&spi2_pdata);
513 imx27_add_spi_imx0(&spi1_pdata);
514 mx27_3ds_spi_devs[0].irq = gpio_to_irq(PMIC_INT); 527 mx27_3ds_spi_devs[0].irq = gpio_to_irq(PMIC_INT);
515 spi_register_board_info(mx27_3ds_spi_devs, 528 spi_register_board_info(mx27_3ds_spi_devs,
516 ARRAY_SIZE(mx27_3ds_spi_devs)); 529 ARRAY_SIZE(mx27_3ds_spi_devs));
517 530
518 if (mxc_expio_init(MX27_CS5_BASE_ADDR, IMX_GPIO_NR(3, 28))) 531 if (mxc_expio_init(MX27_CS5_BASE_ADDR, IMX_GPIO_NR(3, 28)))
519 pr_warn("Init of the debugboard failed, all devices on the debugboard are unusable.\n"); 532 pr_warn("Init of the debugboard failed, all devices on the debugboard are unusable.\n");
520 imx27_add_imx_i2c(0, &mx27_3ds_i2c0_data);
521 platform_add_devices(devices, ARRAY_SIZE(devices));
522 imx27_add_imx_fb(&mx27_3ds_fb_data);
523 533
524 ret = gpio_request_array(mx27_3ds_camera_gpios, 534 ret = gpio_request_array(mx27_3ds_camera_gpios,
525 ARRAY_SIZE(mx27_3ds_camera_gpios)); 535 ARRAY_SIZE(mx27_3ds_camera_gpios));
@@ -529,7 +539,6 @@ static void __init mx27pdk_init(void)
529 } 539 }
530 540
531 imx27_add_mx2_camera(&mx27_3ds_cam_pdata); 541 imx27_add_mx2_camera(&mx27_3ds_cam_pdata);
532 imx27_add_imx_ssi(0, &mx27_3ds_ssi_pdata);
533 542
534 imx_add_platform_device("imx_mc13783", 0, NULL, 0, NULL, 0); 543 imx_add_platform_device("imx_mc13783", 0, NULL, 0, NULL, 0);
535} 544}
@@ -547,5 +556,6 @@ MACHINE_START(MX27_3DS, "Freescale MX27PDK")
547 .init_irq = mx27_init_irq, 556 .init_irq = mx27_init_irq,
548 .init_time = mx27pdk_timer_init, 557 .init_time = mx27pdk_timer_init,
549 .init_machine = mx27pdk_init, 558 .init_machine = mx27pdk_init,
559 .init_late = mx27pdk_late_init,
550 .restart = mxc_restart, 560 .restart = mxc_restart,
551MACHINE_END 561MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx27ads.c b/arch/arm/mach-imx/mach-mx27ads.c
index a4c389eae31a..a04bb094ded1 100644
--- a/arch/arm/mach-imx/mach-mx27ads.c
+++ b/arch/arm/mach-imx/mach-mx27ads.c
@@ -352,14 +352,20 @@ static void __init mx27ads_board_init(void)
352 i2c_register_board_info(1, mx27ads_i2c_devices, 352 i2c_register_board_info(1, mx27ads_i2c_devices,
353 ARRAY_SIZE(mx27ads_i2c_devices)); 353 ARRAY_SIZE(mx27ads_i2c_devices));
354 imx27_add_imx_i2c(1, &mx27ads_i2c1_data); 354 imx27_add_imx_i2c(1, &mx27ads_i2c1_data);
355 mx27ads_regulator_init();
356 imx27_add_imx_fb(&mx27ads_fb_data); 355 imx27_add_imx_fb(&mx27ads_fb_data);
356
357 imx27_add_fec(NULL);
358 imx27_add_mxc_w1();
359}
360
361static void __init mx27ads_late_init(void)
362{
363 mx27ads_regulator_init();
364
357 imx27_add_mxc_mmc(0, &sdhc1_pdata); 365 imx27_add_mxc_mmc(0, &sdhc1_pdata);
358 imx27_add_mxc_mmc(1, &sdhc2_pdata); 366 imx27_add_mxc_mmc(1, &sdhc2_pdata);
359 367
360 imx27_add_fec(NULL);
361 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); 368 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
362 imx27_add_mxc_w1();
363} 369}
364 370
365static void __init mx27ads_timer_init(void) 371static void __init mx27ads_timer_init(void)
@@ -395,5 +401,6 @@ MACHINE_START(MX27ADS, "Freescale i.MX27ADS")
395 .init_irq = mx27_init_irq, 401 .init_irq = mx27_init_irq,
396 .init_time = mx27ads_timer_init, 402 .init_time = mx27ads_timer_init,
397 .init_machine = mx27ads_board_init, 403 .init_machine = mx27ads_board_init,
404 .init_late = mx27ads_late_init,
398 .restart = mxc_restart, 405 .restart = mxc_restart,
399MACHINE_END 406MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx31_3ds.c b/arch/arm/mach-imx/mach-mx31_3ds.c
index 65a0dc06a97c..12b8a52c9cb4 100644
--- a/arch/arm/mach-imx/mach-mx31_3ds.c
+++ b/arch/arm/mach-imx/mach-mx31_3ds.c
@@ -694,8 +694,6 @@ static struct platform_device *devices[] __initdata = {
694 694
695static void __init mx31_3ds_init(void) 695static void __init mx31_3ds_init(void)
696{ 696{
697 int ret;
698
699 imx31_soc_init(); 697 imx31_soc_init();
700 698
701 /* Configure SPI1 IOMUX */ 699 /* Configure SPI1 IOMUX */
@@ -708,14 +706,31 @@ static void __init mx31_3ds_init(void)
708 imx31_add_mxc_nand(&mx31_3ds_nand_board_info); 706 imx31_add_mxc_nand(&mx31_3ds_nand_board_info);
709 707
710 imx31_add_spi_imx1(&spi1_pdata); 708 imx31_add_spi_imx1(&spi1_pdata);
709
710 imx31_add_imx_keypad(&mx31_3ds_keymap_data);
711
712 imx31_add_imx2_wdt();
713 imx31_add_imx_i2c0(&mx31_3ds_i2c0_data);
714
715 imx31_add_spi_imx0(&spi0_pdata);
716 imx31_add_ipu_core();
717 imx31_add_mx3_sdc_fb(&mx3fb_pdata);
718
719 imx31_add_imx_ssi(0, &mx31_3ds_ssi_pdata);
720
721 imx_add_platform_device("imx_mc13783", 0, NULL, 0, NULL, 0);
722}
723
724static void __init mx31_3ds_late(void)
725{
726 int ret;
727
711 mx31_3ds_spi_devs[0].irq = gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3)); 728 mx31_3ds_spi_devs[0].irq = gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));
712 spi_register_board_info(mx31_3ds_spi_devs, 729 spi_register_board_info(mx31_3ds_spi_devs,
713 ARRAY_SIZE(mx31_3ds_spi_devs)); 730 ARRAY_SIZE(mx31_3ds_spi_devs));
714 731
715 platform_add_devices(devices, ARRAY_SIZE(devices)); 732 platform_add_devices(devices, ARRAY_SIZE(devices));
716 733
717 imx31_add_imx_keypad(&mx31_3ds_keymap_data);
718
719 mx31_3ds_usbotg_init(); 734 mx31_3ds_usbotg_init();
720 if (otg_mode_host) { 735 if (otg_mode_host) {
721 otg_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS | 736 otg_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS |
@@ -733,14 +748,9 @@ static void __init mx31_3ds_init(void)
733 748
734 if (mxc_expio_init(MX31_CS5_BASE_ADDR, IOMUX_TO_GPIO(MX31_PIN_GPIO1_1))) 749 if (mxc_expio_init(MX31_CS5_BASE_ADDR, IOMUX_TO_GPIO(MX31_PIN_GPIO1_1)))
735 printk(KERN_WARNING "Init of the debug board failed, all " 750 printk(KERN_WARNING "Init of the debug board failed, all "
736 "devices on the debug board are unusable.\n"); 751 "devices on the debug board are unusable.\n");
737 imx31_add_imx2_wdt();
738 imx31_add_imx_i2c0(&mx31_3ds_i2c0_data);
739 imx31_add_mxc_mmc(0, &sdhc1_pdata);
740 752
741 imx31_add_spi_imx0(&spi0_pdata); 753 imx31_add_mxc_mmc(0, &sdhc1_pdata);
742 imx31_add_ipu_core();
743 imx31_add_mx3_sdc_fb(&mx3fb_pdata);
744 754
745 /* CSI */ 755 /* CSI */
746 /* Camera power: default - off */ 756 /* Camera power: default - off */
@@ -752,10 +762,6 @@ static void __init mx31_3ds_init(void)
752 } 762 }
753 763
754 mx31_3ds_init_camera(); 764 mx31_3ds_init_camera();
755
756 imx31_add_imx_ssi(0, &mx31_3ds_ssi_pdata);
757
758 imx_add_platform_device("imx_mc13783", 0, NULL, 0, NULL, 0);
759} 765}
760 766
761static void __init mx31_3ds_timer_init(void) 767static void __init mx31_3ds_timer_init(void)
@@ -778,6 +784,7 @@ MACHINE_START(MX31_3DS, "Freescale MX31PDK (3DS)")
778 .init_irq = mx31_init_irq, 784 .init_irq = mx31_init_irq,
779 .init_time = mx31_3ds_timer_init, 785 .init_time = mx31_3ds_timer_init,
780 .init_machine = mx31_3ds_init, 786 .init_machine = mx31_3ds_init,
787 .init_late = mx31_3ds_late,
781 .reserve = mx31_3ds_reserve, 788 .reserve = mx31_3ds_reserve,
782 .restart = mxc_restart, 789 .restart = mxc_restart,
783MACHINE_END 790MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx31ads.c b/arch/arm/mach-imx/mach-mx31ads.c
index 4f2c56d44ba1..766b8b93fb97 100644
--- a/arch/arm/mach-imx/mach-mx31ads.c
+++ b/arch/arm/mach-imx/mach-mx31ads.c
@@ -554,20 +554,19 @@ static void __init mx31ads_map_io(void)
554 iotable_init(mx31ads_io_desc, ARRAY_SIZE(mx31ads_io_desc)); 554 iotable_init(mx31ads_io_desc, ARRAY_SIZE(mx31ads_io_desc));
555} 555}
556 556
557static void __init mx31ads_init_irq(void)
558{
559 mx31_init_irq();
560 mx31ads_init_expio();
561}
562
563static void __init mx31ads_init(void) 557static void __init mx31ads_init(void)
564{ 558{
565 imx31_soc_init(); 559 imx31_soc_init();
566 560
567 mxc_init_extuart();
568 mxc_init_imx_uart(); 561 mxc_init_imx_uart();
569 mxc_init_i2c();
570 mxc_init_audio(); 562 mxc_init_audio();
563}
564
565static void __init mx31ads_late(void)
566{
567 mx31ads_init_expio();
568 mxc_init_extuart();
569 mxc_init_i2c();
571 mxc_init_ext_ethernet(); 570 mxc_init_ext_ethernet();
572} 571}
573 572
@@ -581,8 +580,9 @@ MACHINE_START(MX31ADS, "Freescale MX31ADS")
581 .atag_offset = 0x100, 580 .atag_offset = 0x100,
582 .map_io = mx31ads_map_io, 581 .map_io = mx31ads_map_io,
583 .init_early = imx31_init_early, 582 .init_early = imx31_init_early,
584 .init_irq = mx31ads_init_irq, 583 .init_irq = mx31_init_irq,
585 .init_time = mx31ads_timer_init, 584 .init_time = mx31ads_timer_init,
586 .init_machine = mx31ads_init, 585 .init_machine = mx31ads_init,
586 .init_late = mx31ads_late,
587 .restart = mxc_restart, 587 .restart = mxc_restart,
588MACHINE_END 588MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx31lilly.c b/arch/arm/mach-imx/mach-mx31lilly.c
index e9549a3c0223..6fd463642954 100644
--- a/arch/arm/mach-imx/mach-mx31lilly.c
+++ b/arch/arm/mach-imx/mach-mx31lilly.c
@@ -56,6 +56,26 @@
56 * appropriate baseboard support code. 56 * appropriate baseboard support code.
57 */ 57 */
58 58
59static unsigned int mx31lilly_pins[] __initdata = {
60 MX31_PIN_CTS1__CTS1,
61 MX31_PIN_RTS1__RTS1,
62 MX31_PIN_TXD1__TXD1,
63 MX31_PIN_RXD1__RXD1,
64 MX31_PIN_CTS2__CTS2,
65 MX31_PIN_RTS2__RTS2,
66 MX31_PIN_TXD2__TXD2,
67 MX31_PIN_RXD2__RXD2,
68 MX31_PIN_CSPI3_MOSI__RXD3,
69 MX31_PIN_CSPI3_MISO__TXD3,
70 MX31_PIN_CSPI3_SCLK__RTS3,
71 MX31_PIN_CSPI3_SPI_RDY__CTS3,
72};
73
74/* UART */
75static const struct imxuart_platform_data uart_pdata __initconst = {
76 .flags = IMXUART_HAVE_RTSCTS,
77};
78
59/* SMSC ethernet support */ 79/* SMSC ethernet support */
60 80
61static struct resource smsc91x_resources[] = { 81static struct resource smsc91x_resources[] = {
@@ -252,16 +272,12 @@ static void __init mx31lilly_board_init(void)
252{ 272{
253 imx31_soc_init(); 273 imx31_soc_init();
254 274
255 switch (mx31lilly_baseboard) { 275 mxc_iomux_setup_multiple_pins(mx31lilly_pins,
256 case MX31LILLY_NOBOARD: 276 ARRAY_SIZE(mx31lilly_pins), "mx31lily");
257 break; 277
258 case MX31LILLY_DB: 278 imx31_add_imx_uart0(&uart_pdata);
259 mx31lilly_db_init(); 279 imx31_add_imx_uart1(&uart_pdata);
260 break; 280 imx31_add_imx_uart2(&uart_pdata);
261 default:
262 printk(KERN_ERR "Illegal mx31lilly_baseboard type %d\n",
263 mx31lilly_baseboard);
264 }
265 281
266 mxc_iomux_alloc_pin(MX31_PIN_CS4__CS4, "Ethernet CS"); 282 mxc_iomux_alloc_pin(MX31_PIN_CS4__CS4, "Ethernet CS");
267 283
@@ -284,10 +300,17 @@ static void __init mx31lilly_board_init(void)
284 300
285 imx31_add_spi_imx0(&spi0_pdata); 301 imx31_add_spi_imx0(&spi0_pdata);
286 imx31_add_spi_imx1(&spi1_pdata); 302 imx31_add_spi_imx1(&spi1_pdata);
287 mc13783_dev.irq = gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));
288 spi_register_board_info(&mc13783_dev, 1);
289 303
290 regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies)); 304 regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
305}
306
307static void __init mx31lilly_late_init(void)
308{
309 if (mx31lilly_baseboard == MX31LILLY_DB)
310 mx31lilly_db_init();
311
312 mc13783_dev.irq = gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));
313 spi_register_board_info(&mc13783_dev, 1);
291 314
292 smsc91x_resources[1].start = 315 smsc91x_resources[1].start =
293 gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0)); 316 gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
@@ -310,6 +333,7 @@ MACHINE_START(LILLY1131, "INCO startec LILLY-1131")
310 .init_early = imx31_init_early, 333 .init_early = imx31_init_early,
311 .init_irq = mx31_init_irq, 334 .init_irq = mx31_init_irq,
312 .init_time = mx31lilly_timer_init, 335 .init_time = mx31lilly_timer_init,
313 .init_machine = mx31lilly_board_init, 336 .init_machine = mx31lilly_board_init,
337 .init_late = mx31lilly_late_init,
314 .restart = mxc_restart, 338 .restart = mxc_restart,
315MACHINE_END 339MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx31lite.c b/arch/arm/mach-imx/mach-mx31lite.c
index 4822a1738de4..f033a57d5694 100644
--- a/arch/arm/mach-imx/mach-mx31lite.c
+++ b/arch/arm/mach-imx/mach-mx31lite.c
@@ -52,6 +52,19 @@
52 */ 52 */
53 53
54static unsigned int mx31lite_pins[] = { 54static unsigned int mx31lite_pins[] = {
55 /* UART1 */
56 MX31_PIN_CTS1__CTS1,
57 MX31_PIN_RTS1__RTS1,
58 MX31_PIN_TXD1__TXD1,
59 MX31_PIN_RXD1__RXD1,
60 /* SPI 0 */
61 MX31_PIN_CSPI1_SCLK__SCLK,
62 MX31_PIN_CSPI1_MOSI__MOSI,
63 MX31_PIN_CSPI1_MISO__MISO,
64 MX31_PIN_CSPI1_SPI_RDY__SPI_RDY,
65 MX31_PIN_CSPI1_SS0__SS0,
66 MX31_PIN_CSPI1_SS1__SS1,
67 MX31_PIN_CSPI1_SS2__SS2,
55 /* LAN9117 IRQ pin */ 68 /* LAN9117 IRQ pin */
56 IOMUX_MODE(MX31_PIN_SFS6, IOMUX_CONFIG_GPIO), 69 IOMUX_MODE(MX31_PIN_SFS6, IOMUX_CONFIG_GPIO),
57 /* SPI 1 */ 70 /* SPI 1 */
@@ -64,6 +77,23 @@ static unsigned int mx31lite_pins[] = {
64 MX31_PIN_CSPI2_SS2__SS2, 77 MX31_PIN_CSPI2_SS2__SS2,
65}; 78};
66 79
80/* UART */
81static const struct imxuart_platform_data uart_pdata __initconst = {
82 .flags = IMXUART_HAVE_RTSCTS,
83};
84
85/* SPI */
86static int spi0_internal_chipselect[] = {
87 MXC_SPI_CS(0),
88 MXC_SPI_CS(1),
89 MXC_SPI_CS(2),
90};
91
92static const struct spi_imx_master spi0_pdata __initconst = {
93 .chipselect = spi0_internal_chipselect,
94 .num_chipselect = ARRAY_SIZE(spi0_internal_chipselect),
95};
96
67static const struct mxc_nand_platform_data 97static const struct mxc_nand_platform_data
68mx31lite_nand_board_info __initconst = { 98mx31lite_nand_board_info __initconst = {
69 .width = 1, 99 .width = 1,
@@ -103,13 +133,13 @@ static struct platform_device smsc911x_device = {
103 * The MC13783 is the only hard-wired SPI device on the module. 133 * The MC13783 is the only hard-wired SPI device on the module.
104 */ 134 */
105 135
106static int spi_internal_chipselect[] = { 136static int spi1_internal_chipselect[] = {
107 MXC_SPI_CS(0), 137 MXC_SPI_CS(0),
108}; 138};
109 139
110static const struct spi_imx_master spi1_pdata __initconst = { 140static const struct spi_imx_master spi1_pdata __initconst = {
111 .chipselect = spi_internal_chipselect, 141 .chipselect = spi1_internal_chipselect,
112 .num_chipselect = ARRAY_SIZE(spi_internal_chipselect), 142 .num_chipselect = ARRAY_SIZE(spi1_internal_chipselect),
113}; 143};
114 144
115static struct mc13xxx_platform_data mc13783_pdata __initdata = { 145static struct mc13xxx_platform_data mc13783_pdata __initdata = {
@@ -200,8 +230,6 @@ static struct platform_device physmap_flash_device = {
200 .num_resources = 1, 230 .num_resources = 1,
201}; 231};
202 232
203
204
205/* 233/*
206 * This structure defines the MX31 memory map. 234 * This structure defines the MX31 memory map.
207 */ 235 */
@@ -233,29 +261,30 @@ static struct regulator_consumer_supply dummy_supplies[] = {
233 261
234static void __init mx31lite_init(void) 262static void __init mx31lite_init(void)
235{ 263{
236 int ret;
237
238 imx31_soc_init(); 264 imx31_soc_init();
239 265
240 switch (mx31lite_baseboard) {
241 case MX31LITE_NOBOARD:
242 break;
243 case MX31LITE_DB:
244 mx31lite_db_init();
245 break;
246 default:
247 printk(KERN_ERR "Illegal mx31lite_baseboard type %d\n",
248 mx31lite_baseboard);
249 }
250
251 mxc_iomux_setup_multiple_pins(mx31lite_pins, ARRAY_SIZE(mx31lite_pins), 266 mxc_iomux_setup_multiple_pins(mx31lite_pins, ARRAY_SIZE(mx31lite_pins),
252 "mx31lite"); 267 "mx31lite");
253 268
269 imx31_add_imx_uart0(&uart_pdata);
270 imx31_add_spi_imx0(&spi0_pdata);
271
254 /* NOR and NAND flash */ 272 /* NOR and NAND flash */
255 platform_device_register(&physmap_flash_device); 273 platform_device_register(&physmap_flash_device);
256 imx31_add_mxc_nand(&mx31lite_nand_board_info); 274 imx31_add_mxc_nand(&mx31lite_nand_board_info);
257 275
258 imx31_add_spi_imx1(&spi1_pdata); 276 imx31_add_spi_imx1(&spi1_pdata);
277
278 regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
279}
280
281static void __init mx31lite_late(void)
282{
283 int ret;
284
285 if (mx31lite_baseboard == MX31LITE_DB)
286 mx31lite_db_init();
287
259 mc13783_spi_dev.irq = gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3)); 288 mc13783_spi_dev.irq = gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));
260 spi_register_board_info(&mc13783_spi_dev, 1); 289 spi_register_board_info(&mc13783_spi_dev, 1);
261 290
@@ -265,8 +294,6 @@ static void __init mx31lite_init(void)
265 if (usbh2_pdata.otg) 294 if (usbh2_pdata.otg)
266 imx31_add_mxc_ehci_hs(2, &usbh2_pdata); 295 imx31_add_mxc_ehci_hs(2, &usbh2_pdata);
267 296
268 regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
269
270 /* SMSC9117 IRQ pin */ 297 /* SMSC9117 IRQ pin */
271 ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_SFS6), "sms9117-irq"); 298 ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_SFS6), "sms9117-irq");
272 if (ret) 299 if (ret)
@@ -294,5 +321,6 @@ MACHINE_START(MX31LITE, "LogicPD i.MX31 SOM")
294 .init_irq = mx31_init_irq, 321 .init_irq = mx31_init_irq,
295 .init_time = mx31lite_timer_init, 322 .init_time = mx31lite_timer_init,
296 .init_machine = mx31lite_init, 323 .init_machine = mx31lite_init,
324 .init_late = mx31lite_late,
297 .restart = mxc_restart, 325 .restart = mxc_restart,
298MACHINE_END 326MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx31moboard.c b/arch/arm/mach-imx/mach-mx31moboard.c
index 4f2d99888afd..cc867682520e 100644
--- a/arch/arm/mach-imx/mach-mx31moboard.c
+++ b/arch/arm/mach-imx/mach-mx31moboard.c
@@ -526,11 +526,9 @@ static void __init mx31moboard_init(void)
526 "moboard"); 526 "moboard");
527 527
528 platform_add_devices(devices, ARRAY_SIZE(devices)); 528 platform_add_devices(devices, ARRAY_SIZE(devices));
529 gpio_led_register_device(-1, &mx31moboard_led_pdata);
530 529
531 imx31_add_imx2_wdt(); 530 imx31_add_imx2_wdt();
532 531
533 moboard_uart0_init();
534 imx31_add_imx_uart0(&uart0_pdata); 532 imx31_add_imx_uart0(&uart0_pdata);
535 imx31_add_imx_uart4(&uart4_pdata); 533 imx31_add_imx_uart4(&uart4_pdata);
536 534
@@ -540,6 +538,19 @@ static void __init mx31moboard_init(void)
540 imx31_add_spi_imx1(&moboard_spi1_pdata); 538 imx31_add_spi_imx1(&moboard_spi1_pdata);
541 imx31_add_spi_imx2(&moboard_spi2_pdata); 539 imx31_add_spi_imx2(&moboard_spi2_pdata);
542 540
541 mx31moboard_init_cam();
542
543 imx31_add_imx_ssi(0, &moboard_ssi_pdata);
544
545 pm_power_off = mx31moboard_poweroff;
546}
547
548static void __init mx31moboard_late(void)
549{
550 gpio_led_register_device(-1, &mx31moboard_led_pdata);
551
552 moboard_uart0_init();
553
543 gpio_request(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3), "pmic-irq"); 554 gpio_request(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3), "pmic-irq");
544 gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3)); 555 gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));
545 moboard_spi_board_info[0].irq = 556 moboard_spi_board_info[0].irq =
@@ -549,18 +560,11 @@ static void __init mx31moboard_init(void)
549 560
550 imx31_add_mxc_mmc(0, &sdhc1_pdata); 561 imx31_add_mxc_mmc(0, &sdhc1_pdata);
551 562
552 mx31moboard_init_cam();
553
554 usb_xcvr_reset(); 563 usb_xcvr_reset();
555
556 moboard_usbh2_init(); 564 moboard_usbh2_init();
557 565
558 imx31_add_imx_ssi(0, &moboard_ssi_pdata);
559
560 imx_add_platform_device("imx_mc13783", 0, NULL, 0, NULL, 0); 566 imx_add_platform_device("imx_mc13783", 0, NULL, 0, NULL, 0);
561 567
562 pm_power_off = mx31moboard_poweroff;
563
564 switch (mx31moboard_baseboard) { 568 switch (mx31moboard_baseboard) {
565 case MX31NOBOARD: 569 case MX31NOBOARD:
566 break; 570 break;
@@ -601,5 +605,6 @@ MACHINE_START(MX31MOBOARD, "EPFL Mobots mx31moboard")
601 .init_irq = mx31_init_irq, 605 .init_irq = mx31_init_irq,
602 .init_time = mx31moboard_timer_init, 606 .init_time = mx31moboard_timer_init,
603 .init_machine = mx31moboard_init, 607 .init_machine = mx31moboard_init,
608 .init_late = mx31moboard_late,
604 .restart = mxc_restart, 609 .restart = mxc_restart,
605MACHINE_END 610MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx35_3ds.c b/arch/arm/mach-imx/mach-mx35_3ds.c
index 7e315f00648d..c8c2e0956048 100644
--- a/arch/arm/mach-imx/mach-mx35_3ds.c
+++ b/arch/arm/mach-imx/mach-mx35_3ds.c
@@ -555,8 +555,6 @@ static const struct imxi2c_platform_data mx35_3ds_i2c0_data __initconst = {
555 */ 555 */
556static void __init mx35_3ds_init(void) 556static void __init mx35_3ds_init(void)
557{ 557{
558 struct platform_device *imx35_fb_pdev;
559
560 imx35_soc_init(); 558 imx35_soc_init();
561 559
562 mxc_iomux_v3_setup_multiple_pads(mx35pdk_pads, ARRAY_SIZE(mx35pdk_pads)); 560 mxc_iomux_v3_setup_multiple_pads(mx35pdk_pads, ARRAY_SIZE(mx35pdk_pads));
@@ -579,9 +577,6 @@ static void __init mx35_3ds_init(void)
579 imx35_add_mxc_nand(&mx35pdk_nand_board_info); 577 imx35_add_mxc_nand(&mx35pdk_nand_board_info);
580 imx35_add_sdhci_esdhc_imx(0, NULL); 578 imx35_add_sdhci_esdhc_imx(0, NULL);
581 579
582 if (mxc_expio_init(MX35_CS5_BASE_ADDR, IMX_GPIO_NR(1, 1)))
583 pr_warn("Init of the debugboard failed, all "
584 "devices on the debugboard are unusable.\n");
585 imx35_add_imx_i2c0(&mx35_3ds_i2c0_data); 580 imx35_add_imx_i2c0(&mx35_3ds_i2c0_data);
586 581
587 i2c_register_board_info( 582 i2c_register_board_info(
@@ -590,6 +585,15 @@ static void __init mx35_3ds_init(void)
590 imx35_add_ipu_core(); 585 imx35_add_ipu_core();
591 platform_device_register(&mx35_3ds_ov2640); 586 platform_device_register(&mx35_3ds_ov2640);
592 imx35_3ds_init_camera(); 587 imx35_3ds_init_camera();
588}
589
590static void __init mx35_3ds_late_init(void)
591{
592 struct platform_device *imx35_fb_pdev;
593
594 if (mxc_expio_init(MX35_CS5_BASE_ADDR, IMX_GPIO_NR(1, 1)))
595 pr_warn("Init of the debugboard failed, all "
596 "devices on the debugboard are unusable.\n");
593 597
594 imx35_fb_pdev = imx35_add_mx3_sdc_fb(&mx3fb_pdata); 598 imx35_fb_pdev = imx35_add_mx3_sdc_fb(&mx3fb_pdata);
595 mx35_3ds_lcd.dev.parent = &imx35_fb_pdev->dev; 599 mx35_3ds_lcd.dev.parent = &imx35_fb_pdev->dev;
@@ -618,6 +622,7 @@ MACHINE_START(MX35_3DS, "Freescale MX35PDK")
618 .init_irq = mx35_init_irq, 622 .init_irq = mx35_init_irq,
619 .init_time = mx35pdk_timer_init, 623 .init_time = mx35pdk_timer_init,
620 .init_machine = mx35_3ds_init, 624 .init_machine = mx35_3ds_init,
625 .init_late = mx35_3ds_late_init,
621 .reserve = mx35_3ds_reserve, 626 .reserve = mx35_3ds_reserve,
622 .restart = mxc_restart, 627 .restart = mxc_restart,
623MACHINE_END 628MACHINE_END
diff --git a/arch/arm/mach-imx/mach-pca100.c b/arch/arm/mach-imx/mach-pca100.c
index 2d1c50bd8bdf..ed675863655b 100644
--- a/arch/arm/mach-imx/mach-pca100.c
+++ b/arch/arm/mach-imx/mach-pca100.c
@@ -362,12 +362,8 @@ static void __init pca100_init(void)
362 if (ret) 362 if (ret)
363 printk(KERN_ERR "pca100: Failed to setup pins (%d)\n", ret); 363 printk(KERN_ERR "pca100: Failed to setup pins (%d)\n", ret);
364 364
365 imx27_add_imx_ssi(0, &pca100_ssi_pdata);
366
367 imx27_add_imx_uart0(&uart_pdata); 365 imx27_add_imx_uart0(&uart_pdata);
368 366
369 imx27_add_mxc_mmc(1, &sdhc_pdata);
370
371 imx27_add_mxc_nand(&pca100_nand_board_info); 367 imx27_add_mxc_nand(&pca100_nand_board_info);
372 368
373 /* only the i2c master 1 is used on this CPU card */ 369 /* only the i2c master 1 is used on this CPU card */
@@ -382,6 +378,19 @@ static void __init pca100_init(void)
382 ARRAY_SIZE(pca100_spi_board_info)); 378 ARRAY_SIZE(pca100_spi_board_info));
383 imx27_add_spi_imx0(&pca100_spi0_data); 379 imx27_add_spi_imx0(&pca100_spi0_data);
384 380
381 imx27_add_imx_fb(&pca100_fb_data);
382
383 imx27_add_fec(NULL);
384 imx27_add_imx2_wdt();
385 imx27_add_mxc_w1();
386}
387
388static void __init pca100_late_init(void)
389{
390 imx27_add_imx_ssi(0, &pca100_ssi_pdata);
391
392 imx27_add_mxc_mmc(1, &sdhc_pdata);
393
385 gpio_request(OTG_PHY_CS_GPIO, "usb-otg-cs"); 394 gpio_request(OTG_PHY_CS_GPIO, "usb-otg-cs");
386 gpio_direction_output(OTG_PHY_CS_GPIO, 1); 395 gpio_direction_output(OTG_PHY_CS_GPIO, 1);
387 gpio_request(USBH2_PHY_CS_GPIO, "usb-host2-cs"); 396 gpio_request(USBH2_PHY_CS_GPIO, "usb-host2-cs");
@@ -403,12 +412,6 @@ static void __init pca100_init(void)
403 412
404 if (usbh2_pdata.otg) 413 if (usbh2_pdata.otg)
405 imx27_add_mxc_ehci_hs(2, &usbh2_pdata); 414 imx27_add_mxc_ehci_hs(2, &usbh2_pdata);
406
407 imx27_add_imx_fb(&pca100_fb_data);
408
409 imx27_add_fec(NULL);
410 imx27_add_imx2_wdt();
411 imx27_add_mxc_w1();
412} 415}
413 416
414static void __init pca100_timer_init(void) 417static void __init pca100_timer_init(void)
@@ -421,7 +424,8 @@ MACHINE_START(PCA100, "phyCARD-i.MX27")
421 .map_io = mx27_map_io, 424 .map_io = mx27_map_io,
422 .init_early = imx27_init_early, 425 .init_early = imx27_init_early,
423 .init_irq = mx27_init_irq, 426 .init_irq = mx27_init_irq,
424 .init_machine = pca100_init, 427 .init_machine = pca100_init,
428 .init_late = pca100_late_init,
425 .init_time = pca100_timer_init, 429 .init_time = pca100_timer_init,
426 .restart = mxc_restart, 430 .restart = mxc_restart,
427MACHINE_END 431MACHINE_END
diff --git a/arch/arm/mach-imx/mach-pcm037.c b/arch/arm/mach-imx/mach-pcm037.c
index 6d879417db49..d071ced7425d 100644
--- a/arch/arm/mach-imx/mach-pcm037.c
+++ b/arch/arm/mach-imx/mach-pcm037.c
@@ -576,8 +576,6 @@ static struct regulator_consumer_supply dummy_supplies[] = {
576 */ 576 */
577static void __init pcm037_init(void) 577static void __init pcm037_init(void)
578{ 578{
579 int ret;
580
581 imx31_soc_init(); 579 imx31_soc_init();
582 580
583 regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies)); 581 regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
@@ -621,20 +619,6 @@ static void __init pcm037_init(void)
621 619
622 imx31_add_mxc_w1(); 620 imx31_add_mxc_w1();
623 621
624 /* LAN9217 IRQ pin */
625 ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1), "lan9217-irq");
626 if (ret)
627 pr_warn("could not get LAN irq gpio\n");
628 else {
629 gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
630 smsc911x_resources[1].start =
631 gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
632 smsc911x_resources[1].end =
633 gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
634 platform_device_register(&pcm037_eth);
635 }
636
637
638 /* I2C adapters and devices */ 622 /* I2C adapters and devices */
639 i2c_register_board_info(1, pcm037_i2c_devices, 623 i2c_register_board_info(1, pcm037_i2c_devices,
640 ARRAY_SIZE(pcm037_i2c_devices)); 624 ARRAY_SIZE(pcm037_i2c_devices));
@@ -643,26 +627,9 @@ static void __init pcm037_init(void)
643 imx31_add_imx_i2c2(&pcm037_i2c2_data); 627 imx31_add_imx_i2c2(&pcm037_i2c2_data);
644 628
645 imx31_add_mxc_nand(&pcm037_nand_board_info); 629 imx31_add_mxc_nand(&pcm037_nand_board_info);
646 imx31_add_mxc_mmc(0, &sdhc_pdata);
647 imx31_add_ipu_core(); 630 imx31_add_ipu_core();
648 imx31_add_mx3_sdc_fb(&mx3fb_pdata); 631 imx31_add_mx3_sdc_fb(&mx3fb_pdata);
649 632
650 /* CSI */
651 /* Camera power: default - off */
652 ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), "mt9t031-power");
653 if (!ret)
654 gpio_direction_output(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), 1);
655 else
656 iclink_mt9t031.power = NULL;
657
658 pcm037_init_camera();
659
660 pcm970_sja1000_resources[1].start =
661 gpio_to_irq(IOMUX_TO_GPIO(IOMUX_PIN(48, 105)));
662 pcm970_sja1000_resources[1].end =
663 gpio_to_irq(IOMUX_TO_GPIO(IOMUX_PIN(48, 105)));
664 platform_device_register(&pcm970_sja1000);
665
666 if (otg_mode_host) { 633 if (otg_mode_host) {
667 otg_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS | 634 otg_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS |
668 ULPI_OTG_DRVVBUS_EXT); 635 ULPI_OTG_DRVVBUS_EXT);
@@ -677,7 +644,6 @@ static void __init pcm037_init(void)
677 644
678 if (!otg_mode_host) 645 if (!otg_mode_host)
679 imx31_add_fsl_usb2_udc(&otg_device_pdata); 646 imx31_add_fsl_usb2_udc(&otg_device_pdata);
680
681} 647}
682 648
683static void __init pcm037_timer_init(void) 649static void __init pcm037_timer_init(void)
@@ -694,6 +660,39 @@ static void __init pcm037_reserve(void)
694 660
695static void __init pcm037_init_late(void) 661static void __init pcm037_init_late(void)
696{ 662{
663 int ret;
664
665 /* LAN9217 IRQ pin */
666 ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1), "lan9217-irq");
667 if (!ret) {
668 gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
669 smsc911x_resources[1].start =
670 gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
671 smsc911x_resources[1].end =
672 gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
673 platform_device_register(&pcm037_eth);
674 } else {
675 pr_warn("could not get LAN irq gpio\n");
676 }
677
678 imx31_add_mxc_mmc(0, &sdhc_pdata);
679
680 /* CSI */
681 /* Camera power: default - off */
682 ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), "mt9t031-power");
683 if (!ret)
684 gpio_direction_output(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), 1);
685 else
686 iclink_mt9t031.power = NULL;
687
688 pcm037_init_camera();
689
690 pcm970_sja1000_resources[1].start =
691 gpio_to_irq(IOMUX_TO_GPIO(IOMUX_PIN(48, 105)));
692 pcm970_sja1000_resources[1].end =
693 gpio_to_irq(IOMUX_TO_GPIO(IOMUX_PIN(48, 105)));
694 platform_device_register(&pcm970_sja1000);
695
697 pcm037_eet_init_devices(); 696 pcm037_eet_init_devices();
698} 697}
699 698
diff --git a/arch/arm/mach-imx/mach-pcm043.c b/arch/arm/mach-imx/mach-pcm043.c
index e447e59c0604..78e2bf8dcd96 100644
--- a/arch/arm/mach-imx/mach-pcm043.c
+++ b/arch/arm/mach-imx/mach-pcm043.c
@@ -363,7 +363,6 @@ static void __init pcm043_init(void)
363 363
364 imx35_add_imx_uart0(&uart_pdata); 364 imx35_add_imx_uart0(&uart_pdata);
365 imx35_add_mxc_nand(&pcm037_nand_board_info); 365 imx35_add_mxc_nand(&pcm037_nand_board_info);
366 imx35_add_imx_ssi(0, &pcm043_ssi_pdata);
367 366
368 imx35_add_imx_uart1(&uart_pdata); 367 imx35_add_imx_uart1(&uart_pdata);
369 368
@@ -387,6 +386,12 @@ static void __init pcm043_init(void)
387 imx35_add_fsl_usb2_udc(&otg_device_pdata); 386 imx35_add_fsl_usb2_udc(&otg_device_pdata);
388 387
389 imx35_add_flexcan1(); 388 imx35_add_flexcan1();
389}
390
391static void __init pcm043_late_init(void)
392{
393 imx35_add_imx_ssi(0, &pcm043_ssi_pdata);
394
390 imx35_add_sdhci_esdhc_imx(0, &sd1_pdata); 395 imx35_add_sdhci_esdhc_imx(0, &sd1_pdata);
391} 396}
392 397
@@ -402,6 +407,7 @@ MACHINE_START(PCM043, "Phytec Phycore pcm043")
402 .init_early = imx35_init_early, 407 .init_early = imx35_init_early,
403 .init_irq = mx35_init_irq, 408 .init_irq = mx35_init_irq,
404 .init_time = pcm043_timer_init, 409 .init_time = pcm043_timer_init,
405 .init_machine = pcm043_init, 410 .init_machine = pcm043_init,
411 .init_late = pcm043_late_init,
406 .restart = mxc_restart, 412 .restart = mxc_restart,
407MACHINE_END 413MACHINE_END
diff --git a/arch/arm/mach-imx/mach-qong.c b/arch/arm/mach-imx/mach-qong.c
index 34df64f133ed..8c2cbd693d21 100644
--- a/arch/arm/mach-imx/mach-qong.c
+++ b/arch/arm/mach-imx/mach-qong.c
@@ -251,7 +251,6 @@ static void __init qong_init(void)
251 251
252 mxc_init_imx_uart(); 252 mxc_init_imx_uart();
253 qong_init_nor_mtd(); 253 qong_init_nor_mtd();
254 qong_init_fpga();
255 imx31_add_imx2_wdt(); 254 imx31_add_imx2_wdt();
256} 255}
257 256
@@ -268,5 +267,6 @@ MACHINE_START(QONG, "Dave/DENX QongEVB-LITE")
268 .init_irq = mx31_init_irq, 267 .init_irq = mx31_init_irq,
269 .init_time = qong_timer_init, 268 .init_time = qong_timer_init,
270 .init_machine = qong_init, 269 .init_machine = qong_init,
270 .init_late = qong_init_fpga,
271 .restart = mxc_restart, 271 .restart = mxc_restart,
272MACHINE_END 272MACHINE_END
diff --git a/arch/arm/mach-imx/mach-vpr200.c b/arch/arm/mach-imx/mach-vpr200.c
index 27a8f7e3ec08..5ff154c9a086 100644
--- a/arch/arm/mach-imx/mach-vpr200.c
+++ b/arch/arm/mach-imx/mach-vpr200.c
@@ -268,6 +268,22 @@ static void __init vpr200_board_init(void)
268 268
269 imx35_add_fec(NULL); 269 imx35_add_fec(NULL);
270 imx35_add_imx2_wdt(); 270 imx35_add_imx2_wdt();
271
272 imx35_add_imx_uart0(NULL);
273 imx35_add_imx_uart2(NULL);
274
275 imx35_add_ipu_core();
276 imx35_add_mx3_sdc_fb(&mx3fb_pdata);
277
278 imx35_add_fsl_usb2_udc(&otg_device_pdata);
279 imx35_add_mxc_ehci_hs(&usb_host_pdata);
280
281 imx35_add_mxc_nand(&vpr200_nand_board_info);
282 imx35_add_sdhci_esdhc_imx(0, NULL);
283}
284
285static void __init vpr200_late_init(void)
286{
271 imx_add_gpio_keys(&vpr200_gpio_keys_data); 287 imx_add_gpio_keys(&vpr200_gpio_keys_data);
272 288
273 platform_add_devices(devices, ARRAY_SIZE(devices)); 289 platform_add_devices(devices, ARRAY_SIZE(devices));
@@ -282,18 +298,6 @@ static void __init vpr200_board_init(void)
282 else 298 else
283 gpio_direction_input(GPIO_PMIC_INT); 299 gpio_direction_input(GPIO_PMIC_INT);
284 300
285 imx35_add_imx_uart0(NULL);
286 imx35_add_imx_uart2(NULL);
287
288 imx35_add_ipu_core();
289 imx35_add_mx3_sdc_fb(&mx3fb_pdata);
290
291 imx35_add_fsl_usb2_udc(&otg_device_pdata);
292 imx35_add_mxc_ehci_hs(&usb_host_pdata);
293
294 imx35_add_mxc_nand(&vpr200_nand_board_info);
295 imx35_add_sdhci_esdhc_imx(0, NULL);
296
297 vpr200_i2c_devices[1].irq = gpio_to_irq(GPIO_PMIC_INT); 301 vpr200_i2c_devices[1].irq = gpio_to_irq(GPIO_PMIC_INT);
298 i2c_register_board_info(0, vpr200_i2c_devices, 302 i2c_register_board_info(0, vpr200_i2c_devices,
299 ARRAY_SIZE(vpr200_i2c_devices)); 303 ARRAY_SIZE(vpr200_i2c_devices));
@@ -313,5 +317,6 @@ MACHINE_START(VPR200, "VPR200")
313 .init_irq = mx35_init_irq, 317 .init_irq = mx35_init_irq,
314 .init_time = vpr200_timer_init, 318 .init_time = vpr200_timer_init,
315 .init_machine = vpr200_board_init, 319 .init_machine = vpr200_board_init,
320 .init_late = vpr200_late_init,
316 .restart = mxc_restart, 321 .restart = mxc_restart,
317MACHINE_END 322MACHINE_END
diff --git a/arch/arm/mach-imx/mx31lilly-db.c b/arch/arm/mach-imx/mx31lilly-db.c
index 649fe49ce85e..231f900a1de7 100644
--- a/arch/arm/mach-imx/mx31lilly-db.c
+++ b/arch/arm/mach-imx/mx31lilly-db.c
@@ -43,18 +43,6 @@
43 */ 43 */
44 44
45static unsigned int lilly_db_board_pins[] __initdata = { 45static unsigned int lilly_db_board_pins[] __initdata = {
46 MX31_PIN_CTS1__CTS1,
47 MX31_PIN_RTS1__RTS1,
48 MX31_PIN_TXD1__TXD1,
49 MX31_PIN_RXD1__RXD1,
50 MX31_PIN_CTS2__CTS2,
51 MX31_PIN_RTS2__RTS2,
52 MX31_PIN_TXD2__TXD2,
53 MX31_PIN_RXD2__RXD2,
54 MX31_PIN_CSPI3_MOSI__RXD3,
55 MX31_PIN_CSPI3_MISO__TXD3,
56 MX31_PIN_CSPI3_SCLK__RTS3,
57 MX31_PIN_CSPI3_SPI_RDY__CTS3,
58 MX31_PIN_SD1_DATA3__SD1_DATA3, 46 MX31_PIN_SD1_DATA3__SD1_DATA3,
59 MX31_PIN_SD1_DATA2__SD1_DATA2, 47 MX31_PIN_SD1_DATA2__SD1_DATA2,
60 MX31_PIN_SD1_DATA1__SD1_DATA1, 48 MX31_PIN_SD1_DATA1__SD1_DATA1,
@@ -86,11 +74,6 @@ static unsigned int lilly_db_board_pins[] __initdata = {
86 MX31_PIN_CONTRAST__CONTRAST, 74 MX31_PIN_CONTRAST__CONTRAST,
87}; 75};
88 76
89/* UART */
90static const struct imxuart_platform_data uart_pdata __initconst = {
91 .flags = IMXUART_HAVE_RTSCTS,
92};
93
94/* MMC support */ 77/* MMC support */
95 78
96static int mxc_mmc1_get_ro(struct device *dev) 79static int mxc_mmc1_get_ro(struct device *dev)
@@ -203,9 +186,6 @@ void __init mx31lilly_db_init(void)
203 mxc_iomux_setup_multiple_pins(lilly_db_board_pins, 186 mxc_iomux_setup_multiple_pins(lilly_db_board_pins,
204 ARRAY_SIZE(lilly_db_board_pins), 187 ARRAY_SIZE(lilly_db_board_pins),
205 "development board pins"); 188 "development board pins");
206 imx31_add_imx_uart0(&uart_pdata);
207 imx31_add_imx_uart1(&uart_pdata);
208 imx31_add_imx_uart2(&uart_pdata);
209 imx31_add_mxc_mmc(0, &mmc_pdata); 189 imx31_add_mxc_mmc(0, &mmc_pdata);
210 mx31lilly_init_fb(); 190 mx31lilly_init_fb();
211} 191}
diff --git a/arch/arm/mach-imx/mx31lite-db.c b/arch/arm/mach-imx/mx31lite-db.c
index 5a160b7e4fce..c66a006bf2fd 100644
--- a/arch/arm/mach-imx/mx31lite-db.c
+++ b/arch/arm/mach-imx/mx31lite-db.c
@@ -45,19 +45,6 @@
45 */ 45 */
46 46
47static unsigned int litekit_db_board_pins[] __initdata = { 47static unsigned int litekit_db_board_pins[] __initdata = {
48 /* UART1 */
49 MX31_PIN_CTS1__CTS1,
50 MX31_PIN_RTS1__RTS1,
51 MX31_PIN_TXD1__TXD1,
52 MX31_PIN_RXD1__RXD1,
53 /* SPI 0 */
54 MX31_PIN_CSPI1_SCLK__SCLK,
55 MX31_PIN_CSPI1_MOSI__MOSI,
56 MX31_PIN_CSPI1_MISO__MISO,
57 MX31_PIN_CSPI1_SPI_RDY__SPI_RDY,
58 MX31_PIN_CSPI1_SS0__SS0,
59 MX31_PIN_CSPI1_SS1__SS1,
60 MX31_PIN_CSPI1_SS2__SS2,
61 /* SDHC1 */ 48 /* SDHC1 */
62 MX31_PIN_SD1_DATA0__SD1_DATA0, 49 MX31_PIN_SD1_DATA0__SD1_DATA0,
63 MX31_PIN_SD1_DATA1__SD1_DATA1, 50 MX31_PIN_SD1_DATA1__SD1_DATA1,
@@ -67,11 +54,6 @@ static unsigned int litekit_db_board_pins[] __initdata = {
67 MX31_PIN_SD1_CMD__SD1_CMD, 54 MX31_PIN_SD1_CMD__SD1_CMD,
68}; 55};
69 56
70/* UART */
71static const struct imxuart_platform_data uart_pdata __initconst = {
72 .flags = IMXUART_HAVE_RTSCTS,
73};
74
75/* MMC */ 57/* MMC */
76 58
77static int gpio_det, gpio_wp; 59static int gpio_det, gpio_wp;
@@ -146,19 +128,6 @@ static const struct imxmmc_platform_data mmc_pdata __initconst = {
146 .exit = mxc_mmc1_exit, 128 .exit = mxc_mmc1_exit,
147}; 129};
148 130
149/* SPI */
150
151static int spi_internal_chipselect[] = {
152 MXC_SPI_CS(0),
153 MXC_SPI_CS(1),
154 MXC_SPI_CS(2),
155};
156
157static const struct spi_imx_master spi0_pdata __initconst = {
158 .chipselect = spi_internal_chipselect,
159 .num_chipselect = ARRAY_SIZE(spi_internal_chipselect),
160};
161
162/* GPIO LEDs */ 131/* GPIO LEDs */
163 132
164static const struct gpio_led litekit_leds[] __initconst = { 133static const struct gpio_led litekit_leds[] __initconst = {
@@ -187,9 +156,7 @@ void __init mx31lite_db_init(void)
187 mxc_iomux_setup_multiple_pins(litekit_db_board_pins, 156 mxc_iomux_setup_multiple_pins(litekit_db_board_pins,
188 ARRAY_SIZE(litekit_db_board_pins), 157 ARRAY_SIZE(litekit_db_board_pins),
189 "development board pins"); 158 "development board pins");
190 imx31_add_imx_uart0(&uart_pdata);
191 imx31_add_mxc_mmc(0, &mmc_pdata); 159 imx31_add_mxc_mmc(0, &mmc_pdata);
192 imx31_add_spi_imx0(&spi0_pdata);
193 gpio_led_register_device(-1, &litekit_led_platform_data); 160 gpio_led_register_device(-1, &litekit_led_platform_data);
194 imx31_add_imx2_wdt(); 161 imx31_add_imx2_wdt();
195 imx31_add_mxc_rtc(); 162 imx31_add_mxc_rtc();