On some Freescale reference boards for SOCs with Fman devices, the Fman
microcode is located at address 0xEF000000 in NOR flash.  Unfortunately,
this address is in the "middle of nowhere" and makes it difficult to
partition flash space for other images.

So we change the expected address to 0xEFF40000, which is the flash
sector adjacent to the environment.  To support older boards, we use macro
CONFIG_SYS_QE_FMAN_FW_ADDR_OLD to look for the microcode in the old location
if it cannot be found in the new one.

Signed-off-by: Timur Tabi <ti...@freescale.com>
---
 include/configs/P1023RDS.h   |    4 +++-
 include/configs/P2041RDB.h   |    4 +++-
 include/configs/corenet_ds.h |    4 +++-
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/include/configs/P1023RDS.h b/include/configs/P1023RDS.h
index e057b1f..734dc89 100644
--- a/include/configs/P1023RDS.h
+++ b/include/configs/P1023RDS.h
@@ -527,7 +527,9 @@ extern unsigned long get_clock_freq(void);
 /* Default address of microcode for the Linux Fman driver */
 /* QE microcode/firmware address */
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xEF000000
+#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xEFF40000
+/* We may need to check the old location in NOR flash as well */
+#define CONFIG_SYS_QE_FMAN_FW_ADDR_OLD         0xEF000000
 #else
 #define CONFIG_SYS_QE_FMAN_FW_IN_NAND
 #define CONFIG_SYS_QE_FMAN_FW_ADDR     0x1f00000
diff --git a/include/configs/P2041RDB.h b/include/configs/P2041RDB.h
index a48055e..e6b70fc 100644
--- a/include/configs/P2041RDB.h
+++ b/include/configs/P2041RDB.h
@@ -429,7 +429,9 @@ unsigned long get_board_sys_clk(unsigned long dummy);
 #define CONFIG_SYS_QE_FMAN_FW_ADDR     (6 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #else
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xEF000000
+#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xEFF40000
+/* We may need to check the old location in NOR flash as well */
+#define CONFIG_SYS_QE_FMAN_FW_ADDR_OLD         0xEF000000
 #endif
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
 #define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
diff --git a/include/configs/corenet_ds.h b/include/configs/corenet_ds.h
index 7925b95..9d1aea7 100644
--- a/include/configs/corenet_ds.h
+++ b/include/configs/corenet_ds.h
@@ -493,7 +493,9 @@
 #define CONFIG_SYS_QE_FMAN_FW_ADDR     (6 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #else
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR             0xEF000000
+#define CONFIG_SYS_QE_FMAN_FW_ADDR             0xEFF40000
+/* We may need to check the old location in NOR flash as well */
+#define CONFIG_SYS_QE_FMAN_FW_ADDR_OLD         0xEF000000
 #endif
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
 #define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
-- 
1.7.3.4


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

Reply via email to