diff options
author | Arnd Bergmann <arnd@arndb.de> | 2013-03-22 08:41:45 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2013-03-22 08:41:45 -0400 |
commit | 271c8f9afae76a897408c277f9fae4c28bc0c64d (patch) | |
tree | 6b17d7f8305bf60b0931a4e9265ed0c097c55fe9 | |
parent | 8f07b1d580fdbbc21969319d4208a15f5280d04e (diff) | |
parent | ac22dde76c80a3ffa3c3c24cf16bb8076b20b767 (diff) |
Merge tag 'renesas-boards2-for-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/boards
From Simon Horman <horms+renesas@verge.net.au>:
Second round of Renesas ARM-based SoC board updates for v3.10
* Resolve a build regression on Mackerel by reverting
"ARM: shmobile: streamline mackerel SD and MMC devices"
* DTS cleanup and corrections for kzm9g/sh73a0 from Guennadi
* SDHI voltage regulator enhancements for kzm9g and armadillo800eva
from Guennadi
* tag 'renesas-boards2-for-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
Revert "ARM: shmobile: streamline mackerel SD and MMC devices"
ARM: shmobile: kzm9g-reference: fix device-tree bindings and device names
ARM: shmobile: kzm9g: add fixed voltage regulators for SDHI0 and SDHI2
ARM: shmobile: armadillo800eva: add a fixed voltage regulator for SDHI1
ARM: shmobile: sh73a0: move SDHI and MMCIF DT nodes to sh73a0.dtsi
ARM: shmobile: kzm9g: SDHI0 and SDHI1 use a 3.3V power supply
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-rw-r--r-- | arch/arm/boot/dts/sh73a0-kzm9g-reference.dts | 49 | ||||
-rw-r--r-- | arch/arm/boot/dts/sh73a0-reference.dtsi | 24 | ||||
-rw-r--r-- | arch/arm/boot/dts/sh73a0.dtsi | 44 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/board-armadillo800eva.c | 45 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/board-kzm9g-reference.c | 27 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/board-kzm9g.c | 78 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/board-mackerel.c | 113 |
7 files changed, 230 insertions, 150 deletions
diff --git a/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts b/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts index 7fad4b9b2f43..f33b5ccb7446 100644 --- a/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts +++ b/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts | |||
@@ -12,7 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | /dts-v1/; | 14 | /dts-v1/; |
15 | /include/ "sh73a0-reference.dtsi" | 15 | /include/ "sh73a0.dtsi" |
16 | 16 | ||
17 | / { | 17 | / { |
18 | model = "KZM-A9-GT"; | 18 | model = "KZM-A9-GT"; |
@@ -36,42 +36,31 @@ | |||
36 | regulator-boot-on; | 36 | regulator-boot-on; |
37 | }; | 37 | }; |
38 | 38 | ||
39 | reg_2p8v: regulator@1 { | 39 | reg_3p3v: regulator@1 { |
40 | compatible = "regulator-fixed"; | 40 | compatible = "regulator-fixed"; |
41 | regulator-name = "fixed-2.8V"; | 41 | regulator-name = "fixed-3.3V"; |
42 | regulator-min-microvolt = <2800000>; | 42 | regulator-min-microvolt = <3300000>; |
43 | regulator-max-microvolt = <2800000>; | 43 | regulator-max-microvolt = <3300000>; |
44 | regulator-always-on; | 44 | regulator-always-on; |
45 | regulator-boot-on; | 45 | regulator-boot-on; |
46 | }; | 46 | }; |
47 | |||
48 | sdhi0: sdhi@0xee100000 { | ||
49 | compatible = "renesas,shmobile-sdhi"; | ||
50 | reg = <0xee100000 0x100>; | ||
51 | interrupt-parent = <&gic>; | ||
52 | interrupts = <0 83 4 | ||
53 | 0 84 4 | ||
54 | 0 85 4>; | ||
55 | vmmc-supply = <®_2p8v>; | ||
56 | bus-width = <4>; | ||
57 | toshiba,mmc-has-idle-wait; | ||
58 | }; | ||
59 | |||
60 | sdhi2: sdhi@0xee140000 { | ||
61 | compatible = "renesas,shmobile-sdhi"; | ||
62 | reg = <0xee140000 0x100>; | ||
63 | interrupt-parent = <&gic>; | ||
64 | interrupts = <0 104 4 | ||
65 | 0 105 4>; | ||
66 | vmmc-supply = <®_2p8v>; | ||
67 | bus-width = <4>; | ||
68 | broken-cd; | ||
69 | toshiba,mmc-wrprotect-disable; | ||
70 | toshiba,mmc-has-idle-wait; | ||
71 | }; | ||
72 | }; | 47 | }; |
73 | 48 | ||
74 | &mmcif { | 49 | &mmcif { |
75 | bus-width = <8>; | 50 | bus-width = <8>; |
76 | vmmc-supply = <®_1p8v>; | 51 | vmmc-supply = <®_1p8v>; |
52 | status = "okay"; | ||
53 | }; | ||
54 | |||
55 | &sdhi0 { | ||
56 | vmmc-supply = <®_3p3v>; | ||
57 | bus-width = <4>; | ||
58 | status = "okay"; | ||
59 | }; | ||
60 | |||
61 | &sdhi2 { | ||
62 | vmmc-supply = <®_3p3v>; | ||
63 | bus-width = <4>; | ||
64 | broken-cd; | ||
65 | status = "okay"; | ||
77 | }; | 66 | }; |
diff --git a/arch/arm/boot/dts/sh73a0-reference.dtsi b/arch/arm/boot/dts/sh73a0-reference.dtsi deleted file mode 100644 index d4bb0125b2b2..000000000000 --- a/arch/arm/boot/dts/sh73a0-reference.dtsi +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | /* | ||
2 | * Device Tree Source for the SH73A0 SoC | ||
3 | * | ||
4 | * Copyright (C) 2012 Renesas Solutions Corp. | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public License | ||
7 | * version 2. This program is licensed "as is" without any warranty of any | ||
8 | * kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | /include/ "sh73a0.dtsi" | ||
12 | |||
13 | / { | ||
14 | compatible = "renesas,sh73a0"; | ||
15 | |||
16 | mmcif: mmcif@0x10010000 { | ||
17 | compatible = "renesas,sh-mmcif"; | ||
18 | reg = <0xe6bd0000 0x100>; | ||
19 | interrupt-parent = <&gic>; | ||
20 | interrupts = <0 140 0x4 | ||
21 | 0 141 0x4>; | ||
22 | reg-io-width = <4>; | ||
23 | }; | ||
24 | }; | ||
diff --git a/arch/arm/boot/dts/sh73a0.dtsi b/arch/arm/boot/dts/sh73a0.dtsi index 8a59465d0231..3e4d383ac6d9 100644 --- a/arch/arm/boot/dts/sh73a0.dtsi +++ b/arch/arm/boot/dts/sh73a0.dtsi | |||
@@ -97,4 +97,48 @@ | |||
97 | 0 189 0x4 | 97 | 0 189 0x4 |
98 | 0 190 0x4>; | 98 | 0 190 0x4>; |
99 | }; | 99 | }; |
100 | |||
101 | mmcif: mmcif@0x10010000 { | ||
102 | compatible = "renesas,sh-mmcif"; | ||
103 | reg = <0xe6bd0000 0x100>; | ||
104 | interrupt-parent = <&gic>; | ||
105 | interrupts = <0 140 0x4 | ||
106 | 0 141 0x4>; | ||
107 | reg-io-width = <4>; | ||
108 | status = "disabled"; | ||
109 | }; | ||
110 | |||
111 | sdhi0: sdhi@0xee100000 { | ||
112 | compatible = "renesas,r8a7740-sdhi"; | ||
113 | reg = <0xee100000 0x100>; | ||
114 | interrupt-parent = <&gic>; | ||
115 | interrupts = <0 83 4 | ||
116 | 0 84 4 | ||
117 | 0 85 4>; | ||
118 | cap-sd-highspeed; | ||
119 | status = "disabled"; | ||
120 | }; | ||
121 | |||
122 | /* SDHI1 and SDHI2 have no CD pins, no need for CD IRQ */ | ||
123 | sdhi1: sdhi@0xee120000 { | ||
124 | compatible = "renesas,r8a7740-sdhi"; | ||
125 | reg = <0xee120000 0x100>; | ||
126 | interrupt-parent = <&gic>; | ||
127 | interrupts = <0 88 4 | ||
128 | 0 89 4>; | ||
129 | toshiba,mmc-wrprotect-disable; | ||
130 | cap-sd-highspeed; | ||
131 | status = "disabled"; | ||
132 | }; | ||
133 | |||
134 | sdhi2: sdhi@0xee140000 { | ||
135 | compatible = "renesas,r8a7740-sdhi"; | ||
136 | reg = <0xee140000 0x100>; | ||
137 | interrupt-parent = <&gic>; | ||
138 | interrupts = <0 104 4 | ||
139 | 0 105 4>; | ||
140 | toshiba,mmc-wrprotect-disable; | ||
141 | cap-sd-highspeed; | ||
142 | status = "disabled"; | ||
143 | }; | ||
100 | }; | 144 | }; |
diff --git a/arch/arm/mach-shmobile/board-armadillo800eva.c b/arch/arm/mach-shmobile/board-armadillo800eva.c index f322a18b55b6..7a78f9486684 100644 --- a/arch/arm/mach-shmobile/board-armadillo800eva.c +++ b/arch/arm/mach-shmobile/board-armadillo800eva.c | |||
@@ -559,8 +559,6 @@ static struct platform_device gpio_keys_device = { | |||
559 | 559 | ||
560 | /* Fixed 3.3V regulator to be used by SDHI1, MMCIF */ | 560 | /* Fixed 3.3V regulator to be used by SDHI1, MMCIF */ |
561 | static struct regulator_consumer_supply fixed3v3_power_consumers[] = { | 561 | static struct regulator_consumer_supply fixed3v3_power_consumers[] = { |
562 | REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.1"), | ||
563 | REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.1"), | ||
564 | REGULATOR_SUPPLY("vmmc", "sh_mmcif"), | 562 | REGULATOR_SUPPLY("vmmc", "sh_mmcif"), |
565 | REGULATOR_SUPPLY("vqmmc", "sh_mmcif"), | 563 | REGULATOR_SUPPLY("vqmmc", "sh_mmcif"), |
566 | }; | 564 | }; |
@@ -645,6 +643,35 @@ static struct platform_device vccq_sdhi0 = { | |||
645 | }, | 643 | }, |
646 | }; | 644 | }; |
647 | 645 | ||
646 | /* Fixed 3.3V regulator to be used by SDHI1 */ | ||
647 | static struct regulator_consumer_supply vcc_sdhi1_consumers[] = { | ||
648 | REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.1"), | ||
649 | }; | ||
650 | |||
651 | static struct regulator_init_data vcc_sdhi1_init_data = { | ||
652 | .constraints = { | ||
653 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | ||
654 | }, | ||
655 | .num_consumer_supplies = ARRAY_SIZE(vcc_sdhi1_consumers), | ||
656 | .consumer_supplies = vcc_sdhi1_consumers, | ||
657 | }; | ||
658 | |||
659 | static struct fixed_voltage_config vcc_sdhi1_info = { | ||
660 | .supply_name = "SDHI1 Vcc", | ||
661 | .microvolts = 3300000, | ||
662 | .gpio = GPIO_PORT16, | ||
663 | .enable_high = 1, | ||
664 | .init_data = &vcc_sdhi1_init_data, | ||
665 | }; | ||
666 | |||
667 | static struct platform_device vcc_sdhi1 = { | ||
668 | .name = "reg-fixed-voltage", | ||
669 | .id = 2, | ||
670 | .dev = { | ||
671 | .platform_data = &vcc_sdhi1_info, | ||
672 | }, | ||
673 | }; | ||
674 | |||
648 | /* SDHI0 */ | 675 | /* SDHI0 */ |
649 | /* | 676 | /* |
650 | * FIXME | 677 | * FIXME |
@@ -658,7 +685,8 @@ static struct platform_device vccq_sdhi0 = { | |||
658 | static struct sh_mobile_sdhi_info sdhi0_info = { | 685 | static struct sh_mobile_sdhi_info sdhi0_info = { |
659 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, | 686 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, |
660 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, | 687 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, |
661 | .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ, | 688 | .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | |
689 | MMC_CAP_POWER_OFF_CARD, | ||
662 | .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_USE_GPIO_CD, | 690 | .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_USE_GPIO_CD, |
663 | .cd_gpio = GPIO_PORT167, | 691 | .cd_gpio = GPIO_PORT167, |
664 | }; | 692 | }; |
@@ -699,7 +727,8 @@ static struct platform_device sdhi0_device = { | |||
699 | static struct sh_mobile_sdhi_info sdhi1_info = { | 727 | static struct sh_mobile_sdhi_info sdhi1_info = { |
700 | .dma_slave_tx = SHDMA_SLAVE_SDHI1_TX, | 728 | .dma_slave_tx = SHDMA_SLAVE_SDHI1_TX, |
701 | .dma_slave_rx = SHDMA_SLAVE_SDHI1_RX, | 729 | .dma_slave_rx = SHDMA_SLAVE_SDHI1_RX, |
702 | .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ, | 730 | .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | |
731 | MMC_CAP_POWER_OFF_CARD, | ||
703 | .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_USE_GPIO_CD, | 732 | .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_USE_GPIO_CD, |
704 | /* Port72 cannot generate IRQs, will be used in polling mode. */ | 733 | /* Port72 cannot generate IRQs, will be used in polling mode. */ |
705 | .cd_gpio = GPIO_PORT72, | 734 | .cd_gpio = GPIO_PORT72, |
@@ -992,6 +1021,8 @@ static struct platform_device *eva_devices[] __initdata = { | |||
992 | &lcdc0_device, | 1021 | &lcdc0_device, |
993 | &gpio_keys_device, | 1022 | &gpio_keys_device, |
994 | &sh_eth_device, | 1023 | &sh_eth_device, |
1024 | &vcc_sdhi0, | ||
1025 | &vccq_sdhi0, | ||
995 | &sdhi0_device, | 1026 | &sdhi0_device, |
996 | &sh_mmcif_device, | 1027 | &sh_mmcif_device, |
997 | &hdmi_device, | 1028 | &hdmi_device, |
@@ -1002,8 +1033,6 @@ static struct platform_device *eva_devices[] __initdata = { | |||
1002 | &fsi_wm8978_device, | 1033 | &fsi_wm8978_device, |
1003 | &fsi_hdmi_device, | 1034 | &fsi_hdmi_device, |
1004 | &i2c_gpio_device, | 1035 | &i2c_gpio_device, |
1005 | &vcc_sdhi0, | ||
1006 | &vccq_sdhi0, | ||
1007 | }; | 1036 | }; |
1008 | 1037 | ||
1009 | static const struct pinctrl_map eva_pinctrl_map[] = { | 1038 | static const struct pinctrl_map eva_pinctrl_map[] = { |
@@ -1198,9 +1227,7 @@ static void __init eva_init(void) | |||
1198 | pinctrl_register_mappings(eva_sdhi1_pinctrl_map, | 1227 | pinctrl_register_mappings(eva_sdhi1_pinctrl_map, |
1199 | ARRAY_SIZE(eva_sdhi1_pinctrl_map)); | 1228 | ARRAY_SIZE(eva_sdhi1_pinctrl_map)); |
1200 | 1229 | ||
1201 | /* SDSLOT2_PON */ | 1230 | platform_device_register(&vcc_sdhi1); |
1202 | gpio_request_one(16, GPIOF_OUT_INIT_HIGH, NULL); | ||
1203 | |||
1204 | platform_device_register(&sdhi1_device); | 1231 | platform_device_register(&sdhi1_device); |
1205 | } | 1232 | } |
1206 | 1233 | ||
diff --git a/arch/arm/mach-shmobile/board-kzm9g-reference.c b/arch/arm/mach-shmobile/board-kzm9g-reference.c index e93473c84c56..aefa50d385b7 100644 --- a/arch/arm/mach-shmobile/board-kzm9g-reference.c +++ b/arch/arm/mach-shmobile/board-kzm9g-reference.c | |||
@@ -40,16 +40,16 @@ static unsigned long pin_pullup_conf[] = { | |||
40 | }; | 40 | }; |
41 | 41 | ||
42 | static const struct pinctrl_map kzm_pinctrl_map[] = { | 42 | static const struct pinctrl_map kzm_pinctrl_map[] = { |
43 | PIN_MAP_MUX_GROUP_DEFAULT("i2c-sh_mobile.3", "pfc-sh73a0", | 43 | PIN_MAP_MUX_GROUP_DEFAULT("e6826000.i2c", "pfc-sh73a0", |
44 | "i2c3_1", "i2c3"), | 44 | "i2c3_1", "i2c3"), |
45 | /* MMCIF */ | 45 | /* MMCIF */ |
46 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.0", "pfc-sh73a0", | 46 | PIN_MAP_MUX_GROUP_DEFAULT("e6bd0000.mmcif", "pfc-sh73a0", |
47 | "mmc0_data8_0", "mmc0"), | 47 | "mmc0_data8_0", "mmc0"), |
48 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.0", "pfc-sh73a0", | 48 | PIN_MAP_MUX_GROUP_DEFAULT("e6bd0000.mmcif", "pfc-sh73a0", |
49 | "mmc0_ctrl_0", "mmc0"), | 49 | "mmc0_ctrl_0", "mmc0"), |
50 | PIN_MAP_CONFIGS_PIN_DEFAULT("sh_mmcif.0", "pfc-sh73a0", | 50 | PIN_MAP_CONFIGS_PIN_DEFAULT("e6bd0000.mmcif", "pfc-sh73a0", |
51 | "PORT279", pin_pullup_conf), | 51 | "PORT279", pin_pullup_conf), |
52 | PIN_MAP_CONFIGS_GROUP_DEFAULT("sh_mmcif.0", "pfc-sh73a0", | 52 | PIN_MAP_CONFIGS_GROUP_DEFAULT("e6bd0000.mmcif", "pfc-sh73a0", |
53 | "mmc0_data8_0", pin_pullup_conf), | 53 | "mmc0_data8_0", pin_pullup_conf), |
54 | /* SCIFA4 */ | 54 | /* SCIFA4 */ |
55 | PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.4", "pfc-sh73a0", | 55 | PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.4", "pfc-sh73a0", |
@@ -57,18 +57,18 @@ static const struct pinctrl_map kzm_pinctrl_map[] = { | |||
57 | PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.4", "pfc-sh73a0", | 57 | PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.4", "pfc-sh73a0", |
58 | "scifa4_ctrl", "scifa4"), | 58 | "scifa4_ctrl", "scifa4"), |
59 | /* SDHI0 */ | 59 | /* SDHI0 */ |
60 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-sh73a0", | 60 | PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "pfc-sh73a0", |
61 | "sdhi0_data4", "sdhi0"), | 61 | "sdhi0_data4", "sdhi0"), |
62 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-sh73a0", | 62 | PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "pfc-sh73a0", |
63 | "sdhi0_ctrl", "sdhi0"), | 63 | "sdhi0_ctrl", "sdhi0"), |
64 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-sh73a0", | 64 | PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "pfc-sh73a0", |
65 | "sdhi0_cd", "sdhi0"), | 65 | "sdhi0_cd", "sdhi0"), |
66 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-sh73a0", | 66 | PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "pfc-sh73a0", |
67 | "sdhi0_wp", "sdhi0"), | 67 | "sdhi0_wp", "sdhi0"), |
68 | /* SDHI2 */ | 68 | /* SDHI2 */ |
69 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.2", "pfc-sh73a0", | 69 | PIN_MAP_MUX_GROUP_DEFAULT("ee140000.sdhi", "pfc-sh73a0", |
70 | "sdhi2_data4", "sdhi2"), | 70 | "sdhi2_data4", "sdhi2"), |
71 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.2", "pfc-sh73a0", | 71 | PIN_MAP_MUX_GROUP_DEFAULT("ee140000.sdhi", "pfc-sh73a0", |
72 | "sdhi2_ctrl", "sdhi2"), | 72 | "sdhi2_ctrl", "sdhi2"), |
73 | }; | 73 | }; |
74 | 74 | ||
@@ -80,10 +80,9 @@ static void __init kzm_init(void) | |||
80 | 80 | ||
81 | /* enable SD */ | 81 | /* enable SD */ |
82 | gpio_request(GPIO_FN_SDHI0_VCCQ_MC0_ON, NULL); | 82 | gpio_request(GPIO_FN_SDHI0_VCCQ_MC0_ON, NULL); |
83 | gpio_request_one(GPIO_PORT15, GPIOF_OUT_INIT_HIGH, NULL); /* power */ | 83 | gpio_request_one(15, GPIOF_OUT_INIT_HIGH, NULL); /* power */ |
84 | 84 | ||
85 | gpio_request(GPIO_FN_SDHICLK2, NULL); | 85 | gpio_request_one(14, GPIOF_OUT_INIT_HIGH, NULL); /* power */ |
86 | gpio_request_one(GPIO_PORT14, GPIOF_OUT_INIT_HIGH, NULL); /* power */ | ||
87 | 86 | ||
88 | #ifdef CONFIG_CACHE_L2X0 | 87 | #ifdef CONFIG_CACHE_L2X0 |
89 | /* Early BRESP enable, Shared attribute override enable, 64K*8way */ | 88 | /* Early BRESP enable, Shared attribute override enable, 64K*8way */ |
diff --git a/arch/arm/mach-shmobile/board-kzm9g.c b/arch/arm/mach-shmobile/board-kzm9g.c index d2ace3a9f603..77a66ac12417 100644 --- a/arch/arm/mach-shmobile/board-kzm9g.c +++ b/arch/arm/mach-shmobile/board-kzm9g.c | |||
@@ -375,13 +375,64 @@ static struct platform_device mmc_device = { | |||
375 | .resource = sh_mmcif_resources, | 375 | .resource = sh_mmcif_resources, |
376 | }; | 376 | }; |
377 | 377 | ||
378 | /* Fixed 2.8V regulators to be used by SDHI0 and SDHI2 */ | 378 | /* Fixed 3.3V regulators to be used by SDHI0 */ |
379 | static struct regulator_consumer_supply fixed2v8_power_consumers[] = | 379 | static struct regulator_consumer_supply vcc_sdhi0_consumers[] = |
380 | { | 380 | { |
381 | REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"), | 381 | REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"), |
382 | REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.0"), | 382 | }; |
383 | |||
384 | static struct regulator_init_data vcc_sdhi0_init_data = { | ||
385 | .constraints = { | ||
386 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | ||
387 | }, | ||
388 | .num_consumer_supplies = ARRAY_SIZE(vcc_sdhi0_consumers), | ||
389 | .consumer_supplies = vcc_sdhi0_consumers, | ||
390 | }; | ||
391 | |||
392 | static struct fixed_voltage_config vcc_sdhi0_info = { | ||
393 | .supply_name = "SDHI0 Vcc", | ||
394 | .microvolts = 3300000, | ||
395 | .gpio = 15, | ||
396 | .enable_high = 1, | ||
397 | .init_data = &vcc_sdhi0_init_data, | ||
398 | }; | ||
399 | |||
400 | static struct platform_device vcc_sdhi0 = { | ||
401 | .name = "reg-fixed-voltage", | ||
402 | .id = 0, | ||
403 | .dev = { | ||
404 | .platform_data = &vcc_sdhi0_info, | ||
405 | }, | ||
406 | }; | ||
407 | |||
408 | /* Fixed 3.3V regulators to be used by SDHI2 */ | ||
409 | static struct regulator_consumer_supply vcc_sdhi2_consumers[] = | ||
410 | { | ||
383 | REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.2"), | 411 | REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.2"), |
384 | REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.2"), | 412 | }; |
413 | |||
414 | static struct regulator_init_data vcc_sdhi2_init_data = { | ||
415 | .constraints = { | ||
416 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | ||
417 | }, | ||
418 | .num_consumer_supplies = ARRAY_SIZE(vcc_sdhi2_consumers), | ||
419 | .consumer_supplies = vcc_sdhi2_consumers, | ||
420 | }; | ||
421 | |||
422 | static struct fixed_voltage_config vcc_sdhi2_info = { | ||
423 | .supply_name = "SDHI2 Vcc", | ||
424 | .microvolts = 3300000, | ||
425 | .gpio = 14, | ||
426 | .enable_high = 1, | ||
427 | .init_data = &vcc_sdhi2_init_data, | ||
428 | }; | ||
429 | |||
430 | static struct platform_device vcc_sdhi2 = { | ||
431 | .name = "reg-fixed-voltage", | ||
432 | .id = 1, | ||
433 | .dev = { | ||
434 | .platform_data = &vcc_sdhi2_info, | ||
435 | }, | ||
385 | }; | 436 | }; |
386 | 437 | ||
387 | /* SDHI */ | 438 | /* SDHI */ |
@@ -389,8 +440,8 @@ static struct sh_mobile_sdhi_info sdhi0_info = { | |||
389 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, | 440 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, |
390 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, | 441 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, |
391 | .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT, | 442 | .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT, |
392 | .tmio_caps = MMC_CAP_SD_HIGHSPEED, | 443 | .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | |
393 | .tmio_ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29, | 444 | MMC_CAP_POWER_OFF_CARD, |
394 | }; | 445 | }; |
395 | 446 | ||
396 | static struct resource sdhi0_resources[] = { | 447 | static struct resource sdhi0_resources[] = { |
@@ -433,8 +484,7 @@ static struct sh_mobile_sdhi_info sdhi2_info = { | |||
433 | .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | | 484 | .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | |
434 | TMIO_MMC_USE_GPIO_CD | | 485 | TMIO_MMC_USE_GPIO_CD | |
435 | TMIO_MMC_WRPROTECT_DISABLE, | 486 | TMIO_MMC_WRPROTECT_DISABLE, |
436 | .tmio_caps = MMC_CAP_SD_HIGHSPEED, | 487 | .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_POWER_OFF_CARD, |
437 | .tmio_ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29, | ||
438 | .cd_gpio = 13, | 488 | .cd_gpio = 13, |
439 | }; | 489 | }; |
440 | 490 | ||
@@ -594,6 +644,8 @@ static struct platform_device *kzm_devices[] __initdata = { | |||
594 | &usbhs_device, | 644 | &usbhs_device, |
595 | &lcdc_device, | 645 | &lcdc_device, |
596 | &mmc_device, | 646 | &mmc_device, |
647 | &vcc_sdhi0, | ||
648 | &vcc_sdhi2, | ||
597 | &sdhi0_device, | 649 | &sdhi0_device, |
598 | &sdhi2_device, | 650 | &sdhi2_device, |
599 | &gpio_keys_device, | 651 | &gpio_keys_device, |
@@ -714,11 +766,9 @@ device_initcall(as3711_enable_lcdc_backlight); | |||
714 | 766 | ||
715 | static void __init kzm_init(void) | 767 | static void __init kzm_init(void) |
716 | { | 768 | { |
717 | regulator_register_always_on(0, "fixed-1.8V", fixed1v8_power_consumers, | 769 | regulator_register_always_on(2, "fixed-1.8V", fixed1v8_power_consumers, |
718 | ARRAY_SIZE(fixed1v8_power_consumers), 1800000); | 770 | ARRAY_SIZE(fixed1v8_power_consumers), 1800000); |
719 | regulator_register_always_on(1, "fixed-2.8V", fixed2v8_power_consumers, | 771 | regulator_register_fixed(3, dummy_supplies, ARRAY_SIZE(dummy_supplies)); |
720 | ARRAY_SIZE(fixed2v8_power_consumers), 2800000); | ||
721 | regulator_register_fixed(2, dummy_supplies, ARRAY_SIZE(dummy_supplies)); | ||
722 | 772 | ||
723 | pinctrl_register_mappings(kzm_pinctrl_map, ARRAY_SIZE(kzm_pinctrl_map)); | 773 | pinctrl_register_mappings(kzm_pinctrl_map, ARRAY_SIZE(kzm_pinctrl_map)); |
724 | 774 | ||
@@ -736,10 +786,6 @@ static void __init kzm_init(void) | |||
736 | 786 | ||
737 | /* enable SD */ | 787 | /* enable SD */ |
738 | gpio_request(GPIO_FN_SDHI0_VCCQ_MC0_ON, NULL); | 788 | gpio_request(GPIO_FN_SDHI0_VCCQ_MC0_ON, NULL); |
739 | gpio_request_one(15, GPIOF_OUT_INIT_HIGH, NULL); /* power */ | ||
740 | |||
741 | /* enable Micro SD */ | ||
742 | gpio_request_one(14, GPIOF_OUT_INIT_HIGH, NULL); /* power */ | ||
743 | 789 | ||
744 | #ifdef CONFIG_CACHE_L2X0 | 790 | #ifdef CONFIG_CACHE_L2X0 |
745 | /* Early BRESP enable, Shared attribute override enable, 64K*8way */ | 791 | /* Early BRESP enable, Shared attribute override enable, 64K*8way */ |
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 | */ | ||
970 | static int slot_cn7_get_cd(struct platform_device *pdev) | ||
971 | { | ||
972 | return !gpio_get_value(41); | ||
973 | } | ||
974 | |||
966 | /* SDHI0 */ | 975 | /* SDHI0 */ |
967 | static struct sh_mobile_sdhi_info sdhi0_info = { | 976 | static 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 | ||
975 | static struct resource sdhi0_resources[] = { | 984 | static 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 */ | ||
1010 | static struct sh_mobile_sdhi_info sdhi1_info = { | 1017 | static 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 | ||
1019 | static struct resource sdhi1_resources[] = { | 1027 | static 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 | */ |
1066 | static int slot_cn23_get_cd(struct platform_device *pdev) | ||
1067 | { | ||
1068 | return !gpio_get_value(162); | ||
1069 | } | ||
1070 | |||
1071 | /* SDHI2 */ | ||
1053 | static struct sh_mobile_sdhi_info sdhi2_info = { | 1072 | static 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 | ||
1062 | static struct resource sdhi2_resources[] = { | 1081 | static 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 | ||
1109 | static struct sh_mmcif_plat_data sh_mmcif_plat = { | 1135 | static 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); |