• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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