aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2015-07-08 09:15:22 -0400
committerOlof Johansson <olof@lixom.net>2015-07-14 05:15:57 -0400
commit1d8aca9df612f5751892fb2642d72536f2f48fd0 (patch)
treef4e66a320261ae1401fcb2f34a616ada1ce204ab
parent109978dea44e8416524e69f0e8888810fdf6e72c (diff)
ARM: ux500: fix MMC/SD card regression
Ux500 is regressing due to commit a21763a0b1e5a5ab8310f581886d04beadc16616 "pinctrl: nomadik: activate strict mux mode" which disallows Nomadik GPIO 5 to be muxed in as a level shifter voltage select pin, as it is currently described as being used for RX on UART1. The behaviour is correct, instead the hardware config has been incorrecly specified: UART1 is indeed unused on HREFv60plus and Snowball and that is why HREFv60plus can use the pins it would normally occupy as the voltage select line for the MMC/SD levelshifter (Snowball uses it for I2C4). The reason UART1 was anyway enabled on these platforms was probably to secure the port enumeration to userspace. This can be solved by using aliases (done in a separate patch) so we can now deactivate UART1 and let MMC/SD use it properly on HREFv60plus. We explicitly activate it only for the older HREFprev60 board. To complete, we set up the pin configuration for these pins properly in the sdi0 node. Cc: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Olof Johansson <olof@lixom.net>
-rw-r--r--arch/arm/boot/dts/ste-href.dtsi2
-rw-r--r--arch/arm/boot/dts/ste-hrefprev60.dtsi5
-rw-r--r--arch/arm/boot/dts/ste-hrefv60plus.dtsi25
-rw-r--r--arch/arm/boot/dts/ste-snowball.dts18
4 files changed, 45 insertions, 5 deletions
diff --git a/arch/arm/boot/dts/ste-href.dtsi b/arch/arm/boot/dts/ste-href.dtsi
index 744c1e3a744d..6d8ce154347e 100644
--- a/arch/arm/boot/dts/ste-href.dtsi
+++ b/arch/arm/boot/dts/ste-href.dtsi
@@ -32,11 +32,11 @@
32 status = "okay"; 32 status = "okay";
33 }; 33 };
34 34
35 /* This UART is unused and thus left disabled */
35 uart@80121000 { 36 uart@80121000 {
36 pinctrl-names = "default", "sleep"; 37 pinctrl-names = "default", "sleep";
37 pinctrl-0 = <&uart1_default_mode>; 38 pinctrl-0 = <&uart1_default_mode>;
38 pinctrl-1 = <&uart1_sleep_mode>; 39 pinctrl-1 = <&uart1_sleep_mode>;
39 status = "okay";
40 }; 40 };
41 41
42 uart@80007000 { 42 uart@80007000 {
diff --git a/arch/arm/boot/dts/ste-hrefprev60.dtsi b/arch/arm/boot/dts/ste-hrefprev60.dtsi
index 7f3975b58d16..b0278f4c486c 100644
--- a/arch/arm/boot/dts/ste-hrefprev60.dtsi
+++ b/arch/arm/boot/dts/ste-hrefprev60.dtsi
@@ -23,6 +23,11 @@
23 }; 23 };
24 24
25 soc { 25 soc {
26 /* Enable UART1 on this board */
27 uart@80121000 {
28 status = "okay";
29 };
30
26 i2c@80004000 { 31 i2c@80004000 {
27 tps61052@33 { 32 tps61052@33 {
28 compatible = "tps61052"; 33 compatible = "tps61052";
diff --git a/arch/arm/boot/dts/ste-hrefv60plus.dtsi b/arch/arm/boot/dts/ste-hrefv60plus.dtsi
index a4bc9e77d640..810cda743b6d 100644
--- a/arch/arm/boot/dts/ste-hrefv60plus.dtsi
+++ b/arch/arm/boot/dts/ste-hrefv60plus.dtsi
@@ -43,15 +43,26 @@
43 <&vaudio_hf_hrefv60_mode>, 43 <&vaudio_hf_hrefv60_mode>,
44 <&gbf_hrefv60_mode>, 44 <&gbf_hrefv60_mode>,
45 <&hdtv_hrefv60_mode>, 45 <&hdtv_hrefv60_mode>,
46 <&touch_hrefv60_mode>; 46 <&touch_hrefv60_mode>,
47 <&gpios_hrefv60_mode>;
47 48
48 sdi0 { 49 sdi0 {
49 /* SD card detect GPIO pin, extend default state */
50 sdi0_default_mode: sdi0_default { 50 sdi0_default_mode: sdi0_default {
51 /* SD card detect GPIO pin, extend default state */
51 default_hrefv60_cfg1 { 52 default_hrefv60_cfg1 {
52 pins = "GPIO95_E8"; 53 pins = "GPIO95_E8";
53 ste,config = <&gpio_in_pu>; 54 ste,config = <&gpio_in_pu>;
54 }; 55 };
56 /* VMMCI level-shifter enable */
57 default_hrefv60_cfg2 {
58 pins = "GPIO169_D22";
59 ste,config = <&gpio_out_lo>;
60 };
61 /* VMMCI level-shifter voltage select */
62 default_hrefv60_cfg3 {
63 pins = "GPIO5_AG6";
64 ste,config = <&gpio_out_hi>;
65 };
55 }; 66 };
56 }; 67 };
57 ipgpio { 68 ipgpio {
@@ -213,6 +224,16 @@
213 }; 224 };
214 }; 225 };
215 }; 226 };
227 gpios {
228 /* Dangling GPIO pins */
229 gpios_hrefv60_mode: gpios_hrefv60 {
230 default_cfg1 {
231 /* Normally UART1 RXD, now dangling */
232 pins = "GPIO4_AH6";
233 ste,config = <&in_pu>;
234 };
235 };
236 };
216 }; 237 };
217 }; 238 };
218}; 239};
diff --git a/arch/arm/boot/dts/ste-snowball.dts b/arch/arm/boot/dts/ste-snowball.dts
index acf14cebef81..32a5ccb14e7e 100644
--- a/arch/arm/boot/dts/ste-snowball.dts
+++ b/arch/arm/boot/dts/ste-snowball.dts
@@ -230,11 +230,11 @@
230 status = "okay"; 230 status = "okay";
231 }; 231 };
232 232
233 /* This UART is unused and thus left disabled */
233 uart@80121000 { 234 uart@80121000 {
234 pinctrl-names = "default", "sleep"; 235 pinctrl-names = "default", "sleep";
235 pinctrl-0 = <&uart1_default_mode>; 236 pinctrl-0 = <&uart1_default_mode>;
236 pinctrl-1 = <&uart1_sleep_mode>; 237 pinctrl-1 = <&uart1_sleep_mode>;
237 status = "okay";
238 }; 238 };
239 239
240 uart@80007000 { 240 uart@80007000 {
@@ -459,7 +459,21 @@
459 pins = "GPIO21_AB3"; /* DAT31DIR */ 459 pins = "GPIO21_AB3"; /* DAT31DIR */
460 ste,config = <&out_hi>; 460 ste,config = <&out_hi>;
461 }; 461 };
462 462 /* SD card detect GPIO pin, extend default state */
463 snowball_cfg2 {
464 pins = "GPIO218_AH11";
465 ste,config = <&gpio_in_pu>;
466 };
467 /* VMMCI level-shifter enable */
468 snowball_cfg3 {
469 pins = "GPIO217_AH12";
470 ste,config = <&gpio_out_lo>;
471 };
472 /* VMMCI level-shifter voltage select */
473 snowball_cfg4 {
474 pins = "GPIO228_AJ6";
475 ste,config = <&gpio_out_hi>;
476 };
463 }; 477 };
464 }; 478 };
465 ssp0 { 479 ssp0 {