hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright(c) 2009-2010  Realtek Corporation.*/
 
#ifndef __RTL8821AE_DEF_H__
#define __RTL8821AE_DEF_H__
 
/*--------------------------Define -------------------------------------------*/
#define    USE_SPECIFIC_FW_TO_SUPPORT_WOWLAN    1
 
/* BIT 7 HT Rate*/
/*TxHT = 0*/
#define    MGN_1M                0x02
#define    MGN_2M                0x04
#define    MGN_5_5M            0x0b
#define    MGN_11M                0x16
 
#define    MGN_6M                0x0c
#define    MGN_9M                0x12
#define    MGN_12M                0x18
#define    MGN_18M                0x24
#define    MGN_24M                0x30
#define    MGN_36M                0x48
#define    MGN_48M                0x60
#define    MGN_54M                0x6c
 
/* TxHT = 1 */
#define    MGN_MCS0            0x80
#define    MGN_MCS1            0x81
#define    MGN_MCS2            0x82
#define    MGN_MCS3            0x83
#define    MGN_MCS4            0x84
#define    MGN_MCS5            0x85
#define    MGN_MCS6            0x86
#define    MGN_MCS7            0x87
#define    MGN_MCS8            0x88
#define    MGN_MCS9            0x89
#define    MGN_MCS10            0x8a
#define    MGN_MCS11            0x8b
#define    MGN_MCS12            0x8c
#define    MGN_MCS13            0x8d
#define    MGN_MCS14            0x8e
#define    MGN_MCS15            0x8f
/* VHT rate */
#define    MGN_VHT1SS_MCS0        0x90
#define    MGN_VHT1SS_MCS1        0x91
#define    MGN_VHT1SS_MCS2        0x92
#define    MGN_VHT1SS_MCS3        0x93
#define    MGN_VHT1SS_MCS4        0x94
#define    MGN_VHT1SS_MCS5        0x95
#define    MGN_VHT1SS_MCS6        0x96
#define    MGN_VHT1SS_MCS7        0x97
#define    MGN_VHT1SS_MCS8        0x98
#define    MGN_VHT1SS_MCS9        0x99
#define    MGN_VHT2SS_MCS0        0x9a
#define    MGN_VHT2SS_MCS1        0x9b
#define    MGN_VHT2SS_MCS2        0x9c
#define    MGN_VHT2SS_MCS3        0x9d
#define    MGN_VHT2SS_MCS4        0x9e
#define    MGN_VHT2SS_MCS5        0x9f
#define    MGN_VHT2SS_MCS6        0xa0
#define    MGN_VHT2SS_MCS7        0xa1
#define    MGN_VHT2SS_MCS8        0xa2
#define    MGN_VHT2SS_MCS9        0xa3
 
#define    MGN_VHT3SS_MCS0        0xa4
#define    MGN_VHT3SS_MCS1        0xa5
#define    MGN_VHT3SS_MCS2        0xa6
#define    MGN_VHT3SS_MCS3        0xa7
#define    MGN_VHT3SS_MCS4        0xa8
#define    MGN_VHT3SS_MCS5        0xa9
#define    MGN_VHT3SS_MCS6        0xaa
#define    MGN_VHT3SS_MCS7        0xab
#define    MGN_VHT3SS_MCS8        0xac
#define    MGN_VHT3SS_MCS9        0xad
 
#define    MGN_MCS0_SG            0xc0
#define    MGN_MCS1_SG            0xc1
#define    MGN_MCS2_SG            0xc2
#define    MGN_MCS3_SG            0xc3
#define    MGN_MCS4_SG            0xc4
#define    MGN_MCS5_SG            0xc5
#define    MGN_MCS6_SG            0xc6
#define    MGN_MCS7_SG            0xc7
#define    MGN_MCS8_SG            0xc8
#define    MGN_MCS9_SG            0xc9
#define    MGN_MCS10_SG        0xca
#define    MGN_MCS11_SG        0xcb
#define    MGN_MCS12_SG        0xcc
#define    MGN_MCS13_SG        0xcd
#define    MGN_MCS14_SG        0xce
#define    MGN_MCS15_SG        0xcf
 
#define    MGN_UNKNOWN            0xff
 
/* 30 ms */
#define    WIFI_NAV_UPPER_US                30000
#define HAL_92C_NAV_UPPER_UNIT            128
 
#define MAX_RX_DMA_BUFFER_SIZE                0x3E80
 
