diff options
Diffstat (limited to 'arch/sh/boards/mach-migor/setup.c')
-rw-r--r-- | arch/sh/boards/mach-migor/setup.c | 65 |
1 files changed, 40 insertions, 25 deletions
diff --git a/arch/sh/boards/mach-migor/setup.c b/arch/sh/boards/mach-migor/setup.c index 6ed1fd32369e..9099b6da9957 100644 --- a/arch/sh/boards/mach-migor/setup.c +++ b/arch/sh/boards/mach-migor/setup.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/platform_device.h> | 11 | #include <linux/platform_device.h> |
12 | #include <linux/interrupt.h> | 12 | #include <linux/interrupt.h> |
13 | #include <linux/input.h> | 13 | #include <linux/input.h> |
14 | #include <linux/input/sh_keysc.h> | ||
14 | #include <linux/mtd/physmap.h> | 15 | #include <linux/mtd/physmap.h> |
15 | #include <linux/mtd/nand.h> | 16 | #include <linux/mtd/nand.h> |
16 | #include <linux/i2c.h> | 17 | #include <linux/i2c.h> |
@@ -18,8 +19,6 @@ | |||
18 | #include <linux/delay.h> | 19 | #include <linux/delay.h> |
19 | #include <linux/clk.h> | 20 | #include <linux/clk.h> |
20 | #include <linux/gpio.h> | 21 | #include <linux/gpio.h> |
21 | #include <linux/spi/spi.h> | ||
22 | #include <linux/spi/spi_gpio.h> | ||
23 | #include <video/sh_mobile_lcdc.h> | 22 | #include <video/sh_mobile_lcdc.h> |
24 | #include <media/sh_mobile_ceu.h> | 23 | #include <media/sh_mobile_ceu.h> |
25 | #include <media/ov772x.h> | 24 | #include <media/ov772x.h> |
@@ -27,7 +26,7 @@ | |||
27 | #include <asm/clock.h> | 26 | #include <asm/clock.h> |
28 | #include <asm/machvec.h> | 27 | #include <asm/machvec.h> |
29 | #include <asm/io.h> | 28 | #include <asm/io.h> |
30 | #include <asm/sh_keysc.h> | 29 | #include <asm/suspend.h> |
31 | #include <mach/migor.h> | 30 | #include <mach/migor.h> |
32 | #include <cpu/sh7722.h> | 31 | #include <cpu/sh7722.h> |
33 | 32 | ||
@@ -390,17 +389,25 @@ static struct platform_device migor_ceu_device = { | |||
390 | }, | 389 | }, |
391 | }; | 390 | }; |
392 | 391 | ||
393 | struct spi_gpio_platform_data sdcard_cn9_platform_data = { | 392 | static struct resource sdhi_cn9_resources[] = { |
394 | .sck = GPIO_PTD0, | 393 | [0] = { |
395 | .mosi = GPIO_PTD1, | 394 | .name = "SDHI", |
396 | .miso = GPIO_PTD2, | 395 | .start = 0x04ce0000, |
397 | .num_chipselect = 1, | 396 | .end = 0x04ce01ff, |
397 | .flags = IORESOURCE_MEM, | ||
398 | }, | ||
399 | [1] = { | ||
400 | .start = 101, | ||
401 | .flags = IORESOURCE_IRQ, | ||
402 | }, | ||
398 | }; | 403 | }; |
399 | 404 | ||
400 | static struct platform_device sdcard_cn9_device = { | 405 | static struct platform_device sdhi_cn9_device = { |
401 | .name = "spi_gpio", | 406 | .name = "sh_mobile_sdhi", |
402 | .dev = { | 407 | .num_resources = ARRAY_SIZE(sdhi_cn9_resources), |
403 | .platform_data = &sdcard_cn9_platform_data, | 408 | .resource = sdhi_cn9_resources, |
409 | .archdata = { | ||
410 | .hwblk_id = HWBLK_SDHI, | ||
404 | }, | 411 | }, |
405 | }; | 412 | }; |
406 | 413 | ||
@@ -467,23 +474,24 @@ static struct platform_device *migor_devices[] __initdata = { | |||
467 | &migor_ceu_device, | 474 | &migor_ceu_device, |
468 | &migor_nor_flash_device, | 475 | &migor_nor_flash_device, |
469 | &migor_nand_flash_device, | 476 | &migor_nand_flash_device, |
470 | &sdcard_cn9_device, | 477 | &sdhi_cn9_device, |
471 | &migor_camera[0], | 478 | &migor_camera[0], |
472 | &migor_camera[1], | 479 | &migor_camera[1], |
473 | }; | 480 | }; |
474 | 481 | ||
475 | static struct spi_board_info migor_spi_devices[] = { | 482 | extern char migor_sdram_enter_start; |
476 | { | 483 | extern char migor_sdram_enter_end; |
477 | .modalias = "mmc_spi", | 484 | extern char migor_sdram_leave_start; |
478 | .max_speed_hz = 5000000, | 485 | extern char migor_sdram_leave_end; |
479 | .chip_select = 0, | ||
480 | .controller_data = (void *) GPIO_PTD5, | ||
481 | }, | ||
482 | }; | ||
483 | 486 | ||
484 | static int __init migor_devices_setup(void) | 487 | static int __init migor_devices_setup(void) |
485 | { | 488 | { |
486 | 489 | /* register board specific self-refresh code */ | |
490 | sh_mobile_register_self_refresh(SUSP_SH_STANDBY | SUSP_SH_SF, | ||
491 | &migor_sdram_enter_start, | ||
492 | &migor_sdram_enter_end, | ||
493 | &migor_sdram_leave_start, | ||
494 | &migor_sdram_leave_end); | ||
487 | #ifdef CONFIG_PM | 495 | #ifdef CONFIG_PM |
488 | /* Let D11 LED show STATUS0 */ | 496 | /* Let D11 LED show STATUS0 */ |
489 | gpio_request(GPIO_FN_STATUS0, NULL); | 497 | gpio_request(GPIO_FN_STATUS0, NULL); |
@@ -525,6 +533,16 @@ static int __init migor_devices_setup(void) | |||
525 | gpio_request(GPIO_PTA1, NULL); | 533 | gpio_request(GPIO_PTA1, NULL); |
526 | gpio_direction_input(GPIO_PTA1); | 534 | gpio_direction_input(GPIO_PTA1); |
527 | 535 | ||
536 | /* SDHI */ | ||
537 | gpio_request(GPIO_FN_SDHICD, NULL); | ||
538 | gpio_request(GPIO_FN_SDHIWP, NULL); | ||
539 | gpio_request(GPIO_FN_SDHID3, NULL); | ||
540 | gpio_request(GPIO_FN_SDHID2, NULL); | ||
541 | gpio_request(GPIO_FN_SDHID1, NULL); | ||
542 | gpio_request(GPIO_FN_SDHID0, NULL); | ||
543 | gpio_request(GPIO_FN_SDHICMD, NULL); | ||
544 | gpio_request(GPIO_FN_SDHICLK, NULL); | ||
545 | |||
528 | /* Touch Panel */ | 546 | /* Touch Panel */ |
529 | gpio_request(GPIO_FN_IRQ6, NULL); | 547 | gpio_request(GPIO_FN_IRQ6, NULL); |
530 | 548 | ||
@@ -612,9 +630,6 @@ static int __init migor_devices_setup(void) | |||
612 | i2c_register_board_info(0, migor_i2c_devices, | 630 | i2c_register_board_info(0, migor_i2c_devices, |
613 | ARRAY_SIZE(migor_i2c_devices)); | 631 | ARRAY_SIZE(migor_i2c_devices)); |
614 | 632 | ||
615 | spi_register_board_info(migor_spi_devices, | ||
616 | ARRAY_SIZE(migor_spi_devices)); | ||
617 | |||
618 | return platform_add_devices(migor_devices, ARRAY_SIZE(migor_devices)); | 633 | return platform_add_devices(migor_devices, ARRAY_SIZE(migor_devices)); |
619 | } | 634 | } |
620 | arch_initcall(migor_devices_setup); | 635 | arch_initcall(migor_devices_setup); |