summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiago De Franco <hiago.franco@toradex.com>2023-10-02 16:51:22 -0300
committerMax Krummenacher <max.krummenacher@toradex.com>2023-11-29 16:54:25 +0100
commitf4afa2a5e5b92bfac78483309cb98f9de773d1c5 (patch)
tree68ba88514c6fac6532e6f595c5b45c84673f91d4
parent163ed7654cea8164767b34818b5d57dec1eadc72 (diff)
u-boot-toradex: Add patch for imx7 variant detection
Add patch to enable variant detection durint boot time. Depending on the board configuration, the variant will be set to "-emmc" or cleared in case it is a NAND device. This patch improves variant detection during system initialization through USB recovery mode. Related-to: TEI-1112 Signed-off-by: Hiago De Franco <hiago.franco@toradex.com> (cherry picked from commit 16e5f73b2b294855fe579e8252b149154bdb7322)
-rw-r--r--recipes-bsp/u-boot/u-boot-toradex/0001-toradex-colibri_imx7-Enable-nand-emmc-detection-and-.patch82
-rw-r--r--recipes-bsp/u-boot/u-boot-toradex_2022.07.bb1
2 files changed, 83 insertions, 0 deletions
diff --git a/recipes-bsp/u-boot/u-boot-toradex/0001-toradex-colibri_imx7-Enable-nand-emmc-detection-and-.patch b/recipes-bsp/u-boot/u-boot-toradex/0001-toradex-colibri_imx7-Enable-nand-emmc-detection-and-.patch
new file mode 100644
index 0000000..b231bba
--- /dev/null
+++ b/recipes-bsp/u-boot/u-boot-toradex/0001-toradex-colibri_imx7-Enable-nand-emmc-detection-and-.patch
@@ -0,0 +1,82 @@
+From a3554a151aa9c9ab2affd289458269273b08dfcf Mon Sep 17 00:00:00 2001
+From: Hiago De Franco <hiago.franco@toradex.com>
+Date: Wed, 27 Sep 2023 13:22:25 -0300
+Subject: [PATCH] toradex: colibri_imx7: Enable nand/emmc detection and set
+ boot variant
+
+Add detection of eMMC vs NAND devices on the Colibri iMX7
+board. A GPIO is configured to detect the presence of an on-board resistor
+that is configured differently based on the flash memory used. Depending on
+the detection result, the 'variant' environment variable is set to '-emmc'
+or cleared, indicating the type of storage device.
+
+This enhancement improves variant detection during system initialization
+through USB recovery mode, where U-Boot is loaded directly to RAM. This
+allows variant detection for an accurate device tree selection.
+
+Submitted [https://lore.kernel.org/u-boot/20231002115749.15160-1-hiagofranco@gmail.com/]
+Signed-off-by: Hiago De Franco <hiago.franco@toradex.com>
+
+---
+ board/toradex/colibri_imx7/colibri_imx7.c | 24 +++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+diff --git a/board/toradex/colibri_imx7/colibri_imx7.c b/board/toradex/colibri_imx7/colibri_imx7.c
+index 119e67b47f..f0356af008 100644
+--- a/board/toradex/colibri_imx7/colibri_imx7.c
++++ b/board/toradex/colibri_imx7/colibri_imx7.c
+@@ -53,6 +53,11 @@ DECLARE_GLOBAL_DATA_PTR;
+
+ #define USB_CDET_GPIO IMX_GPIO_NR(7, 14)
+
++#define FLASH_DETECTION_CTRL (PAD_CTL_HYS | PAD_CTL_PUE)
++#define FLASH_DET_GPIO IMX_GPIO_NR(6, 11)
++
++static bool is_emmc;
++
+ int dram_init(void)
+ {
+ gd->ram_size = get_ram_size((void *)PHYS_SDRAM, imx_ddr_size());
+@@ -60,6 +65,10 @@ int dram_init(void)
+ return 0;
+ }
+
++static iomux_v3_cfg_t const flash_detection_pads[] = {
++ MX7D_PAD_SD3_RESET_B__GPIO6_IO11 | MUX_PAD_CTRL(FLASH_DETECTION_CTRL),
++};
++
+ static iomux_v3_cfg_t const uart1_pads[] = {
+ MX7D_PAD_UART1_RX_DATA__UART1_DTE_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
+ MX7D_PAD_UART1_TX_DATA__UART1_DTE_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
+@@ -183,6 +192,16 @@ int board_init(void)
+ /* address of boot parameters */
+ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
+
++ /*
++ * Enable GPIO on NAND_WE_B/eMMC_RST with 100k pull-down. eMMC_RST
++ * is pulled high with 4.7k for eMMC devices. This allows to reliably
++ * detect eMMC/NAND flash
++ */
++ imx_iomux_v3_setup_multiple_pads(flash_detection_pads, ARRAY_SIZE(flash_detection_pads));
++ gpio_request(FLASH_DET_GPIO, "flash-detection-gpio");
++ is_emmc = gpio_get_value(FLASH_DET_GPIO);
++ gpio_free(FLASH_DET_GPIO);
++
+ #ifdef CONFIG_FEC_MXC
+ setup_fec();
+ #endif
+@@ -348,6 +367,11 @@ int board_late_init(void)
+ env_set("bootcmd", "sdp 0");
+ }
+ #endif
++ if (is_emmc)
++ env_set("variant", "-emmc");
++ else
++ env_set("variant", "");
++
+ return 0;
+ }
+ #endif /* CONFIG_BOARD_LATE_INIT */
+--
+2.40.1
+
diff --git a/recipes-bsp/u-boot/u-boot-toradex_2022.07.bb b/recipes-bsp/u-boot/u-boot-toradex_2022.07.bb
index 82eda2d..af07340 100644
--- a/recipes-bsp/u-boot/u-boot-toradex_2022.07.bb
+++ b/recipes-bsp/u-boot/u-boot-toradex_2022.07.bb
@@ -21,4 +21,5 @@ TDX_PATCHES = " \
file://0001-apalis-colibri_imx6-imx6ull-_imx7-update-env-memory-.patch \
file://0001-configs-colibri-imx7-Fix-bad-block-table-in-flash-co.patch \
file://0001-colibri_imx6-fix-RALAT-and-WALAT-values.patch \
+ file://0001-toradex-colibri_imx7-Enable-nand-emmc-detection-and-.patch \
"