fcac1bcb8421ba1c7890f752e743698d680ba571
[openwrt/openwrt.git] / target / linux / mediatek / files-5.10 / drivers / net / phy / rtk / rtl8367c / include / port.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 * Purpose : RTL8367/RTL8367C switch high-level API
11 *
12 * Feature : The file includes port module high-layer API defination
13 *
14 */
15
16 #ifndef __RTK_API_PORT_H__
17 #define __RTK_API_PORT_H__
18
19 /*
20 * Data Type Declaration
21 */
22
23 #define PHY_CONTROL_REG 0
24 #define PHY_STATUS_REG 1
25 #define PHY_AN_ADVERTISEMENT_REG 4
26 #define PHY_AN_LINKPARTNER_REG 5
27 #define PHY_1000_BASET_CONTROL_REG 9
28 #define PHY_1000_BASET_STATUS_REG 10
29 #define PHY_RESOLVED_REG 26
30
31 #define RTK_EFID_MAX 0x7
32
33 #define RTK_FIBER_FORCE_1000M 3
34 #define RTK_FIBER_FORCE_100M 5
35 #define RTK_FIBER_FORCE_100M1000M 7
36
37 #define RTK_INDRECT_ACCESS_CRTL 0x1f00
38 #define RTK_INDRECT_ACCESS_STATUS 0x1f01
39 #define RTK_INDRECT_ACCESS_ADDRESS 0x1f02
40 #define RTK_INDRECT_ACCESS_WRITE_DATA 0x1f03
41 #define RTK_INDRECT_ACCESS_READ_DATA 0x1f04
42 #define RTK_INDRECT_ACCESS_DELAY 0x1f80
43 #define RTK_INDRECT_ACCESS_BURST 0x1f81
44 #define RTK_RW_MASK 0x2
45 #define RTK_CMD_MASK 0x1
46 #define RTK_PHY_BUSY_OFFSET 2
47
48
49 typedef enum rtk_mode_ext_e
50 {
51 MODE_EXT_DISABLE = 0,
52 MODE_EXT_RGMII,
53 MODE_EXT_MII_MAC,
54 MODE_EXT_MII_PHY,
55 MODE_EXT_TMII_MAC,
56 MODE_EXT_TMII_PHY,
57 MODE_EXT_GMII,
58 MODE_EXT_RMII_MAC,
59 MODE_EXT_RMII_PHY,
60 MODE_EXT_SGMII,
61 MODE_EXT_HSGMII,
62 MODE_EXT_1000X_100FX,
63 MODE_EXT_1000X,
64 MODE_EXT_100FX,
65 MODE_EXT_RGMII_2,
66 MODE_EXT_MII_MAC_2,
67 MODE_EXT_MII_PHY_2,
68 MODE_EXT_TMII_MAC_2,
69 MODE_EXT_TMII_PHY_2,
70 MODE_EXT_RMII_MAC_2,
71 MODE_EXT_RMII_PHY_2,
72 MODE_EXT_END
73 } rtk_mode_ext_t;
74
75 typedef enum rtk_port_duplex_e
76 {
77 PORT_HALF_DUPLEX = 0,
78 PORT_FULL_DUPLEX,
79 PORT_DUPLEX_END
80 } rtk_port_duplex_t;
81
82 typedef enum rtk_port_linkStatus_e
83 {
84 PORT_LINKDOWN = 0,
85 PORT_LINKUP,
86 PORT_LINKSTATUS_END
87 } rtk_port_linkStatus_t;
88
89 typedef struct rtk_port_mac_ability_s
90 {
91 rtk_uint32 forcemode;
92 rtk_uint32 speed;
93 rtk_uint32 duplex;
94 rtk_uint32 link;
95 rtk_uint32 nway;
96 rtk_uint32 txpause;
97 rtk_uint32 rxpause;
98 }rtk_port_mac_ability_t;
99
100 typedef struct rtk_port_phy_ability_s
101 {
102 rtk_uint32 AutoNegotiation; /*PHY register 0.12 setting for auto-negotiation process*/
103 rtk_uint32 Half_10; /*PHY register 4.5 setting for 10BASE-TX half duplex capable*/
104 rtk_uint32 Full_10; /*PHY register 4.6 setting for 10BASE-TX full duplex capable*/
105 rtk_uint32 Half_100; /*PHY register 4.7 setting for 100BASE-TX half duplex capable*/
106 rtk_uint32 Full_100; /*PHY register 4.8 setting for 100BASE-TX full duplex capable*/
107 rtk_uint32 Full_1000; /*PHY register 9.9 setting for 1000BASE-T full duplex capable*/
108 rtk_uint32 FC; /*PHY register 4.10 setting for flow control capability*/
109 rtk_uint32 AsyFC; /*PHY register 4.11 setting for asymmetric flow control capability*/
110 } rtk_port_phy_ability_t;
111
112 typedef rtk_uint32 rtk_port_phy_data_t; /* phy page */
113
114 typedef enum rtk_port_phy_mdix_mode_e
115 {
116 PHY_AUTO_CROSSOVER_MODE= 0,
117 PHY_FORCE_MDI_MODE,
118 PHY_FORCE_MDIX_MODE,
119 PHY_FORCE_MODE_END
120 } rtk_port_phy_mdix_mode_t;
121
122 typedef enum rtk_port_phy_mdix_status_e
123 {
124 PHY_STATUS_AUTO_MDI_MODE= 0,
125 PHY_STATUS_AUTO_MDIX_MODE,
126 PHY_STATUS_FORCE_MDI_MODE,
127 PHY_STATUS_FORCE_MDIX_MODE,
128 PHY_STATUS_FORCE_MODE_END
129 } rtk_port_phy_mdix_status_t;
130
131 typedef rtk_uint32 rtk_port_phy_page_t; /* phy page */
132
133 typedef enum rtk_port_phy_reg_e
134 {
135 PHY_REG_CONTROL = 0,
136 PHY_REG_STATUS,
137 PHY_REG_IDENTIFIER_1,
138 PHY_REG_IDENTIFIER_2,
139 PHY_REG_AN_ADVERTISEMENT,
140 PHY_REG_AN_LINKPARTNER,
141 PHY_REG_1000_BASET_CONTROL = 9,
142 PHY_REG_1000_BASET_STATUS,
143 PHY_REG_END = 32
144 } rtk_port_phy_reg_t;
145
146 typedef enum rtk_port_phy_test_mode_e
147 {
148 PHY_TEST_MODE_NORMAL= 0,
149 PHY_TEST_MODE_1,
150 PHY_TEST_MODE_2,
151 PHY_TEST_MODE_3,
152 PHY_TEST_MODE_4,
153 PHY_TEST_MODE_END
154 } rtk_port_phy_test_mode_t;
155
156 typedef enum rtk_port_speed_e
157 {
158 PORT_SPEED_10M = 0,
159 PORT_SPEED_100M,
160 PORT_SPEED_1000M,
161 PORT_SPEED_500M,
162 PORT_SPEED_2500M,
163 PORT_SPEED_END
164 } rtk_port_speed_t;
165
166 typedef enum rtk_port_media_e
167 {
168 PORT_MEDIA_COPPER = 0,
169 PORT_MEDIA_FIBER,
170 PORT_MEDIA_END
171 }rtk_port_media_t;
172
173 typedef struct rtk_rtctResult_s
174 {
175 rtk_port_speed_t linkType;
176 union
177 {
178 struct fe_result_s
179 {
180 rtk_uint32 isRxShort;
181 rtk_uint32 isTxShort;
182 rtk_uint32 isRxOpen;
183 rtk_uint32 isTxOpen;
184 rtk_uint32 isRxMismatch;
185 rtk_uint32 isTxMismatch;
186 rtk_uint32 isRxLinedriver;
187 rtk_uint32 isTxLinedriver;
188 rtk_uint32 rxLen;
189 rtk_uint32 txLen;
190 } fe_result;
191
192 struct ge_result_s
193 {
194 rtk_uint32 channelAShort;
195 rtk_uint32 channelBShort;
196 rtk_uint32 channelCShort;
197 rtk_uint32 channelDShort;
198
199 rtk_uint32 channelAOpen;
200 rtk_uint32 channelBOpen;
201 rtk_uint32 channelCOpen;
202 rtk_uint32 channelDOpen;
203
204 rtk_uint32 channelAMismatch;
205 rtk_uint32 channelBMismatch;
206 rtk_uint32 channelCMismatch;
207 rtk_uint32 channelDMismatch;
208
209 rtk_uint32 channelALinedriver;
210 rtk_uint32 channelBLinedriver;
211 rtk_uint32 channelCLinedriver;
212 rtk_uint32 channelDLinedriver;
213
214 rtk_uint32 channelALen;
215 rtk_uint32 channelBLen;
216 rtk_uint32 channelCLen;
217 rtk_uint32 channelDLen;
218 } ge_result;
219 }result;
220 } rtk_rtctResult_t;
221
222 /* Function Name:
223 * rtk_port_phyAutoNegoAbility_set
224 * Description:
225 * Set ethernet PHY auto-negotiation desired ability.
226 * Input:
227 * port - port id.
228 * pAbility - Ability structure
229 * Output:
230 * None
231 * Return:
232 * RT_ERR_OK - OK
233 * RT_ERR_FAILED - Failed
234 * RT_ERR_SMI - SMI access error
235 * RT_ERR_PORT_ID - Invalid port number.
236 * RT_ERR_PHY_REG_ID - Invalid PHY address
237 * RT_ERR_INPUT - Invalid input parameters.
238 * RT_ERR_BUSYWAIT_TIMEOUT - PHY access busy
239 * Note:
240 * If Full_1000 bit is set to 1, the AutoNegotiation will be automatic set to 1. While both AutoNegotiation and Full_1000 are set to 0, the PHY speed and duplex selection will
241 * be set as following 100F > 100H > 10F > 10H priority sequence.
242 */
243 extern rtk_api_ret_t rtk_port_phyAutoNegoAbility_set(rtk_port_t port, rtk_port_phy_ability_t *pAbility);
244
245 /* Function Name:
246 * rtk_port_phyAutoNegoAbility_get
247 * Description:
248 * Get PHY ability through PHY registers.
249 * Input:
250 * port - Port id.
251 * Output:
252 * pAbility - Ability structure
253 * Return:
254 * RT_ERR_OK - OK
255 * RT_ERR_FAILED - Failed
256 * RT_ERR_SMI - SMI access error
257 * RT_ERR_PORT_ID - Invalid port number.
258 * RT_ERR_PHY_REG_ID - Invalid PHY address
259 * RT_ERR_INPUT - Invalid input parameters.
260 * RT_ERR_BUSYWAIT_TIMEOUT - PHY access busy
261 * Note:
262 * Get the capablity of specified PHY.
263 */
264 extern rtk_api_ret_t rtk_port_phyAutoNegoAbility_get(rtk_port_t port, rtk_port_phy_ability_t *pAbility);
265
266 /* Function Name:
267 * rtk_port_phyForceModeAbility_set
268 * Description:
269 * Set the port speed/duplex mode/pause/asy_pause in the PHY force mode.
270 * Input:
271 * port - port id.
272 * pAbility - Ability structure
273 * Output:
274 * None
275 * Return:
276 * RT_ERR_OK - OK
277 * RT_ERR_FAILED - Failed
278 * RT_ERR_SMI - SMI access error
279 * RT_ERR_PORT_ID - Invalid port number.
280 * RT_ERR_PHY_REG_ID - Invalid PHY address
281 * RT_ERR_INPUT - Invalid input parameters.
282 * RT_ERR_BUSYWAIT_TIMEOUT - PHY access busy
283 * Note:
284 * While both AutoNegotiation and Full_1000 are set to 0, the PHY speed and duplex selection will
285 * be set as following 100F > 100H > 10F > 10H priority sequence.
286 */
287 extern rtk_api_ret_t rtk_port_phyForceModeAbility_set(rtk_port_t port, rtk_port_phy_ability_t *pAbility);
288
289 /* Function Name:
290 * rtk_port_phyForceModeAbility_get
291 * Description:
292 * Get PHY ability through PHY registers.
293 * Input:
294 * port - Port id.
295 * Output:
296 * pAbility - Ability structure
297 * Return:
298 * RT_ERR_OK - OK
299 * RT_ERR_FAILED - Failed
300 * RT_ERR_SMI - SMI access error
301 * RT_ERR_PORT_ID - Invalid port number.
302 * RT_ERR_PHY_REG_ID - Invalid PHY address
303 * RT_ERR_INPUT - Invalid input parameters.
304 * RT_ERR_BUSYWAIT_TIMEOUT - PHY access busy
305 * Note:
306 * Get the capablity of specified PHY.
307 */
308 extern rtk_api_ret_t rtk_port_phyForceModeAbility_get(rtk_port_t port, rtk_port_phy_ability_t *pAbility);
309
310 /* Function Name:
311 * rtk_port_phyStatus_get
312 * Description:
313 * Get ethernet PHY linking status
314 * Input:
315 * port - Port id.
316 * Output:
317 * linkStatus - PHY link status
318 * speed - PHY link speed
319 * duplex - PHY duplex mode
320 * Return:
321 * RT_ERR_OK - OK
322 * RT_ERR_FAILED - Failed
323 * RT_ERR_SMI - SMI access error
324 * RT_ERR_PORT_ID - Invalid port number.
325 * RT_ERR_PHY_REG_ID - Invalid PHY address
326 * RT_ERR_INPUT - Invalid input parameters.
327 * RT_ERR_BUSYWAIT_TIMEOUT - PHY access busy
328 * Note:
329 * API will return auto negotiation status of phy.
330 */
331 extern rtk_api_ret_t rtk_port_phyStatus_get(rtk_port_t port, rtk_port_linkStatus_t *pLinkStatus, rtk_port_speed_t *pSpeed, rtk_port_duplex_t *pDuplex);
332
333 /* Function Name:
334 * rtk_port_macForceLink_set
335 * Description:
336 * Set port force linking configuration.
337 * Input:
338 * port - port id.
339 * pPortability - port ability configuration
340 * Output:
341 * None
342 * Return:
343 * RT_ERR_OK - OK
344 * RT_ERR_FAILED - Failed
345 * RT_ERR_SMI - SMI access error
346 * RT_ERR_PORT_ID - Invalid port number.
347 * Note:
348 * This API can set Port/MAC force mode properties.
349 */
350 extern rtk_api_ret_t rtk_port_macForceLink_set(rtk_port_t port, rtk_port_mac_ability_t *pPortability);
351
352 /* Function Name:
353 * rtk_port_macForceLink_get
354 * Description:
355 * Get port force linking configuration.
356 * Input:
357 * port - Port id.
358 * Output:
359 * pPortability - port ability configuration
360 * Return:
361 * RT_ERR_OK - OK
362 * RT_ERR_FAILED - Failed
363 * RT_ERR_SMI - SMI access error
364 * RT_ERR_PORT_ID - Invalid port number.
365 * RT_ERR_INPUT - Invalid input parameters.
366 * Note:
367 * This API can get Port/MAC force mode properties.
368 */
369 extern rtk_api_ret_t rtk_port_macForceLink_get(rtk_port_t port, rtk_port_mac_ability_t *pPortability);
370
371 /* Function Name:
372 * rtk_port_macForceLinkExt_set
373 * Description:
374 * Set external interface force linking configuration.
375 * Input:
376 * port - external port ID
377 * mode - external interface mode
378 * pPortability - port ability configuration
379 * Output:
380 * None
381 * Return:
382 * RT_ERR_OK - OK
383 * RT_ERR_FAILED - Failed
384 * RT_ERR_SMI - SMI access error
385 * RT_ERR_INPUT - Invalid input parameters.
386 * Note:
387 * This API can set external interface force mode properties.
388 * The external interface can be set to:
389 * - MODE_EXT_DISABLE,
390 * - MODE_EXT_RGMII,
391 * - MODE_EXT_MII_MAC,
392 * - MODE_EXT_MII_PHY,
393 * - MODE_EXT_TMII_MAC,
394 * - MODE_EXT_TMII_PHY,
395 * - MODE_EXT_GMII,
396 * - MODE_EXT_RMII_MAC,
397 * - MODE_EXT_RMII_PHY,
398 * - MODE_EXT_SGMII,
399 * - MODE_EXT_HSGMII,
400 * - MODE_EXT_1000X_100FX,
401 * - MODE_EXT_1000X,
402 * - MODE_EXT_100FX,
403 */
404 extern rtk_api_ret_t rtk_port_macForceLinkExt_set(rtk_port_t port, rtk_mode_ext_t mode, rtk_port_mac_ability_t *pPortability);
405
406 /* Function Name:
407 * rtk_port_macForceLinkExt_get
408 * Description:
409 * Set external interface force linking configuration.
410 * Input:
411 * port - external port ID
412 * Output:
413 * pMode - external interface mode
414 * pPortability - port ability configuration
415 * Return:
416 * RT_ERR_OK - OK
417 * RT_ERR_FAILED - Failed
418 * RT_ERR_SMI - SMI access error
419 * RT_ERR_INPUT - Invalid input parameters.
420 * Note:
421 * This API can get external interface force mode properties.
422 */
423 extern rtk_api_ret_t rtk_port_macForceLinkExt_get(rtk_port_t port, rtk_mode_ext_t *pMode, rtk_port_mac_ability_t *pPortability);
424
425 /* Function Name:
426 * rtk_port_macStatus_get
427 * Description:
428 * Get port link status.
429 * Input:
430 * port - Port id.
431 * Output:
432 * pPortstatus - port ability configuration
433 * Return:
434 * RT_ERR_OK - OK
435 * RT_ERR_FAILED - Failed
436 * RT_ERR_SMI - SMI access error
437 * RT_ERR_PORT_ID - Invalid port number.
438 * Note:
439 * This API can get Port/PHY properties.
440 */
441 extern rtk_api_ret_t rtk_port_macStatus_get(rtk_port_t port, rtk_port_mac_ability_t *pPortstatus);
442
443 /* Function Name:
444 * rtk_port_macLocalLoopbackEnable_set
445 * Description:
446 * Set Port Local Loopback. (Redirect TX to RX.)
447 * Input:
448 * port - Port id.
449 * enable - Loopback state, 0:disable, 1:enable
450 * Output:
451 * None.
452 * Return:
453 * RT_ERR_OK - OK
454 * RT_ERR_FAILED - Failed
455 * RT_ERR_SMI - SMI access error
456 * RT_ERR_PORT_ID - Invalid port number.
457 * Note:
458 * This API can enable/disable Local loopback in MAC.
459 * For UTP port, This API will also enable the digital
460 * loopback bit in PHY register for sync of speed between
461 * PHY and MAC. For EXT port, users need to force the
462 * link state by themself.
463 */
464 extern rtk_api_ret_t rtk_port_macLocalLoopbackEnable_set(rtk_port_t port, rtk_enable_t enable);
465
466 /* Function Name:
467 * rtk_port_macLocalLoopbackEnable_get
468 * Description:
469 * Get Port Local Loopback. (Redirect TX to RX.)
470 * Input:
471 * port - Port id.
472 * Output:
473 * pEnable - Loopback state, 0:disable, 1:enable
474 * Return:
475 * RT_ERR_OK - OK
476 * RT_ERR_FAILED - Failed
477 * RT_ERR_SMI - SMI access error
478 * RT_ERR_PORT_ID - Invalid port number.
479 * Note:
480 * None.
481 */
482 extern rtk_api_ret_t rtk_port_macLocalLoopbackEnable_get(rtk_port_t port, rtk_enable_t *pEnable);
483
484 /* Function Name:
485 * rtk_port_phyReg_set
486 * Description:
487 * Set PHY register data of the specific port.
488 * Input:
489 * port - port id.
490 * reg - Register id
491 * regData - Register data
492 * Output:
493 * None
494 * Return:
495 * RT_ERR_OK - OK
496 * RT_ERR_FAILED - Failed
497 * RT_ERR_SMI - SMI access error
498 * RT_ERR_PORT_ID - Invalid port number.
499 * RT_ERR_PHY_REG_ID - Invalid PHY address
500 * RT_ERR_BUSYWAIT_TIMEOUT - PHY access busy
501 * Note:
502 * This API can set PHY register data of the specific port.
503 */
504 extern rtk_api_ret_t rtk_port_phyReg_set(rtk_port_t port, rtk_port_phy_reg_t reg, rtk_port_phy_data_t value);
505
506 /* Function Name:
507 * rtk_port_phyReg_get
508 * Description:
509 * Get PHY register data of the specific port.
510 * Input:
511 * port - Port id.
512 * reg - Register id
513 * Output:
514 * pData - Register data
515 * Return:
516 * RT_ERR_OK - OK
517 * RT_ERR_FAILED - Failed
518 * RT_ERR_SMI - SMI access error
519 * RT_ERR_PORT_ID - Invalid port number.
520 * RT_ERR_PHY_REG_ID - Invalid PHY address
521 * RT_ERR_BUSYWAIT_TIMEOUT - PHY access busy
522 * Note:
523 * This API can get PHY register data of the specific port.
524 */
525 extern rtk_api_ret_t rtk_port_phyReg_get(rtk_port_t port, rtk_port_phy_reg_t reg, rtk_port_phy_data_t *pData);
526
527 /* Function Name:
528 * rtk_port_backpressureEnable_set
529 * Description:
530 * Set the half duplex backpressure enable status of the specific port.
531 * Input:
532 * port - port id.
533 * enable - Back pressure status.
534 * Output:
535 * None
536 * Return:
537 * RT_ERR_OK - OK
538 * RT_ERR_FAILED - Failed
539 * RT_ERR_SMI - SMI access error
540 * RT_ERR_PORT_ID - Invalid port number.
541 * RT_ERR_ENABLE - Invalid enable input.
542 * Note:
543 * This API can set the half duplex backpressure enable status of the specific port.
544 * The half duplex backpressure enable status of the port is as following:
545 * - DISABLE
546 * - ENABLE
547 */
548 extern rtk_api_ret_t rtk_port_backpressureEnable_set(rtk_port_t port, rtk_enable_t enable);
549
550 /* Function Name:
551 * rtk_port_backpressureEnable_get
552 * Description:
553 * Get the half duplex backpressure enable status of the specific port.
554 * Input:
555 * port - Port id.
556 * Output:
557 * pEnable - Back pressure status.
558 * Return:
559 * RT_ERR_OK - OK
560 * RT_ERR_FAILED - Failed
561 * RT_ERR_SMI - SMI access error
562 * RT_ERR_PORT_ID - Invalid port number.
563 * Note:
564 * This API can get the half duplex backpressure enable status of the specific port.
565 * The half duplex backpressure enable status of the port is as following:
566 * - DISABLE
567 * - ENABLE
568 */
569 extern rtk_api_ret_t rtk_port_backpressureEnable_get(rtk_port_t port, rtk_enable_t *pEnable);
570
571 /* Function Name:
572 * rtk_port_adminEnable_set
573 * Description:
574 * Set port admin configuration of the specific port.
575 * Input:
576 * port - port id.
577 * enable - Back pressure status.
578 * Output:
579 * None
580 * Return:
581 * RT_ERR_OK - OK
582 * RT_ERR_FAILED - Failed
583 * RT_ERR_SMI - SMI access error
584 * RT_ERR_PORT_ID - Invalid port number.
585 * RT_ERR_ENABLE - Invalid enable input.
586 * Note:
587 * This API can set port admin configuration of the specific port.
588 * The port admin configuration of the port is as following:
589 * - DISABLE
590 * - ENABLE
591 */
592 extern rtk_api_ret_t rtk_port_adminEnable_set(rtk_port_t port, rtk_enable_t enable);
593
594 /* Function Name:
595 * rtk_port_adminEnable_get
596 * Description:
597 * Get port admin configurationof the specific port.
598 * Input:
599 * port - Port id.
600 * Output:
601 * pEnable - Back pressure status.
602 * Return:
603 * RT_ERR_OK - OK
604 * RT_ERR_FAILED - Failed
605 * RT_ERR_SMI - SMI access error
606 * RT_ERR_PORT_ID - Invalid port number.
607 * Note:
608 * This API can get port admin configuration of the specific port.
609 * The port admin configuration of the port is as following:
610 * - DISABLE
611 * - ENABLE
612 */
613 extern rtk_api_ret_t rtk_port_adminEnable_get(rtk_port_t port, rtk_enable_t *pEnable);
614
615 /* Function Name:
616 * rtk_port_isolation_set
617 * Description:
618 * Set permitted port isolation portmask
619 * Input:
620 * port - port id.
621 * pPortmask - Permit port mask
622 * Output:
623 * None
624 * Return:
625 * RT_ERR_OK - OK
626 * RT_ERR_FAILED - Failed
627 * RT_ERR_SMI - SMI access error
628 * RT_ERR_PORT_ID - Invalid port number.
629 * RT_ERR_PORT_MASK - Invalid portmask.
630 * Note:
631 * This API set the port mask that a port can trasmit packet to of each port
632 * A port can only transmit packet to ports included in permitted portmask
633 */
634 extern rtk_api_ret_t rtk_port_isolation_set(rtk_port_t port, rtk_portmask_t *pPortmask);
635
636 /* Function Name:
637 * rtk_port_isolation_get
638 * Description:
639 * Get permitted port isolation portmask
640 * Input:
641 * port - Port id.
642 * Output:
643 * pPortmask - Permit port mask
644 * Return:
645 * RT_ERR_OK - OK
646 * RT_ERR_FAILED - Failed
647 * RT_ERR_SMI - SMI access error
648 * RT_ERR_PORT_ID - Invalid port number.
649 * Note:
650 * This API get the port mask that a port can trasmit packet to of each port
651 * A port can only transmit packet to ports included in permitted portmask
652 */
653 extern rtk_api_ret_t rtk_port_isolation_get(rtk_port_t port, rtk_portmask_t *pPortmask);
654
655 /* Function Name:
656 * rtk_port_rgmiiDelayExt_set
657 * Description:
658 * Set RGMII interface delay value for TX and RX.
659 * Input:
660 * txDelay - TX delay value, 1 for delay 2ns and 0 for no-delay
661 * rxDelay - RX delay value, 0~7 for delay setup.
662 * Output:
663 * None
664 * Return:
665 * RT_ERR_OK - OK
666 * RT_ERR_FAILED - Failed
667 * RT_ERR_SMI - SMI access error
668 * RT_ERR_INPUT - Invalid input parameters.
669 * Note:
670 * This API can set external interface 2 RGMII delay.
671 * In TX delay, there are 2 selection: no-delay and 2ns delay.
672 * In RX dekay, there are 8 steps for delay tunning. 0 for no-delay, and 7 for maximum delay.
673 */
674 extern rtk_api_ret_t rtk_port_rgmiiDelayExt_set(rtk_port_t port, rtk_data_t txDelay, rtk_data_t rxDelay);
675
676 /* Function Name:
677 * rtk_port_rgmiiDelayExt_get
678 * Description:
679 * Get RGMII interface delay value for TX and RX.
680 * Input:
681 * None
682 * Output:
683 * pTxDelay - TX delay value
684 * pRxDelay - RX delay value
685 * Return:
686 * RT_ERR_OK - OK
687 * RT_ERR_FAILED - Failed
688 * RT_ERR_SMI - SMI access error
689 * RT_ERR_INPUT - Invalid input parameters.
690 * Note:
691 * This API can set external interface 2 RGMII delay.
692 * In TX delay, there are 2 selection: no-delay and 2ns delay.
693 * In RX dekay, there are 8 steps for delay tunning. 0 for n0-delay, and 7 for maximum delay.
694 */
695 extern rtk_api_ret_t rtk_port_rgmiiDelayExt_get(rtk_port_t port, rtk_data_t *pTxDelay, rtk_data_t *pRxDelay);
696
697 /* Function Name:
698 * rtk_port_phyEnableAll_set
699 * Description:
700 * Set all PHY enable status.
701 * Input:
702 * enable - PHY Enable State.
703 * Output:
704 * None
705 * Return:
706 * RT_ERR_OK - OK
707 * RT_ERR_FAILED - Failed
708 * RT_ERR_SMI - SMI access error
709 * RT_ERR_ENABLE - Invalid enable input.
710 * Note:
711 * This API can set all PHY status.
712 * The configuration of all PHY is as following:
713 * - DISABLE
714 * - ENABLE
715 */
716 extern rtk_api_ret_t rtk_port_phyEnableAll_set(rtk_enable_t enable);
717
718 /* Function Name:
719 * rtk_port_phyEnableAll_get
720 * Description:
721 * Get all PHY enable status.
722 * Input:
723 * None
724 * Output:
725 * pEnable - PHY Enable State.
726 * Return:
727 * RT_ERR_OK - OK
728 * RT_ERR_FAILED - Failed
729 * RT_ERR_SMI - SMI access error
730 * Note:
731 * This API can set all PHY status.
732 * The configuration of all PHY is as following:
733 * - DISABLE
734 * - ENABLE
735 */
736 extern rtk_api_ret_t rtk_port_phyEnableAll_get(rtk_enable_t *pEnable);
737
738 /* Function Name:
739 * rtk_port_efid_set
740 * Description:
741 * Set port-based enhanced filtering database
742 * Input:
743 * port - Port id.
744 * efid - Specified enhanced filtering database.
745 * Output:
746 * None
747 * Return:
748 * RT_ERR_OK - OK
749 * RT_ERR_FAILED - Failed
750 * RT_ERR_SMI - SMI access error
751 * RT_ERR_L2_FID - Invalid fid.
752 * RT_ERR_INPUT - Invalid input parameter.
753 * RT_ERR_PORT_ID - Invalid port ID.
754 * Note:
755 * The API can set port-based enhanced filtering database.
756 */
757 extern rtk_api_ret_t rtk_port_efid_set(rtk_port_t port, rtk_data_t efid);
758
759 /* Function Name:
760 * rtk_port_efid_get
761 * Description:
762 * Get port-based enhanced filtering database
763 * Input:
764 * port - Port id.
765 * Output:
766 * pEfid - Specified enhanced filtering database.
767 * Return:
768 * RT_ERR_OK - OK
769 * RT_ERR_FAILED - Failed
770 * RT_ERR_SMI - SMI access error
771 * RT_ERR_INPUT - Invalid input parameters.
772 * RT_ERR_PORT_ID - Invalid port ID.
773 * Note:
774 * The API can get port-based enhanced filtering database status.
775 */
776 extern rtk_api_ret_t rtk_port_efid_get(rtk_port_t port, rtk_data_t *pEfid);
777
778 /* Function Name:
779 * rtk_port_phyComboPortMedia_set
780 * Description:
781 * Set Combo port media type
782 * Input:
783 * port - Port id. (Should be Port 4)
784 * media - Media (COPPER or FIBER)
785 * Output:
786 * None.
787 * Return:
788 * RT_ERR_OK - OK
789 * RT_ERR_FAILED - Failed
790 * RT_ERR_SMI - SMI access error
791 * RT_ERR_INPUT - Invalid input parameters.
792 * RT_ERR_PORT_ID - Invalid port ID.
793 * Note:
794 * The API can Set Combo port media type.
795 */
796 extern rtk_api_ret_t rtk_port_phyComboPortMedia_set(rtk_port_t port, rtk_port_media_t media);
797
798 /* Function Name:
799 * rtk_port_phyComboPortMedia_get
800 * Description:
801 * Get Combo port media type
802 * Input:
803 * port - Port id. (Should be Port 4)
804 * Output:
805 * pMedia - Media (COPPER or FIBER)
806 * Return:
807 * RT_ERR_OK - OK
808 * RT_ERR_FAILED - Failed
809 * RT_ERR_SMI - SMI access error
810 * RT_ERR_INPUT - Invalid input parameters.
811 * RT_ERR_PORT_ID - Invalid port ID.
812 * Note:
813 * The API can Set Combo port media type.
814 */
815 extern rtk_api_ret_t rtk_port_phyComboPortMedia_get(rtk_port_t port, rtk_port_media_t *pMedia);
816
817 /* Function Name:
818 * rtk_port_rtctEnable_set
819 * Description:
820 * Enable RTCT test
821 * Input:
822 * pPortmask - Port mask of RTCT enabled port
823 * Output:
824 * None
825 * Return:
826 * RT_ERR_OK - OK
827 * RT_ERR_FAILED - Failed
828 * RT_ERR_SMI - SMI access error
829 * RT_ERR_PORT_MASK - Invalid port mask.
830 * Note:
831 * The API can enable RTCT Test
832 */
833 extern rtk_api_ret_t rtk_port_rtctEnable_set(rtk_portmask_t *pPortmask);
834
835 /* Function Name:
836 * rtk_port_rtctDisable_set
837 * Description:
838 * Disable RTCT test
839 * Input:
840 * pPortmask - Port mask of RTCT disabled port
841 * Output:
842 * None
843 * Return:
844 * RT_ERR_OK - OK
845 * RT_ERR_FAILED - Failed
846 * RT_ERR_SMI - SMI access error
847 * RT_ERR_PORT_MASK - Invalid port mask.
848 * Note:
849 * The API can disable RTCT Test
850 */
851 rtk_api_ret_t rtk_port_rtctDisable_set(rtk_portmask_t *pPortmask);
852
853
854 /* Function Name:
855 * rtk_port_rtctResult_get
856 * Description:
857 * Get the result of RTCT test
858 * Input:
859 * port - Port ID
860 * Output:
861 * pRtctResult - The result of RTCT result
862 * Return:
863 * RT_ERR_OK - OK
864 * RT_ERR_FAILED - Failed
865 * RT_ERR_SMI - SMI access error
866 * RT_ERR_PORT_ID - Invalid port ID.
867 * RT_ERR_PHY_RTCT_NOT_FINISH - Testing does not finish.
868 * Note:
869 * The API can get RTCT test result.
870 * RTCT test may takes 4.8 seconds to finish its test at most.
871 * Thus, if this API return RT_ERR_PHY_RTCT_NOT_FINISH or
872 * other error code, the result can not be referenced and
873 * user should call this API again until this API returns
874 * a RT_ERR_OK.
875 * The result is stored at pRtctResult->ge_result
876 * pRtctResult->linkType is unused.
877 * The unit of channel length is 2.5cm. Ex. 300 means 300 * 2.5 = 750cm = 7.5M
878 */
879 extern rtk_api_ret_t rtk_port_rtctResult_get(rtk_port_t port, rtk_rtctResult_t *pRtctResult);
880
881 /* Function Name:
882 * rtk_port_sds_reset
883 * Description:
884 * Reset Serdes
885 * Input:
886 * port - Port ID
887 * Output:
888 * None.
889 * Return:
890 * RT_ERR_OK - OK
891 * RT_ERR_FAILED - Failed
892 * RT_ERR_SMI - SMI access error
893 * RT_ERR_PORT_ID - Invalid port ID.
894 * Note:
895 * The API can reset Serdes
896 */
897 extern rtk_api_ret_t rtk_port_sds_reset(rtk_port_t port);
898
899 /* Function Name:
900 * rtk_port_sgmiiLinkStatus_get
901 * Description:
902 * Get SGMII status
903 * Input:
904 * port - Port ID
905 * Output:
906 * pSignalDetect - Signal detect
907 * pSync - Sync
908 * pLink - Link
909 * Return:
910 * RT_ERR_OK - OK
911 * RT_ERR_FAILED - Failed
912 * RT_ERR_SMI - SMI access error
913 * RT_ERR_PORT_ID - Invalid port ID.
914 * Note:
915 * The API can reset Serdes
916 */
917 extern rtk_api_ret_t rtk_port_sgmiiLinkStatus_get(rtk_port_t port, rtk_data_t *pSignalDetect, rtk_data_t *pSync, rtk_port_linkStatus_t *pLink);
918
919 /* Function Name:
920 * rtk_port_sgmiiNway_set
921 * Description:
922 * Configure SGMII/HSGMII port Nway state
923 * Input:
924 * port - Port ID
925 * state - Nway state
926 * Output:
927 * None.
928 * Return:
929 * RT_ERR_OK - OK
930 * RT_ERR_FAILED - Failed
931 * RT_ERR_SMI - SMI access error
932 * RT_ERR_PORT_ID - Invalid port ID.
933 * Note:
934 * The API configure SGMII/HSGMII port Nway state
935 */
936 extern rtk_api_ret_t rtk_port_sgmiiNway_set(rtk_port_t port, rtk_enable_t state);
937
938 /* Function Name:
939 * rtk_port_sgmiiNway_get
940 * Description:
941 * Get SGMII/HSGMII port Nway state
942 * Input:
943 * port - Port ID
944 * Output:
945 * pState - Nway state
946 * Return:
947 * RT_ERR_OK - OK
948 * RT_ERR_FAILED - Failed
949 * RT_ERR_SMI - SMI access error
950 * RT_ERR_PORT_ID - Invalid port ID.
951 * Note:
952 * The API can get SGMII/HSGMII port Nway state
953 */
954 extern rtk_api_ret_t rtk_port_sgmiiNway_get(rtk_port_t port, rtk_enable_t *pState);
955
956 #endif /* __RTK_API_PORT_H__ */
957
958
959