aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/boards/mach-ecovec24/setup.c
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2009-10-25 21:47:44 -0400
committerPaul Mundt <lethal@linux-sh.org>2009-10-25 21:47:44 -0400
commit15893fb565921507da80e500d85bb2575989bb57 (patch)
tree16473cd98b2b4dd43f55d4880a7b42973f2f6bd0 /arch/sh/boards/mach-ecovec24/setup.c
parentf32154c9b580f11017b01bf093514c900c09364e (diff)
parent96987d96f0058d8689a2b8ac288dbff2e6d85563 (diff)
Merge branch 'sh/sdhi-mfd'
Conflicts: arch/sh/boards/mach-ecovec24/setup.c arch/sh/boards/mach-kfr2r09/setup.c
Diffstat (limited to 'arch/sh/boards/mach-ecovec24/setup.c')
-rw-r--r--arch/sh/boards/mach-ecovec24/setup.c79
1 files changed, 78 insertions, 1 deletions
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c
index 3b1ceb46fa54..9d15196952a0 100644
--- a/arch/sh/boards/mach-ecovec24/setup.c
+++ b/arch/sh/boards/mach-ecovec24/setup.c
@@ -428,6 +428,54 @@ static struct i2c_board_info ts_i2c_clients = {
428 .irq = IRQ0, 428 .irq = IRQ0,
429}; 429};
430 430
431/* SHDI0 */
432static struct resource sdhi0_resources[] = {
433 [0] = {
434 .name = "SDHI0",
435 .start = 0x04ce0000,
436 .end = 0x04ce01ff,
437 .flags = IORESOURCE_MEM,
438 },
439 [1] = {
440 .start = 101,
441 .flags = IORESOURCE_IRQ,
442 },
443};
444
445static struct platform_device sdhi0_device = {
446 .name = "sh_mobile_sdhi",
447 .num_resources = ARRAY_SIZE(sdhi0_resources),
448 .resource = sdhi0_resources,
449 .id = 0,
450 .archdata = {
451 .hwblk_id = HWBLK_SDHI0,
452 },
453};
454
455/* SHDI1 */
456static struct resource sdhi1_resources[] = {
457 [0] = {
458 .name = "SDHI1",
459 .start = 0x04cf0000,
460 .end = 0x04cf01ff,
461 .flags = IORESOURCE_MEM,
462 },
463 [1] = {
464 .start = 24,
465 .flags = IORESOURCE_IRQ,
466 },
467};
468
469static struct platform_device sdhi1_device = {
470 .name = "sh_mobile_sdhi",
471 .num_resources = ARRAY_SIZE(sdhi1_resources),
472 .resource = sdhi1_resources,
473 .id = 1,
474 .archdata = {
475 .hwblk_id = HWBLK_SDHI1,
476 },
477};
478
431static struct platform_device *ecovec_devices[] __initdata = { 479static struct platform_device *ecovec_devices[] __initdata = {
432 &heartbeat_device, 480 &heartbeat_device,
433 &nor_flash_device, 481 &nor_flash_device,
@@ -438,6 +486,8 @@ static struct platform_device *ecovec_devices[] __initdata = {
438 &ceu0_device, 486 &ceu0_device,
439 &ceu1_device, 487 &ceu1_device,
440 &keysc_device, 488 &keysc_device,
489 &sdhi0_device,
490 &sdhi1_device,
441}; 491};
442 492
443#define EEPROM_ADDR 0x50 493#define EEPROM_ADDR 0x50
@@ -710,6 +760,34 @@ static int __init arch_setup(void)
710 gpio_direction_input(GPIO_PTR5); 760 gpio_direction_input(GPIO_PTR5);
711 gpio_direction_input(GPIO_PTR6); 761 gpio_direction_input(GPIO_PTR6);
712 762
763 /* enable SDHI0 */
764 gpio_request(GPIO_FN_SDHI0CD, NULL);
765 gpio_request(GPIO_FN_SDHI0WP, NULL);
766 gpio_request(GPIO_FN_SDHI0CMD, NULL);
767 gpio_request(GPIO_FN_SDHI0CLK, NULL);
768 gpio_request(GPIO_FN_SDHI0D3, NULL);
769 gpio_request(GPIO_FN_SDHI0D2, NULL);
770 gpio_request(GPIO_FN_SDHI0D1, NULL);
771 gpio_request(GPIO_FN_SDHI0D0, NULL);
772
773 /* enable SDHI1 */
774 gpio_request(GPIO_FN_SDHI1CD, NULL);
775 gpio_request(GPIO_FN_SDHI1WP, NULL);
776 gpio_request(GPIO_FN_SDHI1CMD, NULL);
777 gpio_request(GPIO_FN_SDHI1CLK, NULL);
778 gpio_request(GPIO_FN_SDHI1D3, NULL);
779 gpio_request(GPIO_FN_SDHI1D2, NULL);
780 gpio_request(GPIO_FN_SDHI1D1, NULL);
781 gpio_request(GPIO_FN_SDHI1D0, NULL);
782
783 gpio_request(GPIO_PTB6, NULL);
784 gpio_request(GPIO_PTB7, NULL);
785 gpio_direction_output(GPIO_PTB6, 1);
786 gpio_direction_output(GPIO_PTB7, 1);
787
788 /* I/O buffer drive ability is high for SDHI1 */
789 ctrl_outw((ctrl_inw(IODRIVEA) & ~0x3000) | 0x2000 , IODRIVEA);
790
713 /* enable I2C device */ 791 /* enable I2C device */
714 i2c_register_board_info(1, i2c1_devices, 792 i2c_register_board_info(1, i2c1_devices,
715 ARRAY_SIZE(i2c1_devices)); 793 ARRAY_SIZE(i2c1_devices));
@@ -726,7 +804,6 @@ static int __init devices_setup(void)
726} 804}
727device_initcall(devices_setup); 805device_initcall(devices_setup);
728 806
729
730static struct sh_machine_vector mv_ecovec __initmv = { 807static struct sh_machine_vector mv_ecovec __initmv = {
731 .mv_name = "R0P7724 (EcoVec)", 808 .mv_name = "R0P7724 (EcoVec)",
732}; 809};