VSF Documented
vsf_wifi_mt76_priv.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __VSF_WIFI_MT76_PRIV_H__
19#define __VSF_WIFI_MT76_PRIV_H__
20
21/*============================ INCLUDES ======================================*/
22
23#include "./vsf_wifi_mt76.h"
24
25#if VSF_USE_WIFI == ENABLED && VSF_WIFI_USE_MT76 == ENABLED
26
27/*============================ MACROS ========================================*/
28
29#define MT76_VEND_TYPE_CFG ((uint32_t)1 << 30)
30
31#define MT76_ASIC_VERSION 0x0000
32#define MT76_USB_U3DMA_CFG (MT76_VEND_TYPE_CFG | 0x9018)
33#define MT76_USB_DMA_CFG_RX_DROP_OR_PAD (1U << 18)
34#define MT76_USB_DMA_CFG_RX_BULK_AGG_EN (1U << 21)
35#define MT76_USB_DMA_CFG_RX_BULK_EN (1U << 22)
36#define MT76_USB_DMA_CFG_TX_BULK_EN (1U << 23)
37#define MT76_WPDMA_GLO_CFG 0x0208
38#define MT76_MAC_SYS_CTRL 0x1004
39#define MT76_MAC_SYS_CTRL_RESET_CSR (1U << 0)
40#define MT76_MAC_SYS_CTRL_RESET_BBP (1U << 1)
41#define MT76_MAC_SYS_CTRL_ENABLE_TX (1U << 2)
42#define MT76_MAC_SYS_CTRL_ENABLE_RX (1U << 3)
43#define MT76_RX_FILTR_CFG 0x1400
44
45#define MT76_FCE_DMA_ADDR 0x0230
46#define MT76_FCE_DMA_LEN 0x0234
47#define MT76_TX_CPU_FROM_FCE_CPU_DESC_IDX 0x09A8
48#define MT76_TX_CPU_FROM_FCE_BASE_PTR 0x09A0
49#define MT76_TX_CPU_FROM_FCE_MAX_COUNT 0x09A4
50#define MT76_FCE_PSE_CTRL 0x0800
51#define MT76_FCE_PDMA_GLOBAL_CONF 0x09C4
52#define MT76_FCE_SKIP_FS 0x0A6C
53
54#define MT76_MCU_COM_REG0 0x0730
55#define MT76_MCU_CLOCK_CTL 0x0708
56#define MT76_MCU_RESET_CTL 0x070C
57#define MT76_MCU_SEMAPHORE_03 0x07BC
58
59#define MT76_REV_E3 0x22
60
61#define MT76_CHIP_ID_7612 0x7612
62#define MT76_CHIP_ID_7632 0x7632
63#define MT76_CHIP_ID_7662 0x7662
64#define MT76_CHIP_ID_7602 0x7602
65
66#define MT76_PATCH_HDR_SIZE 30
67#define MT76_FW_HDR_SIZE 32
68#define MT76_ROM_PATCH_OFFSET 0x00090000
69#define MT76_ILM_OFFSET 0x00080000
70#define MT76_DLM_OFFSET 0x00110000
71#define MT76_DLM_OFFSET_E3_EXTRA 0x00000800
72
73#define MT76_USB_DMA_CFG_VAL 0x00C00020
74
75#define MT76_WLAN_FUN_CTRL 0x0080
76#define MT76_WLAN_FUN_CTRL_WLAN_EN (1U << 0)
77#define MT76_WLAN_FUN_CTRL_WLAN_CLK_EN (1U << 1)
78#define MT76_WLAN_FUN_CTRL_WLAN_RESET_RF (1U << 2)
79#define MT76_WLAN_FUN_CTRL_FRC_WL_ANT_SEL (1U << 5)
80
81#define MT76_WLAN_MTC_CTRL (0x40000000 | 0x148)
82#define MT76_WLAN_MTC_CTRL_MTCMOS_PWR_UP (1U << 0)
83#define MT76_WLAN_MTC_CTRL_PWR_ACK (1U << 12)
84#define MT76_WLAN_MTC_CTRL_PWR_ACK_S (1U << 13)
85#define MT76_WLAN_MTC_CTRL_STATE_UP (1U << 28)
86
87#define MT76_MAC_CSR0 0x1000
88
89/* Additional MAC/BBP registers needed for mt76x2u_init_hardware() */
90#define MT76_WPDMA_GLO_CFG_TX_DMA_EN (1U << 0)
91#define MT76_WPDMA_GLO_CFG_TX_DMA_BUSY (1U << 1)
92#define MT76_WPDMA_GLO_CFG_RX_DMA_EN (1U << 2)
93#define MT76_WPDMA_GLO_CFG_RX_DMA_BUSY (1U << 3)
94
95#define MT76_US_CYC_CFG 0x02a4
96#define MT76_US_CYC_CNT 0x1e
97
98#define MT76_PBF_SYS_CTRL 0x0400
99#define MT76_PBF_CFG 0x0404
100#define MT76_PBF_TX_MAX_PCNT 0x0408
101#define MT76_PBF_RX_MAX_PCNT 0x040c
102#define MT76_BCN_OFFSET_BASE 0x041c
103#define MT76_BCN_OFFSET(_n) (MT76_BCN_OFFSET_BASE + ((_n) << 2))
104
105#define MT76_MAC_ADDR_DW0 0x1008
106#define MT76_MAC_ADDR_DW1 0x100c
107#define MT76_MAC_ADDR_DW1_U2ME_MASK 0x00ff0000
108#define MT76_MAC_BSSID_DW0 0x1010
109#define MT76_MAC_BSSID_DW1 0x1014
110#define MT76_MAC_BSSID_DW1_MBSS_MODE (3U << 16)
111#define MT76_MAC_BSSID_DW1_MBSS_LOCAL_BIT (1U << 21)
112#define MT76_MAC_BSSID_DW1_MBEACON_N_SHIFT 18
113
114#define MT76_MAX_LEN_CFG 0x1018
115#define MT76_AMPDU_MAX_LEN_20M1S 0x1030
116#define MT76_AMPDU_MAX_LEN_20M2S 0x1034
117
118#define MT76_BCN_BYPASS_MASK 0x108c
119#define MT76_XIFS_TIME_CFG 0x1100
120#define MT76_BKOFF_SLOT_CFG 0x1104
121#define MT76_BEACON_TIME_CFG 0x1114
122#define MT76_BEACON_TIME_CFG_INTVAL_MASK 0xFFFFu
123#define MT76_BEACON_TIME_CFG_TIMER_EN (1U << 16)
124#define MT76_BEACON_TIME_CFG_SYNC_MODE (3U << 17)
125#define MT76_BEACON_TIME_CFG_SYNC_MODE_STA (1U << 17)
126#define MT76_BEACON_TIME_CFG_TBTT_EN (1U << 19)
127#define MT76_TBTT_SYNC_CFG 0x1118
128#define MT76_MAC_STATUS 0x1200
129#define MT76_MAC_STATUS_TX (1U << 0)
130#define MT76_MAC_STATUS_RX (1U << 1)
131#define MT76_PWR_PIN_CFG 0x1204
132#define MT76_AUX_CLK_CFG 0x120c
133#define MT76_DACCLK_EN_DLY_CFG 0x1264
134
135#define MT76_TX_SW_CFG0 0x1330
136#define MT76_TX_SW_CFG1 0x1334
137#define MT76_TX_SW_CFG2 0x1338
138#define MT76_TXOP_CTRL_CFG 0x1340
139#define MT76_TXOP_ED_CCA_EN (1U << 20)
140#define MT76_TX_RTS_CFG 0x1344
141#define MT76_TX_RTS_CFG_RETRY_LIMIT 0x000000FF
142#define MT76_TX_TIMEOUT_CFG 0x1348
143#define MT76_FCE_L2_STUFF 0x080c
144#define MT76_FCE_L2_STUFF_WR_MPDU_LEN_EN (1U << 4)
145#define MT76_RF_BYPASS_0 0x0504
146#define MT76_RF_SETTING_0 0x050c
147#define MT76_TX_RETRY_CFG 0x134c
148#define MT76_PIFS_TX_CFG 0x1388
149#define MT76_TX_LINK_CFG 0x1350
150#define MT76_HEADER_TRANS_CTRL_REG 0x0260
151#define MT76_TSO_CTRL 0x0250
152#define MT76_TX_ALC_VGA3 0x0778
153#define MT76_VHT_HT_FBK_CFG1 0x1358
154#define MT76_CCK_PROT_CFG 0x1364
155#define MT76_OFDM_PROT_CFG 0x1368
156#define MT76_MM20_PROT_CFG 0x136c
157#define MT76_MM40_PROT_CFG 0x1370
158#define MT76_GF20_PROT_CFG 0x1374
159#define MT76_GF40_PROT_CFG 0x1378
160#define MT76_EXP_ACK_TIME 0x1380
161
162/* Band / bandwidth configuration registers ( Linux mt76x02 ) */
163#define MT76_TX_BAND_CFG 0x132c
164#define MT76_TX_BAND_CFG_UPPER_40M (1U << 0)
165#define MT76_TX_BAND_CFG_5G (1U << 1)
166#define MT76_TX_BAND_CFG_2G (1U << 2)
167
168#define MT76_EXT_CCA_CFG 0x141c
169#define MT76_EXT_CCA_CFG_CCA0_M 0x00000003
170#define MT76_EXT_CCA_CFG_CCA1_M 0x0000000c
171#define MT76_EXT_CCA_CFG_CCA2_M 0x00000030
172#define MT76_EXT_CCA_CFG_CCA3_M 0x000000c0
173#define MT76_EXT_CCA_CFG_CCA_MASK_M 0x00000f00
174
175/* BBP indirect register bases */
176#define MT76_BBP_CORE_BASE 0x2000
177#define MT76_BBP_AGC_BASE 0x2300
178#define MT76_BBP_TXO_BASE 0x2600
179#define MT76_BBP_TXBE_BASE 0x2700
180#define MT76_BBP_RXO_BASE 0x2900
181#define MT76_BBP(_type, _n) (MT76_BBP_##_type##_BASE + ((_n) << 2))
182#define MT76_BBP_CORE_R1_BW_M (3U << 3) /* bits 4:3 */
183#define MT76_BBP_CORE_R1_BW_20 (0U << 3)
184#define MT76_BBP_CORE_R1_BW_40 (2U << 3)
185#define MT76_BBP_CORE_R1_BW_80 (3U << 3)
186#define MT76_BBP_AGC_R0_BW_M (7U << 12) /* bits 14:12 */
187#define MT76_BBP_AGC_R0_BW_20 (1U << 12)
188#define MT76_BBP_AGC_R0_BW_40 (3U << 12)
189#define MT76_BBP_AGC_R0_BW_80 (7U << 12)
190#define MT76_BBP_AGC_R0_CTRL_CHAN_M (3U << 8) /* bits 9:8 */
191#define MT76_BBP_TXBE_R0_CTRL_CHAN_M (3U << 0) /* bits 1:0 */
192
193#define MT_TX_STAT_FIFO 0x1718
194#define MT_TX_STAT_FIFO_VALID (1U << 0)
195#define MT_TX_STAT_FIFO_SUCCESS (1U << 5)
196#define MT_TX_STAT_FIFO_AGGR (1U << 6)
197#define MT_TX_STAT_FIFO_ACKREQ (1U << 7)
198#define MT_TX_STAT_FIFO_WCID_M 0x0000FF00
199#define MT_TX_STAT_FIFO_WCID_S 8
200#define MT_TX_STAT_FIFO_RATE_M 0xFFFF0000
201#define MT_TX_STAT_FIFO_RATE_S 16
202
203#define MT_TX_STAT_FIFO_EXT 0x1798
204#define MT_TX_STAT_FIFO_EXT_RETRY_M 0x000000FF
205#define MT_TX_STAT_FIFO_EXT_RETRY_S 0
206#define MT_TX_STAT_FIFO_EXT_PKTID_M 0x0000FF00
207#define MT_TX_STAT_FIFO_EXT_PKTID_S 8
208
209#define MT76_PACKET_ID_HAS_RATE 0x80
210#define MT76_PKTID_RATE_M 0x1F
211#define MT76_HT_FBK_TO_LEGACY 0x1384
212#define MT76_TX_PROT_CFG6 0x13e0
213#define MT76_TX_PROT_CFG7 0x13e4
214#define MT76_TX_PROT_CFG8 0x13e8
215#define MT76_TX_PWR_CFG_0 0x1314
216#define MT76_TX_PWR_CFG_1 0x1318
217#define MT76_TX_PWR_CFG_2 0x131c
218#define MT76_TX_PWR_CFG_3 0x1320
219#define MT76_TX_PWR_CFG_4 0x1324
220#define MT76_TX_PWR_CFG_7 0x13d4
221#define MT76_TX_PWR_CFG_8 0x13d8
222#define MT76_TX_PWR_CFG_9 0x13dc
223
224#define MT76_BB_PA_MODE_CFG0 0x1214
225#define MT76_BB_PA_MODE_CFG1 0x1218
226#define MT76_RF_PA_MODE_CFG0 0x121c
227#define MT76_RF_PA_MODE_CFG1 0x1220
228#define MT76_RF_PA_MODE_ADJ0 0x1228
229#define MT76_RF_PA_MODE_ADJ1 0x122c
230
231#define MT76_TX_SW_CFG0 0x1330
232#define MT76_TX_SW_CFG1 0x1334
233
234#define MT76_TX0_RF_GAIN_CORR 0x13a0
235#define MT76_TX1_RF_GAIN_CORR 0x13a4
236#define MT76_TX_ALC_CFG_0 0x13b0
237#define MT76_TX_ALC_CFG_0_CH_INIT_0_M 0x0000003f
238#define MT76_TX_ALC_CFG_0_CH_INIT_0_S 0
239#define MT76_TX_ALC_CFG_0_CH_INIT_1_M 0x00003f00
240#define MT76_TX_ALC_CFG_0_CH_INIT_1_S 8
241#define MT76_TX_ALC_CFG_0_LIMIT_0_M 0x003f0000
242#define MT76_TX_ALC_CFG_0_LIMIT_0_S 16
243#define MT76_TX_ALC_CFG_0_LIMIT_1_M 0x3f000000
244#define MT76_TX_ALC_CFG_0_LIMIT_1_S 24
245#define MT76_TX_ALC_CFG_2 0x13a8
246#define MT76_TX_ALC_CFG_3 0x13ac
247
248#define MT76_XIFS_TIME_CFG 0x1100
249#define MT76_XIFS_TIME_CFG_OFDM_SIFS_M 0x0000ff00
250#define MT76_XIFS_TIME_CFG_OFDM_SIFS_S 8
251
252#define MT76_LEGACY_BASIC_RATE 0x1408
253#define MT76_HT_BASIC_RATE 0x140c
254#define MT76_HT_CTRL_CFG 0x1410
255#define MT76_TX_SW_CFG3 0x1478
256#define MT76_PN_PAD_MODE 0x150c
257#define MT76_TXOP_HLDR_ET 0x1608
258#define MT76_TXOP_HLDR_TX40M_BLK_EN (1U << 1)
259#define MT76_PROT_AUTO_TX_CFG 0x1648
260
261#define MT76_EFUSE_CTRL 0x0024
262#define MT76_PAUSE_ENABLE_CONTROL1 0x0a38
263#define MT76_FCE_WLAN_FLOW_CONTROL1 0x0824
264#define MT76_WPDMA_DELAY_INT_CFG 0x0210
265
266#define MT76_WCID_ATTR_BASE 0xa800
267#define MT76_WCID_ATTR(_n) (MT76_WCID_ATTR_BASE + (_n) * 4)
268#define MT76_WCID_ATTR_PAIRWISE (1U << 0)
269#define MT76_WCID_ATTR_PKEY_MODE (0x7U << 1)
270#define MT76_WCID_ATTR_PKEY_MODE_SHIFT 1
271#define MT76_WCID_ATTR_BSS_IDX (0U << 4)
272#define MT76_WCID_ATTR_BSS_IDX_EXT (1U << 11)
273#define MT76_WCID_ADDR_BASE 0x1800
274#define MT76_WCID_ADDR(_n) (MT76_WCID_ADDR_BASE + (_n) * 8)
275
276#define MT76_WCID_DROP_BASE 0x106c
277#define MT76_WCID_DROP(_n) (MT76_WCID_DROP_BASE + ((_n) >> 5) * 4)
278#define MT76_WCID_DROP_MASK(_n) (1U << ((_n) % 32))
279
280#define MT76_WCID_TX_INFO_BASE 0x1c00
281#define MT76_WCID_TX_INFO(_n) (MT76_WCID_TX_INFO_BASE + ((_n) * 8))
282
283#define MT76_WCID_KEY_BASE 0x8000
284#define MT76_WCID_KEY(_n) (MT76_WCID_KEY_BASE + (_n) * 32)
285#define MT76_WCID_IV_BASE 0xa000
286#define MT76_WCID_IV(_n) (MT76_WCID_IV_BASE + (_n) * 8)
287
288#define MT_VIF_WCID(_n) (254 - ((_n) & 7))
289
290#define MT76_SKEY_MODE_MASK 0xFU
291#define MT76_SKEY_MODE_SHIFT(_bss, _idx) (4 * ((_idx) + 4 * ((_bss) & 1)))
292
304#define MT_WCID_TX_INFO_RATE 0x0000FFFFU
305#define MT_WCID_TX_INFO_RATE_S 0
306#define MT_WCID_TX_INFO_NSS_SHIFT 16
307#define MT_WCID_TX_INFO_NSS_MASK 0x00030000U
308#define MT_WCID_TX_INFO_TXPWR_ADJ_SHIFT 18
309#define MT_WCID_TX_INFO_TXPWR_ADJ_MASK 0x03FC0000U
310#define MT_WCID_TX_INFO_SET 0x80000000U
311
312#define MT76_SKEY_BASE_0 0xac00
313#define MT76_SKEY_BASE_1 0xb400
314#define MT76_SKEY(_bss, _idx) \
315 (((_bss) & 8) ? (MT76_SKEY_BASE_1 + (4 * ((_bss) & 7) + (_idx)) * 32) \
316 : (MT76_SKEY_BASE_0 + (4 * (_bss) + (_idx)) * 32))
317#define MT76_SKEY_MODE_BASE_0 0xb000
318#define MT76_SKEY_MODE_BASE_1 0xb3f0
319#define MT76_SKEY_MODE(_bss) \
320 (((_bss) & 8) ? (MT76_SKEY_MODE_BASE_1 + ((((_bss) & 7) / 2) << 2)) \
321 : (MT76_SKEY_MODE_BASE_0 + (((_bss) / 2) << 2)))
322
323/* BBP indirect registers */
324#define MT76_BBP_CORE_BASE 0x2000
325#define MT76_BBP_IBI_BASE 0x2100
326#define MT76_BBP_AGC_BASE 0x2300
327#define MT76_BBP_TXO_BASE 0x2600
328#define MT76_BBP_TXBE_BASE 0x2700
329#define MT76_BBP_RXO_BASE 0x2900
330#define MT76_BBP(_type, _n) (MT76_BBP_##_type##_BASE + ((_n) << 2))
331
332#define MT76_BBP_TXO_4_TX_CMM_BW (1U << 25)
333#define MT76_BBP_RXO_13_RX_CMM_PD_EN (1U << 8)
334#define MT76_BBP_RXO_13_LDPC_RX_EN (1U << 10)
335
336#define MT76_XO_CTRL5 0x0114
337#define MT76_XO_CTRL5_C2_VAL_MASK 0x7f00
338#define MT76_XO_CTRL5_C2_VAL_SHIFT 8
339#define MT76_XO_CTRL6 0x0118
340#define MT76_XO_CTRL6_C2_CTRL_MASK 0x7f00
341#define MT76_XO_CTRL6_C2_CTRL_SHIFT 8
342#define MT76_XO_CTRL7 0x011c
343#define MT76_COEXCFG0 0x0040
344#define MT76_COEXCFG0_COEX_EN (1U << 0)
345#define MT76_TX_ALC_CFG_4 0x077c
346#define MT76_TX_ALC_CFG_4_MPDU_2ND_TC (1U << 31)
347#define MT76_AUTO_RSP_CFG 0x110c
348#define MT76_WMM_AIFSN 0x0214
349#define MT76_WMM_CWMIN 0x0218
350#define MT76_WMM_CWMAX 0x021c
351#define MT76_WMM_TXOP_BASE 0x0220
352#define MT76_WMM_TXOP(_n) (MT76_WMM_TXOP_BASE + (((_n) >> 1) << 2))
353#define MT76_EDCA_CFG_BASE 0x1300
354#define MT76_EDCA_CFG_AC(_n) (MT76_EDCA_CFG_BASE + ((_n) << 2))
355#define MT76_TXOP_THRES_CFG 0x13ec
356
357#define MT76_MCU_MSG_CMD_LOAD_CR 2
358#define MT76_RF_BBP_CR 2
359
360#define MT76_MCU_MSG_TYPE_CMD ((uint32_t)1 << 30)
361#define MT76_MCU_MSG_CMD_TYPE_SHIFT 20
362#define MT76_MCU_MSG_CMD_SEQ_SHIFT 16
363#define MT76_MCU_MSG_PORT_SHIFT 27
364#define MT76_MCU_MSG_LEN_MASK 0xFFFF
365
366/* USB DMA header (TXD_INFO) prepended to MCU commands on the INBAND_CMD
367 * bulk endpoint. Firmware upload uses a different (FCE-based) path and does
368 * not need this header. */
369#define MT76_TXD_INFO_LEN_MASK 0xFFFF
370#define MT76_TXD_INFO_DPORT_SHIFT 27
371#define MT76_TXD_INFO_TYPE_CMD ((uint32_t)1 << 30)
372
373#define MT76_CPU_TX_PORT 2
374#define MT76_WLAN_PORT 0
375
376#define MT76_VEND_DEV_MODE 0x01
377
378#define MT76_FW_PATCH_CHUNK_PAYLOAD (2048 - 8)
379#define MT76_FW_FW_CHUNK_PAYLOAD (MT76_TX_URB_SIZE - 8)
380
381#define MT76_CMD_FUN_SET_OP 1
382#define MT76_CMD_POWER_SAVING_OP 20
383#define MT76_FUN_Q_SELECT 1
384#define MT76_PWR_RADIO_ON 0x31
385#define MT76_PWR_RADIO_OFF 0x30
386
387#define MT_EE_READ 0
388#define MT76_EE_MAC_ADDR 0x004
389#define MT76_EE_NIC_CONF_0 0x034
390#define MT76_EE_NIC_CONF_1 0x036
391#define MT76_EE_XTAL_TRIM_1 0x03a
392#define MT76_EE_XTAL_TRIM_2 0x09e
393#define MT76_EE_NIC_CONF_2 0x042
394
395/* EEPROM RX path gain / RSSI offset fields (MT76x2) */
396#define MT76_EE_LNA_GAIN 0x044
397#define MT76_EE_RSSI_OFFSET_2G_0 0x046
398#define MT76_EE_RSSI_OFFSET_2G_1 0x048
399#define MT76_EE_LNA_GAIN_5GHZ_1 0x049
400#define MT76_EE_RSSI_OFFSET_5G_0 0x04a
401#define MT76_EE_RSSI_OFFSET_5G_1 0x04c
402#define MT76_EE_LNA_GAIN_5GHZ_2 0x04d
403
404/* EEPROM TX power / calibration fields (MT76x2) */
405#define MT76_EE_TX_POWER_DELTA_BW40 0x050
406#define MT76_EE_TX_POWER_DELTA_BW80 0x052
407#define MT76_EE_TX_POWER_EXT_PA_5G 0x054
408#define MT76_EE_TX_POWER_0_START_2G 0x056
409#define MT76_EE_TX_POWER_1_START_2G 0x05c
410#define MT76_EE_TX_POWER_0_START_5G 0x062
411#define MT76_EE_TX_POWER_1_START_5G 0x080
412#define MT76_EE_TX_POWER_CCK 0x0a0
413#define MT76_EE_TX_POWER_OFDM_2G_6M 0x0a2
414#define MT76_EE_TX_POWER_OFDM_2G_24M 0x0a4
415#define MT76_EE_TX_POWER_OFDM_5G_6M 0x0b2
416#define MT76_EE_TX_POWER_OFDM_5G_24M 0x0b4
417#define MT76_EE_TX_POWER_HT_MCS0 0x0a6
418#define MT76_EE_TX_POWER_HT_MCS4 0x0a8
419#define MT76_EE_TX_POWER_HT_MCS8 0x0aa
420#define MT76_EE_TX_POWER_HT_MCS12 0x0ac
421#define MT76_EE_TX_POWER_VHT_MCS8 0x0be
422#define MT76_EE_2G_TARGET_POWER 0x0d0
423#define MT76_EE_5G_TARGET_POWER 0x0d2
424#define MT76_EE_RF_2G_TSSI_OFF_TXPOWER 0x0f6
425#define MT76_EE_RF_2G_RX_HIGH_GAIN 0x0f8
426#define MT76_EE_RF_5G_GRP0_1_RX_HIGH_GAIN 0x0fa
427#define MT76_EE_RF_5G_GRP2_3_RX_HIGH_GAIN 0x0fc
428#define MT76_EE_RF_5G_GRP4_5_RX_HIGH_GAIN 0x0fe
429
430#define MT76_TX_POWER_GROUP_SIZE_5G 5
431#define MT76_TX_POWER_GROUPS_5G 6
432
433#define MT76_EE_NIC_CONF_0_PA_INT_2G (1U << 8)
434#define MT76_EE_NIC_CONF_0_PA_INT_5G (1U << 9)
435#define MT76_EE_NIC_CONF_1_TEMP_TX_ALC (1U << 1)
436#define MT76_EE_NIC_CONF_1_TX_ALC_EN (1U << 13)
437#define MT76_EE_NIC_CONF_1_LNA_EXT_2G (1U << 2)
438#define MT76_EE_NIC_CONF_1_LNA_EXT_5G (1U << 3)
439#define MT76_EE_TX_POWER_EXT_PA_5G_EN (1U << 15)
440
441
442#define MT76_CMD_INIT_GAIN_OP 3
443#define MT76_CMD_SWITCH_CHANNEL_OP 30
444#define MT76_CMD_CALIBRATION_OP 31
445
446/* MCU calibration types for CMD_CALIBRATION_OP (MT76x2) */
447#define MT76_MCU_CAL_R 1
448#define MT76_MCU_CAL_RXDCOC 2
449#define MT76_MCU_CAL_RC 3
450
451/* RX filter register */
452#define MT_RX_FILTR_CFG 0x1400
453#define MT_RX_FILTR_CFG_CRC_ERR (1U << 0)
454#define MT_RX_FILTR_CFG_PHY_ERR (1U << 1)
455#define MT_RX_FILTR_CFG_PROMISC (1U << 2)
456#define MT_RX_FILTR_CFG_OTHER_BSS (1U << 3)
457#define MT_RX_FILTR_CFG_VER_ERR (1U << 4)
458#define MT_RX_FILTR_CFG_MCAST (1U << 5)
459#define MT_RX_FILTR_CFG_BCAST (1U << 6)
460#define MT_RX_FILTR_CFG_DUP (1U << 7)
461#define MT_RX_FILTR_CFG_CFACK (1U << 8)
462#define MT_RX_FILTR_CFG_CFEND (1U << 9)
463#define MT_RX_FILTR_CFG_ACK (1U << 10)
464#define MT_RX_FILTR_CFG_CTS (1U << 11)
465#define MT_RX_FILTR_CFG_RTS (1U << 12)
466#define MT_RX_FILTR_CFG_PSPOLL (1U << 13)
467#define MT_RX_FILTR_CFG_BA (1U << 14)
468#define MT_RX_FILTR_CFG_BAR (1U << 15)
469#define MT_RX_FILTR_CFG_CTRL_RSV (1U << 16)
470
471/* Default RX filter for STA mode (matches Linux mt76x2 initvals) */
472#define MT_RX_FILTR_CFG_DEFAULT 0x00015f97
473
474/* TX descriptor (TXINFO) flags */
475#define MT_TXD_INFO_LEN_MASK 0x0000FFFF
476#define MT_TXD_INFO_NEXT_VLD (1U << 16)
477#define MT_TXD_INFO_TX_BURST (1U << 17)
478#define MT_TXD_INFO_80211 (1U << 19)
479#define MT_TXD_INFO_TSO (1U << 20)
480#define MT_TXD_INFO_CSO (1U << 21)
481#define MT_TXD_INFO_WIV (1U << 24)
482#define MT_TXD_INFO_QSEL_MASK (3U << 25)
483#define MT_TXD_INFO_QSEL_SHIFT 25
484#define MT_TXD_INFO_DPORT_MASK (7U << 27)
485#define MT_TXD_INFO_DPORT_SHIFT 27
486#define MT_TXD_INFO_TYPE_MASK (3U << 30)
487
488#define MT_QSEL_MGMT 0
489#define MT_QSEL_EDCA 2
490#define MT_WLAN_PORT 0
491
492/* TXWI */
493#define MT_TXWI_FLAGS_FRAG (1U << 0)
494#define MT_TXWI_FLAGS_MMPS (1U << 1)
495#define MT_TXWI_FLAGS_CFACK (1U << 2)
496#define MT_TXWI_FLAGS_TS (1U << 3)
497#define MT_TXWI_FLAGS_AMPDU (1U << 4)
498#define MT_TXWI_FLAGS_MPDU_DENSITY_MASK (7U << 5)
499#define MT_TXWI_FLAGS_TXOP_MASK (3U << 8)
500#define MT_TXWI_FLAGS_NDPS (1U << 10)
501#define MT_TXWI_FLAGS_RTSBWSIG (1U << 11)
502#define MT_TXWI_FLAGS_NDP_BW_MASK (3U << 12)
503#define MT_TXWI_FLAGS_SOUND (1U << 14)
504#define MT_TXWI_FLAGS_TX_RATE_LUT (1U << 15)
505
506#define MT_TXWI_ACK_CTL_REQ (1U << 0)
507#define MT_TXWI_ACK_CTL_NSEQ (1U << 1)
508#define MT_TXWI_ACK_CTL_BA_WINDOW_MASK (0x3FU << 2)
509
510#define MT_RXWI_RATE_INDEX_MASK 0x003F
511#define MT_RXWI_RATE_LDPC (1U << 6)
512#define MT_RXWI_RATE_BW_MASK (3U << 7)
513#define MT_RXWI_RATE_SGI (1U << 9)
514#define MT_RXWI_RATE_STBC (1U << 10)
515#define MT_RXWI_RATE_PHY_MASK (7U << 13)
516
517#define MT_PHY_TYPE_CCK 0
518#define MT_PHY_TYPE_OFDM 1
519#define MT_PHY_TYPE_HT 2
520#define MT_PHY_TYPE_VHT 4
521
522/* USB RX DMA header + RXWI layout */
523#define MT_DMA_HDR_LEN 4
524#define MT_RX_RXWI_LEN 32
525#define MT_FCE_INFO_LEN 4
526
527/* RXWI word0 (rxinfo) flags */
528#define MT_RXINFO_BA (1U << 0)
529#define MT_RXINFO_DATA (1U << 1)
530#define MT_RXINFO_NULL (1U << 2)
531#define MT_RXINFO_FRAG (1U << 3)
532#define MT_RXINFO_UNICAST (1U << 4)
533#define MT_RXINFO_MULTICAST (1U << 5)
534#define MT_RXINFO_BROADCAST (1U << 6)
535#define MT_RXINFO_MYBSS (1U << 7)
536#define MT_RXINFO_CRCERR (1U << 8)
537#define MT_RXINFO_ICVERR (1U << 9)
538#define MT_RXINFO_MICERR (1U << 10)
539#define MT_RXINFO_AMSDU (1U << 11)
540#define MT_RXINFO_HTC (1U << 12)
541#define MT_RXINFO_RSSI (1U << 13)
542#define MT_RXINFO_L2PAD (1U << 14)
543#define MT_RXINFO_AMPDU (1U << 15)
544#define MT_RXINFO_DECRYPT (1U << 16)
545#define MT_RXINFO_PN_LEN (7U << 19)
546#define MT_RXINFO_PROBE_RESP (1U << 24)
547#define MT_RXINFO_BEACON (1U << 25)
548
549/* RXWI word1 (ctl) fields */
550#define MT_RXWI_CTL_WCID_MASK 0x00FF
551#define MT_RXWI_CTL_MPDU_LEN_MASK (0x3FFFU << 16)
552#define MT_RXWI_CTL_MPDU_LEN_SHIFT 16
553#define MT_RXWI_CTL_EOF (1U << 31)
554
555/* RXWI size: 32 bytes */
556#define MT_RXWI_SIZE 32
557
558#define __mt76_put_le32(_p, _v) do { \
559 (_p)[0] = (uint8_t)(_v); \
560 (_p)[1] = (uint8_t)((_v) >> 8); \
561 (_p)[2] = (uint8_t)((_v) >> 16); \
562 (_p)[3] = (uint8_t)((_v) >> 24); \
563 } while (0)
564#define __mt76_get_le32(_p) \
565 ( (uint32_t)(_p)[0] \
566 | ((uint32_t)(_p)[1] << 8) \
567 | ((uint32_t)(_p)[2] << 16) \
568 | ((uint32_t)(_p)[3] << 24))
569#define __mt76_get_le16(_p) \
570 ( (uint16_t)(_p)[0] \
571 | ((uint16_t)(_p)[1] << 8))
572#define __mt76_put_le16(_p, _v) do { \
573 (_p)[0] = (uint8_t)(_v); \
574 (_p)[1] = (uint8_t)((_v) >> 8); \
575 } while (0)
576#define __mt76_round_up(_x, _n) (((_x) + ((_n) - 1)) & ~((_n) - 1))
577#define __mt76_min(_a, _b) ((_a) < (_b) ? (_a) : (_b))
578#define __mt76_rev(_priv) ((uint16_t)((_priv)->asic_rev & 0xFFFF))
579
580/* Protection config values from Linux mt76x2/init.c */
581#define MT76_PROT_CFG_RATE(_v) (((_v) & 0x7fff) << 0)
582#define MT76_PROT_CFG_NAV(_v) (((_v) & 0x1) << 15)
583#define MT76_PROT_CFG_CTRL(_v) (((_v) & 0x1) << 16)
584#define MT76_PROT_CFG_TXOP_ALLOW(_v) (((_v) & 0x3f) << 17)
585#define MT76_PROT_CFG_RTS_THRESH (1U << 23)
586
587#define MT76_DEFAULT_PROT_CFG_CCK \
588 (MT76_PROT_CFG_RATE(0x3) | MT76_PROT_CFG_NAV(1) | \
589 MT76_PROT_CFG_TXOP_ALLOW(0x3f) | MT76_PROT_CFG_RTS_THRESH)
590#define MT76_DEFAULT_PROT_CFG_OFDM \
591 (MT76_PROT_CFG_RATE(0x2004) | MT76_PROT_CFG_NAV(1) | \
592 MT76_PROT_CFG_TXOP_ALLOW(0x3f) | MT76_PROT_CFG_RTS_THRESH)
593#define MT76_DEFAULT_PROT_CFG_20 \
594 (MT76_PROT_CFG_RATE(0x2004) | MT76_PROT_CFG_CTRL(1) | \
595 MT76_PROT_CFG_NAV(1) | MT76_PROT_CFG_TXOP_ALLOW(0x17))
596#define MT76_DEFAULT_PROT_CFG_40 \
597 (MT76_PROT_CFG_RATE(0x2084) | MT76_PROT_CFG_CTRL(1) | \
598 MT76_PROT_CFG_NAV(1) | MT76_PROT_CFG_TXOP_ALLOW(0x3f))
599
600/*============================ TYPES =========================================*/
601
606
607/*============================ TYPES =========================================*/
608
627
670
676
685
686/*============================ INLINE HELPERS ================================*/
687
688#define __mt76_priv(__wifi) ((mt76_wifi_priv_t *)((__wifi)->chip_priv))
689
691
692#define __mt76_cfg_read(__wifi, ...) __mt76_bus_ops(__wifi)->base.reg_read(__wifi, __VA_ARGS__)
693#define __mt76_cfg_write(__wifi, ...) __mt76_bus_ops(__wifi)->base.reg_write(__wifi, __VA_ARGS__)
694#define __mt76_fce_write(__wifi, ...) __mt76_bus_ops(__wifi)->fce_write(__wifi, __VA_ARGS__)
695#define __mt76_dev_cmd(__wifi, ...) __mt76_bus_ops(__wifi)->dev_cmd(__wifi, __VA_ARGS__)
696#define __mt76_dev_class_cmd(__wifi, ...) __mt76_bus_ops(__wifi)->dev_class_cmd(__wifi, __VA_ARGS__)
697#define __mt76_mcu_cmd(__wifi, ...) __mt76_bus_ops(__wifi)->mcu_cmd(__wifi, __VA_ARGS__)
698#define __mt76_tx_frame(__wifi, ...) __mt76_bus_ops(__wifi)->tx_frame(__wifi, __VA_ARGS__)
699#define __mt76_rx_submit(__wifi, ...) __mt76_bus_ops(__wifi)->rx_submit(__wifi, __VA_ARGS__)
700
701#define __mt76_put_le32(_p, _v) do { \
702 (_p)[0] = (uint8_t)(_v); \
703 (_p)[1] = (uint8_t)((_v) >> 8); \
704 (_p)[2] = (uint8_t)((_v) >> 16); \
705 (_p)[3] = (uint8_t)((_v) >> 24); \
706 } while (0)
707#define __mt76_get_le32(_p) \
708 ( (uint32_t)(_p)[0] \
709 | ((uint32_t)(_p)[1] << 8) \
710 | ((uint32_t)(_p)[2] << 16) \
711 | ((uint32_t)(_p)[3] << 24))
712#define __mt76_get_le16(_p) \
713 ( (uint16_t)(_p)[0] \
714 | ((uint16_t)(_p)[1] << 8))
715#define __mt76_put_le16(_p, _v) do { \
716 (_p)[0] = (uint8_t)(_v); \
717 (_p)[1] = (uint8_t)((_v) >> 8); \
718 } while (0)
719#define __mt76_round_up(_x, _n) (((_x) + ((_n) - 1)) & ~((_n) - 1))
720#define __mt76_min(_a, _b) ((_a) < (_b) ? (_a) : (_b))
721#define __mt76_rev(_priv) ((uint16_t)((_priv)->asic_rev & 0xFFFF))
722
723/*============================ PROTOTYPES ====================================*/
724
725/* EEPROM helpers */
729extern const uint8_t *__mt76_eeprom_get_mac(vsf_wifi_t *wifi);
731 const uint8_t mac[6],
732 vsf_wifi_done_t done);
733
734/* PHY helpers */
736 uint8_t bw, vsf_wifi_done_t done);
737extern void __mt76_read_rx_gain(vsf_wifi_t *wifi, uint8_t channel);
738
739/* MCU helpers */
741 const uint8_t *payload, uint16_t payload_len, bool wait_resp,
742 vsf_wifi_done_t done);
743
744/* Firmware load */
746extern bool __mt76_chip_id_valid(uint32_t asic_rev);
747
748/* XTAL fixup (shared with firmware load timer) */
751extern void __mt76_xtal_timer_start(vsf_wifi_t *wifi, uint32_t ms);
752
753/* MAC layer */
755extern void __mt76_fini(vsf_wifi_t *wifi);
756extern vsf_err_t __mt76_set_channel(vsf_wifi_t *wifi, uint8_t channel,
757 vsf_wifi_done_t done);
759 vsf_wifi_done_t done);
760extern vsf_err_t __mt76_set_mac_addr(vsf_wifi_t *wifi, const uint8_t mac[6],
761 vsf_wifi_done_t done);
762extern vsf_err_t __mt76_set_bssid(vsf_wifi_t *wifi, const uint8_t bssid[6],
763 vsf_wifi_done_t done);
765 const vsf_wifi_auth_cfg_t *cfg,
766 vsf_wifi_done_t done);
768 const uint8_t bssid[6], const uint8_t *ssid,
769 uint8_t ssid_len, uint8_t channel,
770 vsf_wifi_done_t done);
774extern void __mt76_parse_rx(vsf_wifi_t *wifi, uint8_t *frame, uint16_t len);
775extern vsf_err_t __mt76_tx(vsf_wifi_t *wifi, const uint8_t *frame, uint16_t len);
776
777#if (VSF_WIFI_USE_WPA == ENABLED)
779#endif
780
781#endif /* VSF_USE_WIFI == ENABLED && VSF_WIFI_USE_MT76 == ENABLED */
782#endif /* __VSF_WIFI_MT76_PRIV_H__ */
vsf_err_t
Definition __type.h:42
u8 bssid[ETH_ALEN]
Definition ieee80211.h:2
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_wifi_mt76_priv.h:602
uint32_t reg
Definition vsf_wifi_mt76_priv.h:603
uint32_t val
Definition vsf_wifi_mt76_priv.h:604
Definition vsf_wifi_mt76.h:128
Definition vsf_wifi.h:161
Definition vsf_wifi.h:302
Definition vsf_wifi_mt76.h:88
Definition vsf_wifi_priv.h:57
uint64_t offset
Definition vsf_memfs.h:49
void(* vsf_wifi_done_t)(vsf_wifi_t *wifi, vsf_err_t err)
Definition vsf_wifi.h:123
const uint8_t * __mt76_eeprom_get_mac(vsf_wifi_t *wifi)
Definition vsf_wifi_mt76_eeprom.c:233
vsf_err_t __mt76_eeprom_load(vsf_wifi_t *wifi, vsf_wifi_done_t done)
Definition vsf_wifi_mt76_eeprom.c:222
vsf_err_t __mt76_apply_tx_power(vsf_wifi_t *wifi, uint8_t channel, uint8_t bw, vsf_wifi_done_t done)
Definition vsf_wifi_mt76_phy.c:508
uint8_t __mt76_eeprom_get_u8(mt76_wifi_priv_t *priv, uint16_t offset)
Definition vsf_wifi_mt76_eeprom.c:40
vsf_err_t __mt76_tx(vsf_wifi_t *wifi, const uint8_t *frame, uint16_t len)
Definition vsf_wifi_mt76_mac.c:2936
void __mt76_xtal_timer_start(vsf_wifi_t *wifi, uint32_t ms)
Definition vsf_wifi_mt76_firmware.c:72
vsf_err_t __mt76_set_channel(vsf_wifi_t *wifi, uint8_t channel, vsf_wifi_done_t done)
Definition vsf_wifi_mt76_mac.c:1893
bool __mt76_chip_id_valid(uint32_t asic_rev)
Definition vsf_wifi_mt76_firmware.c:114
const vsf_wifi_crypto_ops_t __mt76_crypto_ops
Definition vsf_wifi_mt76_mac.c:2927
struct mt76_reg_pair_t mt76_reg_pair_t
vsf_err_t __mt76_set_rx_filter(vsf_wifi_t *wifi, uint32_t mask, vsf_wifi_done_t done)
Definition vsf_wifi_mt76_mac.c:1926
mt76_fw_state_t
Definition vsf_wifi_mt76_priv.h:628
@ MT76_FW_STATE_POWER_ON_BBP_RST
Definition vsf_wifi_mt76_priv.h:642
@ MT76_FW_STATE_REENABLE_FCE
Definition vsf_wifi_mt76_priv.h:667
@ MT76_FW_STATE_POLL_FW_READY
Definition vsf_wifi_mt76_priv.h:665
@ MT76_FW_STATE_WAIT_WMT
Definition vsf_wifi_mt76_priv.h:660
@ MT76_FW_STATE_RESET_WLAN_EN
Definition vsf_wifi_mt76_priv.h:631
@ MT76_FW_STATE_POWER_ON_AD_DA_WRITE
Definition vsf_wifi_mt76_priv.h:639
@ MT76_FW_STATE_RELEASE_SEM
Definition vsf_wifi_mt76_priv.h:662
@ MT76_FW_STATE_POWER_ON_WLAN_EN
Definition vsf_wifi_mt76_priv.h:640
@ MT76_FW_STATE_SET_COMREG
Definition vsf_wifi_mt76_priv.h:666
@ MT76_FW_STATE_PARSE_FW_HEADER
Definition vsf_wifi_mt76_priv.h:663
@ MT76_FW_STATE_UPLOAD
Definition vsf_wifi_mt76_priv.h:657
@ MT76_FW_STATE_RESET_WLAN_RF
Definition vsf_wifi_mt76_priv.h:630
@ MT76_FW_STATE_WAIT_MAC
Definition vsf_wifi_mt76_priv.h:645
@ MT76_FW_STATE_VENDOR_RESET_DELAY
Definition vsf_wifi_mt76_priv.h:650
@ MT76_FW_STATE_CHECK_PATCH
Definition vsf_wifi_mt76_priv.h:647
@ MT76_FW_STATE_POWER_ON_MTCMOS_CLEAR2
Definition vsf_wifi_mt76_priv.h:635
@ MT76_FW_STATE_ENABLE_USB_DMA
Definition vsf_wifi_mt76_priv.h:649
@ MT76_FW_STATE_RESET_WMT
Definition vsf_wifi_mt76_priv.h:659
@ MT76_FW_STATE_FCE_BASE
Definition vsf_wifi_mt76_priv.h:653
@ MT76_FW_STATE_FCE_SKIP
Definition vsf_wifi_mt76_priv.h:656
@ MT76_FW_STATE_POWER_ON_MTCMOS_SET2
Definition vsf_wifi_mt76_priv.h:636
@ MT76_FW_STATE_LOAD_IVB
Definition vsf_wifi_mt76_priv.h:664
@ MT76_FW_STATE_POWER_ON_WLAN_EN_WRITE
Definition vsf_wifi_mt76_priv.h:641
@ MT76_FW_STATE_FCE_PDMA
Definition vsf_wifi_mt76_priv.h:655
@ MT76_FW_STATE_DONE
Definition vsf_wifi_mt76_priv.h:668
@ MT76_FW_STATE_FCE_PSE
Definition vsf_wifi_mt76_priv.h:652
@ MT76_FW_STATE_ENABLE_PATCH
Definition vsf_wifi_mt76_priv.h:658
@ MT76_FW_STATE_POWER_ON_MTCMOS_CLEAR1
Definition vsf_wifi_mt76_priv.h:634
@ MT76_FW_STATE_POWER_ON_MTCMOS_CLEAR3
Definition vsf_wifi_mt76_priv.h:637
@ MT76_FW_STATE_POLL_PATCH
Definition vsf_wifi_mt76_priv.h:661
@ MT76_FW_STATE_POWER_ON_MTCMOS
Definition vsf_wifi_mt76_priv.h:632
@ MT76_FW_STATE_RESET_WLAN
Definition vsf_wifi_mt76_priv.h:629
@ MT76_FW_STATE_ACQUIRE_SEM
Definition vsf_wifi_mt76_priv.h:648
@ MT76_FW_STATE_POWER_ON_MTCMOS_POLL
Definition vsf_wifi_mt76_priv.h:633
@ MT76_FW_STATE_READ_ASIC_REV
Definition vsf_wifi_mt76_priv.h:646
@ MT76_FW_STATE_ENABLE_USB_DMA_CFG
Definition vsf_wifi_mt76_priv.h:651
@ MT76_FW_STATE_POWER_ON_AD_DA
Definition vsf_wifi_mt76_priv.h:638
@ MT76_FW_STATE_POWER_ON_BBP_RST_WRITE
Definition vsf_wifi_mt76_priv.h:643
@ MT76_FW_STATE_POWER_ON_RF
Definition vsf_wifi_mt76_priv.h:644
@ MT76_FW_STATE_FCE_MAX
Definition vsf_wifi_mt76_priv.h:654
vsf_err_t __mt76_set_bssid(vsf_wifi_t *wifi, const uint8_t bssid[6], vsf_wifi_done_t done)
Definition vsf_wifi_mt76_mac.c:1951
vsf_err_t __mt76_init(vsf_wifi_t *wifi, vsf_wifi_done_t done)
Definition vsf_wifi_mt76_mac.c:548
mt76_state_t
Definition vsf_wifi_mt76_priv.h:609
@ MT76_STATE_INIT_WCID_RESET
Definition vsf_wifi_mt76_priv.h:618
@ MT76_STATE_INIT_MAC_RESET
Definition vsf_wifi_mt76_priv.h:617
@ MT76_STATE_INIT_BEACON
Definition vsf_wifi_mt76_priv.h:620
@ MT76_STATE_INIT_READ_ASIC
Definition vsf_wifi_mt76_priv.h:611
@ MT76_STATE_INIT_MAC_STOP
Definition vsf_wifi_mt76_priv.h:624
@ MT76_STATE_INIT_READY
Definition vsf_wifi_mt76_priv.h:625
@ MT76_STATE_INIT_EEPROM_LOAD
Definition vsf_wifi_mt76_priv.h:614
@ MT76_STATE_INIT_PHY
Definition vsf_wifi_mt76_priv.h:623
@ MT76_STATE_INIT_MCU_RADIO_ON
Definition vsf_wifi_mt76_priv.h:613
@ MT76_STATE_INIT_MAC_ADDR
Definition vsf_wifi_mt76_priv.h:615
@ MT76_STATE_IDLE
Definition vsf_wifi_mt76_priv.h:610
@ MT76_STATE_INIT_USB_DMA
Definition vsf_wifi_mt76_priv.h:616
@ MT76_STATE_INIT_KEY_RESET
Definition vsf_wifi_mt76_priv.h:619
@ MT76_STATE_INIT_MCU_Q_SELECT
Definition vsf_wifi_mt76_priv.h:612
@ MT76_STATE_INIT_LOAD_CR
Definition vsf_wifi_mt76_priv.h:622
@ MT76_STATE_INIT_MISC
Definition vsf_wifi_mt76_priv.h:621
vsf_err_t __mt76_connect(vsf_wifi_t *wifi, const uint8_t bssid[6], const uint8_t *ssid, uint8_t ssid_len, uint8_t channel, vsf_wifi_done_t done)
Definition vsf_wifi_mt76_mac.c:2139
mt76x02_cipher_type
Definition vsf_wifi_mt76_priv.h:293
@ MT76X02_CIPHER_CKIP128
Definition vsf_wifi_mt76_priv.h:301
@ MT76X02_CIPHER_WEP40
Definition vsf_wifi_mt76_priv.h:295
@ MT76X02_CIPHER_NONE
Definition vsf_wifi_mt76_priv.h:294
@ MT76X02_CIPHER_AES_CCMP
Definition vsf_wifi_mt76_priv.h:298
@ MT76X02_CIPHER_TKIP
Definition vsf_wifi_mt76_priv.h:297
@ MT76X02_CIPHER_WEP104
Definition vsf_wifi_mt76_priv.h:296
@ MT76X02_CIPHER_CKIP104
Definition vsf_wifi_mt76_priv.h:300
@ MT76X02_CIPHER_CKIP40
Definition vsf_wifi_mt76_priv.h:299
@ MT76X02_CIPHER_WAPI
Definition vsf_wifi_mt76_priv.h:302
vsf_err_t __mt76_disconnect(vsf_wifi_t *wifi, vsf_wifi_done_t done)
Definition vsf_wifi_mt76_mac.c:2227
void __mt76_read_rx_gain(vsf_wifi_t *wifi, uint8_t channel)
Definition vsf_wifi_mt76_phy.c:293
vsf_err_t __mt76_set_auth_mode(vsf_wifi_t *wifi, const vsf_wifi_auth_cfg_t *cfg, vsf_wifi_done_t done)
Definition vsf_wifi_mt76_mac.c:1976
void __mt76_mac_fixup_xtal_continue(vsf_wifi_t *wifi, vsf_err_t err)
Definition vsf_wifi_mt76_mac.c:204
void __mt76_fini(vsf_wifi_t *wifi)
Definition vsf_wifi_mt76_mac.c:1191
vsf_err_t __mt76_mac_fixup_xtal_start(vsf_wifi_t *wifi)
Definition vsf_wifi_mt76_mac.c:176
mt76_fw_send_state_t
Definition vsf_wifi_mt76_priv.h:677
@ MT76_FW_SEND_BULK
Definition vsf_wifi_mt76_priv.h:681
@ MT76_FW_SEND_IDX_READ
Definition vsf_wifi_mt76_priv.h:682
@ MT76_FW_SEND_IDLE
Definition vsf_wifi_mt76_priv.h:678
@ MT76_FW_SEND_CHUNK
Definition vsf_wifi_mt76_priv.h:679
@ MT76_FW_SEND_FCE_LEN
Definition vsf_wifi_mt76_priv.h:680
@ MT76_FW_SEND_IDX_WRITE
Definition vsf_wifi_mt76_priv.h:683
vsf_err_t __mt76_firmware_load(vsf_wifi_t *wifi, vsf_wifi_done_t done)
Definition vsf_wifi_mt76_firmware.c:1068
mt76_fw_stage_t
Definition vsf_wifi_mt76_priv.h:671
@ MT76_FW_STAGE_ILM
Definition vsf_wifi_mt76_priv.h:673
@ MT76_FW_STAGE_DLM
Definition vsf_wifi_mt76_priv.h:674
@ MT76_FW_STAGE_PATCH
Definition vsf_wifi_mt76_priv.h:672
vsf_err_t __mt76_get_link_info(vsf_wifi_t *wifi, vsf_wifi_link_info_t *info)
Definition vsf_wifi_mt76_mac.c:2247
const vsf_wifi_mt76_bus_ops_t * __mt76_bus_ops(vsf_wifi_t *wifi)
Definition vsf_wifi_mt76.c:28
vsf_err_t __mt76_mac_addr_program_start(vsf_wifi_t *wifi, const uint8_t mac[6], vsf_wifi_done_t done)
Definition vsf_wifi_mt76_eeprom.c:140
vsf_err_t __mt76_set_mac_addr(vsf_wifi_t *wifi, const uint8_t mac[6], vsf_wifi_done_t done)
Definition vsf_wifi_mt76_mac.c:1937
uint16_t __mt76_eeprom_get_u16(mt76_wifi_priv_t *priv, uint16_t offset)
Definition vsf_wifi_mt76_eeprom.c:34
void __mt76_parse_rx(vsf_wifi_t *wifi, uint8_t *frame, uint16_t len)
Definition vsf_wifi_mt76_mac.c:2352
vsf_err_t __mt76_mcu_msg_send(vsf_wifi_t *wifi, uint8_t cmd, const uint8_t *payload, uint16_t payload_len, bool wait_resp, vsf_wifi_done_t done)
Definition vsf_wifi_mt76_mcu.c:71
Generated from commit: vsfteam/vsf@5de27dd