diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-10-25 21:47:44 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-10-25 21:47:44 -0400 |
commit | 15893fb565921507da80e500d85bb2575989bb57 (patch) | |
tree | 16473cd98b2b4dd43f55d4880a7b42973f2f6bd0 /arch/sh/boards/mach-ecovec24/setup.c | |
parent | f32154c9b580f11017b01bf093514c900c09364e (diff) | |
parent | 96987d96f0058d8689a2b8ac288dbff2e6d85563 (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.c | 79 |
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 */ | ||
432 | static 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 | |||
445 | static 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 */ | ||
456 | static 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 | |||
469 | static 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 | |||
431 | static struct platform_device *ecovec_devices[] __initdata = { | 479 | static 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 | } |
727 | device_initcall(devices_setup); | 805 | device_initcall(devices_setup); |
728 | 806 | ||
729 | |||
730 | static struct sh_machine_vector mv_ecovec __initmv = { | 807 | static struct sh_machine_vector mv_ecovec __initmv = { |
731 | .mv_name = "R0P7724 (EcoVec)", | 808 | .mv_name = "R0P7724 (EcoVec)", |
732 | }; | 809 | }; |