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.
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!
-----------------------------------------------------------------------------------------------------------------------
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
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