* [PATCH v3 1/4] mx6cuboxi: enable MMC and eMMC in DT for SPL
2020-05-19 18:24 [PATCH v3 0/4] mx6cuboxi: enable support for OF_CONTROL and DM in SPL Walter Lozano
@ 2020-05-19 18:24 ` Walter Lozano
2020-06-23 7:50 ` sbabic at denx.de
2020-05-19 18:24 ` [PATCH v3 2/4] mx6cuboxi: customize board_boot_order to access eMMC Walter Lozano
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Walter Lozano @ 2020-05-19 18:24 UTC (permalink / raw)
To: u-boot
Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
---
.../dts/imx6qdl-hummingboard2-emmc-som-v15-u-boot.dtsi | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm/dts/imx6qdl-hummingboard2-emmc-som-v15-u-boot.dtsi b/arch/arm/dts/imx6qdl-hummingboard2-emmc-som-v15-u-boot.dtsi
index d302b2e275..400b885e43 100644
--- a/arch/arm/dts/imx6qdl-hummingboard2-emmc-som-v15-u-boot.dtsi
+++ b/arch/arm/dts/imx6qdl-hummingboard2-emmc-som-v15-u-boot.dtsi
@@ -34,3 +34,11 @@
&usdhc1 {
status = "disabled";
};
+
+&usdhc2 {
+ u-boot,dm-pre-reloc;
+};
+
+&usdhc3 {
+ u-boot,dm-pre-reloc;
+};
--
2.20.1
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v3 1/4] mx6cuboxi: enable MMC and eMMC in DT for SPL
2020-05-19 18:24 ` [PATCH v3 1/4] mx6cuboxi: enable MMC and eMMC in DT for SPL Walter Lozano
@ 2020-06-23 7:50 ` sbabic at denx.de
0 siblings, 0 replies; 9+ messages in thread
From: sbabic at denx.de @ 2020-06-23 7:50 UTC (permalink / raw)
To: u-boot
> Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
Applied to u-boot-imx, master, thanks !
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v3 2/4] mx6cuboxi: customize board_boot_order to access eMMC
2020-05-19 18:24 [PATCH v3 0/4] mx6cuboxi: enable support for OF_CONTROL and DM in SPL Walter Lozano
2020-05-19 18:24 ` [PATCH v3 1/4] mx6cuboxi: enable MMC and eMMC in DT for SPL Walter Lozano
@ 2020-05-19 18:24 ` Walter Lozano
2020-06-23 7:51 ` sbabic at denx.de
2020-05-19 18:24 ` [PATCH v3 3/4] mx6cuboxi: enable OF_CONTROL and DM in SPL Walter Lozano
2020-05-19 18:24 ` [PATCH v3 4/4] mx6cuboxi: remove unused code Walter Lozano
3 siblings, 1 reply; 9+ messages in thread
From: Walter Lozano @ 2020-05-19 18:24 UTC (permalink / raw)
To: u-boot
In SPL legacy code only one MMC device is created, based on BOOT_CFG
register, which can be either SD or eMMC. In this context
board_boot_order return always MMC1 when configure to boot from
SD/eMMC. After switching to DM both SD and eMMC devices are created
based on the information available on DT, but as board_boot_order
only returns MMC1 is not possible to boot from eMMC.
This patch customizes board_boot_order taking into account BOOT_CFG
register to point to correct MMC1 / MMC2 device. Additionally, handle
IO mux for the desired boot device.
Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
---
board/solidrun/mx6cuboxi/mx6cuboxi.c | 48 ++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/board/solidrun/mx6cuboxi/mx6cuboxi.c b/board/solidrun/mx6cuboxi/mx6cuboxi.c
index 6a96f9ecdb..cb06b6c46e 100644
--- a/board/solidrun/mx6cuboxi/mx6cuboxi.c
+++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c
@@ -624,6 +624,54 @@ int board_fit_config_name_match(const char *name)
return strcmp(name, tmp_name);
}
+void board_boot_order(u32 *spl_boot_list)
+{
+ struct src *psrc = (struct src *)SRC_BASE_ADDR;
+ unsigned int reg = readl(&psrc->sbmr1) >> 11;
+ u32 boot_mode = imx6_src_get_boot_mode() & IMX6_BMODE_MASK;
+ unsigned int bmode = readl(&src_base->sbmr2);
+
+ /* If bmode is serial or USB phy is active, return serial */
+ if (((bmode >> 24) & 0x03) == 0x01 || is_usbotg_phy_active()) {
+ spl_boot_list[0] = BOOT_DEVICE_BOARD;
+ return;
+ }
+
+ switch (boot_mode >> IMX6_BMODE_SHIFT) {
+ case IMX6_BMODE_SD:
+ case IMX6_BMODE_ESD:
+ case IMX6_BMODE_MMC:
+ case IMX6_BMODE_EMMC:
+ /*
+ * Upon reading BOOT_CFG register the following map is done:
+ * Bit 11 and 12 of BOOT_CFG register can determine the current
+ * mmc port
+ * 0x1 SD2
+ * 0x2 SD3
+ */
+
+ reg &= 0x3; /* Only care about bottom 2 bits */
+ switch (reg) {
+ case 1:
+ SETUP_IOMUX_PADS(usdhc2_pads);
+ spl_boot_list[0] = BOOT_DEVICE_MMC1;
+ break;
+ case 2:
+ SETUP_IOMUX_PADS(usdhc3_pads);
+ spl_boot_list[0] = BOOT_DEVICE_MMC2;
+ break;
+ }
+ break;
+ default:
+ /* By default use USB downloader */
+ spl_boot_list[0] = BOOT_DEVICE_BOARD;
+ break;
+ }
+
+ /* As a last resort, use serial downloader */
+ spl_boot_list[1] = BOOT_DEVICE_BOARD;
+}
+
#ifdef CONFIG_SPL_BUILD
#include <asm/arch/mx6-ddr.h>
static const struct mx6dq_iomux_ddr_regs mx6q_ddr_ioregs = {
--
2.20.1
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v3 2/4] mx6cuboxi: customize board_boot_order to access eMMC
2020-05-19 18:24 ` [PATCH v3 2/4] mx6cuboxi: customize board_boot_order to access eMMC Walter Lozano
@ 2020-06-23 7:51 ` sbabic at denx.de
0 siblings, 0 replies; 9+ messages in thread
From: sbabic at denx.de @ 2020-06-23 7:51 UTC (permalink / raw)
To: u-boot
> In SPL legacy code only one MMC device is created, based on BOOT_CFG
> register, which can be either SD or eMMC. In this context
> board_boot_order return always MMC1 when configure to boot from
> SD/eMMC. After switching to DM both SD and eMMC devices are created
> based on the information available on DT, but as board_boot_order
> only returns MMC1 is not possible to boot from eMMC.
> This patch customizes board_boot_order taking into account BOOT_CFG
> register to point to correct MMC1 / MMC2 device. Additionally, handle
> IO mux for the desired boot device.
> Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
Applied to u-boot-imx, master, thanks !
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v3 3/4] mx6cuboxi: enable OF_CONTROL and DM in SPL
2020-05-19 18:24 [PATCH v3 0/4] mx6cuboxi: enable support for OF_CONTROL and DM in SPL Walter Lozano
2020-05-19 18:24 ` [PATCH v3 1/4] mx6cuboxi: enable MMC and eMMC in DT for SPL Walter Lozano
2020-05-19 18:24 ` [PATCH v3 2/4] mx6cuboxi: customize board_boot_order to access eMMC Walter Lozano
@ 2020-05-19 18:24 ` Walter Lozano
2020-06-23 7:50 ` sbabic at denx.de
2020-05-19 18:24 ` [PATCH v3 4/4] mx6cuboxi: remove unused code Walter Lozano
3 siblings, 1 reply; 9+ messages in thread
From: Walter Lozano @ 2020-05-19 18:24 UTC (permalink / raw)
To: u-boot
In order to take the beneficts of DT and DM in SPL, like reusing the code
and avoid redundancy, enable SPL_OF_CONTROL, SPL_DM and SPL_DM_MMC.
With this new configuration SPL image is 50 KB, higher than the
38 KB from the previous version, but it still under the 68 KB limit.
Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
---
configs/mx6cuboxi_defconfig | 3 +++
1 file changed, 3 insertions(+)
diff --git a/configs/mx6cuboxi_defconfig b/configs/mx6cuboxi_defconfig
index df7e4611a0..e2bcaed89f 100644
--- a/configs/mx6cuboxi_defconfig
+++ b/configs/mx6cuboxi_defconfig
@@ -25,6 +25,7 @@ CONFIG_USE_PREBOOT=y
CONFIG_PREBOOT="if hdmidet; then usb start; setenv stdin serial,usbkbd; setenv stdout serial,vga; setenv stderr serial,vga; else setenv stdin serial; setenv stdout serial; setenv stderr serial; fi;"
CONFIG_BOUNCE_BUFFER=y
CONFIG_BOARD_EARLY_INIT_F=y
+CONFIG_SPL_SEPARATE_BSS=y
CONFIG_SPL_FS_EXT4=y
CONFIG_SPL_I2C_SUPPORT=y
CONFIG_SPL_WATCHDOG_SUPPORT=y
@@ -37,6 +38,7 @@ CONFIG_CMD_CACHE=y
CONFIG_CMD_EXT4_WRITE=y
# CONFIG_SPL_PARTITION_UUIDS is not set
CONFIG_OF_CONTROL=y
+CONFIG_SPL_OF_CONTROL=y
CONFIG_DEFAULT_DEVICE_TREE="imx6dl-hummingboard2-emmc-som-v15"
CONFIG_OF_LIST="imx6dl-hummingboard2-emmc-som-v15 imx6q-hummingboard2-emmc-som-v15"
CONFIG_MULTI_DTB_FIT=y
@@ -45,6 +47,7 @@ CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_DM=y
+CONFIG_SPL_DM=y
CONFIG_DWC_AHSATA=y
CONFIG_DM_MMC=y
CONFIG_FSL_USDHC=y
--
2.20.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v3 3/4] mx6cuboxi: enable OF_CONTROL and DM in SPL
2020-05-19 18:24 ` [PATCH v3 3/4] mx6cuboxi: enable OF_CONTROL and DM in SPL Walter Lozano
@ 2020-06-23 7:50 ` sbabic at denx.de
0 siblings, 0 replies; 9+ messages in thread
From: sbabic at denx.de @ 2020-06-23 7:50 UTC (permalink / raw)
To: u-boot
> In order to take the beneficts of DT and DM in SPL, like reusing the code
> and avoid redundancy, enable SPL_OF_CONTROL, SPL_DM and SPL_DM_MMC.
> With this new configuration SPL image is 50 KB, higher than the
> 38 KB from the previous version, but it still under the 68 KB limit.
> Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
Applied to u-boot-imx, master, thanks !
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v3 4/4] mx6cuboxi: remove unused code
2020-05-19 18:24 [PATCH v3 0/4] mx6cuboxi: enable support for OF_CONTROL and DM in SPL Walter Lozano
` (2 preceding siblings ...)
2020-05-19 18:24 ` [PATCH v3 3/4] mx6cuboxi: enable OF_CONTROL and DM in SPL Walter Lozano
@ 2020-05-19 18:24 ` Walter Lozano
2020-06-23 7:50 ` sbabic at denx.de
3 siblings, 1 reply; 9+ messages in thread
From: Walter Lozano @ 2020-05-19 18:24 UTC (permalink / raw)
To: u-boot
After enabling SPL_OF_CONTROL, SPL_DM and SPL_DM_MMC the MMC
initialization code is not longer needed.
This patch removes the unused code.
Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
---
board/solidrun/mx6cuboxi/mx6cuboxi.c | 65 ----------------------------
1 file changed, 65 deletions(-)
diff --git a/board/solidrun/mx6cuboxi/mx6cuboxi.c b/board/solidrun/mx6cuboxi/mx6cuboxi.c
index cb06b6c46e..4466480e46 100644
--- a/board/solidrun/mx6cuboxi/mx6cuboxi.c
+++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c
@@ -162,76 +162,11 @@ static void setup_iomux_uart(void)
SETUP_IOMUX_PADS(uart1_pads);
}
-static struct fsl_esdhc_cfg usdhc_cfg = {
- .esdhc_base = USDHC2_BASE_ADDR,
- .max_bus_width = 4,
-};
-
-static struct fsl_esdhc_cfg emmc_cfg = {
- .esdhc_base = USDHC3_BASE_ADDR,
- .max_bus_width = 8,
-};
-
int board_mmc_get_env_dev(int devno)
{
return devno;
}
-#define USDHC2_CD_GPIO IMX_GPIO_NR(1, 4)
-
-int board_mmc_getcd(struct mmc *mmc)
-{
- struct fsl_esdhc_cfg *cfg = mmc->priv;
- int ret = 0;
-
- switch (cfg->esdhc_base) {
- case USDHC2_BASE_ADDR:
- ret = !gpio_get_value(USDHC2_CD_GPIO);
- break;
- case USDHC3_BASE_ADDR:
- ret = (mmc_get_op_cond(mmc) < 0) ? 0 : 1; /* eMMC/uSDHC3 has no CD GPIO */
- break;
- }
-
- return ret;
-}
-
-static int mmc_init_spl(bd_t *bis)
-{
- struct src *psrc = (struct src *)SRC_BASE_ADDR;
- unsigned reg = readl(&psrc->sbmr1) >> 11;
-
- /*
- * Upon reading BOOT_CFG register the following map is done:
- * Bit 11 and 12 of BOOT_CFG register can determine the current
- * mmc port
- * 0x1 SD2
- * 0x2 SD3
- */
- switch (reg & 0x3) {
- case 0x1:
- SETUP_IOMUX_PADS(usdhc2_pads);
- usdhc_cfg.sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
- gd->arch.sdhc_clk = usdhc_cfg.sdhc_clk;
- return fsl_esdhc_initialize(bis, &usdhc_cfg);
- case 0x2:
- SETUP_IOMUX_PADS(usdhc3_pads);
- emmc_cfg.sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
- gd->arch.sdhc_clk = emmc_cfg.sdhc_clk;
- return fsl_esdhc_initialize(bis, &emmc_cfg);
- }
-
- return -ENODEV;
-}
-
-int board_mmc_init(bd_t *bis)
-{
- if (IS_ENABLED(CONFIG_SPL_BUILD))
- return mmc_init_spl(bis);
-
- return 0;
-}
-
static iomux_v3_cfg_t const enet_pads[] = {
IOMUX_PADS(PAD_ENET_MDIO__ENET_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL)),
IOMUX_PADS(PAD_ENET_MDC__ENET_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL)),
--
2.20.1
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v3 4/4] mx6cuboxi: remove unused code
2020-05-19 18:24 ` [PATCH v3 4/4] mx6cuboxi: remove unused code Walter Lozano
@ 2020-06-23 7:50 ` sbabic at denx.de
0 siblings, 0 replies; 9+ messages in thread
From: sbabic at denx.de @ 2020-06-23 7:50 UTC (permalink / raw)
To: u-boot
> After enabling SPL_OF_CONTROL, SPL_DM and SPL_DM_MMC the MMC
> initialization code is not longer needed.
> This patch removes the unused code.
> Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
Applied to u-boot-imx, master, thanks !
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 9+ messages in thread