diff mbox series

mx6ul_14x14_evk: Fix SPL hang

Message ID 20200106142606.28339-1-festevam@gmail.com
State Superseded
Headers show
Series mx6ul_14x14_evk: Fix SPL hang | expand

Commit Message

Fabio Estevam Jan. 6, 2020, 2:26 p.m. UTC
Currently the following SPL hang is observed:

U-Boot SPL 2020.01-rc5-00079-g797eee36a1 (Jan 06 2020 - 11:24:09 -0300)         
Trying to boot from MMC1                                                        
Card did not respond to voltage select!                                         
spl: mmc init failed with error: -95                                            
SPL: failed to boot from all boot devices                                       
### ERROR ### Please RESET the board ### 

Fix it by moving the eSDHC1 initialization to SPL.

While at it, since this board uses DM_MMC all the esdhc board
code can be removed.

Signed-off-by: Fabio Estevam <festevam at gmail.com>
---
Hi,

Still get the following "no card present" error in U-Boot proper:

MMC:   FSL_SDHC: 0, FSL_SDHC: 1                                                 
Loading Environment from MMC... MMC: no card present                            
*** Warning - No block device, using default environment   

but this should be treated separately.

 .../mx6ul_14x14_evk/mx6ul_14x14_evk.c         | 175 ++----------------
 1 file changed, 20 insertions(+), 155 deletions(-)

Comments

Tom Rini Jan. 6, 2020, 3:06 p.m. UTC | #1
On Mon, Jan 06, 2020 at 11:26:06AM -0300, Fabio Estevam wrote:

> Currently the following SPL hang is observed:
> 
> U-Boot SPL 2020.01-rc5-00079-g797eee36a1 (Jan 06 2020 - 11:24:09 -0300)         
> Trying to boot from MMC1                                                        
> Card did not respond to voltage select!                                         
> spl: mmc init failed with error: -95                                            
> SPL: failed to boot from all boot devices                                       
> ### ERROR ### Please RESET the board ### 
> 
> Fix it by moving the eSDHC1 initialization to SPL.
> 
> While at it, since this board uses DM_MMC all the esdhc board
> code can be removed.
> 
> Signed-off-by: Fabio Estevam <festevam at gmail.com>
> ---
> Hi,
> 
> Still get the following "no card present" error in U-Boot proper:
> 
> MMC:   FSL_SDHC: 0, FSL_SDHC: 1                                                 
> Loading Environment from MMC... MMC: no card present                            
> *** Warning - No block device, using default environment   
> 
> but this should be treated separately.

Should this come in for the 2020.01 release then?  Thanks!
Fabio Estevam Jan. 6, 2020, 3:20 p.m. UTC | #2
Hi Tom,

On Mon, Jan 6, 2020 at 12:06 PM Tom Rini <trini at konsulko.com> wrote:

> Should this come in for the 2020.01 release then?  Thanks!

I don't have the U-Boot proper fix yet, so I think this patch can wait
and go into 2020.04.

Thanks
Fabio Estevam Jan. 7, 2020, 12:49 a.m. UTC | #3
Hi Tom,

On Mon, Jan 6, 2020 at 12:20 PM Fabio Estevam <festevam at gmail.com> wrote:

> I don't have the U-Boot proper fix yet, so I think this patch can wait
> and go into 2020.04.

I managed to fix the card detection problem in U-Boot proper and have
just sent a patch series.

Thanks
Heiko Schocher Jan. 8, 2020, 5:41 a.m. UTC | #4
Hi Fabio!

happy new year! Hope you are fine?

I just builded the newest mainline U-Boot code for the wandboard, and
I get:

U-Boot SPL 2020.01-tbot-00271-gd8a3f52 (Jan 08 2020 - 06:33:42 +0100)
Trying to boot from MMC1


U-Boot 2020.01-tbot-00271-gd8a3f52 (Jan 08 2020 - 06:33:42 +0100)

CPU:   Freescale i.MX6DL rev1.3 at 792 MHz
Reset cause: WDOG
DRAM:  1 GiB
PMIC:  pmic_get() ret -19
MMC:   FSL_SDHC: 2, FSL_SDHC: 1, FSL_SDHC: 0
Loading Environment from MMC... OK
In:    serial
Out:   serial
Err:   serial
Model: Wandboard i.MX6 Dual Lite Board rev B1
Board: Wandboard rev B1
Net:   Could not get PHY for FEC0: addr 1
Could not get PHY for FEC0: addr 1
No ethernet found.

