diff options
author | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2013-03-29 17:05:50 -0400 |
---|---|---|
committer | Simon Horman <horms+renesas@verge.net.au> | 2013-04-02 21:50:43 -0400 |
commit | fe0a14417bc95492621b45a3cf088ce53ee05c36 (patch) | |
tree | 1634e229e1d87059798c954f164a2392813d39e0 | |
parent | 3f9efeecb4876661b952746c8bbe460682dce1ad (diff) |
ARM: shmobile: mackerel: switch SDHI and MMCIF interfaces to slot-gpio
Both SDHI and MMCIF drivers can use the standard slot-gpio card-detection
functions. Switch mackerel to using them instead of platform callbacks.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com>
Acked-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
-rw-r--r-- | arch/arm/mach-shmobile/board-mackerel.c | 39 |
1 files changed, 12 insertions, 27 deletions
diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c index 734565d4b0f0..a47a11160693 100644 --- a/arch/arm/mach-shmobile/board-mackerel.c +++ b/arch/arm/mach-shmobile/board-mackerel.c | |||
@@ -963,15 +963,6 @@ static struct platform_device nand_flash_device = { | |||
963 | }, | 963 | }, |
964 | }; | 964 | }; |
965 | 965 | ||
966 | /* | ||
967 | * The card detect pin of the top SD/MMC slot (CN7) is active low and is | ||
968 | * connected to GPIO A22 of SH7372 (GPIO 41). | ||
969 | */ | ||
970 | static int slot_cn7_get_cd(struct platform_device *pdev) | ||
971 | { | ||
972 | return !gpio_get_value(41); | ||
973 | } | ||
974 | |||
975 | /* SDHI0 */ | 966 | /* SDHI0 */ |
976 | static struct sh_mobile_sdhi_info sdhi0_info = { | 967 | static struct sh_mobile_sdhi_info sdhi0_info = { |
977 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, | 968 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, |
@@ -1011,13 +1002,15 @@ static struct platform_device sdhi0_device = { | |||
1011 | 1002 | ||
1012 | #if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE) | 1003 | #if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE) |
1013 | /* SDHI1 */ | 1004 | /* SDHI1 */ |
1005 | |||
1006 | /* GPIO 41 can trigger IRQ8, but it is used by USBHS1, we have to poll */ | ||
1014 | static struct sh_mobile_sdhi_info sdhi1_info = { | 1007 | static struct sh_mobile_sdhi_info sdhi1_info = { |
1015 | .dma_slave_tx = SHDMA_SLAVE_SDHI1_TX, | 1008 | .dma_slave_tx = SHDMA_SLAVE_SDHI1_TX, |
1016 | .dma_slave_rx = SHDMA_SLAVE_SDHI1_RX, | 1009 | .dma_slave_rx = SHDMA_SLAVE_SDHI1_RX, |
1017 | .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE, | 1010 | .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_USE_GPIO_CD, |
1018 | .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | | 1011 | .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | |
1019 | MMC_CAP_NEEDS_POLL, | 1012 | MMC_CAP_NEEDS_POLL, |
1020 | .get_cd = slot_cn7_get_cd, | 1013 | .cd_gpio = 41, |
1021 | }; | 1014 | }; |
1022 | 1015 | ||
1023 | static struct resource sdhi1_resources[] = { | 1016 | static struct resource sdhi1_resources[] = { |
@@ -1052,23 +1045,19 @@ static struct platform_device sdhi1_device = { | |||
1052 | }; | 1045 | }; |
1053 | #endif | 1046 | #endif |
1054 | 1047 | ||
1048 | /* SDHI2 */ | ||
1049 | |||
1055 | /* | 1050 | /* |
1056 | * The card detect pin of the top SD/MMC slot (CN23) is active low and is | 1051 | * The card detect pin of the top SD/MMC slot (CN23) is active low and is |
1057 | * connected to GPIO SCIFB_SCK of SH7372 (162). | 1052 | * connected to GPIO SCIFB_SCK of SH7372 (GPIO 162). |
1058 | */ | 1053 | */ |
1059 | static int slot_cn23_get_cd(struct platform_device *pdev) | ||
1060 | { | ||
1061 | return !gpio_get_value(162); | ||
1062 | } | ||
1063 | |||
1064 | /* SDHI2 */ | ||
1065 | static struct sh_mobile_sdhi_info sdhi2_info = { | 1054 | static struct sh_mobile_sdhi_info sdhi2_info = { |
1066 | .dma_slave_tx = SHDMA_SLAVE_SDHI2_TX, | 1055 | .dma_slave_tx = SHDMA_SLAVE_SDHI2_TX, |
1067 | .dma_slave_rx = SHDMA_SLAVE_SDHI2_RX, | 1056 | .dma_slave_rx = SHDMA_SLAVE_SDHI2_RX, |
1068 | .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE, | 1057 | .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_USE_GPIO_CD, |
1069 | .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | | 1058 | .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | |
1070 | MMC_CAP_NEEDS_POLL, | 1059 | MMC_CAP_NEEDS_POLL, |
1071 | .get_cd = slot_cn23_get_cd, | 1060 | .cd_gpio = 162, |
1072 | }; | 1061 | }; |
1073 | 1062 | ||
1074 | static struct resource sdhi2_resources[] = { | 1063 | static struct resource sdhi2_resources[] = { |
@@ -1127,7 +1116,9 @@ static struct sh_mmcif_plat_data sh_mmcif_plat = { | |||
1127 | .caps = MMC_CAP_4_BIT_DATA | | 1116 | .caps = MMC_CAP_4_BIT_DATA | |
1128 | MMC_CAP_8_BIT_DATA | | 1117 | MMC_CAP_8_BIT_DATA | |
1129 | MMC_CAP_NEEDS_POLL, | 1118 | MMC_CAP_NEEDS_POLL, |
1130 | .get_cd = slot_cn7_get_cd, | 1119 | .use_cd_gpio = true, |
1120 | /* card detect pin for SD/MMC slot (CN7) */ | ||
1121 | .cd_gpio = 41, | ||
1131 | .slave_id_tx = SHDMA_SLAVE_MMCIF_TX, | 1122 | .slave_id_tx = SHDMA_SLAVE_MMCIF_TX, |
1132 | .slave_id_rx = SHDMA_SLAVE_MMCIF_RX, | 1123 | .slave_id_rx = SHDMA_SLAVE_MMCIF_RX, |
1133 | }; | 1124 | }; |
@@ -1475,12 +1466,6 @@ static void __init mackerel_init(void) | |||
1475 | /* SDHI0 PORT172 card-detect IRQ26 */ | 1466 | /* SDHI0 PORT172 card-detect IRQ26 */ |
1476 | gpio_request(GPIO_FN_IRQ26_172, NULL); | 1467 | gpio_request(GPIO_FN_IRQ26_172, NULL); |
1477 | 1468 | ||
1478 | /* card detect pin for MMC slot (CN7) */ | ||
1479 | gpio_request_one(41, GPIOF_IN, NULL); | ||
1480 | |||
1481 | /* card detect pin for microSD slot (CN23) */ | ||
1482 | gpio_request_one(162, GPIOF_IN, NULL); | ||
1483 | |||
1484 | /* FLCTL */ | 1469 | /* FLCTL */ |
1485 | gpio_request(GPIO_FN_D0_NAF0, NULL); | 1470 | gpio_request(GPIO_FN_D0_NAF0, NULL); |
1486 | gpio_request(GPIO_FN_D1_NAF1, NULL); | 1471 | gpio_request(GPIO_FN_D1_NAF1, NULL); |