• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/drivers/char/rtl8365mb/
1/*
2 * Copyright (C) 2013 Realtek Semiconductor Corp.
3 * All Rights Reserved.
4 *
5 * This program is the proprietary software of Realtek Semiconductor
6 * Corporation and/or its licensors, and only be used, duplicated,
7 * modified or distributed under the authorized license from Realtek.
8 *
9 * ANY USE OF THE SOFTWARE OTHER THAN AS AUTHORIZED UNDER
10 * THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
11 *
12 * Purpose : RTL8367/RTL8367C switch high-level API
13 *
14 * Feature : The file includes Interrupt module high-layer API defination
15 *
16 */
17
18#ifndef __RTK_API_INTERRUPT_H__
19#define __RTK_API_INTERRUPT_H__
20
21
22/*
23 * Data Type Declaration
24 */
25#define RTK_MAX_NUM_OF_INTERRUPT_TYPE               1
26
27
28typedef struct  rtk_int_status_s
29{
30    rtk_uint16 value[RTK_MAX_NUM_OF_INTERRUPT_TYPE];
31} rtk_int_status_t;
32
33typedef struct rtk_int_info_s
34{
35    rtk_portmask_t  portMask;
36    rtk_uint32      meterMask;
37    rtk_uint32      systemLearnOver;
38}rtk_int_info_t;
39
40typedef enum rtk_int_type_e
41{
42    INT_TYPE_LINK_STATUS = 0,
43    INT_TYPE_METER_EXCEED,
44    INT_TYPE_LEARN_LIMIT,
45    INT_TYPE_LINK_SPEED,
46    INT_TYPE_CONGEST,
47    INT_TYPE_GREEN_FEATURE,
48    INT_TYPE_LOOP_DETECT,
49    INT_TYPE_8051,
50    INT_TYPE_CABLE_DIAG,
51    INT_TYPE_ACL,
52    INT_TYPE_RESERVED, /* Unused */
53    INT_TYPE_SLIENT,
54    INT_TYPE_END
55}rtk_int_type_t;
56
57typedef enum rtk_int_advType_e
58{
59    ADV_L2_LEARN_PORT_MASK = 0,
60    ADV_SPEED_CHANGE_PORT_MASK,
61    ADV_SPECIAL_CONGESTION_PORT_MASK,
62    ADV_PORT_LINKDOWN_PORT_MASK,
63    ADV_PORT_LINKUP_PORT_MASK,
64    ADV_METER_EXCEED_MASK,
65    ADV_RLDP_LOOPED,
66	ADV_RLDP_RELEASED,
67    ADV_END,
68} rtk_int_advType_t;
69
70typedef enum rtk_int_polarity_e
71{
72    INT_POLAR_HIGH = 0,
73    INT_POLAR_LOW,
74    INT_POLAR_END
75} rtk_int_polarity_t;
76
77/* Function Name:
78 *      rtk_int_polarity_set
79 * Description:
80 *      Set interrupt polarity configuration.
81 * Input:
82 *      type - Interruptpolarity type.
83 * Output:
84 *      None
85 * Return:
86 *      RT_ERR_OK           - OK
87 *      RT_ERR_FAILED       - Failed
88 *      RT_ERR_SMI          - SMI access error
89 *      RT_ERR_INPUT 		- Invalid input parameters.
90 * Note:
91 *      The API can set interrupt polarity configuration.
92 */
93extern rtk_api_ret_t rtk_int_polarity_set(rtk_int_polarity_t type);
94
95/* Function Name:
96 *      rtk_int_polarity_get
97 * Description:
98 *      Get interrupt polarity configuration.
99 * Input:
100 *      None
101 * Output:
102 *      pType - Interruptpolarity type.
103 * Return:
104 *      RT_ERR_OK           - OK
105 *      RT_ERR_FAILED       - Failed
106 *      RT_ERR_SMI          - SMI access error
107 * Note:
108 *      The API can get interrupt polarity configuration.
109 */
110extern rtk_api_ret_t rtk_int_polarity_get(rtk_int_polarity_t *pType);
111
112/* Function Name:
113 *      rtk_int_control_set
114 * Description:
115 *      Set interrupt trigger status configuration.
116 * Input:
117 *      type - Interrupt type.
118 *      enable - Interrupt status.
119 * Output:
120 *      None
121 * Return:
122 *      RT_ERR_OK           - OK
123 *      RT_ERR_FAILED       - Failed
124 *      RT_ERR_SMI          - SMI access error
125 *      RT_ERR_INPUT 		- Invalid input parameters.
126 *      RT_ERR_ENABLE 		- Invalid enable input.
127 * Note:
128 *      The API can set interrupt status configuration.
129 *      The interrupt trigger status is shown in the following:
130 *      - INT_TYPE_LINK_STATUS
131 *      - INT_TYPE_METER_EXCEED
132 *      - INT_TYPE_LEARN_LIMIT
133 *      - INT_TYPE_LINK_SPEED
134 *      - INT_TYPE_CONGEST
135 *      - INT_TYPE_GREEN_FEATURE
136 *      - INT_TYPE_LOOP_DETECT
137 *      - INT_TYPE_8051,
138 *      - INT_TYPE_CABLE_DIAG,
139 *      - INT_TYPE_ACL,
140 *      - INT_TYPE_SLIENT
141 */
142extern rtk_api_ret_t rtk_int_control_set(rtk_int_type_t type, rtk_enable_t enable);
143
144/* Function Name:
145 *      rtk_int_control_get
146 * Description:
147 *      Get interrupt trigger status configuration.
148 * Input:
149 *      type - Interrupt type.
150 * Output:
151 *      pEnable - Interrupt status.
152 * Return:
153 *      RT_ERR_OK           - OK
154 *      RT_ERR_FAILED       - Failed
155 *      RT_ERR_SMI          - SMI access error
156 *      RT_ERR_INPUT 		- Invalid input parameters.
157 * Note:
158 *      The API can get interrupt status configuration.
159 *      The interrupt trigger status is shown in the following:
160 *      - INT_TYPE_LINK_STATUS
161 *      - INT_TYPE_METER_EXCEED
162 *      - INT_TYPE_LEARN_LIMIT
163 *      - INT_TYPE_LINK_SPEED
164 *      - INT_TYPE_CONGEST
165 *      - INT_TYPE_GREEN_FEATURE
166 *      - INT_TYPE_LOOP_DETECT
167 *      - INT_TYPE_8051,
168 *      - INT_TYPE_CABLE_DIAG,
169 *      - INT_TYPE_ACL,
170 *      - INT_TYPE_SLIENT
171 */
172extern rtk_api_ret_t rtk_int_control_get(rtk_int_type_t type, rtk_enable_t* pEnable);
173
174/* Function Name:
175 *      rtk_int_status_set
176 * Description:
177 *      Set interrupt trigger status to clean.
178 * Input:
179 *      None
180 * Output:
181 *      pStatusMask - Interrupt status bit mask.
182 * Return:
183 *      RT_ERR_OK              - OK
184 *      RT_ERR_FAILED          - Failed
185 *      RT_ERR_SMI             - SMI access error
186 *      RT_ERR_INPUT - Invalid input parameters.
187 * Note:
188 *      The API can clean interrupt trigger status when interrupt happened.
189 *      The interrupt trigger status is shown in the following:
190 *      - INT_TYPE_LINK_STATUS    (value[0] (Bit0))
191 *      - INT_TYPE_METER_EXCEED   (value[0] (Bit1))
192 *      - INT_TYPE_LEARN_LIMIT    (value[0] (Bit2))
193 *      - INT_TYPE_LINK_SPEED     (value[0] (Bit3))
194 *      - INT_TYPE_CONGEST        (value[0] (Bit4))
195 *      - INT_TYPE_GREEN_FEATURE  (value[0] (Bit5))
196 *      - INT_TYPE_LOOP_DETECT    (value[0] (Bit6))
197 *      - INT_TYPE_8051           (value[0] (Bit7))
198 *      - INT_TYPE_CABLE_DIAG     (value[0] (Bit8))
199 *      - INT_TYPE_ACL            (value[0] (Bit9))
200 *      - INT_TYPE_SLIENT         (value[0] (Bit11))
201 *      The status will be cleared after execute this API.
202 */
203extern rtk_api_ret_t rtk_int_status_set(rtk_int_status_t *pStatusMask);
204
205/* Function Name:
206 *      rtk_int_status_get
207 * Description:
208 *      Get interrupt trigger status.
209 * Input:
210 *      None
211 * Output:
212 *      pStatusMask - Interrupt status bit mask.
213 * Return:
214 *      RT_ERR_OK           - OK
215 *      RT_ERR_FAILED       - Failed
216 *      RT_ERR_SMI          - SMI access error
217 *      RT_ERR_INPUT 		- Invalid input parameters.
218 * Note:
219 *      The API can get interrupt trigger status when interrupt happened.
220 *      The interrupt trigger status is shown in the following:
221 *      - INT_TYPE_LINK_STATUS    (value[0] (Bit0))
222 *      - INT_TYPE_METER_EXCEED   (value[0] (Bit1))
223 *      - INT_TYPE_LEARN_LIMIT    (value[0] (Bit2))
224 *      - INT_TYPE_LINK_SPEED     (value[0] (Bit3))
225 *      - INT_TYPE_CONGEST        (value[0] (Bit4))
226 *      - INT_TYPE_GREEN_FEATURE  (value[0] (Bit5))
227 *      - INT_TYPE_LOOP_DETECT    (value[0] (Bit6))
228 *      - INT_TYPE_8051           (value[0] (Bit7))
229 *      - INT_TYPE_CABLE_DIAG     (value[0] (Bit8))
230 *      - INT_TYPE_ACL            (value[0] (Bit9))
231 *      - INT_TYPE_SLIENT         (value[0] (Bit11))
232 *
233 */
234extern rtk_api_ret_t rtk_int_status_get(rtk_int_status_t* pStatusMask);
235
236/* Function Name:
237 *      rtk_int_advanceInfo_get
238 * Description:
239 *      Get interrupt advanced information.
240 * Input:
241 *      adv_type - Advanced interrupt type.
242 * Output:
243 *      info - Information per type.
244 * Return:
245 *      RT_ERR_OK           - OK
246 *      RT_ERR_FAILED       - Failed
247 *      RT_ERR_SMI          - SMI access error
248 *      RT_ERR_INPUT 		- Invalid input parameters.
249 * Note:
250 *      This API can get advanced information when interrupt happened.
251 *      The status will be cleared after execute this API.
252 */
253extern rtk_api_ret_t rtk_int_advanceInfo_get(rtk_int_advType_t adv_type, rtk_int_info_t* info);
254
255
256#endif /* __RTK_API_INTERRUPT_H__ */
257