#define HAL_PRIME_CHNL_OFFSET_DONT_CARE        0
#define HAL_PRIME_CHNL_OFFSET_LOWER            1
#define HAL_PRIME_CHNL_OFFSET_UPPER            2
 
#define RX_MPDU_QUEUE                        0
#define RX_CMD_QUEUE                        1
 
#define MAX_RX_DMA_BUFFER_SIZE_8812    0x3E80
 
#define CHIP_BONDING_IDENTIFIER(_value)    (((_value)>>22)&0x3)
 
#define CHIP_8812                BIT(2)
#define CHIP_8821                (BIT(0)|BIT(2))
 
#define CHIP_8821A                (BIT(0)|BIT(2))
#define NORMAL_CHIP                BIT(3)
#define RF_TYPE_1T1R                (~(BIT(4)|BIT(5)|BIT(6)))
#define RF_TYPE_1T2R                BIT(4)
#define RF_TYPE_2T2R                BIT(5)
#define CHIP_VENDOR_UMC                BIT(7)
#define B_CUT_VERSION                BIT(12)
#define C_CUT_VERSION                BIT(13)
#define D_CUT_VERSION                ((BIT(12)|BIT(13)))
#define E_CUT_VERSION                BIT(14)
#define    RF_RL_ID            (BIT(31)|BIT(30)|BIT(29)|BIT(28))
 
enum version_8821ae {
   VERSION_TEST_CHIP_1T1R_8812 = 0x0004,
   VERSION_TEST_CHIP_2T2R_8812 = 0x0024,
   VERSION_NORMAL_TSMC_CHIP_1T1R_8812 = 0x100c,
   VERSION_NORMAL_TSMC_CHIP_2T2R_8812 = 0x102c,
   VERSION_NORMAL_TSMC_CHIP_1T1R_8812_C_CUT = 0x200c,
   VERSION_NORMAL_TSMC_CHIP_2T2R_8812_C_CUT = 0x202c,
   VERSION_TEST_CHIP_8821 = 0x0005,
   VERSION_NORMAL_TSMC_CHIP_8821 = 0x000d,
   VERSION_NORMAL_TSMC_CHIP_8821_B_CUT = 0x100d,
   VERSION_UNKNOWN = 0xFF,
};
 
enum vht_data_sc {
   VHT_DATA_SC_DONOT_CARE = 0,
   VHT_DATA_SC_20_UPPER_OF_80MHZ = 1,
   VHT_DATA_SC_20_LOWER_OF_80MHZ = 2,
   VHT_DATA_SC_20_UPPERST_OF_80MHZ = 3,
   VHT_DATA_SC_20_LOWEST_OF_80MHZ = 4,
   VHT_DATA_SC_20_RECV1 = 5,
   VHT_DATA_SC_20_RECV2 = 6,
   VHT_DATA_SC_20_RECV3 = 7,
   VHT_DATA_SC_20_RECV4 = 8,
   VHT_DATA_SC_40_UPPER_OF_80MHZ = 9,
   VHT_DATA_SC_40_LOWER_OF_80MHZ = 10,
};
 
/* MASK */
#define IC_TYPE_MASK            (BIT(0)|BIT(1)|BIT(2))
#define CHIP_TYPE_MASK            BIT(3)
#define RF_TYPE_MASK            (BIT(4)|BIT(5)|BIT(6))
#define MANUFACTUER_MASK        BIT(7)
#define ROM_VERSION_MASK        (BIT(11)|BIT(10)|BIT(9)|BIT(8))
#define CUT_VERSION_MASK        (BIT(15)|BIT(14)|BIT(13)|BIT(12))
 
/* Get element */
#define GET_CVID_IC_TYPE(version)    ((version) & IC_TYPE_MASK)
#define GET_CVID_CHIP_TYPE(version)    ((version) & CHIP_TYPE_MASK)
#define GET_CVID_RF_TYPE(version)    ((version) & RF_TYPE_MASK)
#define GET_CVID_MANUFACTUER(version)    ((version) & MANUFACTUER_MASK)
#define GET_CVID_ROM_VERSION(version)    ((version) & ROM_VERSION_MASK)
#define GET_CVID_CUT_VERSION(version)    ((version) & CUT_VERSION_MASK)
 
#define IS_1T1R(version)    ((GET_CVID_RF_TYPE(version)) ? false : true)
#define IS_1T2R(version)    ((GET_CVID_RF_TYPE(version) == RF_TYPE_1T2R)\
                           ? true : false)
