From 63ebcc4615dd39926ccf61f1d5f3510262ef6564 Mon Sep 17 00:00:00 2001 From: Michael Schwingen Date: Sat, 10 Nov 2007 15:44:12 +0100 Subject: load ixp42x NPE firmware from separate flash block, remove dead code Hi, the following patch adds support to move the IXP42X NPE firmware to a separate flash block, whose start address is defined in CONFIG_IXP4XX_NPE_EXT_UCODE_BASE. Using that, it is possible to build NPE-enabled u-boot without copyright problems due to the NPE firmware. I hope the patch applies, I get whitespace-related differences in the NPE files due to trailing whitespace in the original versions. Signed-off-by: Michael Schwingen Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD --- cpu/ixp/npe/IxNpeDlImageMgr.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'cpu/ixp/npe/IxNpeDlImageMgr.c') diff --git a/cpu/ixp/npe/IxNpeDlImageMgr.c b/cpu/ixp/npe/IxNpeDlImageMgr.c index e05c228..c0e7349 100644 --- a/cpu/ixp/npe/IxNpeDlImageMgr.c +++ b/cpu/ixp/npe/IxNpeDlImageMgr.c @@ -134,8 +134,8 @@ typedef struct static IxNpeDlImageMgrStats ixNpeDlImageMgrStats; /* default image */ -#ifdef IX_NPEDL_READ_MICROCODE_FROM_FILE -static UINT32 *IxNpeMicroCodeImageLibrary = NULL; /* Gets set to proper value at runtime */ +#ifdef CONFIG_IXP4XX_NPE_EXT_UCODE_BASE +static UINT32 *IxNpeMicroCodeImageLibrary = (UINT32 *)CONFIG_IXP4XX_NPE_EXT_UCODE_BASE; #else static UINT32 *IxNpeMicroCodeImageLibrary = (UINT32 *)IxNpeMicrocode_array; #endif @@ -158,6 +158,7 @@ PRIVATE BOOL ixNpeDlImageMgrNpeFunctionIdCompare (IxNpeDlImageId *imageIdA, IxNpeDlImageId *imageIdB); +#if 0 PRIVATE IX_STATUS ixNpeDlImageMgrImageFind_legacy (UINT32 *imageLibrary, UINT32 imageId, @@ -195,7 +196,7 @@ ixNpeDlImageMgrMicrocodeImageLibraryOverride ( status); return status; } - +#endif /* * Function definition: ixNpeDlImageMgrImageListExtract @@ -527,6 +528,7 @@ ixNpeDlImageMgrStatsReset (void) } +#if 0 /* * Function definition: ixNpeDlImageMgrImageFind_legacy * @@ -600,7 +602,7 @@ ixNpeDlImageMgrImageFind_legacy ( "Exiting ixNpeDlImageMgrImageFind: status = %d\n", status); return status; } - +#endif /* * Function definition: ixNpeDlImageMgrImageFind @@ -635,6 +637,7 @@ ixNpeDlImageMgrImageFind ( #endif /* IX_NPEDL_READ_MICROCODE_FROM_FILE */ } +#if 0 /* For backward's compatibility with previous image format */ if (ixNpeDlImageMgrSignatureCheck(imageLibrary)) { @@ -643,6 +646,7 @@ ixNpeDlImageMgrImageFind ( imagePtr, imageSize); } +#endif while (*(imageLibrary+offset) == NPE_IMAGE_MARKER) { -- cgit v1.1 From a1cf027a08f9dc1c0e769499e6f4fbddcf9cab93 Mon Sep 17 00:00:00 2001 From: Jean-Christophe PLAGNIOL-VILLARD Date: Mon, 7 Jan 2008 08:41:34 +0100 Subject: IXP: add dynamic microcode addr allow to load the microde from flash or ram by download it through the serial or other. Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD Acked-by: Stefan Roese --- cpu/ixp/npe/IxNpeDlImageMgr.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'cpu/ixp/npe/IxNpeDlImageMgr.c') diff --git a/cpu/ixp/npe/IxNpeDlImageMgr.c b/cpu/ixp/npe/IxNpeDlImageMgr.c index c0e7349..75b42f2 100644 --- a/cpu/ixp/npe/IxNpeDlImageMgr.c +++ b/cpu/ixp/npe/IxNpeDlImageMgr.c @@ -140,6 +140,14 @@ static UINT32 *IxNpeMicroCodeImageLibrary = (UINT32 *)CONFIG_IXP4XX_NPE_EXT_UCOD static UINT32 *IxNpeMicroCodeImageLibrary = (UINT32 *)IxNpeMicrocode_array; #endif +static UINT32* getIxNpeMicroCodeImageLibrary(void) +{ + char *s; + if ((s = getenv("npe_ucode")) != NULL) + return (UINT32*) simple_strtoul(s, NULL, 16); + else + return IxNpeMicroCodeImageLibrary; +} /* * static function prototypes. @@ -218,9 +226,9 @@ ixNpeDlImageMgrImageListExtract ( IX_NPEDL_TRACE0 (IX_NPEDL_FN_ENTRY_EXIT, "Entering ixNpeDlImageMgrImageListExtract\n"); - header = (IxNpeDlImageMgrImageLibraryHeader *) IxNpeMicroCodeImageLibrary; + header = (IxNpeDlImageMgrImageLibraryHeader *) getIxNpeMicroCodeImageLibrary(); - if (ixNpeDlImageMgrSignatureCheck (IxNpeMicroCodeImageLibrary)) + if (ixNpeDlImageMgrSignatureCheck (getIxNpeMicroCodeImageLibrary())) { /* for each image entry in the image header ... */ while (header->entry[imageCount].eohMarker != @@ -291,9 +299,9 @@ ixNpeDlImageMgrImageLocate ( IX_NPEDL_TRACE0 (IX_NPEDL_FN_ENTRY_EXIT, "Entering ixNpeDlImageMgrImageLocate\n"); - header = (IxNpeDlImageMgrImageLibraryHeader *) IxNpeMicroCodeImageLibrary; + header = (IxNpeDlImageMgrImageLibraryHeader *) getIxNpeMicroCodeImageLibrary(); - if (ixNpeDlImageMgrSignatureCheck (IxNpeMicroCodeImageLibrary)) + if (ixNpeDlImageMgrSignatureCheck (getIxNpeMicroCodeImageLibrary())) { /* for each image entry in the image library header ... */ while (header->entry[imageCount].eohMarker != @@ -308,8 +316,9 @@ ixNpeDlImageMgrImageLocate ( * get pointer to the image in the image library using offset from * 1st word in image library */ + UINT32 *tmp=getIxNpeMicroCodeImageLibrary(); imageOffset = header->entry[imageCount].image.offset; - *imagePtr = &IxNpeMicroCodeImageLibrary[imageOffset]; + *imagePtr = &tmp[imageOffset]; /* get the image size */ *imageSize = header->entry[imageCount].image.size; status = IX_SUCCESS; @@ -354,9 +363,9 @@ ixNpeDlImageMgrLatestImageExtract (IxNpeDlImageId *imageId) IX_NPEDL_TRACE0 (IX_NPEDL_FN_ENTRY_EXIT, "Entering ixNpeDlImageMgrLatestImageExtract\n"); - header = (IxNpeDlImageMgrImageLibraryHeader *) IxNpeMicroCodeImageLibrary; + header = (IxNpeDlImageMgrImageLibraryHeader *) getIxNpeMicroCodeImageLibrary(); - if (ixNpeDlImageMgrSignatureCheck (IxNpeMicroCodeImageLibrary)) + if (ixNpeDlImageMgrSignatureCheck (getIxNpeMicroCodeImageLibrary())) { /* for each image entry in the image library header ... */ while (header->entry[imageCount].eohMarker != @@ -633,7 +642,7 @@ ixNpeDlImageMgrImageFind ( imageLibrary = ixNpeMicrocode_binaryArray; } #else - imageLibrary = IxNpeMicroCodeImageLibrary; + imageLibrary = getIxNpeMicroCodeImageLibrary(); #endif /* IX_NPEDL_READ_MICROCODE_FROM_FILE */ } -- cgit v1.1