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 (¶g¤T, 08 ¤T¤ë 2017) $
13 * Purpose : Declaration of RLDP and RLPP API
15 * Feature : The file have include the following module and sub-modules
16 * 1) RLDP and RLPP configuration and status
21 #ifndef __RTK_RLDP_H__
22 #define __RTK_RLDP_H__
33 typedef enum rtk_rldp_trigger_e
35 RTK_RLDP_TRIGGER_SAMOVING
= 0,
36 RTK_RLDP_TRIGGER_PERIOD
,
40 typedef enum rtk_rldp_cmpType_e
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 */
47 typedef enum rtk_rldp_loopStatus_e
49 RTK_RLDP_LOOPSTS_NONE
= 0,
50 RTK_RLDP_LOOPSTS_LOOPING
,
52 } rtk_rldp_loopStatus_t
;
54 typedef enum rtk_rlpp_trapType_e
56 RTK_RLPP_TRAPTYPE_NONE
= 0,
57 RTK_RLPP_TRAPTYPE_CPU
,
59 } rtk_rlpp_trapType_t
;
61 typedef struct rtk_rldp_config_s
63 rtk_enable_t rldp_enable
;
64 rtk_rldp_trigger_t trigger_mode
;
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 */
73 typedef struct rtk_rldp_portConfig_s
75 rtk_enable_t tx_enable
;
76 } rtk_rldp_portConfig_t
;
78 typedef struct rtk_rldp_status_s
83 typedef struct rtk_rldp_portStatus_s
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
;
99 #define RTK_RLDP_INTERVAL_MAX 0xffff
100 #define RTK_RLDP_NUM_MAX 0xff
104 * Function Declaration
107 /* Module Name : RLDP */
111 * rtk_rldp_config_set
113 * Set RLDP module configuration
115 * pConfig - configuration structure of RLDP
122 * RT_ERR_NULL_POINTER
126 extern rtk_api_ret_t
rtk_rldp_config_set(rtk_rldp_config_t
*pConfig
);
130 * rtk_rldp_config_get
132 * Get RLDP module configuration
136 * pConfig - configuration structure of RLDP
141 * RT_ERR_NULL_POINTER
145 extern rtk_api_ret_t
rtk_rldp_config_get(rtk_rldp_config_t
*pConfig
);
149 * rtk_rldp_portConfig_set
151 * Set per port RLDP module configuration
153 * port - port number to be configured
154 * pPortConfig - per port configuration structure of RLDP
161 * RT_ERR_NULL_POINTER
165 extern rtk_api_ret_t
rtk_rldp_portConfig_set(rtk_port_t port
, rtk_rldp_portConfig_t
*pPortConfig
);
169 * rtk_rldp_portConfig_get
171 * Get per port RLDP module configuration
173 * port - port number to be get
175 * pPortConfig - per port configuration structure of RLDP
180 * RT_ERR_NULL_POINTER
184 extern rtk_api_ret_t
rtk_rldp_portConfig_get(rtk_port_t port
, rtk_rldp_portConfig_t
*pPortConfig
);
188 * rtk_rldp_status_get
190 * Get RLDP module status
194 * pStatus - status structure of RLDP
198 * RT_ERR_NULL_POINTER
202 extern rtk_api_ret_t
rtk_rldp_status_get(rtk_rldp_status_t
*pStatus
);
206 * rtk_rldp_portStatus_get
208 * Get RLDP module status
210 * port - port number to be get
212 * pPortStatus - per port status structure of RLDP
217 * RT_ERR_NULL_POINTER
221 extern rtk_api_ret_t
rtk_rldp_portStatus_get(rtk_port_t port
, rtk_rldp_portStatus_t
*pPortStatus
);
225 * rtk_rldp_portStatus_clear
227 * Clear RLDP module status
229 * port - port number to be clear
230 * pPortStatus - per port status structure of RLDP
237 * RT_ERR_NULL_POINTER
239 * Clear operation effect loop_enter and loop_leave only, other field in
240 * the structure are don't care
242 extern rtk_api_ret_t
rtk_rldp_portStatus_set(rtk_port_t port
, rtk_rldp_portStatus_t
*pPortStatus
);
246 * rtk_rldp_portLoopPair_get
248 * Get RLDP port loop pairs
250 * port - port number to be get
252 * pPortmask - per port related loop ports
257 * RT_ERR_NULL_POINTER
261 extern rtk_api_ret_t
rtk_rldp_portLoopPair_get(rtk_port_t port
, rtk_portmask_t
*pPortmask
);
263 #endif /* __RTK_RLDP_H__ */