Hit any key to stop autoboot:  0
=>

Ethernet does not work, also pmic setup seems buggy... Hmm pmic is not
detected, and later board revision is B1 instead D1... I think thats
the root cause of the problem...

Attached a bootlog from an older, working version [1].

Ok, I tried to bisect it, but bisecting does not work, as there are
commits, which does not build for wandboard :-(

Looking into git history, there is a commit from you:

commit 5b858582512883b8a85d74e108873f9beed1e954
Author: Fabio Estevam <festevam at gmail.com>
Date:   Wed Jun 12 12:34:40 2019 -0300

     wandboard: Add FIT image support

     After the transition to DM, only the mx6dl/solo wandboard
     is supported.

     Add FIT image support so that all the wandboard variants
     can be supported, like it was prior to the DM conversion.

     Successfully booted Linux on mx6q/solo/qp wandboards.

So it worked for you? I flashed the u-boot-fit-dtb.bin instead of
u-boot-dtb.bin, but this leads to:

resetting ...

U-Boot SPL 2020.01-tbot-00271-gd8a3f52 (Jan 08 2020 - 06:25:09 +0100)
Trying to boot from MMC1
mmc_load_image_raw_sector: mmc block read error
spl: ext4fs_open failed
spl_load_image_ext: error reading image u-boot-dtb.img, err - -1
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###

Same with u-boot-with-spl.imx flashed.

I am sure I make here something wrong... any ideas?

Attached also a working bootlog with an older version [1].

Thanks!

bye,
Heiko

[1] working U-Boot bootlog:
U-Boot SPL 2019.04-rc4-tbot-00111-gab8fc41 (Jan 08 2020 - 06:18:50 +0100)
Trying to boot from MMC1


U-Boot 2019.04-rc4-tbot-00111-gab8fc41 (Jan 08 2020 - 06:18:50 +0100)

CPU:   Freescale i.MX6DL rev1.3 at 792 MHz
Reset cause: WDOG
I2C:   ready
DRAM:  1 GiB
PMIC:  PFUZE100 ID=0x10
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... OK
No panel detected: default to HDMI
Display: HDMI (1024x768)
In:    serial
Out:   serial
Err:   serial
Board: Wandboard rev D1
Net:   FEC [PRIME]
Hit any key to stop autoboot:  0
=>
Fabio Estevam Jan. 8, 2020, 9:31 a.m. UTC | #5
Hi Heiko,

On Wed, Jan 8, 2020 at 2:41 AM Heiko Schocher <hs at denx.de> wrote:
>
> Hi Fabio!
>
> happy new year! Hope you are fine?
>
> I just builded the newest mainline U-Boot code for the wandboard, and
> I get:
>
> U-Boot SPL 2020.01-tbot-00271-gd8a3f52 (Jan 08 2020 - 06:33:42 +0100)
> Trying to boot from MMC1
>
>
> U-Boot 2020.01-tbot-00271-gd8a3f52 (Jan 08 2020 - 06:33:42 +0100)
>
> CPU:   Freescale i.MX6DL rev1.3 at 792 MHz
> Reset cause: WDOG
> DRAM:  1 GiB
> PMIC:  pmic_get() ret -19

I have already fixed this PMIC issue. Please try this series:
https://lists.denx.de/pipermail/u-boot/2019-December/393500.html

I thought it would reach 2020.01, but apparently it did not.

Regards,

Fabio Estevam
Fabio Estevam Jan. 8, 2020, 9:36 a.m. UTC | #6
Hi Heiko,

On Wed, Jan 8, 2020 at 6:31 AM Fabio Estevam <festevam at gmail.com> wrote:

> I have already fixed this PMIC issue. Please try this series:
> https://lists.denx.de/pipermail/u-boot/2019-December/393500.html

Actually the correct version is v3:
https://lists.denx.de/pipermail/u-boot/2019-December/393517.html

Please test v3.

Thanks
Stefano Babic Jan. 8, 2020, 9:54 a.m. UTC | #7
Hi Fabio, Heiko,

On 08/01/20 10:31, Fabio Estevam wrote:
> Hi Heiko,
> 
> On Wed, Jan 8, 2020 at 2:41 AM Heiko Schocher <hs at denx.de> wrote:
>>
>> Hi Fabio!
>>
>> happy new year! Hope you are fine?
>>
>> I just builded the newest mainline U-Boot code for the wandboard, and
>> I get:
>>
>> U-Boot SPL 2020.01-tbot-00271-gd8a3f52 (Jan 08 2020 - 06:33:42 +0100)
>> Trying to boot from MMC1
>>
>>
>> U-Boot 2020.01-tbot-00271-gd8a3f52 (Jan 08 2020 - 06:33:42 +0100)
>>
>> CPU:   Freescale i.MX6DL rev1.3 at 792 MHz
>> Reset cause: WDOG
>> DRAM:  1 GiB
>> PMIC:  pmic_get() ret -19
> 
> I have already fixed this PMIC issue. Please try this series:
> https://lists.denx.de/pipermail/u-boot/2019-December/393500.html
> 
> I thought it would reach 2020.01, but apparently it did not.
> 

Indeed, I am sure I have already worked and merged the series, but I
cannot find them, no idea why. I can just apply them now and push on
-master :-(

Regards,
Stefano
Heiko Schocher Jan. 8, 2020, 10:11 a.m. UTC | #8
Hello Stefano, Fabio,

Am 08.01.2020 um 10:54 schrieb Stefano Babic:
> Hi Fabio, Heiko,
> 
> On 08/01/20 10:31, Fabio Estevam wrote:
>> Hi Heiko,
>>
>> On Wed, Jan 8, 2020 at 2:41 AM Heiko Schocher <hs at denx.de> wrote:
>>>
>>> Hi Fabio!
>>>
>>> happy new year! Hope you are fine?
>>>
>>> I just builded the newest mainline U-Boot code for the wandboard, and
>>> I get:
>>>
>>> U-Boot SPL 2020.01-tbot-00271-gd8a3f52 (Jan 08 2020 - 06:33:42 +0100)
>>> Trying to boot from MMC1
>>>
>>>
>>> U-Boot 2020.01-tbot-00271-gd8a3f52 (Jan 08 2020 - 06:33:42 +0100)
>>>
>>> CPU:   Freescale i.MX6DL rev1.3 at 792 MHz
>>> Reset cause: WDOG
>>> DRAM:  1 GiB
>>> PMIC:  pmic_get() ret -19
>>
>> I have already fixed this PMIC issue. Please try this series:
>> https://lists.denx.de/pipermail/u-boot/2019-December/393500.html
>>
>> I thought it would reach 2020.01, but apparently it did not.
>>
> 
> Indeed, I am sure I have already worked and merged the series, but I
> cannot find them, no idea why. I can just apply them now and push on
> -master :-(

With this patch I see the same issue:

U-Boot SPL 2020.01-tbot-00273-g877a689 (Jan 08 2020 - 11:05:27 +0100)
Trying to boot from MMC1


U-Boot 2020.01-tbot-00273-g877a689 (Jan 08 2020 - 11:05:27 +0100)

CPU:   Freescale i.MX6DL rev1.3 at 792 MHz
Reset cause: WDOG
DRAM:  1 GiB
PMIC:  pmic_get() ret -19
MMC:   FSL_SDHC: 2, FSL_SDHC: 1, FSL_SDHC: 0
Loading Environment from MMC... *** Warning - bad CRC, using default environment

No panel detected: default to HDMI
Display: HDMI (1024x768)
In:    serial
Out:   serial
Err:   serial
Model: Wandboard i.MX6 Dual Lite Board rev B1
Board: Wandboard rev B1
Net:   Could not get PHY for FEC0: addr 1
No ethernet found.

Hit any key to stop autoboot:  0
=>

I try to dig into it ...

bye,
Heiko
Fabio Estevam Jan. 8, 2020, 7:52 p.m. UTC | #9
Hi Heiko,

On Wed, Jan 8, 2020 at 2:41 AM Heiko Schocher <hs at denx.de> wrote:

> Looking into git history, there is a commit from you:
>
> commit 5b858582512883b8a85d74e108873f9beed1e954
> Author: Fabio Estevam <festevam at gmail.com>
> Date:   Wed Jun 12 12:34:40 2019 -0300
>
>      wandboard: Add FIT image support
>
>      After the transition to DM, only the mx6dl/solo wandboard
>      is supported.
>
>      Add FIT image support so that all the wandboard variants
>      can be supported, like it was prior to the DM conversion.
>
>      Successfully booted Linux on mx6q/solo/qp wandboards.
>
> So it worked for you? I flashed the u-boot-fit-dtb.bin instead of
> u-boot-dtb.bin, but this leads to:

Just tested the latest u-boot-imx, which contains the PMIC fix and
booting a imx6qp-wandboard-revd1 works fine:
http://code.bulix.org/pncucj-1073321

This is the only revd1 wandboard I have access to.

I flashed the SD card as per the board/wandboard/README instructions.

Ethernet is also functional in U-Boot.

The support for imx6q-wandboard-revd1 and imx6dl-wandboard-revd1 still
needs to be added (it used to work prior to the DM conversion as you
noticed), but unfortunately I don't have access to these variants.

Regards,

Fabio Estevam



>
> resetting ...
>
> U-Boot SPL 2020.01-tbot-00271-gd8a3f52 (Jan 08 2020 - 06:25:09 +0100)
> Trying to boot from MMC1
> mmc_load_image_raw_sector: mmc block read error
> spl: ext4fs_open failed
> spl_load_image_ext: error reading image u-boot-dtb.img, err - -1
> SPL: failed to boot from all boot devices
> ### ERROR ### Please RESET the board ###
>
> Same with u-boot-with-spl.imx flashed.
>
> I am sure I make here something wrong... any ideas?
>
> Attached also a working bootlog with an older version [1].
>
> Thanks!
>
> bye,
> Heiko
>
> [1] working U-Boot bootlog:
> U-Boot SPL 2019.04-rc4-tbot-00111-gab8fc41 (Jan 08 2020 - 06:18:50 +0100)
> Trying to boot from MMC1
>
>
> U-Boot 2019.04-rc4-tbot-00111-gab8fc41 (Jan 08 2020 - 06:18:50 +0100)
>
> CPU:   Freescale i.MX6DL rev1.3 at 792 MHz
> Reset cause: WDOG
> I2C:   ready
> DRAM:  1 GiB
> PMIC:  PFUZE100 ID=0x10
> MMC:   FSL_SDHC: 0, FSL_SDHC: 1
> Loading Environment from MMC... OK
> No panel detected: default to HDMI
> Display: HDMI (1024x768)
> In:    serial
> Out:   serial
> Err:   serial
> Board: Wandboard rev D1
> Net:   FEC [PRIME]
> Hit any key to stop autoboot:  0
> =>
>
> --
> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: +49-8142-66989-52   Fax: +49-8142-66989-80   Email: hs at denx.de
Fabio Estevam Jan. 8, 2020, 8:26 p.m. UTC | #10
Hi Heiko,

On Wed, Jan 8, 2020 at 4:52 PM Fabio Estevam <festevam at gmail.com> wrote:

> The support for imx6q-wandboard-revd1 and imx6dl-wandboard-revd1 still
> needs to be added (it used to work prior to the DM conversion as you
> noticed), but unfortunately I don't have access to these variants.

Could you please try the attached two patches?

I don't have access to a imx6dl-wandboard-revd1 board, but hopefully
these two patches would make it to work.

It applies against the latest u-boot-imx tree.

Thanks
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-wandboardrevd1.patch
Type: text/x-patch
Size: 2625 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200108/94eea987/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-revd1dtb.patch
Type: text/x-patch
Size: 2135 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200108/94eea987/attachment-0001.bin>
diff mbox series

Patch

diff --git a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
index 898da34729..086e0e6739 100644
--- a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
+++ b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
@@ -36,14 +36,6 @@  DECLARE_GLOBAL_DATA_PTR;
 	PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED |		\
 	PAD_CTL_DSE_40ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
 
-#define USDHC_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE |		\
-	PAD_CTL_PUS_22K_UP  | PAD_CTL_SPEED_LOW |		\
-	PAD_CTL_DSE_80ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
-
-#define USDHC_DAT3_CD_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE |	\
-	PAD_CTL_PUS_100K_DOWN  | PAD_CTL_SPEED_LOW |		\
-	PAD_CTL_DSE_80ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
-
 #define I2C_PAD_CTRL    (PAD_CTL_PKE | PAD_CTL_PUE |            \
 	PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED |               \
 	PAD_CTL_DSE_40ohm | PAD_CTL_HYS |			\
@@ -112,67 +104,6 @@  static iomux_v3_cfg_t const uart1_pads[] = {
 	MX6_PAD_UART1_RX_DATA__UART1_DCE_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
 };
 
-static iomux_v3_cfg_t const usdhc1_pads[] = {
-	MX6_PAD_SD1_CLK__USDHC1_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_SD1_CMD__USDHC1_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_SD1_DATA0__USDHC1_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_SD1_DATA1__USDHC1_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_SD1_DATA2__USDHC1_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_SD1_DATA3__USDHC1_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-
-	/* VSELECT */
-	MX6_PAD_GPIO1_IO05__USDHC1_VSELECT | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	/* CD */
-	MX6_PAD_UART1_RTS_B__GPIO1_IO19 | MUX_PAD_CTRL(NO_PAD_CTRL),
-	/* RST_B */
-	MX6_PAD_GPIO1_IO09__GPIO1_IO09 | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-/*
- * mx6ul_14x14_evk board default supports sd card. If want to use
- * EMMC, need to do board rework for sd2.
- * Introduce CONFIG_MX6UL_14X14_EVK_EMMC_REWORK, if sd2 reworked to support
- * emmc, need to define this macro.
- */
-#if defined(CONFIG_MX6UL_14X14_EVK_EMMC_REWORK)
-static iomux_v3_cfg_t const usdhc2_emmc_pads[] = {
-	MX6_PAD_NAND_RE_B__USDHC2_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_NAND_WE_B__USDHC2_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_NAND_DATA00__USDHC2_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_NAND_DATA01__USDHC2_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_NAND_DATA02__USDHC2_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_NAND_DATA03__USDHC2_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_NAND_DATA04__USDHC2_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_NAND_DATA05__USDHC2_DATA5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_NAND_DATA06__USDHC2_DATA6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_NAND_DATA07__USDHC2_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-
-	/*
-	 * RST_B
-	 */
-	MX6_PAD_NAND_ALE__GPIO4_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-#else
-static iomux_v3_cfg_t const usdhc2_pads[] = {
-	MX6_PAD_NAND_RE_B__USDHC2_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_NAND_WE_B__USDHC2_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_NAND_DATA00__USDHC2_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_NAND_DATA01__USDHC2_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_NAND_DATA02__USDHC2_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-	MX6_PAD_NAND_DATA03__USDHC2_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-};
-
-/*
- * The evk board uses DAT3 to detect CD card plugin,
- * in u-boot we mux the pin to GPIO when doing board_mmc_getcd.
- */
-static iomux_v3_cfg_t const usdhc2_cd_pad =
-	MX6_PAD_NAND_DATA03__GPIO4_IO05 | MUX_PAD_CTRL(USDHC_DAT3_CD_PAD_CTRL);
-
-static iomux_v3_cfg_t const usdhc2_dat3_pad =
-	MX6_PAD_NAND_DATA03__USDHC2_DATA3 |
-	MUX_PAD_CTRL(USDHC_DAT3_CD_PAD_CTRL);
-#endif
 
 static void setup_iomux_uart(void)
 {
@@ -189,101 +120,35 @@  static int board_qspi_init(void)
 }
 #endif
 
-#ifdef CONFIG_FSL_ESDHC_IMX
-static struct fsl_esdhc_cfg usdhc_cfg[2] = {
-	{USDHC1_BASE_ADDR, 0, 4},
-#if defined(CONFIG_MX6UL_14X14_EVK_EMMC_REWORK)
-	{USDHC2_BASE_ADDR, 0, 8},
-#else
-	{USDHC2_BASE_ADDR, 0, 4},
-#endif
+#ifdef CONFIG_SPL_BUILD
+
+#define USDHC_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE |		\
+	PAD_CTL_PUS_22K_UP  | PAD_CTL_SPEED_LOW |		\
+	PAD_CTL_DSE_80ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
+
+static iomux_v3_cfg_t const usdhc2_pads[] = {
+	MX6_PAD_NAND_RE_B__USDHC2_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+	MX6_PAD_NAND_WE_B__USDHC2_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+	MX6_PAD_NAND_DATA00__USDHC2_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+	MX6_PAD_NAND_DATA01__USDHC2_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+	MX6_PAD_NAND_DATA02__USDHC2_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+	MX6_PAD_NAND_DATA03__USDHC2_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
 };
 
-#define USDHC1_CD_GPIO	IMX_GPIO_NR(1, 19)
-#define USDHC1_PWR_GPIO	IMX_GPIO_NR(1, 9)
-#define USDHC2_CD_GPIO	IMX_GPIO_NR(4, 5)
-#define USDHC2_PWR_GPIO	IMX_GPIO_NR(4, 10)
+static struct fsl_esdhc_cfg usdhc_cfg[1] = {
+	{USDHC2_BASE_ADDR, 0, 4},
+};
 
 int board_mmc_getcd(struct mmc *mmc)
 {
-	struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
-	int ret = 0;
-
-	switch (cfg->esdhc_base) {
-	case USDHC1_BASE_ADDR:
-		ret = !gpio_get_value(USDHC1_CD_GPIO);
-		break;
-	case USDHC2_BASE_ADDR:
-#if defined(CONFIG_MX6UL_14X14_EVK_EMMC_REWORK)
-		ret = 1;
-#else
-		imx_iomux_v3_setup_pad(usdhc2_cd_pad);
-		gpio_request(USDHC2_CD_GPIO, "usdhc2 cd");
-		gpio_direction_input(USDHC2_CD_GPIO);
-
-		/*
-		 * Since it is the DAT3 pin, this pin is pulled to
-		 * low voltage if no card
-		 */
-		ret = gpio_get_value(USDHC2_CD_GPIO);
-
-		imx_iomux_v3_setup_pad(usdhc2_dat3_pad);
-#endif
-		break;
-	}
-
-	return ret;
+	return 1;
 }
 
 int board_mmc_init(bd_t *bis)
 {
-	int i, ret;
-
-	/*
-	 * According to the board_mmc_init() the following map is done:
-	 * (U-Boot device node)    (Physical Port)
-	 * mmc0                    USDHC1
-	 * mmc1                    USDHC2
-	 */
-	for (i = 0; i < CONFIG_SYS_FSL_USDHC_NUM; i++) {
-		switch (i) {
-		case 0:
-			imx_iomux_v3_setup_multiple_pads(
-				usdhc1_pads, ARRAY_SIZE(usdhc1_pads));
-			gpio_request(USDHC1_CD_GPIO, "usdhc1 cd");
-			gpio_direction_input(USDHC1_CD_GPIO);
-			usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
-
-			gpio_direction_output(USDHC1_PWR_GPIO, 0);
-			udelay(500);
-			gpio_direction_output(USDHC1_PWR_GPIO, 1);
-			break;
-		case 1:
-#if defined(CONFIG_MX6UL_14X14_EVK_EMMC_REWORK)
-			imx_iomux_v3_setup_multiple_pads(
-				usdhc2_emmc_pads, ARRAY_SIZE(usdhc2_emmc_pads));
-#else
-			imx_iomux_v3_setup_multiple_pads(
-				usdhc2_pads, ARRAY_SIZE(usdhc2_pads));
-#endif
-			gpio_request(USDHC2_PWR_GPIO, "usdhc2 pwr");
-			gpio_direction_output(USDHC2_PWR_GPIO, 0);
-			udelay(500);
-			gpio_direction_output(USDHC2_PWR_GPIO, 1);
-			usdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
-			break;
-		default:
-			printf("Warning: you configured more USDHC controllers (%d) than supported by the board\n", i + 1);
-			return -EINVAL;
-			}
-
-			ret = fsl_esdhc_initialize(bis, &usdhc_cfg[i]);
-			if (ret) {
-				printf("Warning: failed to initialize mmc dev %d\n", i);
-				return ret;
-			}
-	}
-	return 0;
+	imx_iomux_v3_setup_multiple_pads(usdhc2_pads, ARRAY_SIZE(usdhc2_pads));
+	usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
+	return fsl_esdhc_initialize(bis, &usdhc_cfg[0]);
 }
 #endif