Re: [PATCH 3/3] ARM: dts: imx6sx-udoo-neo: Add SD

From: Andreas FÃrber
Date: Mon Aug 08 2016 - 11:00:51 EST


Am 08.08.2016 um 16:12 schrieb Shawn Guo:
> On Tue, Jul 05, 2016 at 06:04:10AM +0200, Andreas Färber wrote:
>> Enable the SDHC node and model the SDIO_PWR GPIO as a regulator.
>> Use the SD card as default trigger for the red LED.
>>
>> Cc: Ettore Chimenti <ettore.chimenti@xxxxxxxx>
>> Signed-off-by: Andreas Färber <afaerber@xxxxxxx>
>> ---
>>
>>
>> arch/arm/boot/dts/imx6sx-udoo-neo.dtsi | 34 ++++++++++++++++++++++++++++++++++
>> 1 file changed, 34 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/imx6sx-udoo-neo.dtsi b/arch/arm/boot/dts/imx6sx-udoo-neo.dtsi
>> index e074409644d8..85f5e8606dab 100644
>> --- a/arch/arm/boot/dts/imx6sx-udoo-neo.dtsi
>> +++ b/arch/arm/boot/dts/imx6sx-udoo-neo.dtsi
>> @@ -56,6 +56,7 @@
>> label = "udoo-neo:red:mmc";
>> gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>;
>> default-state = "off";
>> + linux,default-trigger = "mmc0";
>> };
>>
>> orange {
>> @@ -64,6 +65,17 @@
>> default-state = "keep";
>> };
>> };
>> +
>> + sdio_pwr_reg: sd-gpio-regulator {
>> + compatible = "regulator-fixed";
>> + gpio = <&gpio6 1 GPIO_ACTIVE_HIGH>;
>> + enable-active-high;
>> + regulator-name = "SDIO_PWR";
>> + regulator-min-microvolt = <3300000>;
>> + regulator-max-microvolt = <3300000>;
>> + regulator-boot-on;
>> + regulator-always-on;
>> + };
>
> Is it correct to model SDIO power control GPIO as a boot-on and
> always-on fixed regulator? It will be powered-on even when SDIO driver
> is not enabled or loaded.

AFAIR the issue was that the driver does not use any -supply properties
where we could hook this regulator up for enabling. So modeling it as an
always-on regulator seemed like the only way to ensure it gets enabled
without relying on the bootloader?

Note that the board boots U-Boot from SD, so it is somewhat likely that
the rootfs will be on SD, too.

Do you spot anything missing or wrong on the SD node below that would
explain the reliability issues described in the cover letter?

Regards,
Andreas

P.S. Thanks for picking up 1/3 - was waiting on that for preparing a v2.

>> };
>>
>> &cpu0 {
>> @@ -230,6 +242,17 @@
>> <MX6SX_PAD_CSI_DATA06__UART6_RTS_B 0x1b0b1>,
>> <MX6SX_PAD_CSI_DATA07__UART6_CTS_B 0x1b0b1>;
>> };
>> +
>> + pinctrl_usdhc2: usdhc2grp {
>> + fsl,pins =
>> + <MX6SX_PAD_SD2_CMD__USDHC2_CMD 0x17059>,
>> + <MX6SX_PAD_SD2_CLK__USDHC2_CLK 0x10059>,
>> + <MX6SX_PAD_SD2_DATA0__USDHC2_DATA0 0x17059>,
>> + <MX6SX_PAD_SD2_DATA1__USDHC2_DATA1 0x17059>,
>> + <MX6SX_PAD_SD2_DATA2__USDHC2_DATA2 0x17059>,
>> + <MX6SX_PAD_SD2_DATA3__USDHC2_DATA3 0x17059>,
>> + <MX6SX_PAD_SD1_DATA0__GPIO6_IO_2 0x17059>; /* CD */
>> + };
>> };
>> };
>>
>> @@ -259,3 +282,14 @@
>> uart-has-rtscts;
>> status = "disabled";
>> };
>> +
>> +&usdhc2 {
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&pinctrl_usdhc2>;
>> + bus-width = <4>;
>> + cd-gpios = <&gpio6 2 GPIO_ACTIVE_LOW>;
>> + no-1-8-v;
>> + keep-power-in-suspend;
>> + wakeup-source;
>> + status = "okay";
>> +};

--
SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)