/** * @file IxNpeDl.h * * @date 14 December 2001 * @brief This file contains the public API of the IXP400 NPE Downloader * component. * * * @par * IXP400 SW Release version 2.0 * * -- Copyright Notice -- * * @par * Copyright 2001-2005, Intel Corporation. * All rights reserved. * * @par * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the Intel Corporation nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * @par * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @par * -- End of Copyright Notice -- */ /** * @defgroup IxNpeDl IXP400 NPE-Downloader (IxNpeDl) API * * @brief The Public API for the IXP400 NPE Downloader * * @{ */ #ifndef IXNPEDL_H #define IXNPEDL_H /* * Put the user defined include files required */ #include "IxOsalTypes.h" #include "IxNpeMicrocode.h" /* * #defines for function return types, etc. */ /** * @def IX_NPEDL_PARAM_ERR * * @brief NpeDl function return value for a parameter error */ #define IX_NPEDL_PARAM_ERR 2 /** * @def IX_NPEDL_RESOURCE_ERR * * @brief NpeDl function return value for a resource error */ #define IX_NPEDL_RESOURCE_ERR 3 /** * @def IX_NPEDL_CRITICAL_NPE_ERR * * @brief NpeDl function return value for a Critical NPE error occuring during download. Assume NPE is left in unstable condition if this value is returned or NPE is hang / halt. */ #define IX_NPEDL_CRITICAL_NPE_ERR 4 /** * @def IX_NPEDL_CRITICAL_MICROCODE_ERR * * @brief NpeDl function return value for a Critical Microcode error * discovered during download. Assume NPE is left in unstable condition * if this value is returned. */ #define IX_NPEDL_CRITICAL_MICROCODE_ERR 5 /** * @def IX_NPEDL_DEVICE_ERR * * @brief NpeDl function return value when image being downloaded * is not meant for the device in use */ #define IX_NPEDL_DEVICE_ERR 6 /** * @defgroup NPEImageID IXP400 NPE Image ID Definition * * @ingroup IxNpeDl * * @brief Definition of NPE Image ID to be passed to ixNpeDlNpeInitAndStart() * as input of type UINT32 which has the following fields format: * * Field [Bit Location]
* --------------------
* Device ID [31 - 28]
* NPE ID [27 - 24]
* NPE Functionality ID [23 - 16]
* Major Release Number [15 - 8]
* Minor Release Number [7 - 0]
* * * @{ */ /** * @def IX_NPEDL_NPEIMAGE_FIELD_MASK * * @brief Mask for NPE Image ID's Field * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define IX_NPEDL_NPEIMAGE_FIELD_MASK 0xff /** * @def IX_NPEDL_NPEIMAGE_NPEID_MASK * * @brief Mask for NPE Image NPE ID's Field * */ #define IX_NPEDL_NPEIMAGE_NPEID_MASK 0xf /** * @def IX_NPEDL_NPEIMAGE_DEVICEID_MASK * * @brief Mask for NPE Image Device ID's Field * */ #define IX_NPEDL_NPEIMAGE_DEVICEID_MASK 0xf /** * @def IX_NPEDL_NPEIMAGE_BIT_LOC_NPEID * * @brief Location of NPE ID field in term of bit. * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define IX_NPEDL_NPEIMAGE_BIT_LOC_NPEID 24 /** * @def IX_NPEDL_NPEIMAGE_BIT_LOC_FUNCTIONALITYID * * @brief Location of Functionality ID field in term of bit. * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define IX_NPEDL_NPEIMAGE_BIT_LOC_FUNCTIONALITYID 16 /** * @def IX_NPEDL_NPEIMAGE_BIT_LOC_MAJOR * * @brief Location of Major Release Number field in term of bit. * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define IX_NPEDL_NPEIMAGE_BIT_LOC_MAJOR 8 /** * @def IX_NPEDL_NPEIMAGE_BIT_LOC_MINOR * * @brief Location of Minor Release Number field in term of bit. * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define IX_NPEDL_NPEIMAGE_BIT_LOC_MINOR 0 /** * @} addtogroup NPEImageID */ /** * @def ixNpeDlMicrocodeImageOverride(x) * * @brief Map old terminology that uses term "image" to new term * "image library" * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define ixNpeDlMicrocodeImageOverride(x) ixNpeDlMicrocodeImageLibraryOverride(x) /** * @def IxNpeDlVersionId * * @brief Map old terminology that uses term "version" to new term * "image" * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define IxNpeDlVersionId IxNpeDlImageId /** * @def ixNpeDlVersionDownload * * @brief Map old terminology that uses term "version" to new term * "image" * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define ixNpeDlVersionDownload(x,y) ixNpeDlImageDownload(x,y) /** * @def ixNpeDlAvailableVersionsCountGet * * @brief Map old terminology that uses term "version" to new term * "image" * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define ixNpeDlAvailableVersionsCountGet(x) ixNpeDlAvailableImagesCountGet(x) /** * @def ixNpeDlAvailableVersionsListGet * * @brief Map old terminology that uses term "version" to new term * "image" * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define ixNpeDlAvailableVersionsListGet(x,y) ixNpeDlAvailableImagesListGet(x,y) /** * @def ixNpeDlLoadedVersionGet * * @brief Map old terminology that uses term "version" to new term * "image" * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define ixNpeDlLoadedVersionGet(x,y) ixNpeDlLoadedImageGet(x,y) /** * @def clientImage * * @brief Map old terminology that uses term "image" to new term * "image library" * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define clientImage clientImageLibrary /** * @def versionIdPtr * * @brief Map old terminology that uses term "version" to new term * "image" * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define versionIdPtr imageIdPtr /** * @def numVersionsPtr * * @brief Map old terminology that uses term "version" to new term * "image" * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define numVersionsPtr numImagesPtr /** * @def versionIdListPtr * * @brief Map old terminology that uses term "version" to new term * "image" * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define versionIdListPtr imageIdListPtr /** * @def IxNpeDlBuildId * * @brief Map old terminology that uses term "buildId" to new term * "functionalityId" * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define IxNpeDlBuildId IxNpeDlFunctionalityId /** * @def buildId * * @brief Map old terminology that uses term "buildId" to new term * "functionalityId" * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define buildId functionalityId /** * @def IX_NPEDL_MicrocodeImage * * @brief Map old terminology that uses term "image" to new term * "image library" * * @warning THIS #define HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ #define IX_NPEDL_MicrocodeImage IX_NPEDL_MicrocodeImageLibrary /* * Typedefs */ /** * @typedef IxNpeDlFunctionalityId * @brief Used to make up Functionality ID field of Image Id * * @warning THIS typedef HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ typedef UINT8 IxNpeDlFunctionalityId; /** * @typedef IxNpeDlMajor * @brief Used to make up Major Release field of Image Id * * @warning THIS typedef HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ typedef UINT8 IxNpeDlMajor; /** * @typedef IxNpeDlMinor * @brief Used to make up Minor Revision field of Image Id * * @warning THIS typedef HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ typedef UINT8 IxNpeDlMinor; /* * Enums */ /** * @brief NpeId numbers to identify NPE A, B or C * @note In this context, for IXP425 Silicon (B0):
* - NPE-A has HDLC, HSS, AAL and UTOPIA Coprocessors.
* - NPE-B has Ethernet Coprocessor.
* - NPE-C has Ethernet, AES, DES and HASH Coprocessors.
* - IXP400 Product Line have different combinations of coprocessors. */ typedef enum { IX_NPEDL_NPEID_NPEA = 0, /**< Identifies NPE A */ IX_NPEDL_NPEID_NPEB, /**< Identifies NPE B */ IX_NPEDL_NPEID_NPEC, /**< Identifies NPE C */ IX_NPEDL_NPEID_MAX /**< Total Number of NPEs */ } IxNpeDlNpeId; /* * Structs */ /** * @brief Image Id to identify each image contained in an image library * * @warning THIS struct HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart for more information. */ typedef struct { IxNpeDlNpeId npeId; /**< NPE ID */ IxNpeDlFunctionalityId functionalityId; /**< Build ID indicates functionality of image */ IxNpeDlMajor major; /**< Major Release Number */ IxNpeDlMinor minor; /**< Minor Revision Number */ } IxNpeDlImageId; /* * Prototypes for interface functions */ /** * @ingroup IxNpeDl * * @fn PUBLIC IX_STATUS ixNpeDlNpeInitAndStart (UINT32 imageId) * * @brief Stop, reset, download microcode (firmware) and finally start NPE. * * @param imageId UINT32 [in] - Id of the microcode image to download. * * This function locates the image specified by the imageId parameter * from the default microcode image library which is included internally by * this component. * It then stops and resets the NPE, loads the firmware image onto the NPE, * and then restarts the NPE. * * @note A list of valid image IDs is included in this header file. * See #defines with prefix IX_NPEDL_NPEIMAGE_... * * @note This function, along with @ref ixNpeDlCustomImageNpeInitAndStart * and @ref ixNpeDlLoadedImageFunctionalityGet, supercedes the following * functions which are deprecated and will be removed completely in a * future release: * - @ref ixNpeDlImageDownload * - @ref ixNpeDlAvailableImagesCountGet * - @ref ixNpeDlAvailableImagesListGet * - @ref ixNpeDlLatestImageGet * - @ref ixNpeDlLoadedImageGet * - @ref ixNpeDlMicrocodeImageLibraryOverride * - @ref ixNpeDlNpeExecutionStop * - @ref ixNpeDlNpeStopAndReset * - @ref ixNpeDlNpeExecutionStart * * @pre * - The Client is responsible for ensuring mutual access to the NPE. * @post * - The NPE Instruction Pipeline will be cleared if State Information * has been downloaded. * - If the download fails with a critical error, the NPE may * be left in an ususable state. * @return * - IX_SUCCESS if the download was successful; * - IX_NPEDL_PARAM_ERR if a parameter error occured * - IX_NPEDL_CRITICAL_NPE_ERR if a critical NPE error occured during * download * - IX_NPEDL_CRITICAL_MICROCODE_ERR if a critical microcode error * occured during download * - IX_NPEDL_DEVICE_ERR if the image being loaded is not meant for * the device currently running. * - IX_FAIL if NPE is not available or image is failed to be located. * A warning is issued if the NPE is not present. */ PUBLIC IX_STATUS ixNpeDlNpeInitAndStart (UINT32 npeImageId); /** * @ingroup IxNpeDl * * @fn PUBLIC IX_STATUS ixNpeDlCustomImageNpeInitAndStart (UINT32 *imageLibrary, UINT32 imageId) * * @brief Stop, reset, download microcode (firmware) and finally start NPE * * @param imageId UINT32 [in] - Id of the microcode image to download. * * This function locates the image specified by the imageId parameter * from the specified microcode image library which is pointed to by the * imageLibrary parameter. * It then stops and resets the NPE, loads the firmware image onto the NPE, * and then restarts the NPE. * * This is a facility for users who wish to use an image from an external * library of NPE firmware images. To use a standard image from the * built-in library, see @ref ixNpeDlNpeInitAndStart instead. * * @note A list of valid image IDs is included in this header file. * See #defines with prefix IX_NPEDL_NPEIMAGE_... * * @note This function, along with @ref ixNpeDlNpeInitAndStart * and @ref ixNpeDlLoadedImageFunctionalityGet, supercedes the following * functions which are deprecated and will be removed completely in a * future release: * - @ref ixNpeDlImageDownload * - @ref ixNpeDlAvailableImagesCountGet * - @ref ixNpeDlAvailableImagesListGet * - @ref ixNpeDlLatestImageGet * - @ref ixNpeDlLoadedImageGet * - @ref ixNpeDlMicrocodeImageLibraryOverride * - @ref ixNpeDlNpeExecutionStop * - @ref ixNpeDlNpeStopAndReset * - @ref ixNpeDlNpeExecutionStart * * @pre * - The Client is responsible for ensuring mutual access to the NPE. * - The image library supplied must be in the correct format for use * by the NPE Downloader (IxNpeDl) component. Details of the library * format are contained in the Functional Specification document for * IxNpeDl. * @post * - The NPE Instruction Pipeline will be cleared if State Information * has been downloaded. * - If the download fails with a critical error, the NPE may * be left in an ususable state. * @return * - IX_SUCCESS if the download was successful; * - IX_NPEDL_PARAM_ERR if a parameter error occured * - IX_NPEDL_CRITICAL_NPE_ERR if a critical NPE error occured during * download * - IX_NPEDL_CRITICAL_MICROCODE_ERR if a critical microcode error * occured during download * - IX_NPEDL_DEVICE_ERR if the image being loaded is not meant for * the device currently running. * - IX_FAIL if NPE is not available or image is failed to be located. * A warning is issued if the NPE is not present. */ PUBLIC IX_STATUS ixNpeDlCustomImageNpeInitAndStart (UINT32 *imageLibrary, UINT32 npeImageId); /** * @ingroup IxNpeDl * * @fn PUBLIC IX_STATUS ixNpeDlLoadedImageFunctionalityGet (IxNpeDlNpeId npeId, UINT8 *functionalityId) * * @brief Gets the functionality of the image last loaded on a particular NPE * * @param npeId @ref IxNpeDlNpeId [in] - Id of the target NPE. * @param functionalityId UINT8* [out] - the functionality ID of the image * last loaded on the NPE. * * This function retrieves the functionality ID of the image most recently * downloaded successfully to the specified NPE. If the NPE does not contain * a valid image, this function returns a FAIL status. * * @warning This function is not intended for general use, as a knowledge of * how to interpret the functionality ID is required. As such, this function * should only be used by other Access Layer components of the IXP400 Software * Release. * * @pre * * @post * * @return * - IX_SUCCESS if the operation was successful * - IX_NPEDL_PARAM_ERR if a parameter error occured * - IX_FAIL if the NPE does not have a valid image loaded */ PUBLIC IX_STATUS ixNpeDlLoadedImageFunctionalityGet (IxNpeDlNpeId npeId, UINT8 *functionalityId); /** * @ingroup IxNpeDl * * @fn IX_STATUS ixNpeDlMicrocodeImageLibraryOverride (UINT32 *clientImageLibrary) * * @brief This instructs NPE Downloader to use client-supplied microcode image library. * * @param clientImageLibrary UINT32* [in] - Pointer to the client-supplied * NPE microcode image library * * This function sets NPE Downloader to use a client-supplied microcode image library * instead of the standard image library which is included by the NPE Downloader. * This function is provided mainly for increased testability and should not * be used in normal circumstances. When not used, NPE Downloader will use * a "built-in" image library, local to this component, which should always contain the * latest microcode for the NPEs. * * @warning THIS FUNCTION HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlCustomImageNpeInitAndStart. * * @pre * - clientImageLibrary should point to a microcode image library valid for use * by the NPE Downloader component. * * @post * - the client-supplied image library will be used for all subsequent operations * performed by the NPE Downloader * * @return * - IX_SUCCESS if the operation was successful * - IX_NPEDL_PARAM_ERR if a parameter error occured * - IX_FAIL if the client-supplied image library did not contain a valid signature */ PUBLIC IX_STATUS ixNpeDlMicrocodeImageLibraryOverride (UINT32 *clientImageLibrary); /** * @ingroup IxNpeDl * * @fn PUBLIC IX_STATUS ixNpeDlImageDownload (IxNpeDlImageId *imageIdPtr, BOOL verify) * * @brief Stop, reset, download microcode and finally start NPE. * * @param imageIdPtr @ref IxNpeDlImageId* [in] - Pointer to Id of the microcode * image to download. * @param verify BOOL [in] - ON/OFF option to verify the download. If ON * (verify == TRUE), the Downloader will read back * each word written to the NPE registers to * ensure the download operation was successful. * * Using the imageIdPtr, this function locates a particular image of * microcode in the microcode image library in memory, and downloads the microcode * to a particular NPE. * * @warning THIS FUNCTION HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart and @ref ixNpeDlCustomImageNpeInitAndStart. * * @pre * - The Client is responsible for ensuring mutual access to the NPE. * - The Client should use ixNpeDlLatestImageGet() to obtain the latest * version of the image before attempting download. * @post * - The NPE Instruction Pipeline will be cleared if State Information * has been downloaded. * - If the download fails with a critical error, the NPE may * be left in an ususable state. * @return * - IX_SUCCESS if the download was successful; * - IX_NPEDL_PARAM_ERR if a parameter error occured * - IX_NPEDL_CRITICAL_NPE_ERR if a critical NPE error occured during * download * - IX_PARAM_CRITICAL_MICROCODE_ERR if a critical microcode error * occured during download * - IX_FAIL if NPE is not available or image is failed to be located. * A warning is issued if the NPE is not present. */ PUBLIC IX_STATUS ixNpeDlImageDownload (IxNpeDlImageId *imageIdPtr, BOOL verify); /** * @ingroup IxNpeDl * * @fn PUBLIC IX_STATUS ixNpeDlAvailableImagesCountGet (UINT32 *numImagesPtr) * * @brief Get the number of Images available in a microcode image library * * @param numImagesPtr UINT32* [out] - A pointer to the number of images in * the image library. * * Gets the number of images available in the microcode image library. * Then returns this in a variable pointed to by numImagesPtr. * * @warning THIS FUNCTION HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart and @ref ixNpeDlCustomImageNpeInitAndStart. * * @pre * - The Client should declare the variable to which numImagesPtr points * * @post * * @return * - IX_SUCCESS if the operation was successful * - IX_NPEDL_PARAM_ERR if a parameter error occured * - IX_FAIL otherwise */ PUBLIC IX_STATUS ixNpeDlAvailableImagesCountGet (UINT32 *numImagesPtr); /** * @ingroup IxNpeDl * * @fn PUBLIC IX_STATUS ixNpeDlAvailableImagesListGet (IxNpeDlImageId *imageIdListPtr, UINT32 *listSizePtr) * * @brief Get a list of the images available in a microcode image library * * @param imageIdListPtr @ref IxNpeDlImageId* [out] - Array to contain list of * image Ids (memory * allocated by Client). * @param listSizePtr UINT32* [inout] - As an input, this param should point * to the max number of Ids the * imageIdListPtr array can * hold. NpeDl will replace the input * value of this parameter with the * number of image Ids actually filled * into the array before returning. * * Finds list of images available in the microcode image library. * Fills these into the array pointed to by imageIdListPtr * * @warning THIS FUNCTION HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart and @ref ixNpeDlCustomImageNpeInitAndStart. * * @pre * - The Client should declare the variable to which numImagesPtr points * - The Client should create an array (imageIdListPtr) large * enough to contain all the image Ids in the image library * * @post * * @return * - IX_SUCCESS if the operation was successful * - IX_NPEDL_PARAM_ERR if a parameter error occured * - IX_FAIL otherwise */ PUBLIC IX_STATUS ixNpeDlAvailableImagesListGet (IxNpeDlImageId *imageIdListPtr, UINT32 *listSizePtr); /** * @ingroup IxNpeDl * * @fn PUBLIC IX_STATUS ixNpeDlLoadedImageGet (IxNpeDlNpeId npeId, IxNpeDlImageId *imageIdPtr) * * @brief Gets the Id of the image currently loaded on a particular NPE * * @param npeId @ref IxNpeDlNpeId [in] - Id of the target NPE. * @param imageIdPtr @ref IxNpeDlImageId* [out] - Pointer to the where the * image id should be stored. * * If an image of microcode was previously downloaded successfully to the NPE * by NPE Downloader, this function returns in imageIdPtr the image * Id of that image loaded on the NPE. * * @pre * - The Client has allocated memory to the imageIdPtr pointer. * * @post * * @return * - IX_SUCCESS if the operation was successful * - IX_NPEDL_PARAM_ERR if a parameter error occured * - IX_FAIL if the NPE doesn't currently have a image loaded */ PUBLIC IX_STATUS ixNpeDlLoadedImageGet (IxNpeDlNpeId npeId, IxNpeDlImageId *imageIdPtr); /** * @fn PUBLIC IX_STATUS ixNpeDlLatestImageGet (IxNpeDlNpeId npeId, IxNpeDlFunctionalityId functionalityId, IxNpeDlImageId *imageIdPtr) * * @brief This instructs NPE Downloader to get Id of the latest version for an * image that is specified by the client. * * @param npeId @ref IxNpeDlNpeId [in] - Id of the target NPE. * @param functionalityId @ref IxNpeDlFunctionalityId [in] - functionality of the image * @param imageIdPtr @ref IxNpeDlImageId* [out] - Pointer to the where the * image id should be stored. * * This function sets NPE Downloader to return the id of the latest version for * image. The user will select the image by providing a particular NPE * (specifying npeId) with particular functionality (specifying * FunctionalityId). The most recent version available as determined by the * highest Major and Minor revision numbers is returned in imageIdPtr. * * @warning THIS FUNCTION HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart and @ref ixNpeDlCustomImageNpeInitAndStart. * * @return * - IX_SUCCESS if the operation was successful * - IX_NPEDL_PARAM_ERR if a parameter error occured * - IX_FAIL otherwise */ PUBLIC IX_STATUS ixNpeDlLatestImageGet (IxNpeDlNpeId npeId, IxNpeDlFunctionalityId functionalityId, IxNpeDlImageId *imageIdPtr); /** * @ingroup IxNpeDl * * @fn PUBLIC IX_STATUS ixNpeDlNpeStopAndReset (IxNpeDlNpeId npeId) * * @brief Stops and Resets an NPE * * @param npeId @ref IxNpeDlNpeId [in] - Id of the target NPE. * * This function performs a soft NPE reset by writing reset values to * particular NPE registers. Note that this does not reset NPE co-processors. * This implicitly stops NPE code execution before resetting the NPE. * * @note It is no longer necessary to call this function before downloading * a new image to the NPE. It is left on the API only to allow greater control * of NPE execution if required. Where appropriate, use @ref ixNpeDlNpeInitAndStart * or @ref ixNpeDlCustomImageNpeInitAndStart instead. * * @warning THIS FUNCTION HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart and @ref ixNpeDlCustomImageNpeInitAndStart. * * @pre * - The Client is responsible for ensuring mutual access to the NPE. * * @post * * @return * - IX_SUCCESS if the operation was successful * - IX_NPEDL_PARAM_ERR if a parameter error occured * - IX_FAIL otherwise * - IX_NPEDL_CRITICAL_NPE_ERR failed to reset NPE due to timeout error. * Timeout error could happen if NPE hang */ PUBLIC IX_STATUS ixNpeDlNpeStopAndReset (IxNpeDlNpeId npeId); /** * @ingroup IxNpeDl * * @fn PUBLIC IX_STATUS ixNpeDlNpeExecutionStart (IxNpeDlNpeId npeId) * * @brief Starts code execution on a NPE * * @param npeId @ref IxNpeDlNpeId [in] - Id of the target NPE * * Starts execution of code on a particular NPE. A client would typically use * this after a download to NPE is performed, to start/restart code execution * on the NPE. * * @note It is no longer necessary to call this function after downloading * a new image to the NPE. It is left on the API only to allow greater control * of NPE execution if required. Where appropriate, use @ref ixNpeDlNpeInitAndStart * or @ref ixNpeDlCustomImageNpeInitAndStart instead. * * @warning THIS FUNCTION HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart and @ref ixNpeDlCustomImageNpeInitAndStart. * * @pre * - The Client is responsible for ensuring mutual access to the NPE. * - Note that this function does not set the NPE Next Program Counter * (NextPC), so it should be set beforehand if required by downloading * appropriate State Information (using ixNpeDlVersionDownload()). * * @post * * @return * - IX_SUCCESS if the operation was successful * - IX_NPEDL_PARAM_ERR if a parameter error occured * - IX_FAIL otherwise */ PUBLIC IX_STATUS ixNpeDlNpeExecutionStart (IxNpeDlNpeId npeId); /** * @ingroup IxNpeDl * * @fn PUBLIC IX_STATUS ixNpeDlNpeExecutionStop (IxNpeDlNpeId npeId) * * @brief Stops code execution on a NPE * * @param npeId @ref IxNpeDlNpeId [in] - Id of the target NPE * * Stops execution of code on a particular NPE. This would typically be used * by a client before a download to NPE is performed, to stop code execution on * an NPE, unless ixNpeDlNpeStopAndReset() is used instead. Unlike * ixNpeDlNpeStopAndReset(), this function only halts the NPE and leaves * all registers and settings intact. This is useful, for example, between * stages of a multi-stage download, to stop the NPE prior to downloading the * next image while leaving the current state of the NPE intact.. * * @warning THIS FUNCTION HAS BEEN DEPRECATED AND SHOULD NOT BE USED. * It will be removed in a future release. * See @ref ixNpeDlNpeInitAndStart and @ref ixNpeDlCustomImageNpeInitAndStart. * * @pre * - The Client is responsible for ensuring mutual access to the NPE. * * @post * * @return * - IX_SUCCESS if the operation was successful * - IX_NPEDL_PARAM_ERR if a parameter error occured * - IX_FAIL otherwise */ PUBLIC IX_STATUS ixNpeDlNpeExecutionStop (IxNpeDlNpeId npeId); /** * @ingroup IxNpeDl * * @fn PUBLIC IX_STATUS ixNpeDlUnload (void) * * @brief This function will uninitialise the IxNpeDl component. * * This function will uninitialise the IxNpeDl component. It should only be * called once, and only if the IxNpeDl component has already been initialised by * calling any of the following functions: * - @ref ixNpeDlNpeInitAndStart * - @ref ixNpeDlCustomImageNpeInitAndStart * - @ref ixNpeDlImageDownload (deprecated) * - @ref ixNpeDlNpeStopAndReset (deprecated) * - @ref ixNpeDlNpeExecutionStop (deprecated) * - @ref ixNpeDlNpeExecutionStart (deprecated) * * If possible, this function should be called before a soft reboot or unloading * a kernel module to perform any clean up operations required for IxNpeDl. * * The following actions will be performed by this function: * - Unmapping of any kernel memory mapped by IxNpeDl * * @return * - IX_SUCCESS if the operation was successful * - IX_FAIL otherwise */ PUBLIC IX_STATUS ixNpeDlUnload (void); /** * @ingroup IxNpeDl * * @fn PUBLIC void ixNpeDlStatsShow (void) * * @brief This function will display run-time statistics from the IxNpeDl * component * * @return none */ PUBLIC void ixNpeDlStatsShow (void); /** * @ingroup IxNpeDl * * @fn PUBLIC void ixNpeDlStatsReset (void) * * @brief This function will reset the statistics of the IxNpeDl component * * @return none */ PUBLIC void ixNpeDlStatsReset (void); #endif /* IXNPEDL_H */ /** * @} defgroup IxNpeDl */