From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukasz Majewski Date: Wed, 27 Mar 2019 10:23:02 +0100 Subject: [U-Boot] [PATCH] pico-imx6ul: Fix eMMC boot after DM_MMC conversion In-Reply-To: <20190321135906.13704-1-festevam@gmail.com> References: <20190321135906.13704-1-festevam@gmail.com> Message-ID: <20190327102302.39a0b180@jawa> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 > Signed-off-by: Fabio Estevam > Tested-by: Fabio Berton > Reviewed-by: Otavio Salvador > --- > 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 > #include > #include > +#include > #include > #include > > @@ -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: lukma at denx.de -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 488 bytes Desc: OpenPGP digital signature URL: