This patch makes the Boot Parameter Structure of AM43XX available to U-Boot. 
The feature is already available for OMAP3 and OMAP4, but not AM43XX. It also 
adds the value of the boot device to the U-Boot environment. 

Signed-off-by: Edgar Holleis <edgar.holl...@zuehlke.com>
---
 arch/arm/cpu/armv7/am33xx/board.c            | 11 +++++++++++
 arch/arm/cpu/armv7/omap-common/boot-common.c | 10 +++++++---
 board/ti/am43xx/board.c                      |  5 +++++
 3 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/arch/arm/cpu/armv7/am33xx/board.c 
b/arch/arm/cpu/armv7/am33xx/board.c
index 67bef23..7149990 100644
--- a/arch/arm/cpu/armv7/am33xx/board.c
+++ b/arch/arm/cpu/armv7/am33xx/board.c
@@ -203,6 +203,17 @@ int arch_misc_init(void)
        return 0;
 }
 
+#ifdef CONFIG_ARCH_CPU_INIT
+/*
+ * SOC specific cpu init
+ */
+int arch_cpu_init(void)
+{
+       save_omap_boot_params();
+       return 0;
+}
+#endif /* CONFIG_ARCH_CPU_INIT */
+
 #ifndef CONFIG_SKIP_LOWLEVEL_INIT
 /*
  * In the case of non-SPL based booting we'll want to call these
diff --git a/arch/arm/cpu/armv7/omap-common/boot-common.c 
b/arch/arm/cpu/armv7/omap-common/boot-common.c
index bbc6bed..d1053eb 100644
--- a/arch/arm/cpu/armv7/omap-common/boot-common.c
+++ b/arch/arm/cpu/armv7/omap-common/boot-common.c
@@ -64,9 +64,13 @@ void save_omap_boot_params(void)
 #endif
                {
                        dev_desc = *((u32 *)(rom_params + DEV_DESC_PTR_OFFSET));
-                       dev_data = *((u32 *)(dev_desc + DEV_DATA_PTR_OFFSET));
-                       gd->arch.omap_boot_params.omap_bootmode =
-                                       *((u32 *)(dev_data + BOOT_MODE_OFFSET));
+                       if (dev_desc != 0) {
+                               dev_data = *((u32 *)(dev_desc + 
DEV_DATA_PTR_OFFSET));
+                               gd->arch.omap_boot_params.omap_bootmode =
+                                               *((u32 *)(dev_data + 
BOOT_MODE_OFFSET));
+                       } else {
+                               gd->arch.omap_boot_params.omap_bootmode = 
MMCSD_MODE_UNDEFINED;
+                       }
                }
        }
 
diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c
index d7b9e5a..ecd6c56 100644
--- a/board/ti/am43xx/board.c
+++ b/board/ti/am43xx/board.c
@@ -670,6 +670,11 @@ int board_late_init(void)
        safe_string[sizeof(header.version)] = 0;
        setenv("board_rev", safe_string);
 #endif
+
+       char tmpstr[5];
+       sprintf(tmpstr, "0x%02x", gd->arch.omap_boot_params.omap_bootdevice);
+       setenv("omap_bootdevice", tmpstr);
+
        return 0;
 }
 #endif
-- 
1.9.1
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to