blob: 987b00b5620b5738021ba2c086f907a6816fcffc [file] [log] [blame]
Wolfgang Denk4646d2a2006-05-30 15:56:48 +02001/**
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
Wolfgang Denkc57eadc2013-07-28 22:12:47 +020020 * SPDX-License-Identifier: BSD-3-Clause
Wolfgang Denk4646d2a2006-05-30 15:56:48 +020021 * @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 */
340typedef 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 */
355typedef 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 */
424typedef 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 */
468typedef 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 */
492typedef 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 */
502typedef 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 */
524PUBLIC IxFeatureCtrlReg
525ixFeatureCtrlRead (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 */
541IxFeatureCtrlDeviceId
542ixFeatureCtrlDeviceRead (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 */
560IxFeatureCtrlBuildDevice
561ixFeatureCtrlSoftwareBuildGet (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 */
584PUBLIC IxFeatureCtrlReg
585ixFeatureCtrlHwCapabilityRead (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 */
606PUBLIC void
607ixFeatureCtrlWrite (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 */
633PUBLIC IX_STATUS
634ixFeatureCtrlComponentCheck (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 */
648PUBLIC IxFeatureCtrlProductId
649ixFeatureCtrlProductIdRead (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 */
674PUBLIC IX_STATUS
675ixFeatureCtrlSwConfigurationCheck (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>
York Sun4a598092013-04-01 11:29:11 -0700685 * - ixFeatureCtrlSwConfigurationWrite(IX_FEATURECTRL_ETH_LEARNING, true) is used
Wolfgang Denk4646d2a2006-05-30 15:56:48 +0200686 * to enable Ethernet Learning Feature <br>
York Sun4a598092013-04-01 11:29:11 -0700687 * - ixFeatureCtrlSwConfigurationWrite(IX_FEATURECTRL_ETH_LEARNING, false) is used
Wolfgang Denk4646d2a2006-05-30 15:56:48 +0200688 * to disable Ethernet Learning Feature <br>
689 *
690 * @param swConfigType IxFeatureCtrlSwConfig [in] - the type of a software configuration
691 * defined in IxFeatureCtrlSwConfig enumeration.
York Sun4a598092013-04-01 11:29:11 -0700692 * @param enabled BOOL [in] - To enable(true) / disable (false) the specified software
Wolfgang Denk4646d2a2006-05-30 15:56:48 +0200693 * configuration.
694 *
695 * @return none
696 *
697 */
698PUBLIC void
699ixFeatureCtrlSwConfigurationWrite (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 */
711PUBLIC void
712ixFeatureCtrlIxp400SwVersionShow (void);
713
714#endif /* IXFEATURECTRL_H */
715
716/**
717 * @} defgroup IxFeatureCtrlAPI
718 */