#define IS_2T2R(version)    ((GET_CVID_RF_TYPE(version) == RF_TYPE_2T2R)\
                           ? true : false)
 
#define IS_8812_SERIES(version)    ((GET_CVID_IC_TYPE(version) == CHIP_8812) ? \
                               true : false)
#define IS_8821_SERIES(version)    ((GET_CVID_IC_TYPE(version) == CHIP_8821) ? \
                               true : false)
 
#define IS_VENDOR_8812A_TEST_CHIP(version)    ((IS_8812_SERIES(version)) ? \
                   ((IS_NORMAL_CHIP(version)) ? \
                       false : true) : false)
#define IS_VENDOR_8812A_MP_CHIP(version)    ((IS_8812_SERIES(version)) ? \
                   ((IS_NORMAL_CHIP(version)) ? \
                       true : false) : false)
#define IS_VENDOR_8812A_C_CUT(version)        ((IS_8812_SERIES(version)) ? \
                   ((GET_CVID_CUT_VERSION(version) == \
                   C_CUT_VERSION) ? \
                   true : false) : false)
 
#define IS_VENDOR_8821A_TEST_CHIP(version)    ((IS_8821_SERIES(version)) ? \
                   ((IS_NORMAL_CHIP(version)) ? \
                   false : true) : false)
#define IS_VENDOR_8821A_MP_CHIP(version)    ((IS_8821_SERIES(version)) ? \
                   ((IS_NORMAL_CHIP(version)) ? \
                       true : false) : false)
#define IS_VENDOR_8821A_B_CUT(version)        ((IS_8821_SERIES(version)) ? \
                   ((GET_CVID_CUT_VERSION(version) == \
                   B_CUT_VERSION) ? \
                   true : false) : false)
enum board_type {
   ODM_BOARD_DEFAULT = 0,      /* The DEFAULT case. */
   ODM_BOARD_MINICARD = BIT(0), /* 0 = non-mini card, 1 = mini card. */
   ODM_BOARD_SLIM = BIT(1), /* 0 = non-slim card, 1 = slim card */
   ODM_BOARD_BT = BIT(2), /* 0 = without BT card, 1 = with BT */
   ODM_BOARD_EXT_PA = BIT(3), /* 1 = existing 2G ext-PA */
   ODM_BOARD_EXT_LNA = BIT(4), /* 1 = existing 2G ext-LNA */
   ODM_BOARD_EXT_TRSW = BIT(5), /* 1 = existing ext-TRSW */
   ODM_BOARD_EXT_PA_5G = BIT(6), /* 1 = existing 5G ext-PA */
   ODM_BOARD_EXT_LNA_5G = BIT(7), /* 1 = existing 5G ext-LNA */
};
 
enum rf_optype {
   RF_OP_BY_SW_3WIRE = 0,
   RF_OP_BY_FW,
   RF_OP_MAX
};
 
enum rf_power_state {
   RF_ON,
   RF_OFF,
   RF_SLEEP,
   RF_SHUT_DOWN,
};
 
enum power_save_mode {
   POWER_SAVE_MODE_ACTIVE,
   POWER_SAVE_MODE_SAVE,
};
 
enum power_polocy_config {
   POWERCFG_MAX_POWER_SAVINGS,
   POWERCFG_GLOBAL_POWER_SAVINGS,
   POWERCFG_LOCAL_POWER_SAVINGS,
   POWERCFG_LENOVO,
};
 
enum interface_select_pci {
   INTF_SEL1_MINICARD = 0,
   INTF_SEL0_PCIE = 1,
   INTF_SEL2_RSV = 2,
   INTF_SEL3_RSV = 3,
};
 
enum rtl_desc_qsel {
   QSLT_BK = 0x2,
   QSLT_BE = 0x0,
   QSLT_VI = 0x5,
   QSLT_VO = 0x7,
   QSLT_BEACON = 0x10,
   QSLT_HIGH = 0x11,
   QSLT_MGNT = 0x12,
   QSLT_CMD = 0x13,
};
 
struct phy_sts_cck_8821ae_t {
   u8 adc_pwdb_X[4];
   u8 sq_rpt;
   u8 cck_agc_rpt;
};
 
struct h2c_cmd_8821ae {
   u8 element_id;
   u32 cmd_len;
   u8 *p_cmdbuffer;
};
 
#endif