/**
 * @date   April 18, 2005
 *
 * @brief  IXP400 NPE Microcode Image file
 *
 * This file was generated by the IxNpeDlImageGen tool.
 * It contains a NPE microcode image suitable for use
 * with the NPE Downloader (IxNpeDl) component in the
 * IXP400 Access Driver software library.
 *
 * @par
 * IXP400 SW Release version 2.0
 *
 * -- Copyright Notice --
 *
 * @par
 * Copyright 2001-2005, Intel Corporation.
 * All rights reserved.
 *
 * @par
 * SPDX-License-Identifier:	BSD-3-Clause
 * @par
 * -- End of Copyright Notice --
*/

/**
 * @defgroup IxNpeMicrocode IXP400 NPE Microcode Image Library
 *
 * @brief Library containing a set of NPE firmware images, for use
 * with NPE Downloader s/w component
 *
 * @{
 */

/**
 * @def IX_NPE_IMAGE_INCLUDE
 *
 * @brief Wrap the following Image identifiers with "#if IX_NPE_IMAGE_INCLUDE ... #endif" to include the image in the library
 */
#define IX_NPE_IMAGE_INCLUDE 1

/**
 * @def IX_NPE_IMAGE_OMIT
 *
 * @brief Wrap the following Image identifiers with "#if IX_NPE_IMAGE_OMIT ... #endif" to OMIT the image from the library
 */
#define IX_NPE_IMAGE_OMIT    0


#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEA_HSS0
 *
 * @brief NPE Image Id for NPE-A with HSS-0 Only feature.  It supports 32 channelized and 4 packetized.
 */
#define IX_NPEDL_NPEIMAGE_NPEA_HSS0 0x00010000
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEA_HSS0_ATM_SPHY_1_PORT
 *
 * @brief NPE Image Id for NPE-A with HSS-0 and ATM feature. For HSS, it supports 16/32 channelized and 4/0 packetized. For ATM, it supports AAL5, AAL0 and OAM for UTOPIA SPHY, 1 logical port, 32 VCs. It also has Fast Path support.
 */
#define IX_NPEDL_NPEIMAGE_NPEA_HSS0_ATM_SPHY_1_PORT 0x00020000
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEA_HSS0_ATM_MPHY_1_PORT
 *
 * @brief NPE Image Id for NPE-A with HSS-0 and ATM feature. For HSS, it supports 16/32 channelized and 4/0 packetized. For ATM, it supports AAL5, AAL0 and OAM for UTOPIA MPHY, 1 logical port, 32 VCs. It also has Fast Path support.
 */
#define IX_NPEDL_NPEIMAGE_NPEA_HSS0_ATM_MPHY_1_PORT 0x00030000
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEA_ATM_MPHY_12_PORT
 *
 * @brief NPE Image Id for NPE-A with ATM-Only feature. It supports AAL5, AAL0 and OAM for UTOPIA MPHY, 12 logical ports, 32 VCs. It also has Fast Path support.
 */
#define IX_NPEDL_NPEIMAGE_NPEA_ATM_MPHY_12_PORT 0x00040000
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEA_DMA
 *
 * @brief NPE Image Id for NPE-A with DMA-Only feature.
 */
#define IX_NPEDL_NPEIMAGE_NPEA_DMA 0x00150100
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEA_HSS_2_PORT
 *
 * @brief NPE Image Id for NPE-A with HSS-0 and HSS-1 feature. Each HSS port supports 32 channelized and 4 packetized.
 */
#define IX_NPEDL_NPEIMAGE_NPEA_HSS_2_PORT 0x00090000
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEA_ETH
 *
 * @brief NPE Image Id for NPE-A with Basic Ethernet Rx/Tx which includes: MAC_FILTERING, MAC_LEARNING, SPANNING_TREE, FIREWALL
 */
#define IX_NPEDL_NPEIMAGE_NPEA_ETH 0x10800200
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEA_ETH_LEARN_FILTER_SPAN_FIREWALL
 *
 * @brief NPE Image Id for NPE-A with Basic Ethernet Rx/Tx which includes: MAC_FILTERING, MAC_LEARNING, SPANNING_TREE, FIREWALL
 */
#define IX_NPEDL_NPEIMAGE_NPEA_ETH_LEARN_FILTER_SPAN_FIREWALL 0x10800200
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEA_ETH_LEARN_FILTER_SPAN_FIREWALL_VLAN_QOS
 *
 * @brief NPE Image Id for NPE-A with Ethernet Rx/Tx which includes: MAC_FILTERING, MAC_LEARNING, SPANNING_TREE, FIREWALL, VLAN_QOS
 */
#define IX_NPEDL_NPEIMAGE_NPEA_ETH_LEARN_FILTER_SPAN_FIREWALL_VLAN_QOS 0x10810200
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEA_ETH_SPAN_FIREWALL_VLAN_QOS_HDR_CONV
 *
 * @brief NPE Image Id for NPE-A with Ethernet Rx/Tx which includes: SPANNING_TREE, FIREWALL, VLAN_QOS, HEADER_CONVERSION
 */
#define IX_NPEDL_NPEIMAGE_NPEA_ETH_SPAN_FIREWALL_VLAN_QOS_HDR_CONV 0x10820200
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEB_ETH
 *
 * @brief NPE Image Id for NPE-B with Basic Ethernet Rx/Tx which includes: MAC_FILTERING, MAC_LEARNING, SPANNING_TREE, FIREWALL
 */
#define IX_NPEDL_NPEIMAGE_NPEB_ETH 0x01000200
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEB_ETH_LEARN_FILTER_SPAN_FIREWALL
 *
 * @brief NPE Image Id for NPE-B with Basic Ethernet Rx/Tx which includes: MAC_FILTERING, MAC_LEARNING, SPANNING_TREE, FIREWALL
 */
#define IX_NPEDL_NPEIMAGE_NPEB_ETH_LEARN_FILTER_SPAN_FIREWALL 0x01000200
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEB_ETH_LEARN_FILTER_SPAN_FIREWALL_VLAN_QOS
 *
 * @brief NPE Image Id for NPE-B with Ethernet Rx/Tx which includes: MAC_FILTERING, MAC_LEARNING, SPANNING_TREE, FIREWALL, VLAN_QOS
 */
#define IX_NPEDL_NPEIMAGE_NPEB_ETH_LEARN_FILTER_SPAN_FIREWALL_VLAN_QOS 0x01010200
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEB_ETH_SPAN_FIREWALL_VLAN_QOS_HDR_CONV
 *
 * @brief NPE Image Id for NPE-B with Ethernet Rx/Tx which includes: SPANNING_TREE, FIREWALL, VLAN_QOS, HEADER_CONVERSION
 */
#define IX_NPEDL_NPEIMAGE_NPEB_ETH_SPAN_FIREWALL_VLAN_QOS_HDR_CONV 0x01020200
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEB_DMA
 *
 * @brief NPE Image Id for NPE-B with DMA-Only feature.
 */
#define IX_NPEDL_NPEIMAGE_NPEB_DMA 0x01020100
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEC_ETH
 *
 * @brief NPE Image Id for NPE-C with Basic Ethernet Rx/Tx which includes: MAC_FILTERING, MAC_LEARNING, SPANNING_TREE, FIREWALL
 */
#define IX_NPEDL_NPEIMAGE_NPEC_ETH 0x02000200
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEC_ETH_LEARN_FILTER_SPAN_FIREWALL
 *
 * @brief NPE Image Id for NPE-C with Basic Ethernet Rx/Tx which includes: MAC_FILTERING, MAC_LEARNING, SPANNING_TREE, FIREWALL
 */
#define IX_NPEDL_NPEIMAGE_NPEC_ETH_LEARN_FILTER_SPAN_FIREWALL 0x02000200
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEC_ETH_LEARN_FILTER_SPAN_FIREWALL_VLAN_QOS
 *
 * @brief NPE Image Id for NPE-C with Ethernet Rx/Tx which includes: MAC_FILTERING, MAC_LEARNING, SPANNING_TREE, FIREWALL, VLAN_QOS
 */
#define IX_NPEDL_NPEIMAGE_NPEC_ETH_LEARN_FILTER_SPAN_FIREWALL_VLAN_QOS 0x02010200
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEC_ETH_SPAN_FIREWALL_VLAN_QOS_HDR_CONV
 *
 * @brief NPE Image Id for NPE-C with Ethernet Rx/Tx which includes: SPANNING_TREE, FIREWALL, VLAN_QOS, HEADER_CONVERSION
 */
#define IX_NPEDL_NPEIMAGE_NPEC_ETH_SPAN_FIREWALL_VLAN_QOS_HDR_CONV 0x02020200
#endif

#if IX_NPE_IMAGE_INCLUDE
/**
 * @def IX_NPEDL_NPEIMAGE_NPEC_DMA
 *
 * @brief NPE Image Id for NPE-C with DMA-Only feature.
 */
#define IX_NPEDL_NPEIMAGE_NPEC_DMA 0x02080100
#endif

/* Number of NPE firmware images in this library */
#define IX_NPE_MICROCODE_AVAILABLE_VERSIONS_COUNT 17

/* Location of Microcode Images */
#ifdef IX_NPE_MICROCODE_FIRMWARE_INCLUDED
#ifdef IX_NPEDL_READ_MICROCODE_FROM_FILE

extern UINT32* ixNpeMicrocode_binaryArray;

#else

extern unsigned IxNpeMicrocode_array[];

#endif
#endif

/*
 * sr: undef all but the bare minimum to reduce flash usage for U-Boot
 */
#undef IX_NPEDL_NPEIMAGE_NPEA_HSS0
#undef IX_NPEDL_NPEIMAGE_NPEA_HSS0_ATM_SPHY_1_PORT
#undef IX_NPEDL_NPEIMAGE_NPEA_HSS0_ATM_MPHY_1_PORT
#undef IX_NPEDL_NPEIMAGE_NPEA_ATM_MPHY_12_PORT
#undef IX_NPEDL_NPEIMAGE_NPEA_DMA
#undef IX_NPEDL_NPEIMAGE_NPEA_HSS_2_PORT
#undef IX_NPEDL_NPEIMAGE_NPEA_ETH
#undef IX_NPEDL_NPEIMAGE_NPEA_ETH_LEARN_FILTER_SPAN_FIREWALL
#undef IX_NPEDL_NPEIMAGE_NPEA_ETH_LEARN_FILTER_SPAN_FIREWALL_VLAN_QOS
#undef IX_NPEDL_NPEIMAGE_NPEA_ETH_SPAN_FIREWALL_VLAN_QOS_HDR_CONV
#undef IX_NPEDL_NPEIMAGE_NPEB_ETH
#undef IX_NPEDL_NPEIMAGE_NPEB_ETH_LEARN_FILTER_SPAN_FIREWALL
/* #undef IX_NPEDL_NPEIMAGE_NPEB_ETH_LEARN_FILTER_SPAN_FIREWALL_VLAN_QOS */
#undef IX_NPEDL_NPEIMAGE_NPEB_ETH_SPAN_FIREWALL_VLAN_QOS_HDR_CONV
#undef IX_NPEDL_NPEIMAGE_NPEB_DMA
#undef IX_NPEDL_NPEIMAGE_NPEC_ETH
#undef IX_NPEDL_NPEIMAGE_NPEC_ETH_LEARN_FILTER_SPAN_FIREWALL
/* #undef IX_NPEDL_NPEIMAGE_NPEC_ETH_LEARN_FILTER_SPAN_FIREWALL_VLAN_QOS */
#undef IX_NPEDL_NPEIMAGE_NPEC_ETH_SPAN_FIREWALL_VLAN_QOS_HDR_CONV
#undef IX_NPEDL_NPEIMAGE_NPEC_DMA

/**
 * @} defgroup IxNpeMicrocode
 */
