Message ID | 20211218211025.770362-1-festevam@gmail.com |
---|---|
State | Accepted |
Delegated to: | Stefano Babic |
Headers | show |
Series | [1/6] udoo_spl: Initialize the eSDHC controller in SPL | expand |
On Sat, Dec 18, 2021 at 9:10 PM Fabio Estevam <festevam@gmail.com> wrote: > > Currently, imx6q udoo board fails to boot like this: > > U-Boot SPL 2022.01-rc3-00061-g95ca715adad3 (Dec 18 2021 - 18:04:40 -0300) > Trying to boot from MMC1 > > The reason is that the eSDHC controller is not initialized in SPL. > > Initialize the eSDHC controller in SPL via C code as DM is not > used in SPL. > > Signed-off-by: Fabio Estevam <festevam@gmail.com> > --- > board/udoo/udoo_spl.c | 35 +++++++++++++++++++++++++++++++++++ > 1 file changed, 35 insertions(+) > > diff --git a/board/udoo/udoo_spl.c b/board/udoo/udoo_spl.c > index d9afbbb74198..754bd9dfe21e 100644 > --- a/board/udoo/udoo_spl.c > +++ b/board/udoo/udoo_spl.c > @@ -254,4 +254,39 @@ void board_init_f(ulong dummy) > /* DDR initialization */ > spl_dram_init(); > } > + > +#define USDHC3_CD_GPIO IMX_GPIO_NR(7, 0) > + > +#define USDHC_PAD_CTRL (PAD_CTL_PUS_47K_UP | \ > + PAD_CTL_SPEED_LOW | PAD_CTL_DSE_80ohm | \ > + PAD_CTL_SRE_FAST | PAD_CTL_HYS) > + > +static struct fsl_esdhc_cfg usdhc_cfg[2] = { > + {USDHC3_BASE_ADDR}, > +}; > + > +static const iomux_v3_cfg_t usdhc3_pads[] = { > + IOMUX_PADS(PAD_SD3_CLK__SD3_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL)), > + IOMUX_PADS(PAD_SD3_CMD__SD3_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL)), > + IOMUX_PADS(PAD_SD3_DAT0__SD3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL)), > + IOMUX_PADS(PAD_SD3_DAT1__SD3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL)), > + IOMUX_PADS(PAD_SD3_DAT2__SD3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL)), > + IOMUX_PADS(PAD_SD3_DAT3__SD3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL)), > + IOMUX_PADS(PAD_SD3_DAT5__GPIO7_IO00 | MUX_PAD_CTRL(NO_PAD_CTRL)), > +}; > + > +int board_mmc_getcd(struct mmc *mmc) > +{ > + return !gpio_get_value(USDHC3_CD_GPIO); > +} > + > +int board_mmc_init(struct bd_info *bis) > +{ > + SETUP_IOMUX_PADS(usdhc3_pads); > + usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK); > + usdhc_cfg[0].max_bus_width = 4; Shouldn't there be a gpio_request here before you set direction like in your first patch? > + gpio_direction_input(USDHC3_CD_GPIO); > + > + return fsl_esdhc_initialize(bis, &usdhc_cfg[0]); > +} > #endif Reviewed-by: Peter Robinson <pbrobinson@gmail.com>
Hi Tom/Stefano,
On Mon, Dec 20, 2021 at 1:10 PM Peter Robinson <pbrobinson@gmail.com> wrote:
> Reviewed-by: Peter Robinson <pbrobinson@gmail.com>
Please consider this series and Peter's series on udoo_neo for 2022.01.
They make udoo and udoo_neo functional in U-Boot again.
Hi Tom, On Thu, Dec 23, 2021 at 12:03 PM Fabio Estevam <festevam@gmail.com> wrote: > > Hi Tom/Stefano, > > On Mon, Dec 20, 2021 at 1:10 PM Peter Robinson <pbrobinson@gmail.com> wrote: > > > Reviewed-by: Peter Robinson <pbrobinson@gmail.com> > > Please consider this series and Peter's series on udoo_neo for 2022.01. > > They make udoo and udoo_neo functional in U-Boot again. I saw you picked the udoo_neo series. Could you please pick this one too for 2022.01? Thanks
On Sat, Dec 18, 2021 at 06:10:20PM -0300, Fabio Estevam wrote: > Currently, imx6q udoo board fails to boot like this: > > U-Boot SPL 2022.01-rc3-00061-g95ca715adad3 (Dec 18 2021 - 18:04:40 -0300) > Trying to boot from MMC1 > > The reason is that the eSDHC controller is not initialized in SPL. > > Initialize the eSDHC controller in SPL via C code as DM is not > used in SPL. > > Signed-off-by: Fabio Estevam <festevam@gmail.com> > Reviewed-by: Peter Robinson <pbrobinson@gmail.com> Applied to u-boot/master, thanks!
diff --git a/board/udoo/udoo_spl.c b/board/udoo/udoo_spl.c index d9afbbb74198..754bd9dfe21e 100644 --- a/board/udoo/udoo_spl.c +++ b/board/udoo/udoo_spl.c @@ -254,4 +254,39 @@ void board_init_f(ulong dummy) /* DDR initialization */ spl_dram_init(); } + +#define USDHC3_CD_GPIO IMX_GPIO_NR(7, 0) + +#define USDHC_PAD_CTRL (PAD_CTL_PUS_47K_UP | \ + PAD_CTL_SPEED_LOW | PAD_CTL_DSE_80ohm | \ + PAD_CTL_SRE_FAST | PAD_CTL_HYS) + +static struct fsl_esdhc_cfg usdhc_cfg[2] = { + {USDHC3_BASE_ADDR}, +}; + +static const iomux_v3_cfg_t usdhc3_pads[] = { + IOMUX_PADS(PAD_SD3_CLK__SD3_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL)), + IOMUX_PADS(PAD_SD3_CMD__SD3_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL)), + IOMUX_PADS(PAD_SD3_DAT0__SD3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL)), + IOMUX_PADS(PAD_SD3_DAT1__SD3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL)), + IOMUX_PADS(PAD_SD3_DAT2__SD3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL)), + IOMUX_PADS(PAD_SD3_DAT3__SD3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL)), + IOMUX_PADS(PAD_SD3_DAT5__GPIO7_IO00 | MUX_PAD_CTRL(NO_PAD_CTRL)), +}; + +int board_mmc_getcd(struct mmc *mmc) +{ + return !gpio_get_value(USDHC3_CD_GPIO); +} + +int board_mmc_init(struct bd_info *bis) +{ + SETUP_IOMUX_PADS(usdhc3_pads); + usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK); + usdhc_cfg[0].max_bus_width = 4; + gpio_direction_input(USDHC3_CD_GPIO); + + return fsl_esdhc_initialize(bis, &usdhc_cfg[0]); +} #endif
Currently, imx6q udoo board fails to boot like this: U-Boot SPL 2022.01-rc3-00061-g95ca715adad3 (Dec 18 2021 - 18:04:40 -0300) Trying to boot from MMC1 The reason is that the eSDHC controller is not initialized in SPL. Initialize the eSDHC controller in SPL via C code as DM is not used in SPL. Signed-off-by: Fabio Estevam <festevam@gmail.com> --- board/udoo/udoo_spl.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+)