Hi Fabio, > After the DM_MMC conversion the following eMMC boot error is observed: > > U-Boot SPL 2019.04-rc4 (Mar 20 2019 - 18:53:28 +0000) > Trying to boot from MMC1 > MMC Device 0 not found > spl: could not find mmc device 0. error: -19 > SPL: failed to boot from all boot devices > ### ERROR ### Please RESET the board ### > > This happens because the SPL code does not initialize the SDHC pins > and clock. > > Fix it by moving the original eMMC initialization from U-Boot proper > to SPL. > > Reported-by: Otavio Salvador <[email protected]> > Signed-off-by: Fabio Estevam <[email protected]> > Tested-by: Fabio Berton <[email protected]> > Reviewed-by: Otavio Salvador <[email protected]> > --- > board/technexion/pico-imx6ul/spl.c | 34 > ++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) > > diff --git a/board/technexion/pico-imx6ul/spl.c > b/board/technexion/pico-imx6ul/spl.c index 6464a32d3b..f972cc9eaf > 100644 --- a/board/technexion/pico-imx6ul/spl.c > +++ b/board/technexion/pico-imx6ul/spl.c > @@ -10,6 +10,7 @@ > #include <asm/gpio.h> > #include <asm/mach-imx/iomux-v3.h> > #include <asm/mach-imx/boot_mode.h> > +#include <fsl_esdhc.h> > #include <linux/libfdt.h> > #include <spl.h> > > @@ -141,4 +142,37 @@ void board_init_f(ulong dummy) > void reset_cpu(ulong addr) > { > } > + > +#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 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), > + MX6_PAD_NAND_READY_B__USDHC1_DATA4 | > MUX_PAD_CTRL(USDHC_PAD_CTRL), > + MX6_PAD_NAND_CE0_B__USDHC1_DATA5 | > MUX_PAD_CTRL(USDHC_PAD_CTRL), > + MX6_PAD_NAND_CE1_B__USDHC1_DATA6 | > MUX_PAD_CTRL(USDHC_PAD_CTRL), > + MX6_PAD_NAND_CLE__USDHC1_DATA7 | > MUX_PAD_CTRL(USDHC_PAD_CTRL), +}; > + > +static struct fsl_esdhc_cfg usdhc_cfg[1] = { > + {USDHC1_BASE_ADDR}, > +}; > + > +int board_mmc_getcd(struct mmc *mmc) > +{ > + return 1; > +} > + > +int board_mmc_init(bd_t *bis) > +{ > + imx_iomux_v3_setup_multiple_pads(usdhc1_pads, > ARRAY_SIZE(usdhc1_pads)); > + usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK); > + return fsl_esdhc_initialize(bis, &usdhc_cfg[0]); > +} > #endif
This seems like a temporary solution - the u-boot proper is converted to use DM_MMC, but the pinmux setup code is moved to SPL instead. The proper solution would be to add support for pinmux in SPL and setup those pins there. Something similar to: http://patchwork.ozlabs.org/cover/1019842/ But this patch series shall not be regarded as a template for the conversion as some of those patches have been superseded (like clock with CCF clock, FEC setup). However, the pinctrl/eMMC shall be a good example. The other question is if imx6ul has enough resources to use such feature-rich SPL. Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: [email protected]
pgpmEBNxJ8_kd.pgp
Description: OpenPGP digital signature
_______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

