]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - drivers/net/npe/include/IxFeatureCtrl.h
Merge 'u-boot-microblaze/zynq' into (u-boot-arm/master'
[karo-tx-uboot.git] / drivers / net / npe / include / IxFeatureCtrl.h
1 /**
2  * @file IxFeatureCtrl.h
3  *
4  * @date 30-Jan-2003
5
6  * @brief This file contains the public API of the IXP400 Feature Control
7  *        component.
8  *
9  * 
10  * @par
11  * IXP400 SW Release version 2.0
12  * 
13  * -- Copyright Notice --
14  * 
15  * @par
16  * Copyright 2001-2005, Intel Corporation.
17  * All rights reserved.
18  * 
19  * @par
20  * SPDX-License-Identifier:     BSD-3-Clause
21  * @par
22  * -- End of Copyright Notice --
23 */
24 /* ------------------------------------------------------
25    Doxygen group definitions
26    ------------------------------------------------------ */
27 /**
28  * @defgroup IxFeatureCtrlAPI IXP400 Feature Control (IxFeatureCtrl) API
29  *
30  * @brief The Public API for the IXP400 Feature Control.
31  * 
32  * @{
33  */
34
35 #ifndef IXFEATURECTRL_H
36 #define IXFEATURECTRL_H
37
38 /*
39  * User defined include files
40  */
41 #include "IxOsal.h"
42
43 /*
44  * #defines and macros
45  */
46
47 /*************************************************************
48  * The following are IxFeatureCtrlComponentCheck return values.
49  ************************************************************/
50
51 /**
52  * @ingroup IxFeatureCtrlAPI 
53  *
54  * @def  IX_FEATURE_CTRL_COMPONENT_DISABLED
55  *
56  * @brief Hardware Component is disabled/unavailable.
57  *        Return status by ixFeatureCtrlComponentCheck()  
58  */
59 #define  IX_FEATURE_CTRL_COMPONENT_DISABLED 0
60
61 /**
62  * @ingroup IxFeatureCtrlAPI 
63  *
64  * @def  IX_FEATURE_CTRL_COMPONENT_ENABLED
65  *
66  * @brief Hardware Component is available. 
67  *        Return status by ixFeatureCtrlComponentCheck()  
68  */
69 #define  IX_FEATURE_CTRL_COMPONENT_ENABLED  1
70
71 /***********************************************************************************
72  * Product ID in XScale CP15 - Register 0
73  *  - It contains information on the maximum XScale Core Frequency and
74  *    Silicon Stepping.  
75  *  - XScale Core Frequency Id indicates only the maximum XScale frequency
76  *    achievable and not the running XScale frequency (maybe stepped down).    
77  *  - The register is read by using ixFeatureCtrlProductIdRead.
78  *  - Usage example: 
79  *          productId = ixFeatureCtrlProductIdRead();
80  *          if( (productId & IX_FEATURE_CTRL_SILICON_STEPPING_MASK) == 
81  *              IX_FEATURE_CTRL_SILICON_TYPE_A0 )
82  *          if( (productId & IX_FEATURE_CTRL_XSCALE_FREQ_MASK) == 
83  *              IX_FEATURE_CTRL_XSCALE_FREQ_533 )    
84  * 
85  *  31 28 27 24 23 20 19 16 15 12 11        9 8                   4 3              0  
86  *  -------------------------------------------------------------------------------- 
87  * | 0x6 | 0x9 | 0x0 | 0x5 | 0x4 | Device ID | XScale Core Freq Id | Si Stepping Id |    
88  *  --------------------------------------------------------------------------------
89  *
90  *   Maximum Achievable XScale Core Frequency Id :  533MHz  - 0x1C 
91  *                                                  400MHz  - 0x1D 
92  *                                                  266MHz  - 0x1F
93  *
94  *   <b>THE CORE FREQUENCY ID IS NOT APPLICABLE TO IXP46X <\b>
95  *  
96  *   The above is applicable to IXP42X only. CP15 in IXP46X does not contain any
97  *   Frequency ID. 
98  * 
99  *  Si Stepping Id            :  A       - 0x0    
100  *                               B       - 0x1 
101  *  
102  *  XScale Core freq Id - Device ID [11:9] : IXP42X - 0x0
103  *                                           IXP46X - 0x1
104  *************************************************************************************/
105
106 /**
107  * @ingroup IxFeatureCtrlAPI 
108  *
109  * @def IX_FEATURE_CTRL_SILICON_TYPE_A0
110  *
111  * @brief This is the value of A0 Silicon in product ID. 
112  */
113 #define IX_FEATURE_CTRL_SILICON_TYPE_A0   0
114
115 /**
116  * @ingroup IxFeatureCtrlAPI 
117  *
118  * @def IX_FEATURE_CTRL_SILICON_TYPE_B0
119  *
120  * @brief This is the value of B0 Silicon in product ID.
121  */
122 #define IX_FEATURE_CTRL_SILICON_TYPE_B0   1
123
124 /**
125  * @ingroup IxFeatureCtrlAPI 
126  *
127  * @def IX_FEATURE_CTRL_SILICON_STEPPING_MASK
128  *
129  * @brief This is the mask of silicon stepping in product ID. 
130  */
131 #define IX_FEATURE_CTRL_SILICON_STEPPING_MASK  0xF 
132
133 /**
134  * @ingroup IxFeatureCtrlAPI
135  *
136  * @def IX_FEATURE_CTRL_DEVICE_TYPE_MASK
137  *
138  * @brief This is the mask of silicon stepping in product ID.
139  */
140 #define IX_FEATURE_CTRL_DEVICE_TYPE_MASK  (0x7) 
141
142 /**
143  * @ingroup IxFeatureCtrlAPI
144  *
145  * @def IX_FEATURE_CTRL_DEVICE_TYPE_OFFSET
146  *
147  * @brief This is the mask of silicon stepping in product ID.
148  */
149 #define IX_FEATURE_CTRL_DEVICE_TYPE_OFFSET  9
150
151
152 /**
153  * @ingroup IxFeatureCtrlAPI 
154  *
155  * @def IX_FEATURE_CTRL_XSCALE_FREQ_533
156  *
157  * @brief This is the value of 533MHz XScale Core in product ID.
158  */
159 #define IX_FEATURE_CTRL_XSCALE_FREQ_533  ((0x1C)<<4)
160
161 /**
162  * @ingroup IxFeatureCtrlAPI 
163  *
164  * @def IX_FEATURE_CTRL_XSCALE_FREQ_400
165  *
166  * @brief This is the value of 400MHz XScale Core in product ID.
167  */
168 #define IX_FEATURE_CTRL_XSCALE_FREQ_400  ((0x1D)<<4)
169
170 /**
171  * @ingroup IxFeatureCtrlAPI 
172  *
173  * @def IX_FEATURE_CTRL_XSCALE_FREQ_266
174  *
175  * @brief This is the value of 266MHz XScale Core in product ID.
176  */
177 #define IX_FEATURE_CTRL_XSCALE_FREQ_266 ((0x1F)<<4)   
178
179 /**
180  * @ingroup IxFeatureCtrlAPI 
181  *
182  * @def IX_FEATURE_CTRL_XSCALE_FREQ_MASK
183  *
184  * @brief This is the mask of XScale Core in product ID.
185  */
186 #define IX_FEATURE_CTRL_XSCALE_FREQ_MASK ((0xFF)<<4)  
187
188 /**
189  * @ingroup IxFeatureCtrlAPI 
190  *
191  * @def IX_FEATURECTRL_REG_UTOPIA_32PHY
192  *
193  * @brief Maximum  UTOPIA PHY available is 32.  
194  * 
195  */
196 #define IX_FEATURECTRL_REG_UTOPIA_32PHY  0x0
197
198 /**
199  * @ingroup IxFeatureCtrlAPI 
200  *
201  * @def IX_FEATURECTRL_REG_UTOPIA_16PHY
202  *
203  * @brief Maximum  UTOPIA PHY available is 16.  
204  * 
205  */
206 #define IX_FEATURECTRL_REG_UTOPIA_16PHY  0x1
207
208 /**
209  * @ingroup IxFeatureCtrlAPI 
210  *
211  * @def IX_FEATURECTRL_REG_UTOPIA_8PHY
212  *
213  * @brief Maximum  UTOPIA PHY available to is 8.  
214  * 
215  */
216 #define IX_FEATURECTRL_REG_UTOPIA_8PHY   0x2
217
218 /**
219  * @ingroup IxFeatureCtrlAPI 
220  *
221  * @def IX_FEATURECTRL_REG_UTOPIA_4PHY
222  *
223  * @brief Maximum  UTOPIA PHY available to is 4.  
224  * 
225  */
226 #define IX_FEATURECTRL_REG_UTOPIA_4PHY   0x3
227
228 #ifdef __ixp46X
229
230 /**
231  * @ingroup IxFeatureCtrlAPI
232  *
233  * @def IX_FEATURECTRL_REG_XSCALE_533FREQ
234  *
235  * @brief Maximum  frequency available to IXP46x is 533 MHz.
236  *
237  */
238 #define IX_FEATURECTRL_REG_XSCALE_533FREQ   0x0
239
240 /**
241  * @ingroup IxFeatureCtrlAPI
242  *
243  * @def IX_FEATURECTRL_REG_XSCALE_667FREQ
244  *
245  * @brief Maximum  frequency available to IXP46x is 667 MHz.
246  *
247  */
248 #define IX_FEATURECTRL_REG_XSCALE_667FREQ   0x1
249
250 /**
251  * @ingroup IxFeatureCtrlAPI
252  *
253  * @def IX_FEATURECTRL_REG_XSCALE_400FREQ
254  *
255  * @brief Maximum  frequency available to IXP46x is 400 MHz.
256  *
257  */
258 #define IX_FEATURECTRL_REG_XSCALE_400FREQ   0x2
259
260 /**
261  * @ingroup IxFeatureCtrlAPI
262  *
263  * @def IX_FEATURECTRL_REG_XSCALE_266FREQ
264  *
265  * @brief Maximum  frequency available to IXP46x is 266 MHz.
266  *
267  */
268 #define IX_FEATURECTRL_REG_XSCALE_266FREQ   0x3
269
270 #endif /* __ixp46X */
271
272 /**
273  * @ingroup IxFeatureCtrlAPI
274  *
275  * @def IX_FEATURECTRL_COMPONENT_NOT_AVAILABLE
276  *
277  * @brief Component selected is not available for device
278  *
279  */
280 #define IX_FEATURECTRL_COMPONENT_NOT_AVAILABLE  0x0000
281
282 /**
283  * @ingroup IxFeatureCtrlAPI
284  *
285  * @def IX_FEATURECTRL_COMPONENT_ALWAYS_AVAILABLE
286  *
287  * @brief Component selected is not available for device
288  *
289  */
290 #define IX_FEATURECTRL_COMPONENT_ALWAYS_AVAILABLE  0xffff
291
292 /**
293  * @defgroup IxFeatureCtrlSwConfig Software Configuration for Access Component
294  *
295  * @ingroup IxFeatureCtrlAPI 
296  *
297  * @brief This section describes software configuration in access component. The
298  *        configuration can be changed at run-time. ixFeatureCtrlSwConfigurationCheck( )
299  *        will be used across applicable access component to check the configuration.
300  *        ixFeatureCtrlSwConfigurationWrite( ) is used to write the software configuration.
301  *
302  * @note <b>All software configurations are default to be enabled.</b> 
303  *
304  * @{
305  */
306 /**
307  * @ingroup IxFeatureCtrlSwConfig
308  *
309  * @def IX_FEATURE_CTRL_SWCONFIG_DISABLED
310  *
311  * @brief Software configuration is disabled. 
312  * 
313  */
314 #define IX_FEATURE_CTRL_SWCONFIG_DISABLED 0  
315
316 /**
317  * @ingroup IxFeatureCtrlSwConfig
318  *
319  * @def IX_FEATURE_CTRL_SWCONFIG_ENABLED
320  *
321  * @brief Software configuration is enabled. 
322  * 
323  */
324 #define IX_FEATURE_CTRL_SWCONFIG_ENABLED 1  
325
326 /**
327  * Section for enums
328  **/
329
330 /**
331  * @ingroup IxFeatureCtrlBuildDevice
332  *
333  * @enum IxFeatureCtrlBuildDevice
334  *
335  * @brief Indicates software build type.
336  *
337  * Default build type is IXP42X
338  *
339  */
340 typedef enum
341 {
342     IX_FEATURE_CTRL_SW_BUILD_IXP42X = 0, /**<Build type is IXP42X */
343     IX_FEATURE_CTRL_SW_BUILD_IXP46X      /**<Build type is IXP46X */
344 } IxFeatureCtrlBuildDevice;
345
346 /**
347  * @ingroup IxFeatureCtrlSwConfig
348  *
349  * @enum IxFeatureCtrlSwConfig
350  *
351  * @brief Enumeration for software configuration in access components.
352  *
353  * Entry for new run-time software configuration should be added here.
354  */
355 typedef enum
356 {
357     IX_FEATURECTRL_ETH_LEARNING = 0,       /**< EthDB Learning Feature */
358     IX_FEATURECTRL_ORIGB0_DISPATCHER,  /**< IXP42X B0 and IXP46X dispatcher without 
359                                             livelock prevention functionality Feature */
360     IX_FEATURECTRL_SWCONFIG_MAX        /**< Maximum boudary for IxFeatureCtrlSwConfig  */
361 } IxFeatureCtrlSwConfig;
362
363
364 /************************************************************************
365  * IXP400 Feature Control Register
366  * - It contains the information (available/unavailable) of IXP425&IXP46X
367  *   hardware components in their corresponding bit location.
368  * - Bit value of 0 means the hardware component is available
369  *   or not software disabled. Hardware component that is available
370  *   can be software disabled.
371  * - Bit value of 1 means the hardware is unavailable or software
372  *   disabled.Hardware component that is unavailable cannot be software
373  *   enabled.
374  * - Use ixFeatureCtrlHwCapabilityRead() to read the hardware component's
375  *   availability.
376  * - Use ixFeatureCtrlRead() to get the current IXP425/IXP46X feature control
377  *   register value.
378  *
379  *   Bit            Field Description (Hardware Component Availability)
380  *   ---            ---------------------------------------------------
381  *    0             RComp Circuitry
382  *    1             USB Controller
383  *    2             Hashing Coprocessor
384  *    3             AES Coprocessor
385  *    4             DES Coprocessor
386  *    5             HDLC Coprocessor
387  *    6             AAL Coprocessor         - Always available in IXP46X
388  *    7             HSS Coprocesspr
389  *    8             Utopia Coprocessor
390  *    9             Ethernet 0 Coprocessor
391  *   10             Ethernet 1 Coprocessor
392  *   11             NPE A
393  *   12             NPE B
394  *   13             NPE C
395  *   14             PCI Controller
396  *   15             ECC/TimeSync Coprocessor -  Only applicable to IXP46X
397  *  16-17           Utopia PHY Limit Status : 0x0 - 32 PHY
398  *                                            0x1 - 16 PHY
399  *                                            0x2 -  8 PHY
400  *                                            0x3 -  4 PHY
401  *
402  *  Portions below are only applicable to IXP46X
403  *   18             USB Host Coprocessor
404  *   19             NPE A Ethernet - 0 for Enable if Utopia = 1
405  *   20             NPE B Ethernet coprocessor 1-3.
406  *   21             RSA Crypto Block coprocessor.
407  *  22-23           Processor frequency : 0x0 - 533 MHz
408  *                                        0x1 - 667 MHz
409  *                                        0x2 - 400 MHz
410  *                                        0x3 - 266 MHz
411  *  24-31           Reserved
412  *
413  ************************************************************************/
414 /*Section generic to both IXP42X and IXP46X*/
415
416 /**
417  * @ingroup IxFeatureCtrlAPI
418  *
419  * @enum IxFeatureCtrlComponentType
420  *
421  * @brief Enumeration for components availavble
422  *
423  */
424 typedef enum
425 {
426     IX_FEATURECTRL_RCOMP = 0, /**<bit location for RComp Circuitry*/
427     IX_FEATURECTRL_USB,       /**<bit location for USB Controller*/
428     IX_FEATURECTRL_HASH,      /**<bit location for Hashing Coprocessor*/
429     IX_FEATURECTRL_AES,       /**<bit location for AES Coprocessor*/
430     IX_FEATURECTRL_DES,       /**<bit location for DES Coprocessor*/
431     IX_FEATURECTRL_HDLC,      /**<bit location for HDLC Coprocessor*/
432     IX_FEATURECTRL_AAL,       /**<bit location for AAL Coprocessor*/
433     IX_FEATURECTRL_HSS,       /**<bit location for HSS Coprocessor*/
434     IX_FEATURECTRL_UTOPIA,    /**<bit location for UTOPIA Coprocessor*/
435     IX_FEATURECTRL_ETH0,      /**<bit location for Ethernet 0 Coprocessor*/
436     IX_FEATURECTRL_ETH1,      /**<bit location for Ethernet 1 Coprocessor*/
437     IX_FEATURECTRL_NPEA,      /**<bit location for NPE A*/
438     IX_FEATURECTRL_NPEB,      /**<bit location for NPE B*/
439     IX_FEATURECTRL_NPEC,      /**<bit location for NPE C*/
440     IX_FEATURECTRL_PCI,       /**<bit location for PCI Controller*/
441     IX_FEATURECTRL_ECC_TIMESYNC,     /**<bit location for TimeSync Coprocessor*/
442     IX_FEATURECTRL_UTOPIA_PHY_LIMIT, /**<bit location for Utopia PHY Limit Status*/
443     IX_FEATURECTRL_UTOPIA_PHY_LIMIT_BIT2, /**<2nd bit of PHY limit status*/
444     IX_FEATURECTRL_USB_HOST_CONTROLLER, /**<bit location for USB host controller*/
445     IX_FEATURECTRL_NPEA_ETH,  /**<bit location for NPE-A Ethernet Disable*/
446     IX_FEATURECTRL_NPEB_ETH,  /**<bit location for NPE-B Ethernet 1-3 Coprocessors Disable*/
447     IX_FEATURECTRL_RSA,       /**<bit location for RSA Crypto block Coprocessors Disable*/
448     IX_FEATURECTRL_XSCALE_MAX_FREQ, /**<bit location for XScale max frequency*/
449     IX_FEATURECTRL_XSCALE_MAX_FREQ_BIT2, /**<2nd xscale max freq bit NOT TO BE USED */
450     IX_FEATURECTRL_MAX_COMPONENTS
451 } IxFeatureCtrlComponentType;
452
453 /**
454  * @ingroup IxFeatureCtrlDeviceId
455  *
456  * @enum IxFeatureCtrlDeviceId
457  *
458  * @brief Enumeration for device type.
459  *
460  * @warning This enum is closely related to the npe image. Its format should comply
461  *          with formats used in the npe image ImageID. This is indicated by the  
462  *          first nibble of the image ID. This should also be in sync with the
463  *          with what is defined in CP15.  Current available formats are
464  *          - IXP42X - 0000
465  *          - IXP46X - 0001
466  *
467  */
468 typedef enum
469 {
470     IX_FEATURE_CTRL_DEVICE_TYPE_IXP42X = 0, /**<Device type is IXP42X */
471     IX_FEATURE_CTRL_DEVICE_TYPE_IXP46X, /**<Device type is IXP46X */
472     IX_FEATURE_CTRL_DEVICE_TYPE_MAX /**<Max devices */
473 } IxFeatureCtrlDeviceId;
474
475
476 /**
477  * @} addtogroup IxFeatureCtrlSwConfig
478  */
479
480 /*
481  * Typedefs
482  */
483
484 /**
485  * @ingroup IxFeatureCtrlAPI 
486  * 
487  * @typedef IxFeatureCtrlReg
488  *
489  * @brief Feature Control Register that contains hardware components'
490  *        availability information.
491  */
492 typedef UINT32 IxFeatureCtrlReg;
493
494 /**
495  * @ingroup IxFeatureCtrlAPI 
496  * 
497  * @typedef IxFeatureCtrlProductId
498  *
499  * @brief Product ID of Silicon that contains Silicon Stepping and 
500  *        Maximum XScale Core Frequency information.  
501  */
502 typedef UINT32 IxFeatureCtrlProductId;
503
504 /*
505  * Prototypes for interface functions
506  */
507
508 /**
509  * @ingroup IxFeatureCtrlAPI 
510  *
511  * @fn IxFeatureCtrlReg ixFeatureCtrlRead (void)
512  * 
513  * @brief This function reads out the CURRENT value of Feature Control Register.
514  *        The current value may not be the same as that of the hardware component 
515  *        availability.    
516  * 
517  * The bit location of each hardware component is defined above. 
518  * A value of '1' in bit means the hardware component is not available.  A value of '0'   
519  * means the hardware component is available.
520  *
521  * @return 
522  *      - IxFeatureCtrlReg - the current value of IXP400 Feature Control Register
523  */ 
524 PUBLIC IxFeatureCtrlReg
525 ixFeatureCtrlRead (void);
526
527 /**
528  * @ingroup IxFeatureCtrlAPI
529  *
530  * @fn IxFeatureDeviceId ixFeatureCtrlDeviceRead (void)
531  *
532  * @brief This function gets the type of device that the software is currently running
533  *        on
534  *
535  * This function reads the feature Ctrl register specifically to obtain the device id.
536  * The definitions of the avilable IDs are as above.
537  *
538  * @return
539  *      - IxFeatureCtrlDeviceId - the type of device currently running
540  */
541 IxFeatureCtrlDeviceId
542 ixFeatureCtrlDeviceRead (void);
543
544 /**
545  * @ingroup IxFeatureCtrlAPI
546  *
547  * @fn IxFeatureCtrlBuildDevice ixFeatureCtrlSoftwareBuildGet (void)
548  *
549  * @brief This function refers to  the value set by the compiler flag to determine
550  *        the type of device the software is built for.
551  *
552  * The function reads the compiler flag to determine the device the software is
553  * built for. When the user executes build in the command line, 
554  * a compile time flag (__ixp42X/__ixp46X is set. This API reads this 
555  * flag and returns the software build type to the calling client.
556  *
557  * @return
558  *      - IxFeatureCtrlBuildDevice - the type of device software is built for.
559  */
560 IxFeatureCtrlBuildDevice
561 ixFeatureCtrlSoftwareBuildGet (void);
562
563 /**
564  * @ingroup IxFeatureCtrlAPI 
565  *
566  * @fn IxFeatureCtrlReg ixFeatureCtrlHwCapabilityRead (void)
567  * 
568  * @brief This function reads out the hardware capability of a silicon type as defined in 
569  * feature control register.This value is different from that returned by 
570  * ixFeatureCtrlRead() because this function returns the actual hardware component
571  * availability.     
572  *
573  * The bit location of each hardware component is defined above. 
574  * A value of '1' in bit means the hardware component is not available.  A value of '0'   
575  * means the hardware component is available.
576  *
577  * @return 
578  *      - IxFeatureCtrlReg - the hardware capability of IXP400. 
579  *
580  * @warning
581  *      - This function must not be called when IXP400 is running as the result
582  *        is undefined.    
583  */ 
584 PUBLIC IxFeatureCtrlReg
585 ixFeatureCtrlHwCapabilityRead (void);
586
587 /**
588  * @ingroup IxFeatureCtrlAPI 
589  *
590  * @fn void ixFeatureCtrlWrite (IxFeatureCtrlReg expUnitReg)
591  * 
592  * @brief This function write the value stored in IxFeatureCtrlReg expUnitReg  
593  *        to the Feature Control Register. 
594  * 
595  * The bit location of each hardware component is defined above.
596  * The write is only effective on available hardware components. Writing '1' in a  
597  * bit will software disable the respective hardware component. A '0' will mean that  
598  * the hardware component will remain to be operable. 
599  *
600  * @param expUnitReg @ref IxFeatureCtrlReg [in] - The value to be written to feature control 
601  *                                          register.
602  *
603  * @return none
604  *
605  */ 
606 PUBLIC void
607 ixFeatureCtrlWrite (IxFeatureCtrlReg expUnitReg);
608
609 /**
610  * @ingroup IxFeatureCtrlAPI 
611  *
612  * @fn IX_STATUS ixFeatureCtrlComponentCheck (IxFeatureCtrlComponentType componentType)
613  * 
614  * @brief This function will check the availability of hardware component specified
615  *        as componentType value. 
616  *
617  *        Usage Example:<br> 
618  *         -  if(IX_FEATURE_CTRL_COMPONENT_DISABLED != 
619  *              ixFeatureCtrlComponentCheck(IX_FEATURECTRL_ETH0)) <br>
620  *         -  if(IX_FEATURE_CTRL_COMPONENT_ENABLED == 
621  *              ixFeatureCtrlComponentCheck(IX_FEATURECTRL_PCI)) <br>
622  *
623  * This function is typically called during component initialization time. 
624  *
625  * @param componentType @ref IxFeatureCtrlComponentType [in] - the type of a component as
626  *        defined above as IX_FEATURECTRL_XXX (Exp: IX_FEATURECTRL_PCI, IX_FEATURECTRL_ETH0)           
627
628  *        
629  * @return 
630  *      - IX_FEATURE_CTRL_COMPONENT_ENABLED if component is available 
631  *      - IX_FEATURE_CTRL_COMPONENT_DISABLED if component is unavailable            
632  */ 
633 PUBLIC IX_STATUS
634 ixFeatureCtrlComponentCheck (IxFeatureCtrlComponentType componentType);
635
636 /**
637  * @ingroup IxFeatureCtrlAPI 
638  * 
639  * @fn IxFeatureCtrlProductId ixFeatureCtrlProductIdRead (void)
640  * 
641  * @brief This function will return IXP400 product ID i.e. CP15,
642  *        Register 0.
643  *                                                
644  * @return 
645  *      - IxFeatureCtrlProductId - the value of product ID.
646  *
647  */ 
648 PUBLIC IxFeatureCtrlProductId
649 ixFeatureCtrlProductIdRead (void) ;
650
651 /**
652  * @ingroup IxFeatureCtrlAPI 
653  *
654  * @fn IX_STATUS ixFeatureCtrlSwConfigurationCheck (IxFeatureCtrlSwConfig swConfigType)
655  * 
656  * @brief This function checks whether the specified software configuration is
657  *        enabled or disabled. 
658  *
659  *        Usage Example:<br> 
660  *        - if(IX_FEATURE_CTRL_SWCONFIG_DISABLED != 
661  *            ixFeatureCtrlSwConfigurationCheck(IX_FEATURECTRL_ETH_LEARNING)) <br>
662  *        - if(IX_FEATURE_CTRL_SWCONFIG_ENABLED == 
663  *            ixFeatureCtrlSwConfigurationCheck(IX_FEATURECTRL_ETH_LEARNING)) <br>
664  *
665  * This function is typically called during access component initialization time. 
666  *
667  * @param swConfigType @ref IxFeatureCtrlSwConfig [in] - the type of a software configuration
668  *        defined in IxFeatureCtrlSwConfig enumeration.          
669  *        
670  * @return 
671  *      - IX_FEATURE_CTRL_SWCONFIG_ENABLED if software configuration is enabled. 
672  *      - IX_FEATURE_CTRL_SWCONFIG_DISABLED if software configuration is disabled.            
673  */ 
674 PUBLIC IX_STATUS
675 ixFeatureCtrlSwConfigurationCheck (IxFeatureCtrlSwConfig swConfigType);
676
677 /**
678  * @ingroup IxFeatureCtrlAPI 
679  *
680  * @fn void ixFeatureCtrlSwConfigurationWrite (IxFeatureCtrlSwConfig swConfigType, BOOL enabled)
681  * 
682  * @brief This function enable/disable the specified software configuration.  
683  *
684  *        Usage Example:<br> 
685  *        - ixFeatureCtrlSwConfigurationWrite(IX_FEATURECTRL_ETH_LEARNING, true) is used
686  *          to enable Ethernet Learning Feature <br>
687  *        - ixFeatureCtrlSwConfigurationWrite(IX_FEATURECTRL_ETH_LEARNING, false) is used
688  *          to disable Ethernet Learning Feature <br> 
689  *
690  * @param swConfigType IxFeatureCtrlSwConfig [in] - the type of a software configuration
691  *        defined in IxFeatureCtrlSwConfig enumeration. 
692  * @param enabled BOOL [in] - To enable(true) / disable (false) the specified software
693  *                           configuration.            
694  *
695  * @return none
696  *          
697  */ 
698 PUBLIC void
699 ixFeatureCtrlSwConfigurationWrite (IxFeatureCtrlSwConfig swConfigType, BOOL enabled);
700
701 /**
702  * @ingroup IxFeatureCtrlAPI 
703  *
704  * @fn void ixFeatureCtrlIxp400SwVersionShow (void)
705  * 
706  * @brief This function shows the current software release information for IXP400 
707  *          
708  * @return none
709  *          
710  */ 
711 PUBLIC void
712 ixFeatureCtrlIxp400SwVersionShow (void);
713
714 #endif /* IXFEATURECTRL_H */
715
716 /**
717  * @} defgroup IxFeatureCtrlAPI
718  */