diff mbox series

[1/6] udoo_spl: Initialize the eSDHC controller in SPL

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

Commit Message

Fabio Estevam Dec. 18, 2021, 9:10 p.m. UTC
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(+)

Comments

Peter Robinson Dec. 20, 2021, 4:09 p.m. UTC | #1
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>
Fabio Estevam Dec. 23, 2021, 3:03 p.m. UTC | #2
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.
Fabio Estevam Jan. 7, 2022, 8:17 p.m. UTC | #3
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
Tom Rini Jan. 9, 2022, 1:27 a.m. UTC | #4
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 mbox series

Patch

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