diff options
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-.patch | 82 |
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..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 + |