public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH v3 0/4] mx6cuboxi: enable support for OF_CONTROL and DM in SPL
@ 2020-05-19 18:24 Walter Lozano
  2020-05-19 18:24 ` [PATCH v3 1/4] mx6cuboxi: enable MMC and eMMC in DT for SPL Walter Lozano
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Walter Lozano @ 2020-05-19 18:24 UTC (permalink / raw)
  To: u-boot

Make an additional step to add full DM support to mx6cuboxi, including its support for SPL

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.

Changes in v3:
 - Cleanup

Changes in v2:
 - Fix board_boot_order to avoid pointing to a NAND device
 - Fix board_boot_order to include MMC iomux
 - Remove unused code

Walter Lozano (4):
  mx6cuboxi: enable MMC and eMMC in DT for SPL
  mx6cuboxi: customize board_boot_order to access eMMC
  mx6cuboxi: enable OF_CONTROL and DM in SPL
  mx6cuboxi: remove unused code

 ...qdl-hummingboard2-emmc-som-v15-u-boot.dtsi |   8 ++
 board/solidrun/mx6cuboxi/mx6cuboxi.c          | 113 ++++++++----------
 configs/mx6cuboxi_defconfig                   |   3 +
 3 files changed, 59 insertions(+), 65 deletions(-)

-- 
2.20.1

^ permalink raw reply	[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 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 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 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 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

* [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 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 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

end of thread, other threads:[~2020-06-23  7:51 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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-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
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-06-23  7:50   ` sbabic at denx.de
2020-05-19 18:24 ` [PATCH v3 4/4] mx6cuboxi: remove unused code Walter Lozano
2020-06-23  7:50   ` sbabic at denx.de

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox