mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 12:08:19 +00:00 
			
		
		
		
	Signed-off-by: Marek Vasut <marex@denx.de> Cc: Bryan Hundven <bryanhundven@gmail.com> Cc: Michael Schwingen <rincewind@discworld.dascon.de> Cc: Wolfgang Denk <wd@denx.de> Cc: Albert Aribaud <albert.u.boot@aribaud.net> Cc: U-Boot DM <u-boot-dm@lists.denx.de> Cc: Joe Hershberger <joe.hershberger@ni.com>
		
			
				
	
	
		
			743 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			743 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
|  * @file IxFeatureCtrl.h
 | |
|  *
 | |
|  * @date 30-Jan-2003
 | |
| 
 | |
|  * @brief This file contains the public API of the IXP400 Feature Control
 | |
|  *        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 --
 | |
| */
 | |
| /* ------------------------------------------------------
 | |
|    Doxygen group definitions
 | |
|    ------------------------------------------------------ */
 | |
| /**
 | |
|  * @defgroup IxFeatureCtrlAPI IXP400 Feature Control (IxFeatureCtrl) API
 | |
|  *
 | |
|  * @brief The Public API for the IXP400 Feature Control.
 | |
|  * 
 | |
|  * @{
 | |
|  */
 | |
| 
 | |
| #ifndef IXFEATURECTRL_H
 | |
| #define IXFEATURECTRL_H
 | |
| 
 | |
| /*
 | |
|  * User defined include files
 | |
|  */
 | |
| #include "IxOsal.h"
 | |
| 
 | |
| /*
 | |
|  * #defines and macros
 | |
|  */
 | |
| 
 | |
| /*************************************************************
 | |
|  * The following are IxFeatureCtrlComponentCheck return values.
 | |
|  ************************************************************/
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @def  IX_FEATURE_CTRL_COMPONENT_DISABLED
 | |
|  *
 | |
|  * @brief Hardware Component is disabled/unavailable.
 | |
|  *        Return status by ixFeatureCtrlComponentCheck()  
 | |
|  */
 | |
| #define  IX_FEATURE_CTRL_COMPONENT_DISABLED 0
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @def  IX_FEATURE_CTRL_COMPONENT_ENABLED
 | |
|  *
 | |
|  * @brief Hardware Component is available. 
 | |
|  *        Return status by ixFeatureCtrlComponentCheck()  
 | |
|  */
 | |
| #define  IX_FEATURE_CTRL_COMPONENT_ENABLED  1
 | |
| 
 | |
| /***********************************************************************************
 | |
|  * Product ID in XScale CP15 - Register 0
 | |
|  *  - It contains information on the maximum XScale Core Frequency and
 | |
|  *    Silicon Stepping.  
 | |
|  *  - XScale Core Frequency Id indicates only the maximum XScale frequency
 | |
|  *    achievable and not the running XScale frequency (maybe stepped down).    
 | |
|  *  - The register is read by using ixFeatureCtrlProductIdRead.
 | |
|  *  - Usage example: 
 | |
|  *          productId = ixFeatureCtrlProductIdRead();
 | |
|  *          if( (productId & IX_FEATURE_CTRL_SILICON_STEPPING_MASK) == 
 | |
|  *              IX_FEATURE_CTRL_SILICON_TYPE_A0 )
 | |
|  *          if( (productId & IX_FEATURE_CTRL_XSCALE_FREQ_MASK) == 
 | |
|  *              IX_FEATURE_CTRL_XSCALE_FREQ_533 )    
 | |
|  * 
 | |
|  *  31 28 27 24 23 20 19 16 15 12 11        9 8                   4 3              0  
 | |
|  *  -------------------------------------------------------------------------------- 
 | |
|  * | 0x6 | 0x9 | 0x0 | 0x5 | 0x4 | Device ID | XScale Core Freq Id | Si Stepping Id |    
 | |
|  *  --------------------------------------------------------------------------------
 | |
|  *
 | |
|  *   Maximum Achievable XScale Core Frequency Id :  533MHz  - 0x1C 
 | |
|  *                                                  400MHz  - 0x1D 
 | |
|  *                                                  266MHz  - 0x1F
 | |
|  *
 | |
|  *   <b>THE CORE FREQUENCY ID IS NOT APPLICABLE TO IXP46X <\b>
 | |
|  *  
 | |
|  *   The above is applicable to IXP42X only. CP15 in IXP46X does not contain any
 | |
|  *   Frequency ID. 
 | |
|  * 
 | |
|  *  Si Stepping Id            :  A       - 0x0    
 | |
|  *                               B       - 0x1 
 | |
|  *  
 | |
|  *  XScale Core freq Id - Device ID [11:9] : IXP42X - 0x0
 | |
|  *                                           IXP46X - 0x1
 | |
|  *************************************************************************************/
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @def IX_FEATURE_CTRL_SILICON_TYPE_A0
 | |
|  *
 | |
|  * @brief This is the value of A0 Silicon in product ID. 
 | |
|  */
 | |
| #define IX_FEATURE_CTRL_SILICON_TYPE_A0   0
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @def IX_FEATURE_CTRL_SILICON_TYPE_B0
 | |
|  *
 | |
|  * @brief This is the value of B0 Silicon in product ID.
 | |
|  */
 | |
| #define IX_FEATURE_CTRL_SILICON_TYPE_B0   1
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @def IX_FEATURE_CTRL_SILICON_STEPPING_MASK
 | |
|  *
 | |
|  * @brief This is the mask of silicon stepping in product ID. 
 | |
|  */
 | |
| #define IX_FEATURE_CTRL_SILICON_STEPPING_MASK  0xF 
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI
 | |
|  *
 | |
|  * @def IX_FEATURE_CTRL_DEVICE_TYPE_MASK
 | |
|  *
 | |
|  * @brief This is the mask of silicon stepping in product ID.
 | |
|  */
 | |
| #define IX_FEATURE_CTRL_DEVICE_TYPE_MASK  (0x7) 
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI
 | |
|  *
 | |
|  * @def IX_FEATURE_CTRL_DEVICE_TYPE_OFFSET
 | |
|  *
 | |
|  * @brief This is the mask of silicon stepping in product ID.
 | |
|  */
 | |
| #define IX_FEATURE_CTRL_DEVICE_TYPE_OFFSET  9
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @def IX_FEATURE_CTRL_XSCALE_FREQ_533
 | |
|  *
 | |
|  * @brief This is the value of 533MHz XScale Core in product ID.
 | |
|  */
 | |
| #define IX_FEATURE_CTRL_XSCALE_FREQ_533  ((0x1C)<<4)
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @def IX_FEATURE_CTRL_XSCALE_FREQ_400
 | |
|  *
 | |
|  * @brief This is the value of 400MHz XScale Core in product ID.
 | |
|  */
 | |
| #define IX_FEATURE_CTRL_XSCALE_FREQ_400  ((0x1D)<<4)
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @def IX_FEATURE_CTRL_XSCALE_FREQ_266
 | |
|  *
 | |
|  * @brief This is the value of 266MHz XScale Core in product ID.
 | |
|  */
 | |
| #define IX_FEATURE_CTRL_XSCALE_FREQ_266 ((0x1F)<<4)   
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @def IX_FEATURE_CTRL_XSCALE_FREQ_MASK
 | |
|  *
 | |
|  * @brief This is the mask of XScale Core in product ID.
 | |
|  */
 | |
| #define IX_FEATURE_CTRL_XSCALE_FREQ_MASK ((0xFF)<<4)  
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @def IX_FEATURECTRL_REG_UTOPIA_32PHY
 | |
|  *
 | |
|  * @brief Maximum  UTOPIA PHY available is 32.  
 | |
|  * 
 | |
|  */
 | |
| #define IX_FEATURECTRL_REG_UTOPIA_32PHY  0x0
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @def IX_FEATURECTRL_REG_UTOPIA_16PHY
 | |
|  *
 | |
|  * @brief Maximum  UTOPIA PHY available is 16.  
 | |
|  * 
 | |
|  */
 | |
| #define IX_FEATURECTRL_REG_UTOPIA_16PHY  0x1
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @def IX_FEATURECTRL_REG_UTOPIA_8PHY
 | |
|  *
 | |
|  * @brief Maximum  UTOPIA PHY available to is 8.  
 | |
|  * 
 | |
|  */
 | |
| #define IX_FEATURECTRL_REG_UTOPIA_8PHY   0x2
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @def IX_FEATURECTRL_REG_UTOPIA_4PHY
 | |
|  *
 | |
|  * @brief Maximum  UTOPIA PHY available to is 4.  
 | |
|  * 
 | |
|  */
 | |
| #define IX_FEATURECTRL_REG_UTOPIA_4PHY   0x3
 | |
| 
 | |
| #ifdef __ixp46X
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI
 | |
|  *
 | |
|  * @def IX_FEATURECTRL_REG_XSCALE_533FREQ
 | |
|  *
 | |
|  * @brief Maximum  frequency available to IXP46x is 533 MHz.
 | |
|  *
 | |
|  */
 | |
| #define IX_FEATURECTRL_REG_XSCALE_533FREQ   0x0
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI
 | |
|  *
 | |
|  * @def IX_FEATURECTRL_REG_XSCALE_667FREQ
 | |
|  *
 | |
|  * @brief Maximum  frequency available to IXP46x is 667 MHz.
 | |
|  *
 | |
|  */
 | |
| #define IX_FEATURECTRL_REG_XSCALE_667FREQ   0x1
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI
 | |
|  *
 | |
|  * @def IX_FEATURECTRL_REG_XSCALE_400FREQ
 | |
|  *
 | |
|  * @brief Maximum  frequency available to IXP46x is 400 MHz.
 | |
|  *
 | |
|  */
 | |
| #define IX_FEATURECTRL_REG_XSCALE_400FREQ   0x2
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI
 | |
|  *
 | |
|  * @def IX_FEATURECTRL_REG_XSCALE_266FREQ
 | |
|  *
 | |
|  * @brief Maximum  frequency available to IXP46x is 266 MHz.
 | |
|  *
 | |
|  */
 | |
| #define IX_FEATURECTRL_REG_XSCALE_266FREQ   0x3
 | |
| 
 | |
| #endif /* __ixp46X */
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI
 | |
|  *
 | |
|  * @def IX_FEATURECTRL_COMPONENT_NOT_AVAILABLE
 | |
|  *
 | |
|  * @brief Component selected is not available for device
 | |
|  *
 | |
|  */
 | |
| #define IX_FEATURECTRL_COMPONENT_NOT_AVAILABLE  0x0000
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI
 | |
|  *
 | |
|  * @def IX_FEATURECTRL_COMPONENT_ALWAYS_AVAILABLE
 | |
|  *
 | |
|  * @brief Component selected is not available for device
 | |
|  *
 | |
|  */
 | |
| #define IX_FEATURECTRL_COMPONENT_ALWAYS_AVAILABLE  0xffff
 | |
| 
 | |
| /**
 | |
|  * @defgroup IxFeatureCtrlSwConfig Software Configuration for Access Component
 | |
|  *
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @brief This section describes software configuration in access component. The
 | |
|  *        configuration can be changed at run-time. ixFeatureCtrlSwConfigurationCheck( )
 | |
|  *        will be used across applicable access component to check the configuration.
 | |
|  *        ixFeatureCtrlSwConfigurationWrite( ) is used to write the software configuration.
 | |
|  *
 | |
|  * @note <b>All software configurations are default to be enabled.</b> 
 | |
|  *
 | |
|  * @{
 | |
|  */
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlSwConfig
 | |
|  *
 | |
|  * @def IX_FEATURE_CTRL_SWCONFIG_DISABLED
 | |
|  *
 | |
|  * @brief Software configuration is disabled. 
 | |
|  * 
 | |
|  */
 | |
| #define IX_FEATURE_CTRL_SWCONFIG_DISABLED 0  
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlSwConfig
 | |
|  *
 | |
|  * @def IX_FEATURE_CTRL_SWCONFIG_ENABLED
 | |
|  *
 | |
|  * @brief Software configuration is enabled. 
 | |
|  * 
 | |
|  */
 | |
| #define IX_FEATURE_CTRL_SWCONFIG_ENABLED 1  
 | |
| 
 | |
| /**
 | |
|  * Section for enums
 | |
|  **/
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlBuildDevice
 | |
|  *
 | |
|  * @enum IxFeatureCtrlBuildDevice
 | |
|  *
 | |
|  * @brief Indicates software build type.
 | |
|  *
 | |
|  * Default build type is IXP42X
 | |
|  *
 | |
|  */
 | |
| typedef enum
 | |
| {
 | |
|     IX_FEATURE_CTRL_SW_BUILD_IXP42X = 0, /**<Build type is IXP42X */
 | |
|     IX_FEATURE_CTRL_SW_BUILD_IXP46X      /**<Build type is IXP46X */
 | |
| } IxFeatureCtrlBuildDevice;
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlSwConfig
 | |
|  *
 | |
|  * @enum IxFeatureCtrlSwConfig
 | |
|  *
 | |
|  * @brief Enumeration for software configuration in access components.
 | |
|  *
 | |
|  * Entry for new run-time software configuration should be added here.
 | |
|  */
 | |
| typedef enum
 | |
| {
 | |
|     IX_FEATURECTRL_ETH_LEARNING = 0,       /**< EthDB Learning Feature */
 | |
|     IX_FEATURECTRL_ORIGB0_DISPATCHER,  /**< IXP42X B0 and IXP46X dispatcher without 
 | |
|                                             livelock prevention functionality Feature */
 | |
|     IX_FEATURECTRL_SWCONFIG_MAX        /**< Maximum boudary for IxFeatureCtrlSwConfig  */
 | |
| } IxFeatureCtrlSwConfig;
 | |
| 
 | |
| 
 | |
| /************************************************************************
 | |
|  * IXP400 Feature Control Register
 | |
|  * - It contains the information (available/unavailable) of IXP425&IXP46X
 | |
|  *   hardware components in their corresponding bit location.
 | |
|  * - Bit value of 0 means the hardware component is available
 | |
|  *   or not software disabled. Hardware component that is available
 | |
|  *   can be software disabled.
 | |
|  * - Bit value of 1 means the hardware is unavailable or software
 | |
|  *   disabled.Hardware component that is unavailable cannot be software
 | |
|  *   enabled.
 | |
|  * - Use ixFeatureCtrlHwCapabilityRead() to read the hardware component's
 | |
|  *   availability.
 | |
|  * - Use ixFeatureCtrlRead() to get the current IXP425/IXP46X feature control
 | |
|  *   register value.
 | |
|  *
 | |
|  *   Bit            Field Description (Hardware Component Availability)
 | |
|  *   ---            ---------------------------------------------------
 | |
|  *    0             RComp Circuitry
 | |
|  *    1             USB Controller
 | |
|  *    2             Hashing Coprocessor
 | |
|  *    3             AES Coprocessor
 | |
|  *    4             DES Coprocessor
 | |
|  *    5             HDLC Coprocessor
 | |
|  *    6             AAL Coprocessor         - Always available in IXP46X
 | |
|  *    7             HSS Coprocesspr
 | |
|  *    8             Utopia Coprocessor
 | |
|  *    9             Ethernet 0 Coprocessor
 | |
|  *   10             Ethernet 1 Coprocessor
 | |
|  *   11             NPE A
 | |
|  *   12             NPE B
 | |
|  *   13             NPE C
 | |
|  *   14             PCI Controller
 | |
|  *   15             ECC/TimeSync Coprocessor -  Only applicable to IXP46X
 | |
|  *  16-17           Utopia PHY Limit Status : 0x0 - 32 PHY
 | |
|  *                                            0x1 - 16 PHY
 | |
|  *                                            0x2 -  8 PHY
 | |
|  *                                            0x3 -  4 PHY
 | |
|  *
 | |
|  *  Portions below are only applicable to IXP46X
 | |
|  *   18             USB Host Coprocessor
 | |
|  *   19             NPE A Ethernet - 0 for Enable if Utopia = 1
 | |
|  *   20             NPE B Ethernet coprocessor 1-3.
 | |
|  *   21             RSA Crypto Block coprocessor.
 | |
|  *  22-23           Processor frequency : 0x0 - 533 MHz
 | |
|  *                                        0x1 - 667 MHz
 | |
|  *                                        0x2 - 400 MHz
 | |
|  *                                        0x3 - 266 MHz
 | |
|  *  24-31           Reserved
 | |
|  *
 | |
|  ************************************************************************/
 | |
| /*Section generic to both IXP42X and IXP46X*/
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI
 | |
|  *
 | |
|  * @enum IxFeatureCtrlComponentType
 | |
|  *
 | |
|  * @brief Enumeration for components availavble
 | |
|  *
 | |
|  */
 | |
| typedef enum
 | |
| {
 | |
|     IX_FEATURECTRL_RCOMP = 0, /**<bit location for RComp Circuitry*/
 | |
|     IX_FEATURECTRL_USB,       /**<bit location for USB Controller*/
 | |
|     IX_FEATURECTRL_HASH,      /**<bit location for Hashing Coprocessor*/
 | |
|     IX_FEATURECTRL_AES,       /**<bit location for AES Coprocessor*/
 | |
|     IX_FEATURECTRL_DES,       /**<bit location for DES Coprocessor*/
 | |
|     IX_FEATURECTRL_HDLC,      /**<bit location for HDLC Coprocessor*/
 | |
|     IX_FEATURECTRL_AAL,       /**<bit location for AAL Coprocessor*/
 | |
|     IX_FEATURECTRL_HSS,       /**<bit location for HSS Coprocessor*/
 | |
|     IX_FEATURECTRL_UTOPIA,    /**<bit location for UTOPIA Coprocessor*/
 | |
|     IX_FEATURECTRL_ETH0,      /**<bit location for Ethernet 0 Coprocessor*/
 | |
|     IX_FEATURECTRL_ETH1,      /**<bit location for Ethernet 1 Coprocessor*/
 | |
|     IX_FEATURECTRL_NPEA,      /**<bit location for NPE A*/
 | |
|     IX_FEATURECTRL_NPEB,      /**<bit location for NPE B*/
 | |
|     IX_FEATURECTRL_NPEC,      /**<bit location for NPE C*/
 | |
|     IX_FEATURECTRL_PCI,       /**<bit location for PCI Controller*/
 | |
|     IX_FEATURECTRL_ECC_TIMESYNC,     /**<bit location for TimeSync Coprocessor*/
 | |
|     IX_FEATURECTRL_UTOPIA_PHY_LIMIT, /**<bit location for Utopia PHY Limit Status*/
 | |
|     IX_FEATURECTRL_UTOPIA_PHY_LIMIT_BIT2, /**<2nd bit of PHY limit status*/
 | |
|     IX_FEATURECTRL_USB_HOST_CONTROLLER, /**<bit location for USB host controller*/
 | |
|     IX_FEATURECTRL_NPEA_ETH,  /**<bit location for NPE-A Ethernet Disable*/
 | |
|     IX_FEATURECTRL_NPEB_ETH,  /**<bit location for NPE-B Ethernet 1-3 Coprocessors Disable*/
 | |
|     IX_FEATURECTRL_RSA,       /**<bit location for RSA Crypto block Coprocessors Disable*/
 | |
|     IX_FEATURECTRL_XSCALE_MAX_FREQ, /**<bit location for XScale max frequency*/
 | |
|     IX_FEATURECTRL_XSCALE_MAX_FREQ_BIT2, /**<2nd xscale max freq bit NOT TO BE USED */
 | |
|     IX_FEATURECTRL_MAX_COMPONENTS
 | |
| } IxFeatureCtrlComponentType;
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlDeviceId
 | |
|  *
 | |
|  * @enum IxFeatureCtrlDeviceId
 | |
|  *
 | |
|  * @brief Enumeration for device type.
 | |
|  *
 | |
|  * @warning This enum is closely related to the npe image. Its format should comply
 | |
|  *          with formats used in the npe image ImageID. This is indicated by the  
 | |
|  *          first nibble of the image ID. This should also be in sync with the
 | |
|  *          with what is defined in CP15.  Current available formats are
 | |
|  *          - IXP42X - 0000
 | |
|  *          - IXP46X - 0001
 | |
|  *
 | |
|  */
 | |
| typedef enum
 | |
| {
 | |
|     IX_FEATURE_CTRL_DEVICE_TYPE_IXP42X = 0, /**<Device type is IXP42X */
 | |
|     IX_FEATURE_CTRL_DEVICE_TYPE_IXP46X, /**<Device type is IXP46X */
 | |
|     IX_FEATURE_CTRL_DEVICE_TYPE_MAX /**<Max devices */
 | |
| } IxFeatureCtrlDeviceId;
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * @} addtogroup IxFeatureCtrlSwConfig
 | |
|  */
 | |
| 
 | |
| /*
 | |
|  * Typedefs
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  * 
 | |
|  * @typedef IxFeatureCtrlReg
 | |
|  *
 | |
|  * @brief Feature Control Register that contains hardware components'
 | |
|  *        availability information.
 | |
|  */
 | |
| typedef UINT32 IxFeatureCtrlReg;
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  * 
 | |
|  * @typedef IxFeatureCtrlProductId
 | |
|  *
 | |
|  * @brief Product ID of Silicon that contains Silicon Stepping and 
 | |
|  *        Maximum XScale Core Frequency information.  
 | |
|  */
 | |
| typedef UINT32 IxFeatureCtrlProductId;
 | |
| 
 | |
| /*
 | |
|  * Prototypes for interface functions
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @fn IxFeatureCtrlReg ixFeatureCtrlRead (void)
 | |
|  * 
 | |
|  * @brief This function reads out the CURRENT value of Feature Control Register.
 | |
|  *        The current value may not be the same as that of the hardware component 
 | |
|  *        availability.    
 | |
|  * 
 | |
|  * The bit location of each hardware component is defined above. 
 | |
|  * A value of '1' in bit means the hardware component is not available.  A value of '0'   
 | |
|  * means the hardware component is available.
 | |
|  *
 | |
|  * @return 
 | |
|  *      - IxFeatureCtrlReg - the current value of IXP400 Feature Control Register
 | |
|  */ 
 | |
| PUBLIC IxFeatureCtrlReg
 | |
| ixFeatureCtrlRead (void);
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI
 | |
|  *
 | |
|  * @fn IxFeatureDeviceId ixFeatureCtrlDeviceRead (void)
 | |
|  *
 | |
|  * @brief This function gets the type of device that the software is currently running
 | |
|  *        on
 | |
|  *
 | |
|  * This function reads the feature Ctrl register specifically to obtain the device id.
 | |
|  * The definitions of the avilable IDs are as above.
 | |
|  *
 | |
|  * @return
 | |
|  *      - IxFeatureCtrlDeviceId - the type of device currently running
 | |
|  */
 | |
| IxFeatureCtrlDeviceId
 | |
| ixFeatureCtrlDeviceRead (void);
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI
 | |
|  *
 | |
|  * @fn IxFeatureCtrlBuildDevice ixFeatureCtrlSoftwareBuildGet (void)
 | |
|  *
 | |
|  * @brief This function refers to  the value set by the compiler flag to determine
 | |
|  *        the type of device the software is built for.
 | |
|  *
 | |
|  * The function reads the compiler flag to determine the device the software is
 | |
|  * built for. When the user executes build in the command line, 
 | |
|  * a compile time flag (__ixp42X/__ixp46X is set. This API reads this 
 | |
|  * flag and returns the software build type to the calling client.
 | |
|  *
 | |
|  * @return
 | |
|  *      - IxFeatureCtrlBuildDevice - the type of device software is built for.
 | |
|  */
 | |
| IxFeatureCtrlBuildDevice
 | |
| ixFeatureCtrlSoftwareBuildGet (void);
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @fn IxFeatureCtrlReg ixFeatureCtrlHwCapabilityRead (void)
 | |
|  * 
 | |
|  * @brief This function reads out the hardware capability of a silicon type as defined in 
 | |
|  * feature control register.This value is different from that returned by 
 | |
|  * ixFeatureCtrlRead() because this function returns the actual hardware component
 | |
|  * availability.     
 | |
|  *
 | |
|  * The bit location of each hardware component is defined above. 
 | |
|  * A value of '1' in bit means the hardware component is not available.  A value of '0'   
 | |
|  * means the hardware component is available.
 | |
|  *
 | |
|  * @return 
 | |
|  *      - IxFeatureCtrlReg - the hardware capability of IXP400. 
 | |
|  *
 | |
|  * @warning
 | |
|  *      - This function must not be called when IXP400 is running as the result
 | |
|  *        is undefined.    
 | |
|  */ 
 | |
| PUBLIC IxFeatureCtrlReg
 | |
| ixFeatureCtrlHwCapabilityRead (void);
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @fn void ixFeatureCtrlWrite (IxFeatureCtrlReg expUnitReg)
 | |
|  * 
 | |
|  * @brief This function write the value stored in IxFeatureCtrlReg expUnitReg  
 | |
|  *        to the Feature Control Register. 
 | |
|  * 
 | |
|  * The bit location of each hardware component is defined above.
 | |
|  * The write is only effective on available hardware components. Writing '1' in a  
 | |
|  * bit will software disable the respective hardware component. A '0' will mean that  
 | |
|  * the hardware component will remain to be operable. 
 | |
|  *
 | |
|  * @param expUnitReg @ref IxFeatureCtrlReg [in] - The value to be written to feature control 
 | |
|  *                                          register.
 | |
|  *
 | |
|  * @return none
 | |
|  *
 | |
|  */ 
 | |
| PUBLIC void
 | |
| ixFeatureCtrlWrite (IxFeatureCtrlReg expUnitReg);
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @fn IX_STATUS ixFeatureCtrlComponentCheck (IxFeatureCtrlComponentType componentType)
 | |
|  * 
 | |
|  * @brief This function will check the availability of hardware component specified
 | |
|  *        as componentType value. 
 | |
|  *
 | |
|  *        Usage Example:<br> 
 | |
|  *         -  if(IX_FEATURE_CTRL_COMPONENT_DISABLED != 
 | |
|  *              ixFeatureCtrlComponentCheck(IX_FEATURECTRL_ETH0)) <br>
 | |
|  *         -  if(IX_FEATURE_CTRL_COMPONENT_ENABLED == 
 | |
|  *              ixFeatureCtrlComponentCheck(IX_FEATURECTRL_PCI)) <br>
 | |
|  *
 | |
|  * This function is typically called during component initialization time. 
 | |
|  *
 | |
|  * @param componentType @ref IxFeatureCtrlComponentType [in] - the type of a component as
 | |
|  *        defined above as IX_FEATURECTRL_XXX (Exp: IX_FEATURECTRL_PCI, IX_FEATURECTRL_ETH0)           
 | |
| 
 | |
|  *        
 | |
|  * @return 
 | |
|  *      - IX_FEATURE_CTRL_COMPONENT_ENABLED if component is available 
 | |
|  *      - IX_FEATURE_CTRL_COMPONENT_DISABLED if component is unavailable            
 | |
|  */ 
 | |
| PUBLIC IX_STATUS
 | |
| ixFeatureCtrlComponentCheck (IxFeatureCtrlComponentType componentType);
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  * 
 | |
|  * @fn IxFeatureCtrlProductId ixFeatureCtrlProductIdRead (void)
 | |
|  * 
 | |
|  * @brief This function will return IXP400 product ID i.e. CP15,
 | |
|  *        Register 0.
 | |
|  *                                                
 | |
|  * @return 
 | |
|  *      - IxFeatureCtrlProductId - the value of product ID.
 | |
|  *
 | |
|  */ 
 | |
| PUBLIC IxFeatureCtrlProductId
 | |
| ixFeatureCtrlProductIdRead (void) ;
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @fn IX_STATUS ixFeatureCtrlSwConfigurationCheck (IxFeatureCtrlSwConfig swConfigType)
 | |
|  * 
 | |
|  * @brief This function checks whether the specified software configuration is
 | |
|  *        enabled or disabled. 
 | |
|  *
 | |
|  *        Usage Example:<br> 
 | |
|  *        - if(IX_FEATURE_CTRL_SWCONFIG_DISABLED != 
 | |
|  *            ixFeatureCtrlSwConfigurationCheck(IX_FEATURECTRL_ETH_LEARNING)) <br>
 | |
|  *        - if(IX_FEATURE_CTRL_SWCONFIG_ENABLED == 
 | |
|  *            ixFeatureCtrlSwConfigurationCheck(IX_FEATURECTRL_ETH_LEARNING)) <br>
 | |
|  *
 | |
|  * This function is typically called during access component initialization time. 
 | |
|  *
 | |
|  * @param swConfigType @ref IxFeatureCtrlSwConfig [in] - the type of a software configuration
 | |
|  *        defined in IxFeatureCtrlSwConfig enumeration.          
 | |
|  *        
 | |
|  * @return 
 | |
|  *      - IX_FEATURE_CTRL_SWCONFIG_ENABLED if software configuration is enabled. 
 | |
|  *      - IX_FEATURE_CTRL_SWCONFIG_DISABLED if software configuration is disabled.            
 | |
|  */ 
 | |
| PUBLIC IX_STATUS
 | |
| ixFeatureCtrlSwConfigurationCheck (IxFeatureCtrlSwConfig swConfigType);
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @fn void ixFeatureCtrlSwConfigurationWrite (IxFeatureCtrlSwConfig swConfigType, BOOL enabled)
 | |
|  * 
 | |
|  * @brief This function enable/disable the specified software configuration.  
 | |
|  *
 | |
|  *        Usage Example:<br> 
 | |
|  *        - ixFeatureCtrlSwConfigurationWrite(IX_FEATURECTRL_ETH_LEARNING, TRUE) is used
 | |
|  *          to enable Ethernet Learning Feature <br>
 | |
|  *        - ixFeatureCtrlSwConfigurationWrite(IX_FEATURECTRL_ETH_LEARNING, FALSE) is used
 | |
|  *          to disable Ethernet Learning Feature <br> 
 | |
|  *
 | |
|  * @param swConfigType IxFeatureCtrlSwConfig [in] - the type of a software configuration
 | |
|  *        defined in IxFeatureCtrlSwConfig enumeration. 
 | |
|  * @param enabled BOOL [in] - To enable(TRUE) / disable (FALSE) the specified software
 | |
|  *                           configuration.            
 | |
|  *
 | |
|  * @return none
 | |
|  *          
 | |
|  */ 
 | |
| PUBLIC void
 | |
| ixFeatureCtrlSwConfigurationWrite (IxFeatureCtrlSwConfig swConfigType, BOOL enabled);
 | |
| 
 | |
| /**
 | |
|  * @ingroup IxFeatureCtrlAPI 
 | |
|  *
 | |
|  * @fn void ixFeatureCtrlIxp400SwVersionShow (void)
 | |
|  * 
 | |
|  * @brief This function shows the current software release information for IXP400 
 | |
|  *          
 | |
|  * @return none
 | |
|  *          
 | |
|  */ 
 | |
| PUBLIC void
 | |
| ixFeatureCtrlIxp400SwVersionShow (void);
 | |
| 
 | |
| #endif /* IXFEATURECTRL_H */
 | |
| 
 | |
| /**
 | |
|  * @} defgroup IxFeatureCtrlAPI
 | |
|  */
 |