2 * Copyright (C) 2013 Realtek Semiconductor Corp.
5 * Unless you and Realtek execute a separate written software license
6 * agreement governing use of this software, this software is licensed
7 * to you under the terms of the GNU General Public License version 2,
8 * available at https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
11 * $Date: 2017-03-08 15:13:58 +0800 (週三, 08 三月 2017) $
13 * Purpose : RTL8367C switch high-level API for RTL8367C
14 * Feature : Field selector related functions
17 #include <rtl8367c_asicdrv_hsb.h>
19 * rtl8367c_setAsicFieldSelector
21 * Set user defined field selectors in HSB
23 * index - index of field selector 0-15
24 * format - Format of field selector
25 * offset - Retrieving data offset
30 * RT_ERR_SMI - SMI access error
31 * RT_ERR_OUT_OF_RANGE - input parameter out of range
33 * System support 16 user defined field selctors.
34 * Each selector can be enabled or disable. User can defined retrieving 16-bits in many predefiend
35 * standard l2/l3/l4 payload.
37 ret_t
rtl8367c_setAsicFieldSelector(rtk_uint32 index
, rtk_uint32 format
, rtk_uint32 offset
)
41 if(index
> RTL8367C_FIELDSEL_FORMAT_NUMBER
)
42 return RT_ERR_OUT_OF_RANGE
;
44 if(format
>= FIELDSEL_FORMAT_END
)
45 return RT_ERR_OUT_OF_RANGE
;
47 regData
= (((format
<< RTL8367C_FIELD_SELECTOR_FORMAT_OFFSET
) & RTL8367C_FIELD_SELECTOR_FORMAT_MASK
) |
48 ((offset
<< RTL8367C_FIELD_SELECTOR_OFFSET_OFFSET
) & RTL8367C_FIELD_SELECTOR_OFFSET_MASK
));
50 return rtl8367c_setAsicReg(RTL8367C_FIELD_SELECTOR_REG(index
), regData
);
53 * rtl8367c_getAsicFieldSelector
55 * Get user defined field selectors in HSB
57 * index - index of field selector 0-15
58 * pFormat - Format of field selector
59 * pOffset - Retrieving data offset
64 * RT_ERR_SMI - SMI access error
68 ret_t
rtl8367c_getAsicFieldSelector(rtk_uint32 index
, rtk_uint32
* pFormat
, rtk_uint32
* pOffset
)
73 retVal
= rtl8367c_getAsicReg(RTL8367C_FIELD_SELECTOR_REG(index
), ®Data
);
74 if(retVal
!= RT_ERR_OK
)
77 *pFormat
= ((regData
& RTL8367C_FIELD_SELECTOR_FORMAT_MASK
) >> RTL8367C_FIELD_SELECTOR_FORMAT_OFFSET
);
78 *pOffset
= ((regData
& RTL8367C_FIELD_SELECTOR_OFFSET_MASK
) >> RTL8367C_FIELD_SELECTOR_OFFSET_OFFSET
);