mediatek: add support for rtl8367c
[openwrt/staging/rmilecki.git] / target / linux / mediatek / files-5.4 / drivers / net / phy / rtk / rtl8367c / include / rldp.h
1 /*
2 * Copyright (C) 2013 Realtek Semiconductor Corp.
3 * All Rights Reserved.
4 *
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
9 *
10 * $Revision: 76306 $
11 * $Date: 2017-03-08 15:13:58 +0800 (¶g¤T, 08 ¤T¤ë 2017) $
12 *
13 * Purpose : Declaration of RLDP and RLPP API
14 *
15 * Feature : The file have include the following module and sub-modules
16 * 1) RLDP and RLPP configuration and status
17 *
18 */
19
20
21 #ifndef __RTK_RLDP_H__
22 #define __RTK_RLDP_H__
23
24
25 /*
26 * Include Files
27 */
28
29
30 /*
31 * Symbol Definition
32 */
33 typedef enum rtk_rldp_trigger_e
34 {
35 RTK_RLDP_TRIGGER_SAMOVING = 0,
36 RTK_RLDP_TRIGGER_PERIOD,
37 RTK_RLDP_TRIGGER_END
38 } rtk_rldp_trigger_t;
39
40 typedef enum rtk_rldp_cmpType_e
41 {
42 RTK_RLDP_CMPTYPE_MAGIC = 0, /* Compare the RLDP with magic only */
43 RTK_RLDP_CMPTYPE_MAGIC_ID, /* Compare the RLDP with both magic + ID */
44 RTK_RLDP_CMPTYPE_END
45 } rtk_rldp_cmpType_t;
46
47 typedef enum rtk_rldp_loopStatus_e
48 {
49 RTK_RLDP_LOOPSTS_NONE = 0,
50 RTK_RLDP_LOOPSTS_LOOPING,
51 RTK_RLDP_LOOPSTS_END
52 } rtk_rldp_loopStatus_t;
53
54 typedef enum rtk_rlpp_trapType_e
55 {
56 RTK_RLPP_TRAPTYPE_NONE = 0,
57 RTK_RLPP_TRAPTYPE_CPU,
58 RTK_RLPP_TRAPTYPE_END
59 } rtk_rlpp_trapType_t;
60
61 typedef struct rtk_rldp_config_s
62 {
63 rtk_enable_t rldp_enable;
64 rtk_rldp_trigger_t trigger_mode;
65 rtk_mac_t magic;
66 rtk_rldp_cmpType_t compare_type;
67 rtk_uint32 interval_check; /* Checking interval for check state */
68 rtk_uint32 num_check; /* Checking number for check state */
69 rtk_uint32 interval_loop; /* Checking interval for loop state */
70 rtk_uint32 num_loop; /* Checking number for loop state */
71 } rtk_rldp_config_t;
72
73 typedef struct rtk_rldp_portConfig_s
74 {
75 rtk_enable_t tx_enable;
76 } rtk_rldp_portConfig_t;
77
78 typedef struct rtk_rldp_status_s
79 {
80 rtk_mac_t id;
81 } rtk_rldp_status_t;
82
83 typedef struct rtk_rldp_portStatus_s
84 {
85 rtk_rldp_loopStatus_t loop_status;
86 rtk_rldp_loopStatus_t loop_enter;
87 rtk_rldp_loopStatus_t loop_leave;
88 } rtk_rldp_portStatus_t;
89
90 /*
91 * Data Declaration
92 */
93
94
95 /*
96 * Macro Declaration
97 */
98
99 #define RTK_RLDP_INTERVAL_MAX 0xffff
100 #define RTK_RLDP_NUM_MAX 0xff
101
102
103 /*
104 * Function Declaration
105 */
106
107 /* Module Name : RLDP */
108
109
110 /* Function Name:
111 * rtk_rldp_config_set
112 * Description:
113 * Set RLDP module configuration
114 * Input:
115 * pConfig - configuration structure of RLDP
116 * Output:
117 * None
118 * Return:
119 * RT_ERR_OK
120 * RT_ERR_FAILED
121 * RT_ERR_INPUT
122 * RT_ERR_NULL_POINTER
123 * Note:
124 * None
125 */
126 extern rtk_api_ret_t rtk_rldp_config_set(rtk_rldp_config_t *pConfig);
127
128
129 /* Function Name:
130 * rtk_rldp_config_get
131 * Description:
132 * Get RLDP module configuration
133 * Input:
134 * None
135 * Output:
136 * pConfig - configuration structure of RLDP
137 * Return:
138 * RT_ERR_OK
139 * RT_ERR_FAILED
140 * RT_ERR_INPUT
141 * RT_ERR_NULL_POINTER
142 * Note:
143 * None
144 */
145 extern rtk_api_ret_t rtk_rldp_config_get(rtk_rldp_config_t *pConfig);
146
147
148 /* Function Name:
149 * rtk_rldp_portConfig_set
150 * Description:
151 * Set per port RLDP module configuration
152 * Input:
153 * port - port number to be configured
154 * pPortConfig - per port configuration structure of RLDP
155 * Output:
156 * None
157 * Return:
158 * RT_ERR_OK
159 * RT_ERR_FAILED
160 * RT_ERR_INPUT
161 * RT_ERR_NULL_POINTER
162 * Note:
163 * None
164 */
165 extern rtk_api_ret_t rtk_rldp_portConfig_set(rtk_port_t port, rtk_rldp_portConfig_t *pPortConfig);
166
167
168 /* Function Name:
169 * rtk_rldp_portConfig_get
170 * Description:
171 * Get per port RLDP module configuration
172 * Input:
173 * port - port number to be get
174 * Output:
175 * pPortConfig - per port configuration structure of RLDP
176 * Return:
177 * RT_ERR_OK
178 * RT_ERR_FAILED
179 * RT_ERR_INPUT
180 * RT_ERR_NULL_POINTER
181 * Note:
182 * None
183 */
184 extern rtk_api_ret_t rtk_rldp_portConfig_get(rtk_port_t port, rtk_rldp_portConfig_t *pPortConfig);
185
186
187 /* Function Name:
188 * rtk_rldp_status_get
189 * Description:
190 * Get RLDP module status
191 * Input:
192 * None
193 * Output:
194 * pStatus - status structure of RLDP
195 * Return:
196 * RT_ERR_OK
197 * RT_ERR_FAILED
198 * RT_ERR_NULL_POINTER
199 * Note:
200 * None
201 */
202 extern rtk_api_ret_t rtk_rldp_status_get(rtk_rldp_status_t *pStatus);
203
204
205 /* Function Name:
206 * rtk_rldp_portStatus_get
207 * Description:
208 * Get RLDP module status
209 * Input:
210 * port - port number to be get
211 * Output:
212 * pPortStatus - per port status structure of RLDP
213 * Return:
214 * RT_ERR_OK
215 * RT_ERR_FAILED
216 * RT_ERR_INPUT
217 * RT_ERR_NULL_POINTER
218 * Note:
219 * None
220 */
221 extern rtk_api_ret_t rtk_rldp_portStatus_get(rtk_port_t port, rtk_rldp_portStatus_t *pPortStatus);
222
223
224 /* Function Name:
225 * rtk_rldp_portStatus_clear
226 * Description:
227 * Clear RLDP module status
228 * Input:
229 * port - port number to be clear
230 * pPortStatus - per port status structure of RLDP
231 * Output:
232 * None
233 * Return:
234 * RT_ERR_OK
235 * RT_ERR_FAILED
236 * RT_ERR_INPUT
237 * RT_ERR_NULL_POINTER
238 * Note:
239 * Clear operation effect loop_enter and loop_leave only, other field in
240 * the structure are don't care
241 */
242 extern rtk_api_ret_t rtk_rldp_portStatus_set(rtk_port_t port, rtk_rldp_portStatus_t *pPortStatus);
243
244
245 /* Function Name:
246 * rtk_rldp_portLoopPair_get
247 * Description:
248 * Get RLDP port loop pairs
249 * Input:
250 * port - port number to be get
251 * Output:
252 * pPortmask - per port related loop ports
253 * Return:
254 * RT_ERR_OK
255 * RT_ERR_FAILED
256 * RT_ERR_INPUT
257 * RT_ERR_NULL_POINTER
258 * Note:
259 * None
260 */
261 extern rtk_api_ret_t rtk_rldp_portLoopPair_get(rtk_port_t port, rtk_portmask_t *pPortmask);
262
263 #endif /* __RTK_RLDP_H__ */
264