How to take eMMC out of reset (SD3_RST line active low) on i.MX6Q

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to take eMMC out of reset (SD3_RST line active low) on i.MX6Q

3,089 Views
colinwernham
Contributor II

This is for a carrier board (similar to a stripped down hummingboard) using the uboot mx6_cubox-i config.

I am trying to get the uboot to access an eMMC device on SDIO3, but it remains in reset (the SD3_RST line pin remains low) even though I set the GPIO7_IO8 to be high.

From the uboot prompt I can see the device, but selecting the device with 'mmc dev 1' hangs, because the device is in reset.

Here's the relevant code in the uboot board_mmc_init():

     MX6QDL_SET_PAD(PAD_SD3_CLK__USDHC3_CLK   , MUX_PAD_CTRL(USDHC_PAD_CTRL));

     MX6QDL_SET_PAD(PAD_SD3_CMD__USDHC3_CMD   , MUX_PAD_CTRL(USDHC_PAD_CTRL));

     MX6QDL_SET_PAD(PAD_SD3_DAT0__USDHC3_DAT0 , MUX_PAD_CTRL(USDHC_PAD_CTRL));

     MX6QDL_SET_PAD(PAD_SD3_DAT1__USDHC3_DAT1 , MUX_PAD_CTRL(USDHC_PAD_CTRL));

     MX6QDL_SET_PAD(PAD_SD3_DAT2__USDHC3_DAT2 , MUX_PAD_CTRL(USDHC_PAD_CTRL));

     MX6QDL_SET_PAD(PAD_SD3_DAT3__USDHC3_DAT3 , MUX_PAD_CTRL(USDHC_PAD_CTRL));

     MX6QDL_SET_PAD(PAD_SD3_DAT4__USDHC3_DAT4 , MUX_PAD_CTRL(USDHC_PAD_CTRL));

     MX6QDL_SET_PAD(PAD_SD3_DAT5__USDHC3_DAT5 , MUX_PAD_CTRL(USDHC_PAD_CTRL));

     MX6QDL_SET_PAD(PAD_SD3_DAT6__USDHC3_DAT6 , MUX_PAD_CTRL(USDHC_PAD_CTRL));

     MX6QDL_SET_PAD(PAD_SD3_DAT7__USDHC3_DAT7 , MUX_PAD_CTRL(USDHC_PAD_CTRL));

     MX6QDL_SET_PAD(PAD_SD3_RST__USDHC3_RST   , MUX_PAD_CTRL(USDHC_PAD_CTRL));

     usdhc3_cfg.max_bus_width = 8;

     usdhc3_cfg.sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);

     status |= fsl_esdhc_initialize(bis, &usdhc3_cfg);

    

     /* Assert eMMC SD3_RST (GPIO7_IO08) (active low)# */

     gpio_direction_output(IMX_GPIO_NR(7, 8), 1);

Any help is appreciated.

Labels (4)
Tags (2)
0 Kudos
3 Replies

1,856 Views
igorpadykov
NXP Employee
NXP Employee

Hi Colin

one can check If SD_RST pad is connected to other circuits, in particular

power supply enable logic. As describes System Boot Chapter of RM:

If SD Power Cycle Enable eFuse is 1, ROM will set SD_RST pad low, wait

5ms and then set SD_RST pad high.

Seems most easy way is to connect jtag and check pad iomux settings

and toggle it with jtag.

Best regards

igor

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

0 Kudos

1,856 Views
colinwernham
Contributor II

Thanks for your suggestions, Igor.

I've checked, and the eMMC is out of reset, so there must be something else wrong.

I've run out of things to try. The above SD3 settings look right, and I return 1 for the card detect function board_mmc_getcd().

The board has a working SDCARD on SD2, and has the eMMC at SD3 listed in "mmc list", but "mmc dev 1" hangs.

Do you know if there is anything else needed to get eMMC working in uBoot?

Colin

0 Kudos

1,856 Views
igorpadykov
NXP Employee
NXP Employee

Hi Colin

issue may be caused by this specific uboot mx6_cubox implementation.

Suggest to try on FSL Sabre board with nxp/freescale BSP (uboot) from

SABRE Board Reference Design|NXP

Regarding mx6_cubox suggest to post on meta-fsl-arm mailing list,

so that someone familiar with that release could try to assist you

https://lists.yoctoproject.org/listinfo/meta-freescale

Best regards

igor

0 Kudos