1 /* 2 * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 * Description: Header files shared by hal_commom_ops.h and hal_common_ops_rom.h. 15 * Author: 16 */ 17 18 #ifndef __HAL_COMMOM_OPS_TYPE_ROM_H__ 19 #define __HAL_COMMOM_OPS_TYPE_ROM_H__ 20 #include "osal_types.h" 21 #include "wlan_types_base_rom.h" 22 23 #ifdef __cplusplus 24 #if __cplusplus 25 extern "C" { 26 #endif 27 #endif 28 29 /***************************************************************************** 30 枚举定义 31 *****************************************************************************/ 32 typedef enum { 33 HAL_TX_QUEUE_BE = 0, /* 尽力而为业务 */ 34 HAL_TX_QUEUE_BK = 1, /* 背景业务 */ 35 HAL_TX_QUEUE_VI = 2, /* 视频业务 */ 36 HAL_TX_QUEUE_VO = 3, /* 语音业务 */ 37 HAL_TX_QUEUE_HI = 4, /* 高优先级队列(管理帧/控制帧用此队列) */ 38 HAL_TX_QUEUE_MC = 5, /* 组播帧发送队列 */ 39 HAL_TX_QUEUE_BUTT 40 } hal_tx_queue_type_enum; 41 typedef osal_u8 hal_tx_queue_type_enum_uint8; 42 43 typedef enum { 44 HAL_BTCOEX_SW_POWSAVE_IDLE = 0, 45 HAL_BTCOEX_SW_POWSAVE_WORK = 1, 46 HAL_BTCOEX_SW_POWSAVE_TIMEOUT = 2, 47 HAL_BTCOEX_SW_POWSAVE_SCAN = 3, 48 HAL_BTCOEX_SW_POWSAVE_SCAN_BEGIN = 4, 49 HAL_BTCOEX_SW_POWSAVE_SCAN_WAIT = 5, 50 HAL_BTCOEX_SW_POWSAVE_SCAN_ABORT = 6, 51 HAL_BTCOEX_SW_POWSAVE_SCAN_END = 7, 52 HAL_BTCOEX_SW_POWSAVE_PSM_START = 8, 53 HAL_BTCOEX_SW_POWSAVE_PSM_END = 9, 54 HAL_BTCOEX_SW_POWSAVE_PSM_STOP = 10, 55 56 HAL_BTCOEX_SW_POWSAVE_BUTT 57 } hal_coex_sw_preempt_type; 58 typedef osal_u8 hal_coex_sw_preempt_type_uint8; 59 60 typedef enum { 61 HAL_BTCOEX_SW_POWSAVE_SUB_ACTIVE = 0, 62 HAL_BTCOEX_SW_POWSAVE_SUB_IDLE = 1, 63 HAL_BTCOEX_SW_POWSAVE_SUB_SCAN = 2, 64 HAL_BTCOEX_SW_POWSAVE_SUB_CONNECT = 3, 65 HAL_BTCOEX_SW_POWSAVE_SUB_PSM_FORBIT = 4, /* 低功耗唤醒时,连续出现多次ps=1状态,要禁止psm 做状态判断, 直到soc中断来更新 */ 66 67 HAL_BTCOEX_SW_POWSAVE_SUB_BUTT 68 } hal_coex_sw_preempt_subtype_enum; 69 typedef osal_u8 hal_coex_sw_preempt_subtype_uint8; 70 71 /***************************************************************************** 72 枚举定义 73 *****************************************************************************/ 74 typedef enum { 75 HAL_FCS_PROTECT_TYPE_NONE = 0, /* NONE */ 76 HAL_FCS_PROTECT_TYPE_SELF_CTS, /* SELF CTS */ 77 HAL_FCS_PROTECT_TYPE_NULL_DATA, /* NULL DATA */ 78 79 HAL_FCS_PROTECT_TYPE_BUTT 80 } hal_fcs_protect_type_enum; 81 typedef osal_u8 hal_fcs_protect_type_enum_uint8; 82 83 typedef enum { 84 HAL_FCS_SERVICE_TYPE_DBAC = 0, /* DBAC业务 */ 85 HAL_FCS_SERVICE_TYPE_SCAN, /* 扫描业务 */ 86 HAL_FCS_SERVICE_TYPE_M2S, /* m2s切换业务 */ 87 HAL_FCS_SERVICE_TYPE_BTCOEX_NORMAL, /* btcoex共存业务 */ 88 HAL_FCS_SERVICE_TYPE_BTCOEX_LDAC, /* btcoex共存业务 */ 89 90 HAL_FCS_PROTECT_NOTIFY_BUTT 91 } hal_fcs_service_type_enum; 92 typedef osal_u8 hal_fcs_service_type_enum_uint8; 93 94 typedef enum { 95 HAL_FCS_PROTECT_COEX_PRI_NORMAL = 0, /* b00 */ 96 HAL_FCS_PROTECT_COEX_PRI_PRIORITY = 1, /* b01 */ 97 HAL_FCS_PROTECT_COEX_PRI_OCCUPIED = 2, /* b10 */ 98 99 HAL_FCS_PROTECT_COEX_PRI_BUTT 100 } hal_fcs_protect_coex_pri_enum; 101 typedef osal_u8 hal_fcs_protect_coex_pri_enum_uint8; 102 103 typedef enum { 104 HAL_FCS_PROTECT_CNT_1 = 1, /* 1 */ 105 HAL_FCS_PROTECT_CNT_2 = 2, /* 2 */ 106 HAL_FCS_PROTECT_CNT_3 = 3, /* 3 */ 107 HAL_FCS_PROTECT_CNT_6 = 6, /* 10 */ 108 HAL_FCS_PROTECT_CNT_10 = 10, /* 10 */ 109 HAL_FCS_PROTECT_CNT_20 = 20, /* 20 */ 110 111 HAL_FCS_PROTECT_CNT_BUTT 112 } hal_fcs_protect_cnt_enum; 113 typedef osal_u8 hal_fcs_protect_cnt_enum_uint8; 114 115 /***************************************************************************** 116 描述符相关枚举定义 117 *****************************************************************************/ 118 typedef enum { 119 HAL_DFS_RADAR_TYPE_NULL = 0, 120 HAL_DFS_RADAR_TYPE_FCC = 1, 121 HAL_DFS_RADAR_TYPE_ETSI = 2, 122 HAL_DFS_RADAR_TYPE_MKK = 3, 123 HAL_DFS_RADAR_TYPE_KOREA = 4, 124 125 HAL_DFS_RADAR_TYPE_BUTT 126 } hal_dfs_radar_type_enum; 127 typedef osal_u8 hal_dfs_radar_type_enum_uint8; 128 129 /* 接收描述符队列号 */ 130 typedef enum { 131 HAL_RX_DSCR_NORMAL_QUEUE = 0, 132 HAL_RX_DSCR_HIGH_PRI_QUEUE, 133 HAL_RX_DSCR_SMALL_QUEUE, 134 HAL_RX_DSCR_QUEUE_ID_BUTT 135 } hal_rx_dscr_queue_id_enum; 136 typedef osal_u8 hal_rx_dscr_queue_id_enum_uint8; 137 138 /***************************************************************************** 139 中断相关枚举定义 140 *****************************************************************************/ 141 /* 因为mac error和dmac misc优先级一致,03将high prio做实时事件队列来处理,mac error并入dmac misc */ 142 /* 实时事件中断类型 */ 143 typedef enum { 144 HAL_EVENT_DMAC_HIGH_PRIO_BTCOEX_PS, /* BTCOEX ps中断, 因为rom化,目前只能放置一个 */ 145 HAL_EVENT_DMAC_HIGH_PRIO_BTCOEX_LDAC, /* BTCOEX LDAC中断 */ 146 147 HAL_EVENT_DMAC_HIGH_PRIO_SUB_TYPE_BUTT 148 } hal_event_dmac_high_prio_sub_type_enum; 149 typedef osal_u8 hal_event_dmac_high_prio_sub_type_enum_uint8; 150 151 /***************************************************************************** 152 复位相关枚举定义 153 *****************************************************************************/ 154 /* 复位事件子类型枚举 */ 155 typedef enum { 156 HAL_RESET_HW_TYPE_ALL = 0, 157 HAL_RESET_HW_TYPE_PHY, 158 HAL_RESET_HW_TYPE_MAC, 159 HAL_RESET_HW_TYPE_MAC_PHY, 160 161 HAL_RESET_HW_TYPE_BUTT 162 } hal_reset_hw_type_enum; 163 typedef osal_u8 hal_reset_hw_type_enum_uint8; 164 165 typedef enum { 166 HAL_ALG_ISR_NOTIFY_DBAC, 167 HAL_ALG_ISR_NOTIFY_MWO_DET, 168 HAL_ALG_ISR_NOTIFY_ANTI_INTF, 169 170 HAL_ALG_ISR_NOTIFY_BUTT, 171 } hal_alg_noify_enum; 172 typedef osal_u8 hal_alg_noify_enum_uint8; 173 174 typedef enum { 175 HAL_ISR_TYPE_TBTT, 176 HAL_ISR_TYPE_ONE_PKT, 177 HAL_ISR_TYPE_MWO_DET, 178 HAL_ISR_TYPE_NOA_START, 179 HAL_ISR_TYPE_NOA_END, 180 181 HAL_ISR_TYPE_BUTT, 182 } hal_isr_type_enum; 183 typedef osal_u8 hal_isr_type_enum_uint8; 184 185 /* 性能测试相关枚举 */ 186 typedef enum { 187 HAL_ALWAYS_TX_DISABLE, /* 禁用常发 */ 188 HAL_ALWAYS_TX_RF, /* 保留给RF测试广播报文 */ 189 HAL_ALWAYS_TX_AMPDU_ENABLE, /* 使能AMPDU聚合包常发 */ 190 HAL_ALWAYS_TX_MPDU, /* 使能非聚合包常发 */ 191 HAL_ALWAYS_TX_DC, /* 使能DC常发,用于CE认证测频偏 */ 192 HAL_ALWAYS_TX_BUTT 193 } hal_device_always_tx_state_enum; 194 typedef osal_u8 hal_device_always_tx_enum_uint8; 195 196 typedef enum { 197 HAL_ALWAYS_RX_DISABLE, /* 禁用常收 */ 198 HAL_ALWAYS_RX_RESERVED, /* 保留给RF测试广播报文 */ 199 HAL_ALWAYS_RX_AMPDU_ENABLE, /* 使能AMPDU聚合包常收 */ 200 HAL_ALWAYS_RX_ENABLE, /* 使能非聚合包常收 */ 201 HAL_ALWAYS_RX_BUTT 202 } hal_device_always_rx_state_enum; 203 typedef osal_u8 hal_device_always_rx_enum_uint8; 204 205 /***************************************************************************** 206 加密相关枚举定义 207 *****************************************************************************/ 208 /****3.6.1 芯片密钥类型定义 ************************************************/ 209 typedef enum { 210 HAL_KEY_TYPE_TX_GTK = 0, /* Hi1102:HAL_KEY_TYPE_TX_IGTK */ 211 HAL_KEY_TYPE_PTK = 1, 212 HAL_KEY_TYPE_RX_GTK = 2, 213 HAL_KEY_TYPE_RX_GTK2 = 3, /* 02使用,03和51不使用 */ 214 HAL_KEY_TYPE_BUTT 215 } hal_cipher_key_type_enum; 216 typedef osal_u8 hal_cipher_key_type_enum_uint8; 217 218 /***************************************************************************** 219 对外部保留的设备级接口列表,建议外部不做直接调用,而是调用对应的内联函数 220 *****************************************************************************/ 221 222 typedef enum { 223 HAL_DFR_TIMER_STEP_1 = 0, 224 HAL_DFR_TIMER_STEP_2 = 1, 225 } hal_dfr_timer_step_enum; 226 typedef osal_u8 hal_dfr_timer_step_enum_uint8; 227 228 typedef struct { 229 osal_u32 tkipccmp_rep_fail_cnt; /* 重放攻击检测计数TKIP + CCMP */ 230 osal_u32 tx_mpdu_cnt; /* 发送计数非ampdu高优先级 + 普通优先级 + ampdu中mpdu */ 231 osal_u32 rx_passed_mpdu_cnt; /* 属于AMPDU MPDU的FCS正确的MPDU数量 */ 232 osal_u32 rx_failed_mpdu_cnt; /* 属于AMPDU MPDU的FCS错误的MPDU数量 */ 233 osal_u32 rx_tkipccmp_mic_fail_cnt; /* kip mic + ccmp mic fail的帧数 */ 234 osal_u32 key_search_fail_cnt; /* 接收key serach fail的帧数 */ 235 osal_u32 phy_rx_dotb_ok_frm_cnt; /* PHY接收dotb ok的帧个数 */ 236 osal_u32 phy_rx_htvht_ok_frm_cnt; /* PHY接收vht ht ok的帧个数 */ 237 osal_u32 phy_rx_lega_ok_frm_cnt; /* PHY接收legace ok的帧个数 */ 238 osal_u32 phy_rx_dotb_err_frm_cnt; /* PHY接收dotb err的帧个数 */ 239 osal_u32 phy_rx_htvht_err_frm_cnt; /* PHY接收vht ht err的帧个数 */ 240 osal_u32 phy_rx_lega_err_frm_cnt; /* PHY接收legace err的帧个数 */ 241 } hal_mac_key_statis_info_stru; 242 243 typedef struct { 244 osal_u32 rx_ampdu_cnt; /* hw接收apmdu报文数量 */ 245 osal_u32 rx_suc_mpdu_inampdu_cnt; /* hw接收apmdu中mpdu fcs正确报文数量 */ 246 osal_u32 rx_err_mpdu_inampdu_cnt; /* hw接收apmdu中mpdu fcs错误报文数量 */ 247 osal_u32 rx_suc_mpdu_cnt; /* hw接收mpdu fcs正确报文数量 */ 248 osal_u32 rx_err_mpdu_cnt; /* hw接收mpdu fcs错误报文数量 */ 249 osal_u32 rx_filter_mpdu_cnt; 250 } hal_mac_rx_mpdu_statis_info_stru; 251 typedef struct { 252 osal_u32 tx_high_priority_mpdu_cnt; /* hw中高优先级队列中MPDU发送数量 */ 253 osal_u32 tx_normal_priority_mpdu_cnt; /* hw中普通优先级队列中MPDU发送数量 */ 254 osal_u32 tx_ampdu_inmpdu_cnt; /* hw中发送的AMPDU中MPDU数量 */ 255 osal_u32 tx_ampdu_cnt; /* hw中发送的AMPDU数量 */ 256 osal_u32 tx_complete_cnt; /* hw中发送完成中断数量 */ 257 } hal_mac_tx_mpdu_statis_info_stru; 258 259 /* 扫描状态,通过判断当前扫描的状态,判断多个扫描请求的处理策略以及上报扫描结果的策略 */ 260 typedef enum { 261 MAC_SCAN_STATE_IDLE, 262 MAC_SCAN_STATE_RUNNING, 263 264 MAC_SCAN_STATE_BUTT 265 } mac_scan_state_enum; 266 typedef osal_u8 mac_scan_state_enum_uint8; 267 268 /* 扫描状态,打印tx dscr控制 */ 269 typedef enum { 270 HAL_SCAN_TX_DSCR_DBG_CTL_INIT, 271 HAL_SCAN_TX_DSCR_DBG_CTL_PRINT_PERMIT, 272 HAL_SCAN_TX_DSCR_DBG_CTL_PRINTED, 273 HAL_SCAN_TX_DSCR_DBG_CTL_BUTT 274 } hal_scan_tx_dscr_dbg_ctl_enum; 275 typedef osal_u8 hal_scan_tx_dscr_dbg_ctl_enum_uint8; 276 277 /* 干扰检测模块检测到的邻频叠频干扰模式改变时回调函数枚举定义 */ 278 typedef enum { 279 HAL_ALG_INTF_DET_ADJINTF_NO = 0, /* 无干扰 */ 280 HAL_ALG_INTF_DET_ADJINTF_MEDIUM = 1, /* 中等强度干扰 */ 281 HAL_ALG_INTF_DET_ADJINTF_STRONG = 2, /* 强干扰 */ 282 HAL_ALG_INTF_DET_ADJINTF_CERTIFY = 3, /* 认证干扰 */ 283 HAL_ALG_INTF_DET_STATE_PKADJ = 4, /* PK参数调整状态 */ 284 HAL_ALG_INTF_DET_STATE_PK = 5, /* PK状态 */ 285 HAL_ALG_INTF_DET_ADJINTF_BUTT 286 } hal_alg_intf_det_mode_enum; 287 typedef osal_u8 hal_alg_intf_det_mode_enum_uint8; 288 289 /* 算法使用的用户距离状态 */ 290 typedef enum { 291 HAL_ALG_USER_DISTANCE_NEAR = 0, 292 HAL_ALG_USER_DISTANCE_NORMAL = 1, 293 HAL_ALG_USER_DISTANCE_FAR = 2, 294 295 HAL_ALG_USER_DISTANCE_BUTT 296 } hal_alg_user_distance_enum; 297 typedef osal_u8 hal_alg_user_distance_enum_uint8; 298 299 typedef union { 300 struct { 301 osal_u32 netbuf_reserve : 8; /* 调度:需要预留的大包个数 */ 302 osal_u32 free_large_cnt : 8; /* 调度:实际空闲的大包个数 */ 303 osal_u32 free_short_cnt : 6; /* 调度:实际空闲的小包个数 */ 304 osal_u32 free_mgmt_cnt : 6; /* 调度:实际空闲的管理帧个数 */ 305 osal_u32 sdp_chnl_switch_off : 1; /* SDP:判断wifi aware是否切离STA 工作信道 */ 306 osal_u32 slp_tx_ctrl : 1; /* slp: 判断slp状态 */ 307 osal_u32 resv : 2; 308 } bits; 309 310 osal_u32 u32; 311 } hal_gp_reg_0_u; 312 313 typedef union { 314 struct { 315 osal_u16 host_pm_state : 1; /* 低功耗:host低功耗状态 */ 316 osal_u16 dmac_pm_state : 1; /* 低功耗:dmac低功耗状态 */ 317 osal_u16 resv : 14; 318 } bits; 319 320 osal_u16 u16; 321 } hal_aon_reg_0_u; 322 323 /* ps mode管理结构体 */ 324 typedef struct { 325 osal_u8 ps_on : 1, /* ps软件机制: 0=关闭, 1=打开 */ 326 delba_on : 1, /* 删减聚合逻辑: 0=关闭, 1=打开 */ 327 reply_cts : 1, /* 是否回复CTS, 0=不回复, 1=回复 */ 328 rsp_frame_ps : 1, /* resp帧节能位是否设置 0=不设置, 1=设置 */ 329 btcoex_wl0_tx_slv_on : 1, /* btcoex下wl0 tx slv配置开关 */ 330 bit_resv : 3; 331 } hal_coex_sw_preempt_mode_stru; 332 333 typedef struct { 334 osal_u8 rf_id; 335 wlan_channel_band_enum_uint8 band; 336 osal_u8 chan_idx; 337 wlan_channel_bandwidth_enum_uint8 bandwidth; 338 }hal_rf_chan_info; 339 340 /* MIMO/SISO切换业务bitmap */ 341 typedef enum { 342 HAL_M2S_MODE_BITMAP_6SLOT = BIT0, /* 6slot */ 343 HAL_M2S_MODE_BITMAP_LDAC = BIT1, /* ldac */ 344 HAL_M2S_MODE_BITMAP_MSS = BIT2, /* mss */ 345 HAL_M2S_MODE_BITMAP_2GAP = BIT3, /* 2g ap切siso */ 346 HAL_M2S_MODE_BITMAP_5GAP = BIT4, /* 5g ap切siso */ 347 348 HAL_M2S_MODE_BITMAP_BUTT /* 最大状态 */ 349 } hal_m2s_mode_bitmap; 350 typedef osal_u8 hal_m2s_mode_bitmap_uint8; 351 /* TPC档位设置 */ 352 #define HAL_POW_LEVEL_NUM 6 /* 算法总档位数目 */ 353 #define HAL_POW_ADJUST_LEVEL_NUM (HAL_POW_LEVEL_NUM - 1) /* 算法支持可调整的档位数目 */ 354 #define HAL_POW_MAX_POW_LEVEL 0 /* 算法的最大功率档位 */ 355 #define HAL_POW_MIN_POW_LEVEL (HAL_POW_LEVEL_NUM - 2) /* 算法的最小功率档位 */ 356 #define HAL_POW_LEVEL_DOWN_LIMIT (HAL_POW_ADJUST_LEVEL_NUM - 1) /* 功率衰减的最小档位 */ 357 #define HAL_POW_LEVEL_UP_LIMIT (HAL_POW_MAX_POW_LEVEL) /* 功率回升的最大档位 */ 358 #define HAL_POW_RF_LIMIT_POW_LEVEL (HAL_POW_LEVEL_NUM - 1) /* 极远距离的功率档位标识 */ 359 #define HAL_POW_INVALID_POW_LEVEL 0xff /* 无效功率档位 */ 360 #ifdef __cplusplus 361 #if __cplusplus 362 } 363 #endif 364 #endif 365 366 #endif /* end of hal_commom_ops_type.h */ 367