summaryrefslogtreecommitdiff
path: root/recipes-bsp/u-boot/u-boot-toradex/0001-toradex-colibri_imx7-Enable-nand-emmc-detection-and-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-bsp/u-boot/u-boot-toradex/0001-toradex-colibri_imx7-Enable-nand-emmc-detection-and-.patch')
-rw-r--r--recipes-bsp/u-boot/u-boot-toradex/0001-toradex-colibri_imx7-Enable-nand-emmc-detection-and-.patch82
1 files changed, 82 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..1adba8e
--- /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.
+
+Upstream-Status: 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
+