Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: exynos: Fix pinctrl definition for eMMC RTSN line on Odroid X2/U3

Commit 225da7e65a03 ("ARM: dts: add eMMC reset line for
exynos4412-odroid-common") added MMC power sequence for eMMC card of
Odroid X2/U3. It reused generic sd1_cd pin control configuration node
and only disabled pull-up. However that time the pinctrl configuration
was not applied during MMC power sequence driver initialization. This
has been changed later by commit d97a1e5d7cd2 ("mmc: pwrseq: convert to
proper platform device").

It turned out then, that the provided pinctrl configuration is not
correct, because the eMMC_RTSN line is being re-configured as 'special
function/card detect function for mmc1 controller' not the simple
'output', thus the power sequence driver doesn't really set the pin
value. This in effect broke the reboot of Odroid X2/U3 boards. Fix this
by providing separate node with eMMC_RTSN pin configuration.

Cc: <stable@vger.kernel.org>
Reported-by: Markus Reichl <m.reichl@fivetechno.de>
Suggested-by: Ulf Hansson <ulf.hansson@linaro.org>
Fixes: 225da7e65a03 ("ARM: dts: add eMMC reset line for exynos4412-odroid-common")
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>

authored by

Marek Szyprowski and committed by
Krzysztof Kozlowski
ec33745b 0b94260a

+6 -7
+6 -7
arch/arm/boot/dts/exynos4412-odroid-common.dtsi
··· 49 49 }; 50 50 51 51 emmc_pwrseq: pwrseq { 52 - pinctrl-0 = <&sd1_cd>; 52 + pinctrl-0 = <&emmc_rstn>; 53 53 pinctrl-names = "default"; 54 54 compatible = "mmc-pwrseq-emmc"; 55 55 reset-gpios = <&gpk1 2 GPIO_ACTIVE_LOW>; ··· 165 165 cpu0-supply = <&buck2_reg>; 166 166 }; 167 167 168 - /* RSTN signal for eMMC */ 169 - &sd1_cd { 170 - samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 171 - samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 172 - }; 173 - 174 168 &pinctrl_1 { 175 169 gpio_power_key: power_key { 176 170 samsung,pins = "gpx1-3"; ··· 181 187 hdmi_hpd: hdmi-hpd { 182 188 samsung,pins = "gpx3-7"; 183 189 samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>; 190 + }; 191 + 192 + emmc_rstn: emmc-rstn { 193 + samsung,pins = "gpk1-2"; 194 + samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 184 195 }; 185 196 }; 186 197