Since the SD3.0 kernel driver needs M4 image support, this causes
problem for usb boot booting into kernel.  To decouple the relationship,
we modify the FDT file in u-boot to disable SD3.0.
So the kernel won't depend on M4 image.

Signed-off-by: Peng Fan <peng....@nxp.com>
---
 board/freescale/mx7ulp_evk/mx7ulp_evk.c | 47 +++++++++++++++++++++++++++++++++
 configs/mx7ulp_evk_defconfig            |  1 +
 2 files changed, 48 insertions(+)

diff --git a/board/freescale/mx7ulp_evk/mx7ulp_evk.c 
b/board/freescale/mx7ulp_evk/mx7ulp_evk.c
index 3a12fe1551..7527263577 100644
--- a/board/freescale/mx7ulp_evk/mx7ulp_evk.c
+++ b/board/freescale/mx7ulp_evk/mx7ulp_evk.c
@@ -4,10 +4,12 @@
  */
 
 #include <common.h>
+#include <fdt_support.h>
 #include <asm/io.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/mx7ulp-pins.h>
 #include <asm/arch/iomux.h>
+#include <asm/mach-imx/boot_mode.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -45,3 +47,48 @@ int board_init(void)
 
        return 0;
 }
+
+#if IS_ENABLED(CONFIG_OF_BOARD_SETUP)
+int ft_board_setup(void *blob, bd_t *bd)
+{
+       const char *path;
+       int rc, nodeoff;
+
+       if (get_boot_device() == USB_BOOT) {
+               path = fdt_get_alias(blob, "mmc0");
+               if (!path) {
+                       puts("Not found mmc0\n");
+                       return 0;
+               }
+
+               nodeoff = fdt_path_offset(blob, path);
+               if (nodeoff < 0)
+                       return 0;
+
+               printf("Found usdhc0 node\n");
+               if (fdt_get_property(blob, nodeoff, "vqmmc-supply",
+                   NULL) != NULL) {
+                       rc = fdt_delprop(blob, nodeoff, "vqmmc-supply");
+                       if (!rc) {
+                               puts("Removed vqmmc-supply property\n");
+add:
+                               rc = fdt_setprop(blob, nodeoff,
+                                                "no-1-8-v", NULL, 0);
+                               if (rc == -FDT_ERR_NOSPACE) {
+                                       rc = fdt_increase_size(blob, 32);
+                                       if (!rc)
+                                               goto add;
+                               } else if (rc) {
+                                       printf("Failed to add no-1-8-v 
property, %d\n", rc);
+                               } else {
+                                       puts("Added no-1-8-v property\n");
+                               }
+                       } else {
+                               printf("Failed to remove vqmmc-supply property, 
%d\n", rc);
+                       }
+               }
+       }
+
+       return 0;
+}
+#endif
diff --git a/configs/mx7ulp_evk_defconfig b/configs/mx7ulp_evk_defconfig
index d125ccc1af..c7af66b2e9 100644
--- a/configs/mx7ulp_evk_defconfig
+++ b/configs/mx7ulp_evk_defconfig
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX7ULP=y
 CONFIG_SYS_TEXT_BASE=0x67800000
 CONFIG_TARGET_MX7ULP_EVK=y
 CONFIG_NR_DRAM_BANKS=1
+CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx7ulp_evk/imximage.cfg"
 CONFIG_BOUNCE_BUFFER=y
 CONFIG_HUSH_PARSER=y
-- 
2.16.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to