public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 1/2] net/fm: check the old and new Fman microcode locations in NOR flash
@ 2011-12-14 22:34 Timur Tabi
  2011-12-14 22:34 ` [U-Boot] [PATCH 2/2] powerpc/85xx: move the Fman microcode from ef000000 to eff40000 Timur Tabi
  2011-12-15 20:03 ` [U-Boot] [PATCH 1/2] net/fm: check the old and new Fman microcode locations in NOR flash Kumar Gala
  0 siblings, 2 replies; 5+ messages in thread
From: Timur Tabi @ 2011-12-14 22:34 UTC (permalink / raw)
  To: u-boot

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.

The code which uploads the microcode checks the new default location, and
if the microcode is not found, then it checks the old location.  This allows
newer U-Boots to work on older boards.  However, during boot, the error
messages are a bit confusing:

Net:   Fman1: Data at eff40000 is not a firmware
Fman1: Uploading microcode version 101.8.0
Fman2: Data at eff40000 is not a firmware
Fman2: Uploading microcode version 101.8.0

Signed-off-by: Timur Tabi <timur@freescale.com>
---
 drivers/net/fm/fm.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/drivers/net/fm/fm.c b/drivers/net/fm/fm.c
index 0b8c33f..f148608 100644
--- a/drivers/net/fm/fm.c
+++ b/drivers/net/fm/fm.c
@@ -412,6 +412,13 @@ int fm_init_common(int index, struct ccsr_fman *reg)
 
 	/* Upload the Fman microcode if it's present */
 	rc = fman_upload_firmware(index, &reg->fm_imem, addr);
+#ifdef CONFIG_SYS_QE_FMAN_FW_ADDR_OLD
+	/* Check the old location in NOR flash  */
+	if (rc) {
+		addr = (void *)CONFIG_SYS_QE_FMAN_FW_ADDR_OLD;
+		rc = fman_upload_firmware(index, &reg->fm_imem, addr);
+	}
+#endif
 	if (rc)
 		return rc;
 	sprintf(env_addr, "0x%lx", (long unsigned int)addr);
-- 
1.7.3.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-12-15 20:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-14 22:34 [U-Boot] [PATCH 1/2] net/fm: check the old and new Fman microcode locations in NOR flash Timur Tabi
2011-12-14 22:34 ` [U-Boot] [PATCH 2/2] powerpc/85xx: move the Fman microcode from ef000000 to eff40000 Timur Tabi
2011-12-15 20:03 ` [U-Boot] [PATCH 1/2] net/fm: check the old and new Fman microcode locations in NOR flash Kumar Gala
2011-12-15 20:09   ` Timur Tabi
2011-12-15 20:15     ` Kumar Gala

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox