aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorSimon Horman <horms+renesas@verge.net.au>2013-03-21 07:18:12 -0400
committerSimon Horman <horms+renesas@verge.net.au>2013-03-21 09:03:58 -0400
commitac22dde76c80a3ffa3c3c24cf16bb8076b20b767 (patch)
tree6b17d7f8305bf60b0931a4e9265ed0c097c55fe9 /arch
parenta463f731766e8273f44ba397233bfc7ecf752f98 (diff)
Revert "ARM: shmobile: streamline mackerel SD and MMC devices"
This reverts commit 626a645eb75415255aad3162f4da3f6988f0c8ec. This appears to be incompatible with "ARM: shmobile: sh7372: Remove SDHI and MMCIF function GPIOs" Reverting this change resolves the following build failure: arch/arm/mach-shmobile/board-mackerel.c: In function ‘mackerel_init’: arch/arm/mach-shmobile/board-mackerel.c:1468: error: ‘GPIO_FN_SDHICMD1’ undeclared (first use in this function) arch/arm/mach-shmobile/board-mackerel.c:1468: error: (Each undeclared identifier is reported only once arch/arm/mach-shmobile/board-mackerel.c:1468: error: for each function it appears in.) arch/arm/mach-shmobile/board-mackerel.c:1469: error: ‘GPIO_FN_SDHICLK1’ undeclared (first use in this function) arch/arm/mach-shmobile/board-mackerel.c:1470: error: ‘GPIO_FN_SDHID1_3’ undeclared (first use in this function) arch/arm/mach-shmobile/board-mackerel.c:1471: error: ‘GPIO_FN_SDHID1_2’ undeclared (first use in this function) arch/arm/mach-shmobile/board-mackerel.c:1472: error: ‘GPIO_FN_SDHID1_1’ undeclared (first use in this function) arch/arm/mach-shmobile/board-mackerel.c:1473: error: ‘GPIO_FN_SDHID1_0’ undeclared (first use in this function) arch/arm/mach-shmobile/board-mackerel.c:1489: error: ‘GPIO_FN_SDHICMD2’ undeclared (first use in this function) arch/arm/mach-shmobile/board-mackerel.c:1490: error: ‘GPIO_FN_SDHICLK2’ undeclared (first use in this function) arch/arm/mach-shmobile/board-mackerel.c:1491: error: ‘GPIO_FN_SDHID2_3’ undeclared (first use in this function) arch/arm/mach-shmobile/board-mackerel.c:1492: error: ‘GPIO_FN_SDHID2_2’ undeclared (first use in this function) arch/arm/mach-shmobile/board-mackerel.c:1493: error: ‘GPIO_FN_SDHID2_1’ undeclared (first use in this function) arch/arm/mach-shmobile/board-mackerel.c:1494: error: ‘GPIO_FN_SDHID2_0’ undeclared (first use in this function) Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-shmobile/board-mackerel.c113
1 files changed, 56 insertions, 57 deletions
diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c
index ef22ec4dafae..1a9c75383ca0 100644
--- a/arch/arm/mach-shmobile/board-mackerel.c
+++ b/arch/arm/mach-shmobile/board-mackerel.c
@@ -963,6 +963,15 @@ 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
966/* SDHI0 */ 975/* SDHI0 */
967static struct sh_mobile_sdhi_info sdhi0_info = { 976static struct sh_mobile_sdhi_info sdhi0_info = {
968 .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, 977 .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX,
@@ -973,21 +982,21 @@ static struct sh_mobile_sdhi_info sdhi0_info = {
973}; 982};
974 983
975static struct resource sdhi0_resources[] = { 984static struct resource sdhi0_resources[] = {
976 { 985 [0] = {
977 .name = "SDHI0", 986 .name = "SDHI0",
978 .start = 0xe6850000, 987 .start = 0xe6850000,
979 .end = 0xe68500ff, 988 .end = 0xe68500ff,
980 .flags = IORESOURCE_MEM, 989 .flags = IORESOURCE_MEM,
981 }, { 990 },
982 .name = SH_MOBILE_SDHI_IRQ_CARD_DETECT, 991 [1] = {
983 .start = evt2irq(0x0e00) /* SDHI0_SDHI0I0 */, 992 .start = evt2irq(0x0e00) /* SDHI0_SDHI0I0 */,
984 .flags = IORESOURCE_IRQ, 993 .flags = IORESOURCE_IRQ,
985 }, { 994 },
986 .name = SH_MOBILE_SDHI_IRQ_SDCARD, 995 [2] = {
987 .start = evt2irq(0x0e20) /* SDHI0_SDHI0I1 */, 996 .start = evt2irq(0x0e20) /* SDHI0_SDHI0I1 */,
988 .flags = IORESOURCE_IRQ, 997 .flags = IORESOURCE_IRQ,
989 }, { 998 },
990 .name = SH_MOBILE_SDHI_IRQ_SDIO, 999 [3] = {
991 .start = evt2irq(0x0e40) /* SDHI0_SDHI0I2 */, 1000 .start = evt2irq(0x0e40) /* SDHI0_SDHI0I2 */,
992 .flags = IORESOURCE_IRQ, 1001 .flags = IORESOURCE_IRQ,
993 }, 1002 },
@@ -1005,28 +1014,34 @@ static struct platform_device sdhi0_device = {
1005 1014
1006#if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE) 1015#if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE)
1007/* SDHI1 */ 1016/* SDHI1 */
1008
1009/* GPIO_PORT41 can trigger IRQ8, but it is used by USBHS1, we have to poll */
1010static struct sh_mobile_sdhi_info sdhi1_info = { 1017static struct sh_mobile_sdhi_info sdhi1_info = {
1011 .dma_slave_tx = SHDMA_SLAVE_SDHI1_TX, 1018 .dma_slave_tx = SHDMA_SLAVE_SDHI1_TX,
1012 .dma_slave_rx = SHDMA_SLAVE_SDHI1_RX, 1019 .dma_slave_rx = SHDMA_SLAVE_SDHI1_RX,
1013 .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_USE_GPIO_CD, 1020 .tmio_ocr_mask = MMC_VDD_165_195,
1021 .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE,
1014 .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | 1022 .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
1015 MMC_CAP_NEEDS_POLL, 1023 MMC_CAP_NEEDS_POLL,
1016 .cd_gpio = GPIO_PORT41, 1024 .get_cd = slot_cn7_get_cd,
1017}; 1025};
1018 1026
1019static struct resource sdhi1_resources[] = { 1027static struct resource sdhi1_resources[] = {
1020 { 1028 [0] = {
1021 .name = "SDHI1", 1029 .name = "SDHI1",
1022 .start = 0xe6860000, 1030 .start = 0xe6860000,
1023 .end = 0xe68600ff, 1031 .end = 0xe68600ff,
1024 .flags = IORESOURCE_MEM, 1032 .flags = IORESOURCE_MEM,
1025 }, { 1033 },
1034 [1] = {
1035 .name = SH_MOBILE_SDHI_IRQ_CARD_DETECT,
1036 .start = evt2irq(0x0e80), /* SDHI1_SDHI1I0 */
1037 .flags = IORESOURCE_IRQ,
1038 },
1039 [2] = {
1026 .name = SH_MOBILE_SDHI_IRQ_SDCARD, 1040 .name = SH_MOBILE_SDHI_IRQ_SDCARD,
1027 .start = evt2irq(0x0ea0), /* SDHI1_SDHI1I1 */ 1041 .start = evt2irq(0x0ea0), /* SDHI1_SDHI1I1 */
1028 .flags = IORESOURCE_IRQ, 1042 .flags = IORESOURCE_IRQ,
1029 }, { 1043 },
1044 [3] = {
1030 .name = SH_MOBILE_SDHI_IRQ_SDIO, 1045 .name = SH_MOBILE_SDHI_IRQ_SDIO,
1031 .start = evt2irq(0x0ec0), /* SDHI1_SDHI1I2 */ 1046 .start = evt2irq(0x0ec0), /* SDHI1_SDHI1I2 */
1032 .flags = IORESOURCE_IRQ, 1047 .flags = IORESOURCE_IRQ,
@@ -1044,32 +1059,43 @@ static struct platform_device sdhi1_device = {
1044}; 1059};
1045#endif 1060#endif
1046 1061
1047/* SDHI2 */
1048
1049/* 1062/*
1050 * The card detect pin of the top SD/MMC slot (CN23) is active low and is 1063 * The card detect pin of the top SD/MMC slot (CN23) is active low and is
1051 * connected to GPIO SCIFB_SCK of SH7372 (GPIO_PORT162). 1064 * connected to GPIO SCIFB_SCK of SH7372 (162).
1052 */ 1065 */
1066static int slot_cn23_get_cd(struct platform_device *pdev)
1067{
1068 return !gpio_get_value(162);
1069}
1070
1071/* SDHI2 */
1053static struct sh_mobile_sdhi_info sdhi2_info = { 1072static struct sh_mobile_sdhi_info sdhi2_info = {
1054 .dma_slave_tx = SHDMA_SLAVE_SDHI2_TX, 1073 .dma_slave_tx = SHDMA_SLAVE_SDHI2_TX,
1055 .dma_slave_rx = SHDMA_SLAVE_SDHI2_RX, 1074 .dma_slave_rx = SHDMA_SLAVE_SDHI2_RX,
1056 .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_USE_GPIO_CD, 1075 .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE,
1057 .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | 1076 .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
1058 MMC_CAP_NEEDS_POLL, 1077 MMC_CAP_NEEDS_POLL,
1059 .cd_gpio = GPIO_PORT162, 1078 .get_cd = slot_cn23_get_cd,
1060}; 1079};
1061 1080
1062static struct resource sdhi2_resources[] = { 1081static struct resource sdhi2_resources[] = {
1063 { 1082 [0] = {
1064 .name = "SDHI2", 1083 .name = "SDHI2",
1065 .start = 0xe6870000, 1084 .start = 0xe6870000,
1066 .end = 0xe68700ff, 1085 .end = 0xe68700ff,
1067 .flags = IORESOURCE_MEM, 1086 .flags = IORESOURCE_MEM,
1068 }, { 1087 },
1088 [1] = {
1089 .name = SH_MOBILE_SDHI_IRQ_CARD_DETECT,
1090 .start = evt2irq(0x1200), /* SDHI2_SDHI2I0 */
1091 .flags = IORESOURCE_IRQ,
1092 },
1093 [2] = {
1069 .name = SH_MOBILE_SDHI_IRQ_SDCARD, 1094 .name = SH_MOBILE_SDHI_IRQ_SDCARD,
1070 .start = evt2irq(0x1220), /* SDHI2_SDHI2I1 */ 1095 .start = evt2irq(0x1220), /* SDHI2_SDHI2I1 */
1071 .flags = IORESOURCE_IRQ, 1096 .flags = IORESOURCE_IRQ,
1072 }, { 1097 },
1098 [3] = {
1073 .name = SH_MOBILE_SDHI_IRQ_SDIO, 1099 .name = SH_MOBILE_SDHI_IRQ_SDIO,
1074 .start = evt2irq(0x1240), /* SDHI2_SDHI2I2 */ 1100 .start = evt2irq(0x1240), /* SDHI2_SDHI2I2 */
1075 .flags = IORESOURCE_IRQ, 1101 .flags = IORESOURCE_IRQ,
@@ -1108,12 +1134,11 @@ static struct resource sh_mmcif_resources[] = {
1108 1134
1109static struct sh_mmcif_plat_data sh_mmcif_plat = { 1135static struct sh_mmcif_plat_data sh_mmcif_plat = {
1110 .sup_pclk = 0, 1136 .sup_pclk = 0,
1137 .ocr = MMC_VDD_165_195 | MMC_VDD_32_33 | MMC_VDD_33_34,
1111 .caps = MMC_CAP_4_BIT_DATA | 1138 .caps = MMC_CAP_4_BIT_DATA |
1112 MMC_CAP_8_BIT_DATA | 1139 MMC_CAP_8_BIT_DATA |
1113 MMC_CAP_NEEDS_POLL, 1140 MMC_CAP_NEEDS_POLL,
1114 .use_cd_gpio = true, 1141 .get_cd = slot_cn7_get_cd,
1115 /* card detect pin for SD/MMC slot (CN7) */
1116 .cd_gpio = GPIO_PORT41,
1117 .slave_id_tx = SHDMA_SLAVE_MMCIF_TX, 1142 .slave_id_tx = SHDMA_SLAVE_MMCIF_TX,
1118 .slave_id_rx = SHDMA_SLAVE_MMCIF_RX, 1143 .slave_id_rx = SHDMA_SLAVE_MMCIF_RX,
1119}; 1144};
@@ -1238,10 +1263,9 @@ static struct platform_device *mackerel_devices[] __initdata = {
1238 &sdhi0_device, 1263 &sdhi0_device,
1239#if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE) 1264#if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE)
1240 &sdhi1_device, 1265 &sdhi1_device,
1241#else
1242 &sh_mmcif_device,
1243#endif 1266#endif
1244 &sdhi2_device, 1267 &sdhi2_device,
1268 &sh_mmcif_device,
1245 &ceu_device, 1269 &ceu_device,
1246 &mackerel_camera, 1270 &mackerel_camera,
1247 &hdmi_device, 1271 &hdmi_device,
@@ -1348,11 +1372,10 @@ static void __init mackerel_init(void)
1348 { "A3SP", &usbhs0_device, }, 1372 { "A3SP", &usbhs0_device, },
1349 { "A3SP", &usbhs1_device, }, 1373 { "A3SP", &usbhs1_device, },
1350 { "A3SP", &nand_flash_device, }, 1374 { "A3SP", &nand_flash_device, },
1375 { "A3SP", &sh_mmcif_device, },
1351 { "A3SP", &sdhi0_device, }, 1376 { "A3SP", &sdhi0_device, },
1352#if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE) 1377#if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE)
1353 { "A3SP", &sdhi1_device, }, 1378 { "A3SP", &sdhi1_device, },
1354#else
1355 { "A3SP", &sh_mmcif_device, },
1356#endif 1379#endif
1357 { "A3SP", &sdhi2_device, }, 1380 { "A3SP", &sdhi2_device, },
1358 { "A4R", &ceu_device, }, 1381 { "A4R", &ceu_device, },
@@ -1463,35 +1486,11 @@ static void __init mackerel_init(void)
1463 /* SDHI0 PORT172 card-detect IRQ26 */ 1486 /* SDHI0 PORT172 card-detect IRQ26 */
1464 gpio_request(GPIO_FN_IRQ26_172, NULL); 1487 gpio_request(GPIO_FN_IRQ26_172, NULL);
1465 1488
1466#if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE) 1489 /* card detect pin for MMC slot (CN7) */
1467 /* enable SDHI1 */ 1490 gpio_request_one(41, GPIOF_IN, NULL);
1468 gpio_request(GPIO_FN_SDHICMD1, NULL);
1469 gpio_request(GPIO_FN_SDHICLK1, NULL);
1470 gpio_request(GPIO_FN_SDHID1_3, NULL);
1471 gpio_request(GPIO_FN_SDHID1_2, NULL);
1472 gpio_request(GPIO_FN_SDHID1_1, NULL);
1473 gpio_request(GPIO_FN_SDHID1_0, NULL);
1474#else
1475 /* MMCIF */
1476 gpio_request(GPIO_FN_MMCD0_0, NULL);
1477 gpio_request(GPIO_FN_MMCD0_1, NULL);
1478 gpio_request(GPIO_FN_MMCD0_2, NULL);
1479 gpio_request(GPIO_FN_MMCD0_3, NULL);
1480 gpio_request(GPIO_FN_MMCD0_4, NULL);
1481 gpio_request(GPIO_FN_MMCD0_5, NULL);
1482 gpio_request(GPIO_FN_MMCD0_6, NULL);
1483 gpio_request(GPIO_FN_MMCD0_7, NULL);
1484 gpio_request(GPIO_FN_MMCCMD0, NULL);
1485 gpio_request(GPIO_FN_MMCCLK0, NULL);
1486#endif
1487 1491
1488 /* enable SDHI2 */ 1492 /* card detect pin for microSD slot (CN23) */
1489 gpio_request(GPIO_FN_SDHICMD2, NULL); 1493 gpio_request_one(162, GPIOF_IN, NULL);
1490 gpio_request(GPIO_FN_SDHICLK2, NULL);
1491 gpio_request(GPIO_FN_SDHID2_3, NULL);
1492 gpio_request(GPIO_FN_SDHID2_2, NULL);
1493 gpio_request(GPIO_FN_SDHID2_1, NULL);
1494 gpio_request(GPIO_FN_SDHID2_0, NULL);
1495 1494
1496 /* FLCTL */ 1495 /* FLCTL */
1497 gpio_request(GPIO_FN_D0_NAF0, NULL); 1496 gpio_request(GPIO_FN_D0_NAF0, NULL);