1/* 2 * Copyright (C) 2013 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 * Purpose : RTL8367/RTL8367C switch high-level API 13 * 14 * Feature : The file includes Interrupt module high-layer API defination 15 * 16 */ 17 18#ifndef __RTK_API_INTERRUPT_H__ 19#define __RTK_API_INTERRUPT_H__ 20 21 22/* 23 * Data Type Declaration 24 */ 25#define RTK_MAX_NUM_OF_INTERRUPT_TYPE 1 26 27 28typedef struct rtk_int_status_s 29{ 30 rtk_uint16 value[RTK_MAX_NUM_OF_INTERRUPT_TYPE]; 31} rtk_int_status_t; 32 33typedef struct rtk_int_info_s 34{ 35 rtk_portmask_t portMask; 36 rtk_uint32 meterMask; 37 rtk_uint32 systemLearnOver; 38}rtk_int_info_t; 39 40typedef enum rtk_int_type_e 41{ 42 INT_TYPE_LINK_STATUS = 0, 43 INT_TYPE_METER_EXCEED, 44 INT_TYPE_LEARN_LIMIT, 45 INT_TYPE_LINK_SPEED, 46 INT_TYPE_CONGEST, 47 INT_TYPE_GREEN_FEATURE, 48 INT_TYPE_LOOP_DETECT, 49 INT_TYPE_8051, 50 INT_TYPE_CABLE_DIAG, 51 INT_TYPE_ACL, 52 INT_TYPE_RESERVED, /* Unused */ 53 INT_TYPE_SLIENT, 54 INT_TYPE_END 55}rtk_int_type_t; 56 57typedef enum rtk_int_advType_e 58{ 59 ADV_L2_LEARN_PORT_MASK = 0, 60 ADV_SPEED_CHANGE_PORT_MASK, 61 ADV_SPECIAL_CONGESTION_PORT_MASK, 62 ADV_PORT_LINKDOWN_PORT_MASK, 63 ADV_PORT_LINKUP_PORT_MASK, 64 ADV_METER_EXCEED_MASK, 65 ADV_RLDP_LOOPED, 66 ADV_RLDP_RELEASED, 67 ADV_END, 68} rtk_int_advType_t; 69 70typedef enum rtk_int_polarity_e 71{ 72 INT_POLAR_HIGH = 0, 73 INT_POLAR_LOW, 74 INT_POLAR_END 75} rtk_int_polarity_t; 76 77/* Function Name: 78 * rtk_int_polarity_set 79 * Description: 80 * Set interrupt polarity configuration. 81 * Input: 82 * type - Interruptpolarity type. 83 * Output: 84 * None 85 * Return: 86 * RT_ERR_OK - OK 87 * RT_ERR_FAILED - Failed 88 * RT_ERR_SMI - SMI access error 89 * RT_ERR_INPUT - Invalid input parameters. 90 * Note: 91 * The API can set interrupt polarity configuration. 92 */ 93extern rtk_api_ret_t rtk_int_polarity_set(rtk_int_polarity_t type); 94 95/* Function Name: 96 * rtk_int_polarity_get 97 * Description: 98 * Get interrupt polarity configuration. 99 * Input: 100 * None 101 * Output: 102 * pType - Interruptpolarity type. 103 * Return: 104 * RT_ERR_OK - OK 105 * RT_ERR_FAILED - Failed 106 * RT_ERR_SMI - SMI access error 107 * Note: 108 * The API can get interrupt polarity configuration. 109 */ 110extern rtk_api_ret_t rtk_int_polarity_get(rtk_int_polarity_t *pType); 111 112/* Function Name: 113 * rtk_int_control_set 114 * Description: 115 * Set interrupt trigger status configuration. 116 * Input: 117 * type - Interrupt type. 118 * enable - Interrupt status. 119 * Output: 120 * None 121 * Return: 122 * RT_ERR_OK - OK 123 * RT_ERR_FAILED - Failed 124 * RT_ERR_SMI - SMI access error 125 * RT_ERR_INPUT - Invalid input parameters. 126 * RT_ERR_ENABLE - Invalid enable input. 127 * Note: 128 * The API can set interrupt status configuration. 129 * The interrupt trigger status is shown in the following: 130 * - INT_TYPE_LINK_STATUS 131 * - INT_TYPE_METER_EXCEED 132 * - INT_TYPE_LEARN_LIMIT 133 * - INT_TYPE_LINK_SPEED 134 * - INT_TYPE_CONGEST 135 * - INT_TYPE_GREEN_FEATURE 136 * - INT_TYPE_LOOP_DETECT 137 * - INT_TYPE_8051, 138 * - INT_TYPE_CABLE_DIAG, 139 * - INT_TYPE_ACL, 140 * - INT_TYPE_SLIENT 141 */ 142extern rtk_api_ret_t rtk_int_control_set(rtk_int_type_t type, rtk_enable_t enable); 143 144/* Function Name: 145 * rtk_int_control_get 146 * Description: 147 * Get interrupt trigger status configuration. 148 * Input: 149 * type - Interrupt type. 150 * Output: 151 * pEnable - Interrupt status. 152 * Return: 153 * RT_ERR_OK - OK 154 * RT_ERR_FAILED - Failed 155 * RT_ERR_SMI - SMI access error 156 * RT_ERR_INPUT - Invalid input parameters. 157 * Note: 158 * The API can get interrupt status configuration. 159 * The interrupt trigger status is shown in the following: 160 * - INT_TYPE_LINK_STATUS 161 * - INT_TYPE_METER_EXCEED 162 * - INT_TYPE_LEARN_LIMIT 163 * - INT_TYPE_LINK_SPEED 164 * - INT_TYPE_CONGEST 165 * - INT_TYPE_GREEN_FEATURE 166 * - INT_TYPE_LOOP_DETECT 167 * - INT_TYPE_8051, 168 * - INT_TYPE_CABLE_DIAG, 169 * - INT_TYPE_ACL, 170 * - INT_TYPE_SLIENT 171 */ 172extern rtk_api_ret_t rtk_int_control_get(rtk_int_type_t type, rtk_enable_t* pEnable); 173 174/* Function Name: 175 * rtk_int_status_set 176 * Description: 177 * Set interrupt trigger status to clean. 178 * Input: 179 * None 180 * Output: 181 * pStatusMask - Interrupt status bit mask. 182 * Return: 183 * RT_ERR_OK - OK 184 * RT_ERR_FAILED - Failed 185 * RT_ERR_SMI - SMI access error 186 * RT_ERR_INPUT - Invalid input parameters. 187 * Note: 188 * The API can clean interrupt trigger status when interrupt happened. 189 * The interrupt trigger status is shown in the following: 190 * - INT_TYPE_LINK_STATUS (value[0] (Bit0)) 191 * - INT_TYPE_METER_EXCEED (value[0] (Bit1)) 192 * - INT_TYPE_LEARN_LIMIT (value[0] (Bit2)) 193 * - INT_TYPE_LINK_SPEED (value[0] (Bit3)) 194 * - INT_TYPE_CONGEST (value[0] (Bit4)) 195 * - INT_TYPE_GREEN_FEATURE (value[0] (Bit5)) 196 * - INT_TYPE_LOOP_DETECT (value[0] (Bit6)) 197 * - INT_TYPE_8051 (value[0] (Bit7)) 198 * - INT_TYPE_CABLE_DIAG (value[0] (Bit8)) 199 * - INT_TYPE_ACL (value[0] (Bit9)) 200 * - INT_TYPE_SLIENT (value[0] (Bit11)) 201 * The status will be cleared after execute this API. 202 */ 203extern rtk_api_ret_t rtk_int_status_set(rtk_int_status_t *pStatusMask); 204 205/* Function Name: 206 * rtk_int_status_get 207 * Description: 208 * Get interrupt trigger status. 209 * Input: 210 * None 211 * Output: 212 * pStatusMask - Interrupt status bit mask. 213 * Return: 214 * RT_ERR_OK - OK 215 * RT_ERR_FAILED - Failed 216 * RT_ERR_SMI - SMI access error 217 * RT_ERR_INPUT - Invalid input parameters. 218 * Note: 219 * The API can get interrupt trigger status when interrupt happened. 220 * The interrupt trigger status is shown in the following: 221 * - INT_TYPE_LINK_STATUS (value[0] (Bit0)) 222 * - INT_TYPE_METER_EXCEED (value[0] (Bit1)) 223 * - INT_TYPE_LEARN_LIMIT (value[0] (Bit2)) 224 * - INT_TYPE_LINK_SPEED (value[0] (Bit3)) 225 * - INT_TYPE_CONGEST (value[0] (Bit4)) 226 * - INT_TYPE_GREEN_FEATURE (value[0] (Bit5)) 227 * - INT_TYPE_LOOP_DETECT (value[0] (Bit6)) 228 * - INT_TYPE_8051 (value[0] (Bit7)) 229 * - INT_TYPE_CABLE_DIAG (value[0] (Bit8)) 230 * - INT_TYPE_ACL (value[0] (Bit9)) 231 * - INT_TYPE_SLIENT (value[0] (Bit11)) 232 * 233 */ 234extern rtk_api_ret_t rtk_int_status_get(rtk_int_status_t* pStatusMask); 235 236/* Function Name: 237 * rtk_int_advanceInfo_get 238 * Description: 239 * Get interrupt advanced information. 240 * Input: 241 * adv_type - Advanced interrupt type. 242 * Output: 243 * info - Information per type. 244 * Return: 245 * RT_ERR_OK - OK 246 * RT_ERR_FAILED - Failed 247 * RT_ERR_SMI - SMI access error 248 * RT_ERR_INPUT - Invalid input parameters. 249 * Note: 250 * This API can get advanced information when interrupt happened. 251 * The status will be cleared after execute this API. 252 */ 253extern rtk_api_ret_t rtk_int_advanceInfo_get(rtk_int_advType_t adv_type, rtk_int_info_t* info); 254 255 256#endif /* __RTK_API_INTERRUPT_H__ */ 257