diff options
| author | Tom Rini <trini@ti.com> | 2012-09-27 12:06:07 -0700 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2012-09-27 12:06:07 -0700 | 
| commit | cec2655c3b3b86f14a6a5c2cbb01833f7e3974be (patch) | |
| tree | 8428f50b579b3656fd24056ae3c6304f58aee620 /drivers/net/npe/include/ix_macros.h | |
| parent | c57b953da923c6402afc1c890c21fdc7d5a2cc4a (diff) | |
| parent | ee0f60df0b71092cd632fc6651f4157a2d252598 (diff) | |
| download | olio-uboot-2014.01-cec2655c3b3b86f14a6a5c2cbb01833f7e3974be.tar.xz olio-uboot-2014.01-cec2655c3b3b86f14a6a5c2cbb01833f7e3974be.zip | |
Merge branch 'master' of git://git.denx.de/u-boot-net
Diffstat (limited to 'drivers/net/npe/include/ix_macros.h')
| -rw-r--r-- | drivers/net/npe/include/ix_macros.h | 266 | 
1 files changed, 266 insertions, 0 deletions
| diff --git a/drivers/net/npe/include/ix_macros.h b/drivers/net/npe/include/ix_macros.h new file mode 100644 index 000000000..53f5942f9 --- /dev/null +++ b/drivers/net/npe/include/ix_macros.h @@ -0,0 +1,266 @@ +/** + * ============================================================================ + * = COPYRIGHT + *  + * @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 -- + * = PRODUCT + *      Intel(r) IXP425 Software Release + * + * = FILENAME + *      ix_macros.h + * + * = DESCRIPTION + *      This file will define the basic preprocessor macros that are going to be used + *      the IXA SDK Framework API. + * + * = AUTHOR + *      Intel Corporation + * + * = CHANGE HISTORY + *      4/22/2002 4:41:05 PM - creation time  + * ============================================================================ + */ + +#if !defined(__IX_MACROS_H__) +#define __IX_MACROS_H__ + + +#if defined(__cplusplus) +extern "C" +{ +#endif /* end defined(__cplusplus) */ + + +/** + * MACRO NAME: IX_BIT_FIELD_MASK16 + * + * DESCRIPTION: Builds the mask required to extract the bit field from a 16 bit unsigned integer value. + * + * @Param:  - IN arg_FieldLSBBit an unsigned integer value representing the position of the least significant + *          bit of the bit field. + * @Param:  - IN arg_FieldMSBBit an unsigned integer value representing the position of the most significant + *          bit of the bit field. + * + * @Return: Returns a 16 bit mask that will extract the bit field from a 16 bit unsigned integer value. + */ +#define IX_BIT_FIELD_MASK16( \ +                             arg_FieldLSBBit, \ +                             arg_FieldMSBBit \ +                            ) \ +                            ((ix_bit_mask16)((((ix_uint16)1 << (arg_FieldMSBBit + 1 - arg_FieldLSBBit)) - \ +                            (ix_uint16)1) << arg_FieldLSBBit)) + + + +/** + * MACRO NAME: IX_GET_BIT_FIELD16 + * + * DESCRIPTION: Extracts a bit field from 16 bit unsigned integer. The returned value is normalized in + *          in the sense that will be right aligned. + * + * @Param:  - IN arg_PackedData16 a 16 bit unsigned integer that contains the bit field of interest. + * @Param:  - IN arg_FieldLSBBit an unsigned integer value representing the position of the least significant + *          bit of the bit field. + * @Param:  - IN arg_FieldMSBBit an unsigned integer value representing the position of the most significant + *          bit of the bit field. + * + * @Return: Returns the value of the bit field. The value can be from 0 to (1 << (arg_FieldMSBBit + 1 - + *          arg_FieldLSBBit)) - 1. + */ +#define IX_GET_BIT_FIELD16( \ +                            arg_PackedData16, \ +                            arg_FieldLSBBit, \ +                            arg_FieldMSBBit \ +                          ) \ +                          (((ix_uint16)(arg_PackedData16) & IX_BIT_FIELD_MASK16(arg_FieldLSBBit, arg_FieldMSBBit)) >> \ +                             arg_FieldLSBBit) + + +/** + * MACRO NAME: IX_MAKE_BIT_FIELD16 + * + * DESCRIPTION: This macro will create a temporary 16 bit value with the bit field + *          desired set to the desired value. + * + * @Param:  - IN arg_BitFieldValue is the new value of the bit field. The value can be from 0 to  + *          (1 << (arg_FieldMSBBit + 1 - arg_FieldLSBBit)) - 1. + * @Param:  - IN arg_FieldLSBBit an unsigned integer value representing the position of the least significant + *          bit of the bit field. + * @Param:  - IN arg_FieldMSBBit an unsigned integer value representing the position of the most significant + *          bit of the bit field. + *  + * @Return: Returns a temporary ix_uint16 value that has the bit field set to the appropriate value. + */ +#define IX_MAKE_BIT_FIELD16( \ +                             arg_BitFieldValue, \ +                             arg_FieldLSBBit, \ +                             arg_FieldMSBBit \ +                           ) \ +                           (((ix_uint16)(arg_BitFieldValue) << arg_FieldLSBBit) & \ +                           IX_BIT_FIELD_MASK16(arg_FieldLSBBit, arg_FieldMSBBit)) +                                  +/** + * MACRO NAME: IX_SET_BIT_FIELD16 + * + * DESCRIPTION: Sets a new value for a bit field from a 16 bit unsigned integer. + * + * @Param:  - IN arg_PackedData16 a 16 bit unsigned integer that contains the bit field of interest. + * @Param:  - IN arg_BitFieldValue is the new vale of the bit field. The value can be from 0 to  + *          (1 << (arg_FieldMSBBit + 1 - arg_FieldLSBBit)) - 1. + * @Param:  - IN arg_FieldLSBBit an unsigned integer value representing the position of the least significant + *          bit of the bit field. + * @Param:  - IN arg_FieldMSBBit an unsigned integer value representing the position of the most significant + *          bit of the bit field. + * + * @Return: Returns the updated value of arg_PackedData16. + */ +#define IX_SET_BIT_FIELD16( \ +                            arg_PackedData16, \ +                            arg_BitFieldValue, \ +                            arg_FieldLSBBit, \ +                            arg_FieldMSBBit \ +                          ) \ +                          (arg_PackedData16 = (((ix_uint16)(arg_PackedData16) & \ +                          ~(IX_BIT_FIELD_MASK16(arg_FieldLSBBit, arg_FieldMSBBit))) | \ +                          IX_MAKE_BIT_FIELD16(arg_BitFieldValue, arg_FieldLSBBit, arg_FieldMSBBit)))  + + +/** + * MACRO NAME: IX_BIT_FIELD_MASK32 + * + * DESCRIPTION: Builds the mask required to extract the bit field from a 32 bit unsigned integer value. + * + * @Param:  - IN arg_FieldLSBBit an unsigned integer value representing the position of the least significant + *          bit of the bit field. + * @Param:  - IN arg_FieldMSBBit an unsigned integer value representing the position of the most significant + *          bit of the bit field. + * + * @Return: Returns a 32 bit mask that will extract the bit field from a 32 bit unsigned integer value. + */ +#define IX_BIT_FIELD_MASK32( \ +                             arg_FieldLSBBit, \ +                             arg_FieldMSBBit \ +                           ) \ +                           ((ix_bit_mask32)((((ix_uint32)1 << (arg_FieldMSBBit + 1 - arg_FieldLSBBit)) - \ +                           (ix_uint32)1) << arg_FieldLSBBit)) + + + +/** + * MACRO NAME: IX_GET_BIT_FIELD32 + * + * DESCRIPTION: Extracts a bit field from 32 bit unsigned integer. The returned value is normalized in + *          in the sense that will be right aligned. + * + * @Param:  - IN arg_PackedData32 a 32 bit unsigned integer that contains the bit field of interest. + * @Param:  - IN arg_FieldLSBBit an unsigned integer value representing the position of the least significant + *          bit of the bit field. + * @Param:  - IN arg_FieldMSBBit an unsigned integer value representing the position of the most significant + *          bit of the bit field. + * + * @Return: Returns the value of the bit field. The value can be from 0 to (1 << (arg_FieldMSBBit + 1 - + *          arg_FieldLSBBit)) - 1. + */ +#define IX_GET_BIT_FIELD32( \ +                            arg_PackedData32, \ +                            arg_FieldLSBBit, \ +                            arg_FieldMSBBit \ +                          ) \ +                          (((ix_uint32)(arg_PackedData32) & IX_BIT_FIELD_MASK32(arg_FieldLSBBit, arg_FieldMSBBit)) >> \ +                             arg_FieldLSBBit) + + + + +/** + * MACRO NAME: IX_MAKE_BIT_FIELD32 + * + * DESCRIPTION: This macro will create a temporary 32 bit value with the bit field + *          desired set to the desired value. + * + * @Param:  - IN arg_BitFieldValue is the new value of the bit field. The value can be from 0 to  + *          (1 << (arg_FieldMSBBit + 1 - arg_FieldLSBBit)) - 1. + * @Param:  - IN arg_FieldLSBBit an unsigned integer value representing the position of the least significant + *          bit of the bit field. + * @Param:  - IN arg_FieldMSBBit an unsigned integer value representing the position of the most significant + *          bit of the bit field. + *  + * @Return: Returns a temporary ix_uint32 value that has the bit field set to the appropriate value. + */ +#define IX_MAKE_BIT_FIELD32( \ +                             arg_BitFieldValue, \ +                             arg_FieldLSBBit, \ +                             arg_FieldMSBBit \ +                           ) \ +                           (((ix_uint32)(arg_BitFieldValue) << arg_FieldLSBBit) & \ +                           IX_BIT_FIELD_MASK32(arg_FieldLSBBit, arg_FieldMSBBit)) +                             +                                 +/** + * MACRO NAME: IX_SET_BIT_FIELD32 + * + * DESCRIPTION: Sets a new value for a bit field from a 32 bit unsigned integer. + * + * @Param:  - IN arg_PackedData32 a 32 bit unsigned integer that contains the bit field of interest. + * @Param:  - IN arg_BitFieldValue is the new value of the bit field. The value can be from 0 to  + *          (1 << (arg_FieldMSBBit + 1 - arg_FieldLSBBit)) - 1. + * @Param:  - IN arg_FieldLSBBit an unsigned integer value representing the position of the least significant + *          bit of the bit field. + * @Param:  - IN arg_FieldMSBBit an unsigned integer value representing the position of the most significant + *          bit of the bit field. + * + * @Return: Returns the updated value of arg_PackedData32. + */ +#define IX_SET_BIT_FIELD32( \ +                            arg_PackedData32, \ +                            arg_BitFieldValue, \ +                            arg_FieldLSBBit, \ +                            arg_FieldMSBBit \ +                          ) \ +                          (arg_PackedData32 = (((ix_uint32)(arg_PackedData32) & \ +                          ~(IX_BIT_FIELD_MASK32(arg_FieldLSBBit, arg_FieldMSBBit))) | \ +                          IX_MAKE_BIT_FIELD32(arg_BitFieldValue, arg_FieldLSBBit, arg_FieldMSBBit)))  + + + +#if defined(__cplusplus) +} +#endif /* end defined(__cplusplus) */ + +#endif /* end !defined(__IX_MACROS_H__) */ |