mediatek: add support for rtl8367c
[openwrt/staging/jow.git] / target / linux / mediatek / files-5.4 / drivers / net / phy / rtk / rtl8367c / oam.c
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 (週三, 08 三月 2017) $
12 *
13 * Purpose : RTK switch high-level API for RTL8367/RTL8367C
14 * Feature : Here is a list of all functions and variables in OAM(802.3ah) module.
15 *
16 */
17
18 #include <rtk_switch.h>
19 #include <rtk_error.h>
20 #include <oam.h>
21 #include <string.h>
22
23 #include <rtl8367c_asicdrv.h>
24 #include <rtl8367c_asicdrv_oam.h>
25
26
27 /* Module Name : OAM */
28
29 /* Function Name:
30 * rtk_oam_init
31 * Description:
32 * Initialize oam module.
33 * Input:
34 * None
35 * Output:
36 * None
37 * Return:
38 * RT_ERR_OK
39 * RT_ERR_FAILED
40 * Note:
41 * Must initialize oam module before calling any oam APIs.
42 */
43 rtk_api_ret_t rtk_oam_init(void)
44 {
45 return RT_ERR_OK;
46 } /* end of rtk_oam_init */
47
48
49 /* Function Name:
50 * rtk_oam_state_set
51 * Description:
52 * This API set OAM state.
53 * Input:
54 * enabled -OAMstate
55 * Output:
56 * None.
57 * Return:
58 * RT_ERR_OK - OK
59 * RT_ERR_FAILED - Failed
60 * RT_ERR_SMI - SMI access error
61 * RT_ERR_INPUT - Error parameter
62 * Note:
63 * This API set OAM state.
64 */
65 rtk_api_ret_t rtk_oam_state_set(rtk_enable_t enabled)
66 {
67 rtk_api_ret_t retVal;
68
69 /* Check initialization state */
70 RTK_CHK_INIT_STATE();
71
72 if (enabled >= RTK_ENABLE_END)
73 return RT_ERR_INPUT;
74
75 if ((retVal = rtl8367c_setAsicOamEnable(enabled))!=RT_ERR_OK)
76 return retVal;
77
78 return RT_ERR_OK;
79 }
80
81 /* Function Name:
82 * rtk_oam_state_get
83 * Description:
84 * This API get OAM state.
85 * Input:
86 * None.
87 * Output:
88 * pEnabled - H/W IGMP state
89 * Return:
90 * RT_ERR_OK - OK
91 * RT_ERR_FAILED - Failed
92 * RT_ERR_SMI - SMI access error
93 * RT_ERR_INPUT - Error parameter
94 * Note:
95 * This API set current OAM state.
96 */
97 rtk_api_ret_t rtk_oam_state_get(rtk_enable_t *pEnabled)
98 {
99 rtk_api_ret_t retVal;
100
101 /* Check initialization state */
102 RTK_CHK_INIT_STATE();
103
104 if ((retVal = rtl8367c_getAsicOamEnable(pEnabled))!=RT_ERR_OK)
105 return retVal;
106
107 return RT_ERR_OK;
108 }
109
110
111
112 /* Function Name:
113 * rtk_oam_parserAction_set
114 * Description:
115 * Set OAM parser action
116 * Input:
117 * port - port id
118 * action - parser action
119 * Output:
120 * None
121 * Return:
122 * RT_ERR_OK
123 * RT_ERR_FAILED
124 * RT_ERR_PORT_ID - invalid port id
125 * Note:
126 * None
127 */
128 rtk_api_ret_t rtk_oam_parserAction_set(rtk_port_t port, rtk_oam_parser_act_t action)
129 {
130 rtk_api_ret_t retVal;
131
132 /* Check initialization state */
133 RTK_CHK_INIT_STATE();
134
135 /* Check Port Valid */
136 RTK_CHK_PORT_VALID(port);
137
138 if (action >= OAM_PARSER_ACTION_END)
139 return RT_ERR_INPUT;
140
141 if ((retVal = rtl8367c_setAsicOamParser(rtk_switch_port_L2P_get(port), action))!=RT_ERR_OK)
142 return retVal;
143
144 return RT_ERR_OK;
145 }
146
147 /* Function Name:
148 * rtk_oam_parserAction_set
149 * Description:
150 * Get OAM parser action
151 * Input:
152 * port - port id
153 * Output:
154 * pAction - parser action
155 * Return:
156 * RT_ERR_OK
157 * RT_ERR_FAILED
158 * RT_ERR_PORT_ID - invalid port id
159 * Note:
160 * None
161 */
162 rtk_api_ret_t rtk_oam_parserAction_get(rtk_port_t port, rtk_oam_parser_act_t *pAction)
163 {
164 rtk_api_ret_t retVal;
165
166 /* Check initialization state */
167 RTK_CHK_INIT_STATE();
168
169 /* Check Port Valid */
170 RTK_CHK_PORT_VALID(port);
171
172 if ((retVal = rtl8367c_getAsicOamParser(rtk_switch_port_L2P_get(port), pAction))!=RT_ERR_OK)
173 return retVal;
174
175 return RT_ERR_OK;
176 }
177
178
179 /* Function Name:
180 * rtk_oam_multiplexerAction_set
181 * Description:
182 * Set OAM multiplexer action
183 * Input:
184 * port - port id
185 * action - parser action
186 * Output:
187 * None
188 * Return:
189 * RT_ERR_OK
190 * RT_ERR_FAILED
191 * RT_ERR_PORT_ID - invalid port id
192 * Note:
193 * None
194 */
195 rtk_api_ret_t rtk_oam_multiplexerAction_set(rtk_port_t port, rtk_oam_multiplexer_act_t action)
196 {
197 rtk_api_ret_t retVal;
198
199 /* Check initialization state */
200 RTK_CHK_INIT_STATE();
201
202 /* Check Port Valid */
203 RTK_CHK_PORT_VALID(port);
204
205 if (action >= OAM_MULTIPLEXER_ACTION_END)
206 return RT_ERR_INPUT;
207
208 if ((retVal = rtl8367c_setAsicOamMultiplexer(rtk_switch_port_L2P_get(port), action))!=RT_ERR_OK)
209 return retVal;
210
211 return RT_ERR_OK;
212 }
213
214 /* Function Name:
215 * rtk_oam_parserAction_set
216 * Description:
217 * Get OAM multiplexer action
218 * Input:
219 * port - port id
220 * Output:
221 * pAction - parser action
222 * Return:
223 * RT_ERR_OK
224 * RT_ERR_FAILED
225 * RT_ERR_PORT_ID - invalid port id
226 * Note:
227 * None
228 */
229 rtk_api_ret_t rtk_oam_multiplexerAction_get(rtk_port_t port, rtk_oam_multiplexer_act_t *pAction)
230 {
231 rtk_api_ret_t retVal;
232
233 /* Check initialization state */
234 RTK_CHK_INIT_STATE();
235
236 /* Check Port Valid */
237 RTK_CHK_PORT_VALID(port);
238
239 if ((retVal = rtl8367c_getAsicOamMultiplexer(rtk_switch_port_L2P_get(port), pAction))!=RT_ERR_OK)
240 return retVal;
241
242 return RT_ERR_OK;
243 }
244
245