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