aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>2013-03-29 17:05:50 -0400
committerSimon Horman <horms+renesas@verge.net.au>2013-04-02 21:50:43 -0400
commitfe0a14417bc95492621b45a3cf088ce53ee05c36 (patch)
tree1634e229e1d87059798c954f164a2392813d39e0
parent3f9efeecb4876661b952746c8bbe460682dce1ad (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.c39
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 */
970static int slot_cn7_get_cd(struct platform_device *pdev)
971{
972 return !gpio_get_value(41);
973}
974
975/* SDHI0 */ 966/* SDHI0 */
976static struct sh_mobile_sdhi_info sdhi0_info = { 967static 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 */
1014static struct sh_mobile_sdhi_info sdhi1_info = { 1007static 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
1023static struct resource sdhi1_resources[] = { 1016static 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 */
1059static int slot_cn23_get_cd(struct platform_device *pdev)
1060{
1061 return !gpio_get_value(162);
1062}
1063
1064/* SDHI2 */
1065static struct sh_mobile_sdhi_info sdhi2_info = { 1054static 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
1074static struct resource sdhi2_resources[] = { 1063static 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);