xref: /openbsd-src/sys/dev/ic/rt2860reg.h (revision 44df374beffdeeab308e9c219092e1c860fc97a9)
1*44df374bSkevlo /*	$OpenBSD: rt2860reg.h,v 1.35 2018/10/02 02:05:34 kevlo Exp $	*/
24180bdb0Sdamien 
34180bdb0Sdamien /*-
44180bdb0Sdamien  * Copyright (c) 2007
54180bdb0Sdamien  *	Damien Bergamini <damien.bergamini@free.fr>
64180bdb0Sdamien  *
74180bdb0Sdamien  * Permission to use, copy, modify, and distribute this software for any
84180bdb0Sdamien  * purpose with or without fee is hereby granted, provided that the above
94180bdb0Sdamien  * copyright notice and this permission notice appear in all copies.
104180bdb0Sdamien  *
114180bdb0Sdamien  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
124180bdb0Sdamien  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
134180bdb0Sdamien  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
144180bdb0Sdamien  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
154180bdb0Sdamien  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
164180bdb0Sdamien  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
174180bdb0Sdamien  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
184180bdb0Sdamien  */
194180bdb0Sdamien 
204180bdb0Sdamien /* PCI registers */
214180bdb0Sdamien #define RT2860_PCI_CFG			0x0000
224180bdb0Sdamien #define RT2860_PCI_EECTRL		0x0004
234180bdb0Sdamien #define RT2860_PCI_MCUCTRL		0x0008
244180bdb0Sdamien #define RT2860_PCI_SYSCTRL		0x000c
254180bdb0Sdamien #define RT2860_PCIE_JTAG		0x0010
264180bdb0Sdamien 
27*44df374bSkevlo /* RT3290 registers */
28*44df374bSkevlo #define RT3290_CMB_CTRL			0x0020
29*44df374bSkevlo #define RT3290_EFUSE_CTRL		0x0024
30*44df374bSkevlo #define RT3290_EFUSE_DATA3		0x0028
31*44df374bSkevlo #define RT3290_EFUSE_DATA2		0x002c
32*44df374bSkevlo #define RT3290_EFUSE_DATA1		0x0030
33*44df374bSkevlo #define RT3290_EFUSE_DATA0		0x0034
34*44df374bSkevlo #define RT3290_OSC_CTRL			0x0038
35*44df374bSkevlo #define RT3290_COEX_CFG0		0x0040
36*44df374bSkevlo #define RT3290_PLL_CTRL			0x0050
37*44df374bSkevlo #define RT3290_WLAN_CTRL		0x0080
38*44df374bSkevlo 
39bbada1cfSdamien #define RT3090_AUX_CTRL			0x010c
40bbada1cfSdamien 
41b93534efSdamien #define RT3070_OPT_14			0x0114
42b93534efSdamien 
434180bdb0Sdamien /* SCH/DMA registers */
444180bdb0Sdamien #define RT2860_INT_STATUS		0x0200
454180bdb0Sdamien #define RT2860_INT_MASK			0x0204
464180bdb0Sdamien #define RT2860_WPDMA_GLO_CFG		0x0208
474180bdb0Sdamien #define RT2860_WPDMA_RST_IDX		0x020c
484180bdb0Sdamien #define RT2860_DELAY_INT_CFG		0x0210
494180bdb0Sdamien #define RT2860_WMM_AIFSN_CFG		0x0214
504180bdb0Sdamien #define RT2860_WMM_CWMIN_CFG		0x0218
514180bdb0Sdamien #define RT2860_WMM_CWMAX_CFG		0x021c
524180bdb0Sdamien #define RT2860_WMM_TXOP0_CFG		0x0220
534180bdb0Sdamien #define RT2860_WMM_TXOP1_CFG		0x0224
544180bdb0Sdamien #define RT2860_GPIO_CTRL		0x0228
554180bdb0Sdamien #define RT2860_MCU_CMD_REG		0x022c
564180bdb0Sdamien #define RT2860_TX_BASE_PTR(qid)		(0x0230 + (qid) * 16)
574180bdb0Sdamien #define RT2860_TX_MAX_CNT(qid)		(0x0234 + (qid) * 16)
584180bdb0Sdamien #define RT2860_TX_CTX_IDX(qid)		(0x0238 + (qid) * 16)
594180bdb0Sdamien #define RT2860_TX_DTX_IDX(qid)		(0x023c + (qid) * 16)
604180bdb0Sdamien #define RT2860_RX_BASE_PTR		0x0290
614180bdb0Sdamien #define RT2860_RX_MAX_CNT		0x0294
624180bdb0Sdamien #define RT2860_RX_CALC_IDX		0x0298
634180bdb0Sdamien #define RT2860_FS_DRX_IDX		0x029c
64b93534efSdamien #define RT2860_USB_DMA_CFG		0x02a0	/* RT2870 only */
654180bdb0Sdamien #define RT2860_US_CYC_CNT		0x02a4
664180bdb0Sdamien 
674180bdb0Sdamien /* PBF registers */
684180bdb0Sdamien #define RT2860_SYS_CTRL			0x0400
694180bdb0Sdamien #define RT2860_HOST_CMD			0x0404
704180bdb0Sdamien #define RT2860_PBF_CFG			0x0408
714180bdb0Sdamien #define RT2860_MAX_PCNT			0x040c
724180bdb0Sdamien #define RT2860_BUF_CTRL			0x0410
734180bdb0Sdamien #define RT2860_MCU_INT_STA		0x0414
744180bdb0Sdamien #define RT2860_MCU_INT_ENA		0x0418
754180bdb0Sdamien #define RT2860_TXQ_IO(qid)		(0x041c + (qid) * 4)
764180bdb0Sdamien #define RT2860_RX0Q_IO			0x0424
774180bdb0Sdamien #define RT2860_BCN_OFFSET0		0x042c
784180bdb0Sdamien #define RT2860_BCN_OFFSET1		0x0430
794180bdb0Sdamien #define RT2860_TXRXQ_STA		0x0434
804180bdb0Sdamien #define RT2860_TXRXQ_PCNT		0x0438
814180bdb0Sdamien #define RT2860_PBF_DBG			0x043c
824180bdb0Sdamien #define RT2860_CAP_CTRL			0x0440
834180bdb0Sdamien 
84b93534efSdamien /* RT3070 registers */
85b93534efSdamien #define RT3070_RF_CSR_CFG		0x0500
86b93534efSdamien #define RT3070_EFUSE_CTRL		0x0580
87b93534efSdamien #define RT3070_EFUSE_DATA0		0x0590
88b93534efSdamien #define RT3070_EFUSE_DATA1		0x0594
89b93534efSdamien #define RT3070_EFUSE_DATA2		0x0598
90b93534efSdamien #define RT3070_EFUSE_DATA3		0x059c
91e0f789a5Sdamien #define RT3090_OSC_CTRL			0x05a4
92b93534efSdamien #define RT3070_LDO_CFG0			0x05d4
93b93534efSdamien #define RT3070_GPIO_SWITCH		0x05dc
94b93534efSdamien 
95d80de052Sstsp /* RT5592 registers */
96d80de052Sstsp #define RT5592_DEBUG_INDEX		0x05e8
97d80de052Sstsp 
984180bdb0Sdamien /* MAC registers */
994180bdb0Sdamien #define RT2860_ASIC_VER_ID		0x1000
1004180bdb0Sdamien #define RT2860_MAC_SYS_CTRL		0x1004
1014180bdb0Sdamien #define RT2860_MAC_ADDR_DW0		0x1008
1024180bdb0Sdamien #define RT2860_MAC_ADDR_DW1		0x100c
1034180bdb0Sdamien #define RT2860_MAC_BSSID_DW0		0x1010
1044180bdb0Sdamien #define RT2860_MAC_BSSID_DW1		0x1014
1054180bdb0Sdamien #define RT2860_MAX_LEN_CFG		0x1018
1064180bdb0Sdamien #define RT2860_BBP_CSR_CFG		0x101c
1074180bdb0Sdamien #define RT2860_RF_CSR_CFG0		0x1020
1084180bdb0Sdamien #define RT2860_RF_CSR_CFG1		0x1024
1094180bdb0Sdamien #define RT2860_RF_CSR_CFG2		0x1028
1104180bdb0Sdamien #define RT2860_LED_CFG			0x102c
1114180bdb0Sdamien 
11269419907Sdamien /* undocumented registers */
11369419907Sdamien #define RT2860_DEBUG			0x10f4
11469419907Sdamien 
1154180bdb0Sdamien /* MAC Timing control registers */
1164180bdb0Sdamien #define RT2860_XIFS_TIME_CFG		0x1100
1174180bdb0Sdamien #define RT2860_BKOFF_SLOT_CFG		0x1104
1184180bdb0Sdamien #define RT2860_NAV_TIME_CFG		0x1108
1194180bdb0Sdamien #define RT2860_CH_TIME_CFG		0x110c
1204180bdb0Sdamien #define RT2860_PBF_LIFE_TIMER		0x1110
1214180bdb0Sdamien #define RT2860_BCN_TIME_CFG		0x1114
1224180bdb0Sdamien #define RT2860_TBTT_SYNC_CFG		0x1118
1234180bdb0Sdamien #define RT2860_TSF_TIMER_DW0		0x111c
1244180bdb0Sdamien #define RT2860_TSF_TIMER_DW1		0x1120
1254180bdb0Sdamien #define RT2860_TBTT_TIMER		0x1124
1264180bdb0Sdamien #define RT2860_INT_TIMER_CFG		0x1128
1274180bdb0Sdamien #define RT2860_INT_TIMER_EN		0x112c
1284180bdb0Sdamien #define RT2860_CH_IDLE_TIME		0x1130
1294180bdb0Sdamien 
1304180bdb0Sdamien /* MAC Power Save configuration registers */
1314180bdb0Sdamien #define RT2860_MAC_STATUS_REG		0x1200
1324180bdb0Sdamien #define RT2860_PWR_PIN_CFG		0x1204
1334180bdb0Sdamien #define RT2860_AUTO_WAKEUP_CFG		0x1208
1344180bdb0Sdamien 
1354180bdb0Sdamien /* MAC TX configuration registers */
1364180bdb0Sdamien #define RT2860_EDCA_AC_CFG(aci)		(0x1300 + (aci) * 4)
1374180bdb0Sdamien #define RT2860_EDCA_TID_AC_MAP		0x1310
1384180bdb0Sdamien #define RT2860_TX_PWR_CFG(ridx)		(0x1314 + (ridx) * 4)
1394180bdb0Sdamien #define RT2860_TX_PIN_CFG		0x1328
1404180bdb0Sdamien #define RT2860_TX_BAND_CFG		0x132c
1414180bdb0Sdamien #define RT2860_TX_SW_CFG0		0x1330
1424180bdb0Sdamien #define RT2860_TX_SW_CFG1		0x1334
1434180bdb0Sdamien #define RT2860_TX_SW_CFG2		0x1338
1444180bdb0Sdamien #define RT2860_TXOP_THRES_CFG		0x133c
1454180bdb0Sdamien #define RT2860_TXOP_CTRL_CFG		0x1340
1464180bdb0Sdamien #define RT2860_TX_RTS_CFG		0x1344
1474180bdb0Sdamien #define RT2860_TX_TIMEOUT_CFG		0x1348
1484180bdb0Sdamien #define RT2860_TX_RTY_CFG		0x134c
1494180bdb0Sdamien #define RT2860_TX_LINK_CFG		0x1350
1504180bdb0Sdamien #define RT2860_HT_FBK_CFG0		0x1354
1514180bdb0Sdamien #define RT2860_HT_FBK_CFG1		0x1358
1524180bdb0Sdamien #define RT2860_LG_FBK_CFG0		0x135c
1534180bdb0Sdamien #define RT2860_LG_FBK_CFG1		0x1360
1544180bdb0Sdamien #define RT2860_CCK_PROT_CFG		0x1364
1554180bdb0Sdamien #define RT2860_OFDM_PROT_CFG		0x1368
1564180bdb0Sdamien #define RT2860_MM20_PROT_CFG		0x136c
1574180bdb0Sdamien #define RT2860_MM40_PROT_CFG		0x1370
1584180bdb0Sdamien #define RT2860_GF20_PROT_CFG		0x1374
1594180bdb0Sdamien #define RT2860_GF40_PROT_CFG		0x1378
1604180bdb0Sdamien #define RT2860_EXP_CTS_TIME		0x137c
1614180bdb0Sdamien #define RT2860_EXP_ACK_TIME		0x1380
1624180bdb0Sdamien 
1634180bdb0Sdamien /* MAC RX configuration registers */
1644180bdb0Sdamien #define RT2860_RX_FILTR_CFG		0x1400
1654180bdb0Sdamien #define RT2860_AUTO_RSP_CFG		0x1404
1664180bdb0Sdamien #define RT2860_LEGACY_BASIC_RATE	0x1408
1674180bdb0Sdamien #define RT2860_HT_BASIC_RATE		0x140c
1684180bdb0Sdamien #define RT2860_HT_CTRL_CFG		0x1410
1694180bdb0Sdamien #define RT2860_SIFS_COST_CFG		0x1414
1704180bdb0Sdamien #define RT2860_RX_PARSER_CFG		0x1418
1714180bdb0Sdamien 
1724180bdb0Sdamien /* MAC Security configuration registers */
1734180bdb0Sdamien #define RT2860_TX_SEC_CNT0		0x1500
1744180bdb0Sdamien #define RT2860_RX_SEC_CNT0		0x1504
1754180bdb0Sdamien #define RT2860_CCMP_FC_MUTE		0x1508
1764180bdb0Sdamien 
1774180bdb0Sdamien /* MAC HCCA/PSMP configuration registers */
1784180bdb0Sdamien #define RT2860_TXOP_HLDR_ADDR0		0x1600
1794180bdb0Sdamien #define RT2860_TXOP_HLDR_ADDR1		0x1604
1804180bdb0Sdamien #define RT2860_TXOP_HLDR_ET		0x1608
1814180bdb0Sdamien #define RT2860_QOS_CFPOLL_RA_DW0	0x160c
1824180bdb0Sdamien #define RT2860_QOS_CFPOLL_A1_DW1	0x1610
1834180bdb0Sdamien #define RT2860_QOS_CFPOLL_QC		0x1614
1844180bdb0Sdamien 
1854180bdb0Sdamien /* MAC Statistics Counters */
1864180bdb0Sdamien #define RT2860_RX_STA_CNT0		0x1700
1874180bdb0Sdamien #define RT2860_RX_STA_CNT1		0x1704
1884180bdb0Sdamien #define RT2860_RX_STA_CNT2		0x1708
1894180bdb0Sdamien #define RT2860_TX_STA_CNT0		0x170c
1904180bdb0Sdamien #define RT2860_TX_STA_CNT1		0x1710
1914180bdb0Sdamien #define RT2860_TX_STA_CNT2		0x1714
1924180bdb0Sdamien #define RT2860_TX_STAT_FIFO		0x1718
1934180bdb0Sdamien 
1944875e7bdSdamien /* RX WCID search table */
1954180bdb0Sdamien #define RT2860_WCID_ENTRY(wcid)		(0x1800 + (wcid) * 8)
1964875e7bdSdamien 
1974180bdb0Sdamien #define RT2860_FW_BASE			0x2000
198b93534efSdamien #define RT2870_FW_BASE			0x3000
1994875e7bdSdamien 
2004875e7bdSdamien /* Pair-wise key table */
2014180bdb0Sdamien #define RT2860_PKEY(wcid)		(0x4000 + (wcid) * 32)
2024875e7bdSdamien 
2034875e7bdSdamien /* IV/EIV table */
2044180bdb0Sdamien #define RT2860_IVEIV(wcid)		(0x6000 + (wcid) * 8)
2054875e7bdSdamien 
2064875e7bdSdamien /* WCID attribute table */
2074875e7bdSdamien #define RT2860_WCID_ATTR(wcid)		(0x6800 + (wcid) * 4)
2084875e7bdSdamien 
2094875e7bdSdamien /* Shared Key Table */
2104180bdb0Sdamien #define RT2860_SKEY(vap, kidx)		(0x6c00 + (vap) * 128 + (kidx) * 32)
2114180bdb0Sdamien 
2124875e7bdSdamien /* Shared Key Mode */
2134875e7bdSdamien #define RT2860_SKEY_MODE_0_7		0x7000
2144875e7bdSdamien #define RT2860_SKEY_MODE_8_15		0x7004
2154875e7bdSdamien #define RT2860_SKEY_MODE_16_23		0x7008
2164875e7bdSdamien #define RT2860_SKEY_MODE_24_31		0x700c
2174875e7bdSdamien 
2184180bdb0Sdamien /* Shared Memory between MCU and host */
2194180bdb0Sdamien #define RT2860_H2M_MAILBOX		0x7010
220b93534efSdamien #define RT2860_H2M_MAILBOX_CID		0x7014
221b93534efSdamien #define RT2860_H2M_MAILBOX_STATUS	0x701c
222d80de052Sstsp #define RT2860_H2M_INTSRC		0x7024
2234180bdb0Sdamien #define RT2860_H2M_BBPAGENT		0x7028
2244180bdb0Sdamien #define RT2860_BCN_BASE(vap)		(0x7800 + (vap) * 512)
2254180bdb0Sdamien 
2264180bdb0Sdamien 
22763f54454Sdamien /* possible flags for RT2860_PCI_CFG */
22863f54454Sdamien #define RT2860_PCI_CFG_USB	(1 << 17)
22963f54454Sdamien #define RT2860_PCI_CFG_PCI	(1 << 16)
23063f54454Sdamien 
2314180bdb0Sdamien /* possible flags for register RT2860_PCI_EECTRL */
2324180bdb0Sdamien #define RT2860_C	(1 << 0)
2334180bdb0Sdamien #define RT2860_S	(1 << 1)
2344180bdb0Sdamien #define RT2860_D	(1 << 2)
2354180bdb0Sdamien #define RT2860_SHIFT_D	2
2364180bdb0Sdamien #define RT2860_Q	(1 << 3)
2374180bdb0Sdamien #define RT2860_SHIFT_Q	3
2384180bdb0Sdamien 
239*44df374bSkevlo /* possible flags for register RT3290_CMB_CTRL */
240*44df374bSkevlo #define RT3290_XTAL_RDY		(1U << 22)
241*44df374bSkevlo #define RT3290_PLL_LD		(1U << 23)
242*44df374bSkevlo #define RT3290_LDO_CORE_LEVEL	(0xf << 24)
243*44df374bSkevlo #define RT3290_LDO_BGSEL	(3 << 29)
244*44df374bSkevlo #define RT3290_LDO3_EN		(1U << 30)
245*44df374bSkevlo #define RT3290_LDO0_EN		(1U << 31)
246*44df374bSkevlo 
247*44df374bSkevlo /* possible flags for register RT3290_OSC_CTRL */
248*44df374bSkevlo #define RT3290_OSC_REF_CYCLE	0x1fff
249*44df374bSkevlo #define RT3290_OSC_CAL_CNT	(0xfff << 16)
250*44df374bSkevlo #define RT3290_OSC_CAL_ACK	(1U << 28)
251*44df374bSkevlo #define RT3290_OSC_CLK_32K_VLD	(1U << 29)
252*44df374bSkevlo #define RT3290_OSC_CAL_REQ	(1U << 30)
253*44df374bSkevlo #define RT3290_ROSC_EN		(1U << 31)
254*44df374bSkevlo 
255*44df374bSkevlo /* possible flags for register RT3290_COEX_CFG0 */
256*44df374bSkevlo #define RT3290_CFG0_DEF		(0x59 << 24)
257*44df374bSkevlo 
258*44df374bSkevlo /* possible flags for register RT3290_PLL_CTRL */
259*44df374bSkevlo #define RT3290_PLL_CONTROL	 	(7 << 16)
260*44df374bSkevlo 
261*44df374bSkevlo /* possible flags for register RT3290_WLAN_CTRL */
262*44df374bSkevlo #define RT3290_WLAN_EN			(1U << 0)
263*44df374bSkevlo #define RT3290_WLAN_CLK_EN		(1U << 1)
264*44df374bSkevlo #define RT3290_WLAN_RSV1		(1U << 2)
265*44df374bSkevlo #define RT3290_WLAN_RESET		(1U << 3)
266*44df374bSkevlo #define RT3290_PCIE_APP0_CLK_REQ	(1U << 4)
267*44df374bSkevlo #define RT3290_FRC_WL_ANT_SET		(1U << 5)
268*44df374bSkevlo #define RT3290_INV_TR_SW0		(1U << 6)
269*44df374bSkevlo #define RT3290_RADIO_EN			(1U << 8)
270*44df374bSkevlo #define RT3290_GPIO_IN_ALL		(0xff << 8)
271*44df374bSkevlo #define RT3290_GPIO_OUT_ALL		(0xff << 16)
272*44df374bSkevlo #define RT3290_GPIO_OUT_OE_ALL		(0xff << 24)
273*44df374bSkevlo 
2744180bdb0Sdamien /* possible flags for registers INT_STATUS/INT_MASK */
2754180bdb0Sdamien #define RT2860_TX_COHERENT	(1 << 17)
2764180bdb0Sdamien #define RT2860_RX_COHERENT	(1 << 16)
2774180bdb0Sdamien #define RT2860_MAC_INT_4	(1 << 15)
2784180bdb0Sdamien #define RT2860_MAC_INT_3	(1 << 14)
2794180bdb0Sdamien #define RT2860_MAC_INT_2	(1 << 13)
2804180bdb0Sdamien #define RT2860_MAC_INT_1	(1 << 12)
2814180bdb0Sdamien #define RT2860_MAC_INT_0	(1 << 11)
2824180bdb0Sdamien #define RT2860_TX_RX_COHERENT	(1 << 10)
2834180bdb0Sdamien #define RT2860_MCU_CMD_INT	(1 <<  9)
2844180bdb0Sdamien #define RT2860_TX_DONE_INT5	(1 <<  8)
2854180bdb0Sdamien #define RT2860_TX_DONE_INT4	(1 <<  7)
2864180bdb0Sdamien #define RT2860_TX_DONE_INT3	(1 <<  6)
2874180bdb0Sdamien #define RT2860_TX_DONE_INT2	(1 <<  5)
2884180bdb0Sdamien #define RT2860_TX_DONE_INT1	(1 <<  4)
2894180bdb0Sdamien #define RT2860_TX_DONE_INT0	(1 <<  3)
2904180bdb0Sdamien #define RT2860_RX_DONE_INT	(1 <<  2)
2914180bdb0Sdamien #define RT2860_TX_DLY_INT	(1 <<  1)
2924180bdb0Sdamien #define RT2860_RX_DLY_INT	(1 <<  0)
2934180bdb0Sdamien 
2944180bdb0Sdamien /* possible flags for register WPDMA_GLO_CFG */
2954180bdb0Sdamien #define RT2860_HDR_SEG_LEN_SHIFT	8
2964180bdb0Sdamien #define RT2860_BIG_ENDIAN		(1 << 7)
2974180bdb0Sdamien #define RT2860_TX_WB_DDONE		(1 << 6)
2984180bdb0Sdamien #define RT2860_WPDMA_BT_SIZE_SHIFT	4
2994180bdb0Sdamien #define RT2860_WPDMA_BT_SIZE16		0
3004180bdb0Sdamien #define RT2860_WPDMA_BT_SIZE32		1
3014180bdb0Sdamien #define RT2860_WPDMA_BT_SIZE64		2
3024180bdb0Sdamien #define RT2860_WPDMA_BT_SIZE128		3
3034180bdb0Sdamien #define RT2860_RX_DMA_BUSY		(1 << 3)
3044180bdb0Sdamien #define RT2860_RX_DMA_EN		(1 << 2)
3054180bdb0Sdamien #define RT2860_TX_DMA_BUSY		(1 << 1)
3064180bdb0Sdamien #define RT2860_TX_DMA_EN		(1 << 0)
3074180bdb0Sdamien 
3084180bdb0Sdamien /* possible flags for register DELAY_INT_CFG */
30961e87b28Sderaadt #define RT2860_TXDLY_INT_EN		(1U << 31)
3104180bdb0Sdamien #define RT2860_TXMAX_PINT_SHIFT		24
3114180bdb0Sdamien #define RT2860_TXMAX_PTIME_SHIFT	16
31261e87b28Sderaadt #define RT2860_RXDLY_INT_EN		(1U << 15)
3134180bdb0Sdamien #define RT2860_RXMAX_PINT_SHIFT		8
3144180bdb0Sdamien #define RT2860_RXMAX_PTIME_SHIFT	0
3154180bdb0Sdamien 
3164180bdb0Sdamien /* possible flags for register GPIO_CTRL */
3174180bdb0Sdamien #define RT2860_GPIO_D_SHIFT	8
3184180bdb0Sdamien #define RT2860_GPIO_O_SHIFT	0
3194180bdb0Sdamien 
320b93534efSdamien /* possible flags for register USB_DMA_CFG */
32161e87b28Sderaadt #define RT2860_USB_TX_BUSY		(1U << 31)
32261e87b28Sderaadt #define RT2860_USB_RX_BUSY		(1U << 30)
323b93534efSdamien #define RT2860_USB_EPOUT_VLD_SHIFT	24
32461e87b28Sderaadt #define RT2860_USB_TX_EN		(1U << 23)
32561e87b28Sderaadt #define RT2860_USB_RX_EN		(1U << 22)
32661e87b28Sderaadt #define RT2860_USB_RX_AGG_EN		(1U << 21)
32761e87b28Sderaadt #define RT2860_USB_TXOP_HALT		(1U << 20)
32861e87b28Sderaadt #define RT2860_USB_TX_CLEAR		(1U << 19)
32961e87b28Sderaadt #define RT2860_USB_PHY_WD_EN		(1U << 16)
33061e87b28Sderaadt #define RT2860_USB_PHY_MAN_RST		(1U << 15)
331c4a33c5cSdamien #define RT2860_USB_RX_AGG_LMT(x)	((x) << 8)	/* in unit of 1KB */
3325661a35fSdamien #define RT2860_USB_RX_AGG_TO(x)		((x) & 0xff)	/* in unit of 33ns */
333b93534efSdamien 
3344180bdb0Sdamien /* possible flags for register US_CYC_CNT */
3354180bdb0Sdamien #define RT2860_TEST_EN		(1 << 24)
3364180bdb0Sdamien #define RT2860_TEST_SEL_SHIFT	16
3374180bdb0Sdamien #define RT2860_BT_MODE_EN	(1 <<  8)
3384180bdb0Sdamien #define RT2860_US_CYC_CNT_SHIFT	0
3394180bdb0Sdamien 
3404180bdb0Sdamien /* possible flags for register SYS_CTRL */
3414180bdb0Sdamien #define RT2860_HST_PM_SEL	(1 << 16)
3424180bdb0Sdamien #define RT2860_CAP_MODE		(1 << 14)
3434180bdb0Sdamien #define RT2860_PME_OEN		(1 << 13)
3444180bdb0Sdamien #define RT2860_CLKSELECT	(1 << 12)
3454180bdb0Sdamien #define RT2860_PBF_CLK_EN	(1 << 11)
3464180bdb0Sdamien #define RT2860_MAC_CLK_EN	(1 << 10)
3474180bdb0Sdamien #define RT2860_DMA_CLK_EN	(1 <<  9)
3484180bdb0Sdamien #define RT2860_MCU_READY	(1 <<  7)
3494180bdb0Sdamien #define RT2860_ASY_RESET	(1 <<  4)
3504180bdb0Sdamien #define RT2860_PBF_RESET	(1 <<  3)
3514180bdb0Sdamien #define RT2860_MAC_RESET	(1 <<  2)
3524180bdb0Sdamien #define RT2860_DMA_RESET	(1 <<  1)
3534180bdb0Sdamien #define RT2860_MCU_RESET	(1 <<  0)
3544180bdb0Sdamien 
3554180bdb0Sdamien /* possible values for register HOST_CMD */
356a7baa4fdSdamien #define RT2860_MCU_CMD_SLEEP	0x30
357a7baa4fdSdamien #define RT2860_MCU_CMD_WAKEUP	0x31
358a7baa4fdSdamien #define RT2860_MCU_CMD_LEDS	0x50
359a7baa4fdSdamien #define RT2860_MCU_CMD_LED_RSSI	0x51
360a7baa4fdSdamien #define RT2860_MCU_CMD_LED1	0x52
361a7baa4fdSdamien #define RT2860_MCU_CMD_LED2	0x53
362a7baa4fdSdamien #define RT2860_MCU_CMD_LED3	0x54
36360b75e11Sdamien #define RT2860_MCU_CMD_RFRESET	0x72
364a920a938Sdamien #define RT2860_MCU_CMD_ANTSEL	0x73
3654180bdb0Sdamien #define RT2860_MCU_CMD_BBP	0x80
366696f393cSdamien #define RT2860_MCU_CMD_PSLEVEL	0x83
3674180bdb0Sdamien 
3684180bdb0Sdamien /* possible flags for register PBF_CFG */
3694180bdb0Sdamien #define RT2860_TX1Q_NUM_SHIFT	21
3704180bdb0Sdamien #define RT2860_TX2Q_NUM_SHIFT	16
3714180bdb0Sdamien #define RT2860_NULL0_MODE	(1 << 15)
3724180bdb0Sdamien #define RT2860_NULL1_MODE	(1 << 14)
3734180bdb0Sdamien #define RT2860_RX_DROP_MODE	(1 << 13)
3744180bdb0Sdamien #define RT2860_TX0Q_MANUAL	(1 << 12)
3754180bdb0Sdamien #define RT2860_TX1Q_MANUAL	(1 << 11)
3764180bdb0Sdamien #define RT2860_TX2Q_MANUAL	(1 << 10)
3774180bdb0Sdamien #define RT2860_RX0Q_MANUAL	(1 <<  9)
3784180bdb0Sdamien #define RT2860_HCCA_EN		(1 <<  8)
3794180bdb0Sdamien #define RT2860_TX0Q_EN		(1 <<  4)
3804180bdb0Sdamien #define RT2860_TX1Q_EN		(1 <<  3)
3814180bdb0Sdamien #define RT2860_TX2Q_EN		(1 <<  2)
3824180bdb0Sdamien #define RT2860_RX0Q_EN		(1 <<  1)
3834180bdb0Sdamien 
3844180bdb0Sdamien /* possible flags for register BUF_CTRL */
3854180bdb0Sdamien #define RT2860_WRITE_TXQ(qid)	(1 << (11 - (qid)))
3864180bdb0Sdamien #define RT2860_NULL0_KICK	(1 << 7)
3874180bdb0Sdamien #define RT2860_NULL1_KICK	(1 << 6)
3884180bdb0Sdamien #define RT2860_BUF_RESET	(1 << 5)
3894180bdb0Sdamien #define RT2860_READ_TXQ(qid)	(1 << (3 - (qid))
3904180bdb0Sdamien #define RT2860_READ_RX0Q	(1 << 0)
3914180bdb0Sdamien 
3924180bdb0Sdamien /* possible flags for registers MCU_INT_STA/MCU_INT_ENA */
3934180bdb0Sdamien #define RT2860_MCU_MAC_INT_8	(1 << 24)
3944180bdb0Sdamien #define RT2860_MCU_MAC_INT_7	(1 << 23)
3954180bdb0Sdamien #define RT2860_MCU_MAC_INT_6	(1 << 22)
3964180bdb0Sdamien #define RT2860_MCU_MAC_INT_4	(1 << 20)
3974180bdb0Sdamien #define RT2860_MCU_MAC_INT_3	(1 << 19)
3984180bdb0Sdamien #define RT2860_MCU_MAC_INT_2	(1 << 18)
3994180bdb0Sdamien #define RT2860_MCU_MAC_INT_1	(1 << 17)
4004180bdb0Sdamien #define RT2860_MCU_MAC_INT_0	(1 << 16)
4014180bdb0Sdamien #define RT2860_DTX0_INT		(1 << 11)
4024180bdb0Sdamien #define RT2860_DTX1_INT		(1 << 10)
4034180bdb0Sdamien #define RT2860_DTX2_INT		(1 <<  9)
4044180bdb0Sdamien #define RT2860_DRX0_INT		(1 <<  8)
4054180bdb0Sdamien #define RT2860_HCMD_INT		(1 <<  7)
4064180bdb0Sdamien #define RT2860_N0TX_INT		(1 <<  6)
4074180bdb0Sdamien #define RT2860_N1TX_INT		(1 <<  5)
4084180bdb0Sdamien #define RT2860_BCNTX_INT	(1 <<  4)
4094180bdb0Sdamien #define RT2860_MTX0_INT		(1 <<  3)
4104180bdb0Sdamien #define RT2860_MTX1_INT		(1 <<  2)
4114180bdb0Sdamien #define RT2860_MTX2_INT		(1 <<  1)
4124180bdb0Sdamien #define RT2860_MRX0_INT		(1 <<  0)
4134180bdb0Sdamien 
4148015804dSdamien /* possible flags for register TXRXQ_PCNT */
4158015804dSdamien #define RT2860_RX0Q_PCNT_MASK	0xff000000
4168015804dSdamien #define RT2860_TX2Q_PCNT_MASK	0x00ff0000
4178015804dSdamien #define RT2860_TX1Q_PCNT_MASK	0x0000ff00
4188015804dSdamien #define RT2860_TX0Q_PCNT_MASK	0x000000ff
4198015804dSdamien 
4204180bdb0Sdamien /* possible flags for register CAP_CTRL */
42161e87b28Sderaadt #define RT2860_CAP_ADC_FEQ		(1U << 31)
42261e87b28Sderaadt #define RT2860_CAP_START		(1U << 30)
42361e87b28Sderaadt #define RT2860_MAN_TRIG			(1U << 29)
4244180bdb0Sdamien #define RT2860_TRIG_OFFSET_SHIFT	16
4254180bdb0Sdamien #define RT2860_START_ADDR_SHIFT		0
4264180bdb0Sdamien 
427b93534efSdamien /* possible flags for register RF_CSR_CFG */
428b93534efSdamien #define RT3070_RF_KICK		(1 << 17)
429b93534efSdamien #define RT3070_RF_WRITE		(1 << 16)
430b93534efSdamien 
431b93534efSdamien /* possible flags for register EFUSE_CTRL */
43261e87b28Sderaadt #define RT3070_SEL_EFUSE	(1U << 31)
43361e87b28Sderaadt #define RT3070_EFSROM_KICK	(1U << 30)
434a4d59ed3Sdamien #define RT3070_EFSROM_AIN_MASK	0x03ff0000
435b93534efSdamien #define RT3070_EFSROM_AIN_SHIFT	16
436a4d59ed3Sdamien #define RT3070_EFSROM_MODE_MASK	0x000000c0
437b93534efSdamien #define RT3070_EFUSE_AOUT_MASK	0x0000003f
438b93534efSdamien 
439d80de052Sstsp /* possible flag for register DEBUG_INDEX */
440d80de052Sstsp #define RT5592_SEL_XTAL		(1U << 31)
441d80de052Sstsp 
4424180bdb0Sdamien /* possible flags for register MAC_SYS_CTRL */
4434180bdb0Sdamien #define RT2860_RX_TS_EN		(1 << 7)
4444180bdb0Sdamien #define RT2860_WLAN_HALT_EN	(1 << 6)
4454180bdb0Sdamien #define RT2860_PBF_LOOP_EN	(1 << 5)
4464180bdb0Sdamien #define RT2860_CONT_TX_TEST	(1 << 4)
4474180bdb0Sdamien #define RT2860_MAC_RX_EN	(1 << 3)
4484180bdb0Sdamien #define RT2860_MAC_TX_EN	(1 << 2)
4494180bdb0Sdamien #define RT2860_BBP_HRST		(1 << 1)
4504180bdb0Sdamien #define RT2860_MAC_SRST		(1 << 0)
4514180bdb0Sdamien 
4524180bdb0Sdamien /* possible flags for register MAC_BSSID_DW1 */
4534180bdb0Sdamien #define RT2860_MULTI_BCN_NUM_SHIFT	18
4544180bdb0Sdamien #define RT2860_MULTI_BSSID_MODE_SHIFT	16
4554180bdb0Sdamien 
4564180bdb0Sdamien /* possible flags for register MAX_LEN_CFG */
4574180bdb0Sdamien #define RT2860_MIN_MPDU_LEN_SHIFT	16
4584180bdb0Sdamien #define RT2860_MAX_PSDU_LEN_SHIFT	12
4594180bdb0Sdamien #define RT2860_MAX_PSDU_LEN8K		0
4604180bdb0Sdamien #define RT2860_MAX_PSDU_LEN16K		1
4614180bdb0Sdamien #define RT2860_MAX_PSDU_LEN32K		2
4624180bdb0Sdamien #define RT2860_MAX_PSDU_LEN64K		3
4634180bdb0Sdamien #define RT2860_MAX_MPDU_LEN_SHIFT	0
4644180bdb0Sdamien 
4654180bdb0Sdamien /* possible flags for registers BBP_CSR_CFG/H2M_BBPAGENT */
4664180bdb0Sdamien #define RT2860_BBP_RW_PARALLEL		(1 << 19)
4674180bdb0Sdamien #define RT2860_BBP_PAR_DUR_112_5	(1 << 18)
4684180bdb0Sdamien #define RT2860_BBP_CSR_KICK		(1 << 17)
4694180bdb0Sdamien #define RT2860_BBP_CSR_READ		(1 << 16)
4704180bdb0Sdamien #define RT2860_BBP_ADDR_SHIFT		8
4714180bdb0Sdamien #define RT2860_BBP_DATA_SHIFT		0
4724180bdb0Sdamien 
4734180bdb0Sdamien /* possible flags for register RF_CSR_CFG0 */
47461e87b28Sderaadt #define RT2860_RF_REG_CTRL		(1U << 31)
47561e87b28Sderaadt #define RT2860_RF_LE_SEL1		(1U << 30)
47661e87b28Sderaadt #define RT2860_RF_LE_STBY		(1U << 29)
4774180bdb0Sdamien #define RT2860_RF_REG_WIDTH_SHIFT	24
4784180bdb0Sdamien #define RT2860_RF_REG_0_SHIFT		0
4794180bdb0Sdamien 
4804180bdb0Sdamien /* possible flags for register RF_CSR_CFG1 */
4814180bdb0Sdamien #define RT2860_RF_DUR_5		(1 << 24)
4824180bdb0Sdamien #define RT2860_RF_REG_1_SHIFT	0
4834180bdb0Sdamien 
4844180bdb0Sdamien /* possible flags for register LED_CFG */
4854180bdb0Sdamien #define RT2860_LED_POL			(1 << 30)
4864180bdb0Sdamien #define RT2860_Y_LED_MODE_SHIFT		28
4874180bdb0Sdamien #define RT2860_G_LED_MODE_SHIFT		26
4884180bdb0Sdamien #define RT2860_R_LED_MODE_SHIFT		24
4894180bdb0Sdamien #define RT2860_LED_MODE_OFF		0
4904180bdb0Sdamien #define RT2860_LED_MODE_BLINK_TX	1
4914180bdb0Sdamien #define RT2860_LED_MODE_SLOW_BLINK	2
4924180bdb0Sdamien #define RT2860_LED_MODE_ON		3
4934180bdb0Sdamien #define RT2860_SLOW_BLK_TIME_SHIFT	16
4944180bdb0Sdamien #define RT2860_LED_OFF_TIME_SHIFT	8
4954180bdb0Sdamien #define RT2860_LED_ON_TIME_SHIFT	0
4964180bdb0Sdamien 
4974180bdb0Sdamien /* possible flags for register XIFS_TIME_CFG */
4984180bdb0Sdamien #define RT2860_BB_RXEND_EN		(1 << 29)
4994180bdb0Sdamien #define RT2860_EIFS_TIME_SHIFT		20
5004180bdb0Sdamien #define RT2860_OFDM_XIFS_TIME_SHIFT	16
5014180bdb0Sdamien #define RT2860_OFDM_SIFS_TIME_SHIFT	8
5024180bdb0Sdamien #define RT2860_CCK_SIFS_TIME_SHIFT	0
5034180bdb0Sdamien 
5044180bdb0Sdamien /* possible flags for register BKOFF_SLOT_CFG */
5054180bdb0Sdamien #define RT2860_CC_DELAY_TIME_SHIFT	8
5064180bdb0Sdamien #define RT2860_SLOT_TIME		0
5074180bdb0Sdamien 
5084180bdb0Sdamien /* possible flags for register NAV_TIME_CFG */
50961e87b28Sderaadt #define RT2860_NAV_UPD			(1U << 31)
5104180bdb0Sdamien #define RT2860_NAV_UPD_VAL_SHIFT	16
51161e87b28Sderaadt #define RT2860_NAV_CLR_EN		(1U << 15)
5124180bdb0Sdamien #define RT2860_NAV_TIMER_SHIFT		0
5134180bdb0Sdamien 
5144180bdb0Sdamien /* possible flags for register CH_TIME_CFG */
5154180bdb0Sdamien #define RT2860_EIFS_AS_CH_BUSY	(1 << 4)
5164180bdb0Sdamien #define RT2860_NAV_AS_CH_BUSY	(1 << 3)
5174180bdb0Sdamien #define RT2860_RX_AS_CH_BUSY	(1 << 2)
5184180bdb0Sdamien #define RT2860_TX_AS_CH_BUSY	(1 << 1)
5194180bdb0Sdamien #define RT2860_CH_STA_TIMER_EN	(1 << 0)
5204180bdb0Sdamien 
5214180bdb0Sdamien /* possible values for register BCN_TIME_CFG */
5224180bdb0Sdamien #define RT2860_TSF_INS_COMP_SHIFT	24
5234180bdb0Sdamien #define RT2860_BCN_TX_EN		(1 << 20)
5244180bdb0Sdamien #define RT2860_TBTT_TIMER_EN		(1 << 19)
5254180bdb0Sdamien #define RT2860_TSF_SYNC_MODE_SHIFT	17
5264180bdb0Sdamien #define RT2860_TSF_SYNC_MODE_DIS	0
5274180bdb0Sdamien #define RT2860_TSF_SYNC_MODE_STA	1
5284180bdb0Sdamien #define RT2860_TSF_SYNC_MODE_IBSS	2
5294180bdb0Sdamien #define RT2860_TSF_SYNC_MODE_HOSTAP	3
5304180bdb0Sdamien #define RT2860_TSF_TIMER_EN		(1 << 16)
5314180bdb0Sdamien #define RT2860_BCN_INTVAL_SHIFT		0
5324180bdb0Sdamien 
5334180bdb0Sdamien /* possible flags for register TBTT_SYNC_CFG */
5344180bdb0Sdamien #define RT2860_BCN_CWMIN_SHIFT		20
5354180bdb0Sdamien #define RT2860_BCN_AIFSN_SHIFT		16
5364180bdb0Sdamien #define RT2860_BCN_EXP_WIN_SHIFT	8
5374180bdb0Sdamien #define RT2860_TBTT_ADJUST_SHIFT	0
5384180bdb0Sdamien 
5394180bdb0Sdamien /* possible flags for register INT_TIMER_CFG */
5404180bdb0Sdamien #define RT2860_GP_TIMER_SHIFT		16
5414180bdb0Sdamien #define RT2860_PRE_TBTT_TIMER_SHIFT	0
5424180bdb0Sdamien 
5434180bdb0Sdamien /* possible flags for register INT_TIMER_EN */
5444180bdb0Sdamien #define RT2860_GP_TIMER_EN	(1 << 1)
5454180bdb0Sdamien #define RT2860_PRE_TBTT_INT_EN	(1 << 0)
5464180bdb0Sdamien 
5474180bdb0Sdamien /* possible flags for register MAC_STATUS_REG */
5484180bdb0Sdamien #define RT2860_RX_STATUS_BUSY	(1 << 1)
5494180bdb0Sdamien #define RT2860_TX_STATUS_BUSY	(1 << 0)
5504180bdb0Sdamien 
5514180bdb0Sdamien /* possible flags for register PWR_PIN_CFG */
5524180bdb0Sdamien #define RT2860_IO_ADDA_PD	(1 << 3)
5534180bdb0Sdamien #define RT2860_IO_PLL_PD	(1 << 2)
5544180bdb0Sdamien #define RT2860_IO_RA_PE		(1 << 1)
5554180bdb0Sdamien #define RT2860_IO_RF_PE		(1 << 0)
5564180bdb0Sdamien 
5574180bdb0Sdamien /* possible flags for register AUTO_WAKEUP_CFG */
5584180bdb0Sdamien #define RT2860_AUTO_WAKEUP_EN		(1 << 15)
5594180bdb0Sdamien #define RT2860_SLEEP_TBTT_NUM_SHIFT	8
5604180bdb0Sdamien #define RT2860_WAKEUP_LEAD_TIME_SHIFT	0
5614180bdb0Sdamien 
5624180bdb0Sdamien /* possible flags for register TX_PIN_CFG */
56361e87b28Sderaadt #define RT3593_LNA_PE_G2_POL	(1U << 31)
56461e87b28Sderaadt #define RT3593_LNA_PE_A2_POL	(1U << 30)
56561e87b28Sderaadt #define RT3593_LNA_PE_G2_EN	(1U << 29)
56661e87b28Sderaadt #define RT3593_LNA_PE_A2_EN	(1U << 28)
56765a39fb3Sdamien #define RT3593_LNA_PE2_EN	(RT3593_LNA_PE_A2_EN | RT3593_LNA_PE_G2_EN)
56861e87b28Sderaadt #define RT3593_PA_PE_G2_POL	(1U << 27)
56961e87b28Sderaadt #define RT3593_PA_PE_A2_POL	(1U << 26)
57061e87b28Sderaadt #define RT3593_PA_PE_G2_EN	(1U << 25)
57161e87b28Sderaadt #define RT3593_PA_PE_A2_EN	(1U << 24)
57261e87b28Sderaadt #define RT2860_TRSW_POL		(1U << 19)
57361e87b28Sderaadt #define RT2860_TRSW_EN		(1U << 18)
57461e87b28Sderaadt #define RT2860_RFTR_POL		(1U << 17)
57561e87b28Sderaadt #define RT2860_RFTR_EN		(1U << 16)
57661e87b28Sderaadt #define RT2860_LNA_PE_G1_POL	(1U << 15)
57761e87b28Sderaadt #define RT2860_LNA_PE_A1_POL	(1U << 14)
57861e87b28Sderaadt #define RT2860_LNA_PE_G0_POL	(1U << 13)
57961e87b28Sderaadt #define RT2860_LNA_PE_A0_POL	(1U << 12)
58061e87b28Sderaadt #define RT2860_LNA_PE_G1_EN	(1U << 11)
58161e87b28Sderaadt #define RT2860_LNA_PE_A1_EN	(1U << 10)
58265a39fb3Sdamien #define RT2860_LNA_PE1_EN	(RT2860_LNA_PE_A1_EN | RT2860_LNA_PE_G1_EN)
58361e87b28Sderaadt #define RT2860_LNA_PE_G0_EN	(1U <<  9)
58461e87b28Sderaadt #define RT2860_LNA_PE_A0_EN	(1U <<  8)
58565a39fb3Sdamien #define RT2860_LNA_PE0_EN	(RT2860_LNA_PE_A0_EN | RT2860_LNA_PE_G0_EN)
58661e87b28Sderaadt #define RT2860_PA_PE_G1_POL	(1U <<  7)
58761e87b28Sderaadt #define RT2860_PA_PE_A1_POL	(1U <<  6)
58861e87b28Sderaadt #define RT2860_PA_PE_G0_POL	(1U <<  5)
58961e87b28Sderaadt #define RT2860_PA_PE_A0_POL	(1U <<  4)
59061e87b28Sderaadt #define RT2860_PA_PE_G1_EN	(1U <<  3)
59161e87b28Sderaadt #define RT2860_PA_PE_A1_EN	(1U <<  2)
59261e87b28Sderaadt #define RT2860_PA_PE_G0_EN	(1U <<  1)
59361e87b28Sderaadt #define RT2860_PA_PE_A0_EN	(1U <<  0)
5944180bdb0Sdamien 
5954180bdb0Sdamien /* possible flags for register TX_BAND_CFG */
5964180bdb0Sdamien #define RT2860_5G_BAND_SEL_N	(1 << 2)
5974180bdb0Sdamien #define RT2860_5G_BAND_SEL_P	(1 << 1)
5984180bdb0Sdamien #define RT2860_TX_BAND_SEL	(1 << 0)
5994180bdb0Sdamien 
6004180bdb0Sdamien /* possible flags for register TX_SW_CFG0 */
6014180bdb0Sdamien #define RT2860_DLY_RFTR_EN_SHIFT	24
6024180bdb0Sdamien #define RT2860_DLY_TRSW_EN_SHIFT	16
6034180bdb0Sdamien #define RT2860_DLY_PAPE_EN_SHIFT	8
6044180bdb0Sdamien #define RT2860_DLY_TXPE_EN_SHIFT	0
6054180bdb0Sdamien 
6064180bdb0Sdamien /* possible flags for register TX_SW_CFG1 */
6074180bdb0Sdamien #define RT2860_DLY_RFTR_DIS_SHIFT	16
6084180bdb0Sdamien #define RT2860_DLY_TRSW_DIS_SHIFT	8
6094180bdb0Sdamien #define RT2860_DLY_PAPE_DIS SHIFT	0
6104180bdb0Sdamien 
6114180bdb0Sdamien /* possible flags for register TX_SW_CFG2 */
6124180bdb0Sdamien #define RT2860_DLY_LNA_EN_SHIFT		24
6134180bdb0Sdamien #define RT2860_DLY_LNA_DIS_SHIFT	16
6144180bdb0Sdamien #define RT2860_DLY_DAC_EN_SHIFT		8
6154180bdb0Sdamien #define RT2860_DLY_DAC_DIS_SHIFT	0
6164180bdb0Sdamien 
6174180bdb0Sdamien /* possible flags for register TXOP_THRES_CFG */
6184180bdb0Sdamien #define RT2860_TXOP_REM_THRES_SHIFT	24
6194180bdb0Sdamien #define RT2860_CF_END_THRES_SHIFT	16
6204180bdb0Sdamien #define RT2860_RDG_IN_THRES		8
6214180bdb0Sdamien #define RT2860_RDG_OUT_THRES		0
6224180bdb0Sdamien 
6234180bdb0Sdamien /* possible flags for register TXOP_CTRL_CFG */
6244180bdb0Sdamien #define RT2860_EXT_CW_MIN_SHIFT		16
6254180bdb0Sdamien #define RT2860_EXT_CCA_DLY_SHIFT	8
6264180bdb0Sdamien #define RT2860_EXT_CCA_EN		(1 << 7)
6274180bdb0Sdamien #define RT2860_LSIG_TXOP_EN		(1 << 6)
6284180bdb0Sdamien #define RT2860_TXOP_TRUN_EN_MIMOPS	(1 << 4)
6294180bdb0Sdamien #define RT2860_TXOP_TRUN_EN_TXOP	(1 << 3)
6304180bdb0Sdamien #define RT2860_TXOP_TRUN_EN_RATE	(1 << 2)
6314180bdb0Sdamien #define RT2860_TXOP_TRUN_EN_AC		(1 << 1)
6324180bdb0Sdamien #define RT2860_TXOP_TRUN_EN_TIMEOUT	(1 << 0)
6334180bdb0Sdamien 
6344180bdb0Sdamien /* possible flags for register TX_RTS_CFG */
6354180bdb0Sdamien #define RT2860_RTS_FBK_EN		(1 << 24)
6364180bdb0Sdamien #define RT2860_RTS_THRES_SHIFT		8
6374180bdb0Sdamien #define RT2860_RTS_RTY_LIMIT_SHIFT	0
6384180bdb0Sdamien 
6394180bdb0Sdamien /* possible flags for register TX_TIMEOUT_CFG */
6404180bdb0Sdamien #define RT2860_TXOP_TIMEOUT_SHIFT	16
6414180bdb0Sdamien #define RT2860_RX_ACK_TIMEOUT_SHIFT	8
6424180bdb0Sdamien #define RT2860_MPDU_LIFE_TIME_SHIFT	4
6434180bdb0Sdamien 
6444180bdb0Sdamien /* possible flags for register TX_RTY_CFG */
6454180bdb0Sdamien #define RT2860_TX_AUTOFB_EN		(1 << 30)
6464180bdb0Sdamien #define RT2860_AGG_RTY_MODE_TIMER	(1 << 29)
6474180bdb0Sdamien #define RT2860_NAG_RTY_MODE_TIMER	(1 << 28)
6484180bdb0Sdamien #define RT2860_LONG_RTY_THRES_SHIFT	16
6494180bdb0Sdamien #define RT2860_LONG_RTY_LIMIT_SHIFT	8
6504180bdb0Sdamien #define RT2860_SHORT_RTY_LIMIT_SHIFT	0
6514180bdb0Sdamien 
6524180bdb0Sdamien /* possible flags for register TX_LINK_CFG */
6534180bdb0Sdamien #define RT2860_REMOTE_MFS_SHIFT		24
6544180bdb0Sdamien #define RT2860_REMOTE_MFB_SHIFT		16
6554180bdb0Sdamien #define RT2860_TX_CFACK_EN		(1 << 12)
6564180bdb0Sdamien #define RT2860_TX_RDG_EN		(1 << 11)
6574180bdb0Sdamien #define RT2860_TX_MRQ_EN		(1 << 10)
6584180bdb0Sdamien #define RT2860_REMOTE_UMFS_EN		(1 <<  9)
6594180bdb0Sdamien #define RT2860_TX_MFB_EN		(1 <<  8)
6604180bdb0Sdamien #define RT2860_REMOTE_MFB_LT_SHIFT	0
6614180bdb0Sdamien 
6624180bdb0Sdamien /* possible flags for registers *_PROT_CFG */
6634180bdb0Sdamien #define RT2860_RTSTH_EN			(1 << 26)
6644180bdb0Sdamien #define RT2860_TXOP_ALLOW_GF40		(1 << 25)
6654180bdb0Sdamien #define RT2860_TXOP_ALLOW_GF20		(1 << 24)
6664180bdb0Sdamien #define RT2860_TXOP_ALLOW_MM40		(1 << 23)
6674180bdb0Sdamien #define RT2860_TXOP_ALLOW_MM20		(1 << 22)
6684180bdb0Sdamien #define RT2860_TXOP_ALLOW_OFDM		(1 << 21)
6694180bdb0Sdamien #define RT2860_TXOP_ALLOW_CCK		(1 << 20)
670d7ae8de0Sdamien #define RT2860_TXOP_ALLOW_ALL		(0x3f << 20)
671d7ae8de0Sdamien #define RT2860_PROT_NAV_SHORT		(1 << 18)
672d7ae8de0Sdamien #define RT2860_PROT_NAV_LONG		(2 << 18)
673d7ae8de0Sdamien #define RT2860_PROT_CTRL_RTS_CTS	(1 << 16)
674d7ae8de0Sdamien #define RT2860_PROT_CTRL_CTS		(2 << 16)
6754180bdb0Sdamien 
6764180bdb0Sdamien /* possible flags for registers EXP_{CTS,ACK}_TIME */
6774180bdb0Sdamien #define RT2860_EXP_OFDM_TIME_SHIFT	16
6784180bdb0Sdamien #define RT2860_EXP_CCK_TIME_SHIFT	0
6794180bdb0Sdamien 
6804180bdb0Sdamien /* possible flags for register RX_FILTR_CFG */
6814180bdb0Sdamien #define RT2860_DROP_CTRL_RSV	(1 << 16)
6824180bdb0Sdamien #define RT2860_DROP_BAR		(1 << 15)
6834180bdb0Sdamien #define RT2860_DROP_BA		(1 << 14)
6844180bdb0Sdamien #define RT2860_DROP_PSPOLL	(1 << 13)
6854180bdb0Sdamien #define RT2860_DROP_RTS		(1 << 12)
6864180bdb0Sdamien #define RT2860_DROP_CTS		(1 << 11)
6874180bdb0Sdamien #define RT2860_DROP_ACK		(1 << 10)
6884180bdb0Sdamien #define RT2860_DROP_CFEND	(1 <<  9)
6894180bdb0Sdamien #define RT2860_DROP_CFACK	(1 <<  8)
6904180bdb0Sdamien #define RT2860_DROP_DUPL	(1 <<  7)
6914180bdb0Sdamien #define RT2860_DROP_BC		(1 <<  6)
6924180bdb0Sdamien #define RT2860_DROP_MC		(1 <<  5)
6934180bdb0Sdamien #define RT2860_DROP_VER_ERR	(1 <<  4)
6944180bdb0Sdamien #define RT2860_DROP_NOT_MYBSS	(1 <<  3)
6954180bdb0Sdamien #define RT2860_DROP_UC_NOME	(1 <<  2)
6964180bdb0Sdamien #define RT2860_DROP_PHY_ERR	(1 <<  1)
6974180bdb0Sdamien #define RT2860_DROP_CRC_ERR	(1 <<  0)
6984180bdb0Sdamien 
6994180bdb0Sdamien /* possible flags for register AUTO_RSP_CFG */
7004180bdb0Sdamien #define RT2860_CTRL_PWR_BIT	(1 << 7)
7014180bdb0Sdamien #define RT2860_BAC_ACK_POLICY	(1 << 6)
7024180bdb0Sdamien #define RT2860_CCK_SHORT_EN	(1 << 4)
7034180bdb0Sdamien #define RT2860_CTS_40M_REF_EN	(1 << 3)
7044180bdb0Sdamien #define RT2860_CTS_40M_MODE_EN	(1 << 2)
7054180bdb0Sdamien #define RT2860_BAC_ACKPOLICY_EN	(1 << 1)
7064180bdb0Sdamien #define RT2860_AUTO_RSP_EN	(1 << 0)
7074180bdb0Sdamien 
7084180bdb0Sdamien /* possible flags for register SIFS_COST_CFG */
7094180bdb0Sdamien #define RT2860_OFDM_SIFS_COST_SHIFT	8
7104180bdb0Sdamien #define RT2860_CCK_SIFS_COST_SHIFT	0
7114180bdb0Sdamien 
7124180bdb0Sdamien /* possible flags for register TXOP_HLDR_ET */
7134180bdb0Sdamien #define RT2860_TXOP_ETM1_EN		(1 << 25)
7144180bdb0Sdamien #define RT2860_TXOP_ETM0_EN		(1 << 24)
7154180bdb0Sdamien #define RT2860_TXOP_ETM_THRES_SHIFT	16
7164180bdb0Sdamien #define RT2860_TXOP_ETO_EN		(1 <<  8)
7174180bdb0Sdamien #define RT2860_TXOP_ETO_THRES_SHIFT	1
7184180bdb0Sdamien #define RT2860_PER_RX_RST_EN		(1 <<  0)
7194180bdb0Sdamien 
7204180bdb0Sdamien /* possible flags for register TX_STAT_FIFO */
72169419907Sdamien #define RT2860_TXQ_MCS_SHIFT	16
7224180bdb0Sdamien #define RT2860_TXQ_WCID_SHIFT	8
7234180bdb0Sdamien #define RT2860_TXQ_ACKREQ	(1 << 7)
7244180bdb0Sdamien #define RT2860_TXQ_AGG		(1 << 6)
7254180bdb0Sdamien #define RT2860_TXQ_OK		(1 << 5)
7264180bdb0Sdamien #define RT2860_TXQ_PID_SHIFT	1
7274180bdb0Sdamien #define RT2860_TXQ_VLD		(1 << 0)
7284180bdb0Sdamien 
7294875e7bdSdamien /* possible flags for register WCID_ATTR */
7304875e7bdSdamien #define RT2860_MODE_NOSEC	0
7314875e7bdSdamien #define RT2860_MODE_WEP40	1
7324875e7bdSdamien #define RT2860_MODE_WEP104	2
7334875e7bdSdamien #define RT2860_MODE_TKIP	3
7344875e7bdSdamien #define RT2860_MODE_AES_CCMP	4
7354875e7bdSdamien #define RT2860_MODE_CKIP40	5
7364875e7bdSdamien #define RT2860_MODE_CKIP104	6
7374875e7bdSdamien #define RT2860_MODE_CKIP128	7
7384875e7bdSdamien #define RT2860_RX_PKEY_EN	(1 << 0)
7394875e7bdSdamien 
7404180bdb0Sdamien /* possible flags for register H2M_MAILBOX */
7414180bdb0Sdamien #define RT2860_H2M_BUSY		(1 << 24)
7424180bdb0Sdamien #define RT2860_TOKEN_NO_INTR	0xff
7434180bdb0Sdamien 
7444180bdb0Sdamien 
745a7baa4fdSdamien /* possible flags for MCU command RT2860_MCU_CMD_LEDS */
746a7baa4fdSdamien #define RT2860_LED_RADIO	(1 << 13)
747a7baa4fdSdamien #define RT2860_LED_LINK_2GHZ	(1 << 14)
748a7baa4fdSdamien #define RT2860_LED_LINK_5GHZ	(1 << 15)
749a7baa4fdSdamien 
750a7baa4fdSdamien 
751773b33c5Sdamien /* possible flags for RT3020 RF register 1 */
752773b33c5Sdamien #define RT3070_RF_BLOCK	(1 << 0)
753d80de052Sstsp #define RT3070_PLL_PD	(1 << 1)
754773b33c5Sdamien #define RT3070_RX0_PD	(1 << 2)
755773b33c5Sdamien #define RT3070_TX0_PD	(1 << 3)
756773b33c5Sdamien #define RT3070_RX1_PD	(1 << 4)
757773b33c5Sdamien #define RT3070_TX1_PD	(1 << 5)
758e0f789a5Sdamien #define RT3070_RX2_PD	(1 << 6)
759e0f789a5Sdamien #define RT3070_TX2_PD	(1 << 7)
760e0f789a5Sdamien 
761e0f789a5Sdamien /* possible flags for RT3020 RF register 7 */
762e0f789a5Sdamien #define RT3070_TUNE	(1 << 0)
763773b33c5Sdamien 
764773b33c5Sdamien /* possible flags for RT3020 RF register 15 */
765773b33c5Sdamien #define RT3070_TX_LO2	(1 << 3)
766773b33c5Sdamien 
767773b33c5Sdamien /* possible flags for RT3020 RF register 17 */
768773b33c5Sdamien #define RT3070_TX_LO1	(1 << 3)
769773b33c5Sdamien 
770773b33c5Sdamien /* possible flags for RT3020 RF register 20 */
771773b33c5Sdamien #define RT3070_RX_LO1	(1 << 3)
772773b33c5Sdamien 
773773b33c5Sdamien /* possible flags for RT3020 RF register 21 */
774773b33c5Sdamien #define RT3070_RX_LO2	(1 << 3)
775e0f789a5Sdamien #define RT3070_RX_CTB	(1 << 7)
776773b33c5Sdamien 
777e0f789a5Sdamien /* possible flags for RT3020 RF register 22 */
778e0f789a5Sdamien #define RT3070_BB_LOOPBACK	(1 << 0)
779e0f789a5Sdamien 
780e0f789a5Sdamien /* possible flags for RT3053 RF register 1 */
781e0f789a5Sdamien #define RT3593_VCO	(1 << 0)
782e0f789a5Sdamien 
783e0f789a5Sdamien /* possible flags for RT3053 RF register 2 */
784e0f789a5Sdamien #define RT3593_RESCAL	(1 << 7)
785e0f789a5Sdamien 
786e0f789a5Sdamien /* possible flags for RT3053 RF register 3 */
787e0f789a5Sdamien #define RT3593_VCOCAL	(1 << 7)
788e0f789a5Sdamien 
789e0f789a5Sdamien /* possible flags for RT3053 RF register 6 */
790e0f789a5Sdamien #define RT3593_VCO_IC	(1 << 6)
791e0f789a5Sdamien 
792d80de052Sstsp /* possible flags for RT3053 RF register 18 */
793d80de052Sstsp #define RT3593_AUTOTUNE_BYPASS	(1 << 6)
794d80de052Sstsp 
795e0f789a5Sdamien /* possible flags for RT3053 RF register 20 */
796e0f789a5Sdamien #define RT3593_LDO_PLL_VC_MASK	0x0e
797e0f789a5Sdamien #define RT3593_LDO_RF_VC_MASK	0xe0
798e0f789a5Sdamien 
799e0f789a5Sdamien /* possible flags for RT3053 RF register 22 */
800e0f789a5Sdamien #define RT3593_CP_IC_MASK	0xe0
801e0f789a5Sdamien #define RT3593_CP_IC_SHIFT	5
802e0f789a5Sdamien 
803d80de052Sstsp /* possible flags for RT5390 RF register 38. */
804d80de052Sstsp #define RT5390_RX_LO1	(1 << 5)
805d80de052Sstsp 
806d80de052Sstsp /* possible flags for RT5390 RF register 39. */
807d80de052Sstsp #define RT5390_RX_LO2	(1 << 7)
808d80de052Sstsp 
809067465feSstsp /* possible flags for RT5390 RF register 42 */
810067465feSstsp #define RT5390_RX_CTB	(1 << 6)
811067465feSstsp 
812e0f789a5Sdamien /* possible flags for RT3053 RF register 46 */
813e0f789a5Sdamien #define RT3593_RX_CTB	(1 << 5)
814e0f789a5Sdamien 
815d80de052Sstsp /* possible flags for RT3053 RF register 50 */
816d80de052Sstsp #define RT3593_TX_LO2	(1 << 4)
817d80de052Sstsp 
818d80de052Sstsp /* possible flags for RT3053 RF register 51 */
819d80de052Sstsp #define RT3593_TX_LO1	(1 << 4)
820d80de052Sstsp 
821d80de052Sstsp /* Possible flags for RT5390 BBP register 4. */
822d80de052Sstsp #define RT5390_MAC_IF_CTRL	(1 << 6)
823d80de052Sstsp 
824d80de052Sstsp /* possible flags for RT5390 BBP register 105. */
825d80de052Sstsp #define RT5390_MLD			(1 << 2)
826d80de052Sstsp #define RT5390_EN_SIG_MODULATION	(1 << 3)
827d80de052Sstsp 
828e0f789a5Sdamien #define RT3090_DEF_LNA	10
829773b33c5Sdamien 
830b93534efSdamien /* RT2860 TX descriptor */
8314180bdb0Sdamien struct rt2860_txd {
8324180bdb0Sdamien 	uint32_t	sdp0;		/* Segment Data Pointer 0 */
8334180bdb0Sdamien 	uint16_t	sdl1;		/* Segment Data Length 1 */
8344180bdb0Sdamien #define RT2860_TX_BURST	(1 << 15)
8354180bdb0Sdamien #define RT2860_TX_LS1	(1 << 14)	/* SDP1 is the last segment */
8364180bdb0Sdamien 
8374180bdb0Sdamien 	uint16_t	sdl0;		/* Segment Data Length 0 */
8384180bdb0Sdamien #define RT2860_TX_DDONE	(1 << 15)
8394180bdb0Sdamien #define RT2860_TX_LS0	(1 << 14)	/* SDP0 is the last segment */
8404180bdb0Sdamien 
8414180bdb0Sdamien 	uint32_t	sdp1;		/* Segment Data Pointer 1 */
8424180bdb0Sdamien 	uint8_t		reserved[3];
8434180bdb0Sdamien 	uint8_t		flags;
8444180bdb0Sdamien #define RT2860_TX_QSEL_SHIFT	1
8454180bdb0Sdamien #define RT2860_TX_QSEL_MGMT	(0 << 1)
8464180bdb0Sdamien #define RT2860_TX_QSEL_HCCA	(1 << 1)
8474180bdb0Sdamien #define RT2860_TX_QSEL_EDCA	(2 << 1)
8484180bdb0Sdamien #define RT2860_TX_WIV		(1 << 0)
8494180bdb0Sdamien } __packed;
8504180bdb0Sdamien 
851b93534efSdamien /* RT2870 TX descriptor */
852b93534efSdamien struct rt2870_txd {
853b93534efSdamien 	uint16_t	len;
854b93534efSdamien 	uint8_t		pad;
855b93534efSdamien 	uint8_t		flags;
856b93534efSdamien } __packed;
857b93534efSdamien 
8584180bdb0Sdamien /* TX Wireless Information */
8594180bdb0Sdamien struct rt2860_txwi {
8604180bdb0Sdamien 	uint8_t		flags;
8614180bdb0Sdamien #define RT2860_TX_MPDU_DSITY_SHIFT	5
8624180bdb0Sdamien #define RT2860_TX_AMPDU			(1 << 4)
8634180bdb0Sdamien #define RT2860_TX_TS			(1 << 3)
8644180bdb0Sdamien #define RT2860_TX_CFACK			(1 << 2)
8654180bdb0Sdamien #define RT2860_TX_MMPS			(1 << 1)
8664180bdb0Sdamien #define RT2860_TX_FRAG			(1 << 0)
8674180bdb0Sdamien 
8684180bdb0Sdamien 	uint8_t		txop;
8694180bdb0Sdamien #define RT2860_TX_TXOP_HT	0
8704180bdb0Sdamien #define RT2860_TX_TXOP_PIFS	1
8714180bdb0Sdamien #define RT2860_TX_TXOP_SIFS	2
8724180bdb0Sdamien #define RT2860_TX_TXOP_BACKOFF	3
8734180bdb0Sdamien 
8744180bdb0Sdamien 	uint16_t	phy;
8759faabf1fSdamien #define RT2860_PHY_MODE		0xc000
8769faabf1fSdamien #define RT2860_PHY_CCK		(0 << 14)
8779faabf1fSdamien #define RT2860_PHY_OFDM		(1 << 14)
8789faabf1fSdamien #define RT2860_PHY_HT		(2 << 14)
8799faabf1fSdamien #define RT2860_PHY_HT_GF	(3 << 14)
8809faabf1fSdamien #define RT2860_PHY_SGI		(1 << 8)
8819faabf1fSdamien #define RT2860_PHY_BW40		(1 << 7)
8829faabf1fSdamien #define RT2860_PHY_MCS		0x7f
8839faabf1fSdamien #define RT2860_PHY_SHPRE	(1 << 3)
8844180bdb0Sdamien 
8854180bdb0Sdamien 	uint8_t		xflags;
8864180bdb0Sdamien #define RT2860_TX_BAWINSIZE_SHIFT	2
8874180bdb0Sdamien #define RT2860_TX_NSEQ			(1 << 1)
8884180bdb0Sdamien #define RT2860_TX_ACK			(1 << 0)
8894180bdb0Sdamien 
8904180bdb0Sdamien 	uint8_t		wcid;	/* Wireless Client ID */
8914180bdb0Sdamien 	uint16_t	len;
8924180bdb0Sdamien #define RT2860_TX_PID_SHIFT	12
8934180bdb0Sdamien 
8944180bdb0Sdamien 	uint32_t	iv;
8954180bdb0Sdamien 	uint32_t	eiv;
8964180bdb0Sdamien } __packed;
8974180bdb0Sdamien 
898b93534efSdamien /* RT2860 RX descriptor */
8994180bdb0Sdamien struct rt2860_rxd {
9004180bdb0Sdamien 	uint32_t	sdp0;
9014180bdb0Sdamien 	uint16_t	sdl1;	/* unused */
9024180bdb0Sdamien 	uint16_t	sdl0;
9034180bdb0Sdamien #define RT2860_RX_DDONE	(1 << 15)
9044180bdb0Sdamien #define RT2860_RX_LS0	(1 << 14)
9054180bdb0Sdamien 
9064180bdb0Sdamien 	uint32_t	sdp1;	/* unused */
9074180bdb0Sdamien 	uint32_t	flags;
9084180bdb0Sdamien #define RT2860_RX_DEC		(1 << 16)
9094180bdb0Sdamien #define RT2860_RX_AMPDU		(1 << 15)
9104180bdb0Sdamien #define RT2860_RX_L2PAD		(1 << 14)
9114180bdb0Sdamien #define RT2860_RX_RSSI		(1 << 13)
9124180bdb0Sdamien #define RT2860_RX_HTC		(1 << 12)
9134180bdb0Sdamien #define RT2860_RX_AMSDU		(1 << 11)
9144180bdb0Sdamien #define RT2860_RX_MICERR	(1 << 10)
9154180bdb0Sdamien #define RT2860_RX_ICVERR	(1 <<  9)
9164180bdb0Sdamien #define RT2860_RX_CRCERR	(1 <<  8)
9174180bdb0Sdamien #define RT2860_RX_MYBSS		(1 <<  7)
9184180bdb0Sdamien #define RT2860_RX_BC		(1 <<  6)
9194180bdb0Sdamien #define RT2860_RX_MC		(1 <<  5)
9204180bdb0Sdamien #define RT2860_RX_UC2ME		(1 <<  4)
9214180bdb0Sdamien #define RT2860_RX_FRAG		(1 <<  3)
9224180bdb0Sdamien #define RT2860_RX_NULL		(1 <<  2)
9234180bdb0Sdamien #define RT2860_RX_DATA		(1 <<  1)
9244180bdb0Sdamien #define RT2860_RX_BA		(1 <<  0)
9254180bdb0Sdamien } __packed;
9264180bdb0Sdamien 
927b93534efSdamien /* RT2870 RX descriptor */
928b93534efSdamien struct rt2870_rxd {
929b93534efSdamien 	/* single 32-bit field */
930b93534efSdamien 	uint32_t	flags;
931b93534efSdamien } __packed;
932b93534efSdamien 
9334180bdb0Sdamien /* RX Wireless Information */
9344180bdb0Sdamien struct rt2860_rxwi {
9354180bdb0Sdamien 	uint8_t		wcid;
9364180bdb0Sdamien 	uint8_t		keyidx;
9374180bdb0Sdamien #define RT2860_RX_UDF_SHIFT	5
9384180bdb0Sdamien #define RT2860_RX_BSS_IDX_SHIFT	2
9394180bdb0Sdamien 
9404180bdb0Sdamien 	uint16_t	len;
9414180bdb0Sdamien #define RT2860_RX_TID_SHIFT	12
9424180bdb0Sdamien 
9434180bdb0Sdamien 	uint16_t	seq;
9444180bdb0Sdamien 	uint16_t	phy;
9454180bdb0Sdamien 	uint8_t		rssi[3];
9464180bdb0Sdamien 	uint8_t		reserved1;
9474180bdb0Sdamien 	uint8_t		snr[2];
9484180bdb0Sdamien 	uint16_t	reserved2;
9494180bdb0Sdamien } __packed;
9504180bdb0Sdamien 
951b93534efSdamien 
952b93534efSdamien /* first DMA segment contains TXWI + 802.11 header + 32-bit padding */
953b93534efSdamien #define RT2860_TXWI_DMASZ			\
954b93534efSdamien 	(sizeof (struct rt2860_txwi) +		\
955b93534efSdamien 	 sizeof (struct ieee80211_htframe) +	\
956b93534efSdamien 	 sizeof (uint16_t))
957b93534efSdamien 
958b93534efSdamien #define RT2860_RF1	0
959b93534efSdamien #define RT2860_RF2	2
960b93534efSdamien #define RT2860_RF3	1
961b93534efSdamien #define RT2860_RF4	3
9624180bdb0Sdamien 
963067465feSstsp #define RT2860_RF_2820	0x0001	/* 2T3R */
964067465feSstsp #define RT2860_RF_2850	0x0002	/* dual-band 2T3R */
965067465feSstsp #define RT2860_RF_2720	0x0003	/* 1T2R */
966067465feSstsp #define RT2860_RF_2750	0x0004	/* dual-band 1T2R */
967067465feSstsp #define RT3070_RF_3020	0x0005	/* 1T1R */
968067465feSstsp #define RT3070_RF_2020	0x0006	/* b/g */
969067465feSstsp #define RT3070_RF_3021	0x0007	/* 1T2R */
970067465feSstsp #define RT3070_RF_3022	0x0008	/* 2T2R */
971067465feSstsp #define RT3070_RF_3052	0x0009	/* dual-band 2T2R */
972067465feSstsp #define RT3070_RF_3320	0x000b	/* 1T1R */
973067465feSstsp #define RT3070_RF_3053	0x000d	/* dual-band 3T3R */
974d80de052Sstsp #define RT5592_RF_5592	0x000f	/* dual-band 2T2R */
975*44df374bSkevlo #define RT3290_RF_3290	0x3290	/* 1T1R */
976f2d819deSjsg #define RT5390_RF_5360	0x5360	/* 1T1R */
977d80de052Sstsp #define RT5390_RF_5370	0x5370	/* 1T1R */
978d80de052Sstsp #define RT5390_RF_5372	0x5372	/* 2T2R */
979067465feSstsp #define RT5390_RF_5390	0x5390	/* 1T1R */
980067465feSstsp #define RT5390_RF_5392	0x5392	/* 2T2R */
981b93534efSdamien 
982b93534efSdamien /* USB commands for RT2870 only */
983b93534efSdamien #define RT2870_RESET		1
984b93534efSdamien #define RT2870_WRITE_2		2
985b93534efSdamien #define RT2870_WRITE_REGION_1	6
986b93534efSdamien #define RT2870_READ_REGION_1	7
987b93534efSdamien #define RT2870_EEPROM_READ	9
9884180bdb0Sdamien 
9894180bdb0Sdamien #define RT2860_EEPROM_DELAY	1	/* minimum hold time (microsecond) */
9904180bdb0Sdamien 
991067465feSstsp #define RT2860_EEPROM_CHIPID		0x00
9924180bdb0Sdamien #define RT2860_EEPROM_VERSION		0x01
9934180bdb0Sdamien #define RT2860_EEPROM_MAC01		0x02
9944180bdb0Sdamien #define RT2860_EEPROM_MAC23		0x03
9954180bdb0Sdamien #define RT2860_EEPROM_MAC45		0x04
996696f393cSdamien #define RT2860_EEPROM_PCIE_PSLEVEL	0x11
997696f393cSdamien #define RT2860_EEPROM_REV		0x12
9984180bdb0Sdamien #define RT2860_EEPROM_ANTENNA		0x1a
9994180bdb0Sdamien #define RT2860_EEPROM_CONFIG		0x1b
10004180bdb0Sdamien #define RT2860_EEPROM_COUNTRY		0x1c
1001a7baa4fdSdamien #define RT2860_EEPROM_FREQ_LEDS		0x1d
1002a7baa4fdSdamien #define RT2860_EEPROM_LED1		0x1e
1003a7baa4fdSdamien #define RT2860_EEPROM_LED2		0x1f
1004a7baa4fdSdamien #define RT2860_EEPROM_LED3		0x20
10054180bdb0Sdamien #define RT2860_EEPROM_LNA		0x22
10064180bdb0Sdamien #define RT2860_EEPROM_RSSI1_2GHZ	0x23
10074180bdb0Sdamien #define RT2860_EEPROM_RSSI2_2GHZ	0x24
10084180bdb0Sdamien #define RT2860_EEPROM_RSSI1_5GHZ	0x25
10094180bdb0Sdamien #define RT2860_EEPROM_RSSI2_5GHZ	0x26
10104180bdb0Sdamien #define RT2860_EEPROM_DELTAPWR		0x28
10114180bdb0Sdamien #define RT2860_EEPROM_PWR2GHZ_BASE1	0x29
10124180bdb0Sdamien #define RT2860_EEPROM_PWR2GHZ_BASE2	0x30
10134180bdb0Sdamien #define RT2860_EEPROM_TSSI1_2GHZ	0x37
10144180bdb0Sdamien #define RT2860_EEPROM_TSSI2_2GHZ	0x38
10154180bdb0Sdamien #define RT2860_EEPROM_TSSI3_2GHZ	0x39
10164180bdb0Sdamien #define RT2860_EEPROM_TSSI4_2GHZ	0x3a
10174180bdb0Sdamien #define RT2860_EEPROM_TSSI5_2GHZ	0x3b
10184180bdb0Sdamien #define RT2860_EEPROM_PWR5GHZ_BASE1	0x3c
10194180bdb0Sdamien #define RT2860_EEPROM_PWR5GHZ_BASE2	0x53
10204180bdb0Sdamien #define RT2860_EEPROM_TSSI1_5GHZ	0x6a
10214180bdb0Sdamien #define RT2860_EEPROM_TSSI2_5GHZ	0x6b
10224180bdb0Sdamien #define RT2860_EEPROM_TSSI3_5GHZ	0x6c
10234180bdb0Sdamien #define RT2860_EEPROM_TSSI4_5GHZ	0x6d
10244180bdb0Sdamien #define RT2860_EEPROM_TSSI5_5GHZ	0x6e
10254180bdb0Sdamien #define RT2860_EEPROM_RPWR		0x6f
10264180bdb0Sdamien #define RT2860_EEPROM_BBP_BASE		0x78
1027f19591d0Sdamien #define RT3071_EEPROM_RF_BASE		0x82
10284180bdb0Sdamien 
1029d80de052Sstsp /* EEPROM registers for RT3593. */
1030d80de052Sstsp #define RT3593_EEPROM_FREQ_LEDS		0x21
1031d80de052Sstsp #define RT3593_EEPROM_FREQ		0x22
1032d80de052Sstsp #define RT3593_EEPROM_LED1		0x22
1033d80de052Sstsp #define RT3593_EEPROM_LED2		0x23
1034d80de052Sstsp #define RT3593_EEPROM_LED3		0x24
1035d80de052Sstsp #define RT3593_EEPROM_LNA		0x26
1036d80de052Sstsp #define RT3593_EEPROM_LNA_5GHZ		0x27
1037d80de052Sstsp #define RT3593_EEPROM_RSSI1_2GHZ	0x28
1038d80de052Sstsp #define RT3593_EEPROM_RSSI2_2GHZ	0x29
1039d80de052Sstsp #define RT3593_EEPROM_RSSI1_5GHZ	0x2a
1040d80de052Sstsp #define RT3593_EEPROM_RSSI2_5GHZ	0x2b
1041d80de052Sstsp #define RT3593_EEPROM_PWR2GHZ_BASE1	0x30
1042d80de052Sstsp #define RT3593_EEPROM_PWR2GHZ_BASE2	0x37
1043d80de052Sstsp #define RT3593_EEPROM_PWR2GHZ_BASE3	0x3e
1044d80de052Sstsp #define RT3593_EEPROM_PWR5GHZ_BASE1	0x4b
1045d80de052Sstsp #define RT3593_EEPROM_PWR5GHZ_BASE2	0x65
1046d80de052Sstsp #define RT3593_EEPROM_PWR5GHZ_BASE3	0x7f
1047d80de052Sstsp 
1048d80de052Sstsp /*
1049d80de052Sstsp  * EEPROM IQ calibration.
1050d80de052Sstsp  */
1051d80de052Sstsp #define RT5390_EEPROM_IQ_GAIN_CAL_TX0_2GHZ			0x130
1052d80de052Sstsp #define RT5390_EEPROM_IQ_PHASE_CAL_TX0_2GHZ			0x131
1053d80de052Sstsp #define RT5390_EEPROM_IQ_GAIN_CAL_TX1_2GHZ			0x133
1054d80de052Sstsp #define RT5390_EEPROM_IQ_PHASE_CAL_TX1_2GHZ			0x134
1055d80de052Sstsp #define RT5390_EEPROM_RF_IQ_COMPENSATION_CTL			0x13c
1056d80de052Sstsp #define RT5390_EEPROM_RF_IQ_IMBALANCE_COMPENSATION_CTL		0x13d
1057d80de052Sstsp #define RT5390_EEPROM_IQ_GAIN_CAL_TX0_CH36_TO_CH64_5GHZ		0x144
1058d80de052Sstsp #define RT5390_EEPROM_IQ_PHASE_CAL_TX0_CH36_TO_CH64_5GHZ	0x145
1059d80de052Sstsp #define RT5390_EEPROM_IQ_GAIN_CAL_TX0_CH100_TO_CH138_5GHZ	0x146
1060d80de052Sstsp #define RT5390_EEPROM_IQ_PHASE_CAL_TX0_CH100_TO_CH138_5GHZ	0x147
1061d80de052Sstsp #define RT5390_EEPROM_IQ_GAIN_CAL_TX0_CH140_TO_CH165_5GHZ	0x148
1062d80de052Sstsp #define RT5390_EEPROM_IQ_PHASE_CAL_TX0_CH140_TO_CH165_5GHZ	0x149
1063d80de052Sstsp #define RT5390_EEPROM_IQ_GAIN_CAL_TX1_CH36_TO_CH64_5GHZ		0x14a
1064d80de052Sstsp #define RT5390_EEPROM_IQ_PHASE_CAL_TX1_CH36_TO_CH64_5GHZ	0x14b
1065d80de052Sstsp #define RT5390_EEPROM_IQ_GAIN_CAL_TX1_CH100_TO_CH138_5GHZ	0x14c
1066d80de052Sstsp #define RT5390_EEPROM_IQ_PHASE_CAL_TX1_CH100_TO_CH138_5GHZ	0x14d
1067d80de052Sstsp #define RT5390_EEPROM_IQ_GAIN_CAL_TX1_CH140_TO_CH165_5GHZ	0x14e
1068d80de052Sstsp #define RT5390_EEPROM_IQ_PHASE_CAL_TX1_CH140_TO_CH165_5GHZ	0x14f
1069d80de052Sstsp 
1070608d72eaSdamien #define RT2860_RIDX_CCK1	 0
1071bc07060eSdamien #define RT2860_RIDX_CCK11	 3
1072608d72eaSdamien #define RT2860_RIDX_OFDM6	 4
1073608d72eaSdamien #define RT2860_RIDX_MAX		11
1074608d72eaSdamien static const struct rt2860_rate {
1075608d72eaSdamien 	uint8_t		rate;
1076608d72eaSdamien 	uint8_t		mcs;
1077608d72eaSdamien 	enum		ieee80211_phytype phy;
1078eb3870d9Sdamien 	uint8_t		ctl_ridx;
1079608d72eaSdamien 	uint16_t	sp_ack_dur;
1080608d72eaSdamien 	uint16_t	lp_ack_dur;
1081608d72eaSdamien } rt2860_rates[] = {
1082970cc175Sdamien 	{   2, 0, IEEE80211_T_DS,   0, 314, 314 },
1083970cc175Sdamien 	{   4, 1, IEEE80211_T_DS,   1, 258, 162 },
1084970cc175Sdamien 	{  11, 2, IEEE80211_T_DS,   2, 223, 127 },
1085970cc175Sdamien 	{  22, 3, IEEE80211_T_DS,   3, 213, 117 },
1086970cc175Sdamien 	{  12, 0, IEEE80211_T_OFDM, 4,  60,  60 },
1087970cc175Sdamien 	{  18, 1, IEEE80211_T_OFDM, 4,  52,  52 },
1088970cc175Sdamien 	{  24, 2, IEEE80211_T_OFDM, 6,  48,  48 },
1089970cc175Sdamien 	{  36, 3, IEEE80211_T_OFDM, 6,  44,  44 },
1090970cc175Sdamien 	{  48, 4, IEEE80211_T_OFDM, 8,  44,  44 },
1091970cc175Sdamien 	{  72, 5, IEEE80211_T_OFDM, 8,  40,  40 },
1092970cc175Sdamien 	{  96, 6, IEEE80211_T_OFDM, 8,  40,  40 },
1093970cc175Sdamien 	{ 108, 7, IEEE80211_T_OFDM, 8,  40,  40 }
1094608d72eaSdamien };
10954180bdb0Sdamien 
10964180bdb0Sdamien /*
10974180bdb0Sdamien  * Control and status registers access macros.
10984180bdb0Sdamien  */
10997b812c60Sdamien #define RAL_READ(sc, reg)						\
11007b812c60Sdamien 	bus_space_read_4((sc)->sc_st, (sc)->sc_sh, (reg))
11014180bdb0Sdamien 
11027b812c60Sdamien #define RAL_WRITE(sc, reg, val)						\
11037b812c60Sdamien 	bus_space_write_4((sc)->sc_st, (sc)->sc_sh, (reg), (val))
11047b812c60Sdamien 
11057b812c60Sdamien #define RAL_BARRIER_WRITE(sc)						\
11067b812c60Sdamien 	bus_space_barrier((sc)->sc_st, (sc)->sc_sh, 0, 0x1800,		\
11077b812c60Sdamien 	    BUS_SPACE_BARRIER_WRITE)
11087b812c60Sdamien 
11097b812c60Sdamien #define RAL_BARRIER_READ_WRITE(sc)					\
11107b812c60Sdamien 	bus_space_barrier((sc)->sc_st, (sc)->sc_sh, 0, 0x1800,		\
11117b812c60Sdamien 	    BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE)
11124180bdb0Sdamien 
11134180bdb0Sdamien #define RAL_WRITE_REGION_1(sc, offset, datap, count)			\
11144180bdb0Sdamien 	bus_space_write_region_1((sc)->sc_st, (sc)->sc_sh, (offset),	\
11154180bdb0Sdamien 	    (datap), (count))
11164180bdb0Sdamien 
11174180bdb0Sdamien #define RAL_SET_REGION_4(sc, offset, val, count)			\
11184180bdb0Sdamien 	bus_space_set_region_4((sc)->sc_st, (sc)->sc_sh, (offset),	\
11194180bdb0Sdamien 	    (val), (count))
11204180bdb0Sdamien 
11214180bdb0Sdamien /*
11227b812c60Sdamien  * EEPROM access macro.
11234180bdb0Sdamien  */
11244180bdb0Sdamien #define RT2860_EEPROM_CTL(sc, val) do {					\
11254180bdb0Sdamien 	RAL_WRITE((sc), RT2860_PCI_EECTRL, (val));			\
11267b812c60Sdamien 	RAL_BARRIER_READ_WRITE((sc));					\
11274180bdb0Sdamien 	DELAY(RT2860_EEPROM_DELAY);					\
11284180bdb0Sdamien } while (/* CONSTCOND */0)
11294180bdb0Sdamien 
11304180bdb0Sdamien /*
11314180bdb0Sdamien  * Default values for MAC registers; values taken from the reference driver.
11324180bdb0Sdamien  */
11334180bdb0Sdamien #define RT2860_DEF_MAC					\
11344180bdb0Sdamien 	{ RT2860_BCN_OFFSET0,		0xf8f0e8e0 },	\
1135067465feSstsp 	{ RT2860_BCN_OFFSET1,		0x6f77d0c8 },	\
11364180bdb0Sdamien 	{ RT2860_LEGACY_BASIC_RATE,	0x0000013f },	\
11374180bdb0Sdamien 	{ RT2860_HT_BASIC_RATE,		0x00008003 },	\
11384180bdb0Sdamien 	{ RT2860_MAC_SYS_CTRL,		0x00000000 },	\
1139067465feSstsp 	{ RT2860_RX_FILTR_CFG,		0x00017f97 },	\
11404180bdb0Sdamien 	{ RT2860_BKOFF_SLOT_CFG,	0x00000209 },	\
1141608d72eaSdamien 	{ RT2860_TX_SW_CFG0,		0x00000000 },	\
11424180bdb0Sdamien 	{ RT2860_TX_SW_CFG1,		0x00080606 },	\
11434180bdb0Sdamien 	{ RT2860_TX_LINK_CFG,		0x00001020 },	\
11441f09e8c5Sdamien 	{ RT2860_TX_TIMEOUT_CFG,	0x000a2090 },	\
1145067465feSstsp 	{ RT2860_MAX_LEN_CFG,		0x00001f00 },	\
11464180bdb0Sdamien 	{ RT2860_LED_CFG,		0x7f031e46 },	\
11474180bdb0Sdamien 	{ RT2860_WMM_AIFSN_CFG,		0x00002273 },	\
11484180bdb0Sdamien 	{ RT2860_WMM_CWMIN_CFG,		0x00002344 },	\
11494180bdb0Sdamien 	{ RT2860_WMM_CWMAX_CFG,		0x000034aa },	\
11504180bdb0Sdamien 	{ RT2860_MAX_PCNT,		0x1f3fbf9f },	\
11511f09e8c5Sdamien 	{ RT2860_TX_RTY_CFG,		0x47d01f0f },	\
11524180bdb0Sdamien 	{ RT2860_AUTO_RSP_CFG,		0x00000013 },	\
11534180bdb0Sdamien 	{ RT2860_CCK_PROT_CFG,		0x05740003 },	\
11544180bdb0Sdamien 	{ RT2860_OFDM_PROT_CFG,		0x05740003 },	\
11554180bdb0Sdamien 	{ RT2860_GF20_PROT_CFG,		0x01744004 },	\
11564180bdb0Sdamien 	{ RT2860_GF40_PROT_CFG,		0x03f44084 },	\
11574180bdb0Sdamien 	{ RT2860_MM20_PROT_CFG,		0x01744004 },	\
11584180bdb0Sdamien 	{ RT2860_MM40_PROT_CFG,		0x03f54084 },	\
1159e03e709cSdamien 	{ RT2860_TXOP_CTRL_CFG,		0x0000583f },	\
1160e03e709cSdamien 	{ RT2860_TXOP_HLDR_ET,		0x00000002 },	\
11614180bdb0Sdamien 	{ RT2860_TX_RTS_CFG,		0x00092b20 },	\
1162696f393cSdamien 	{ RT2860_EXP_ACK_TIME,		0x002400ca },	\
1163696f393cSdamien 	{ RT2860_XIFS_TIME_CFG,		0x33a41010 },	\
1164696f393cSdamien 	{ RT2860_PWR_PIN_CFG,		0x00000003 }
11654180bdb0Sdamien 
1166b93534efSdamien /* XXX only a few registers differ from above, try to merge? */
1167b93534efSdamien #define RT2870_DEF_MAC					\
1168b93534efSdamien 	{ RT2860_BCN_OFFSET0,		0xf8f0e8e0 },	\
1169b93534efSdamien 	{ RT2860_LEGACY_BASIC_RATE,	0x0000013f },	\
1170b93534efSdamien 	{ RT2860_HT_BASIC_RATE,		0x00008003 },	\
1171b93534efSdamien 	{ RT2860_MAC_SYS_CTRL,		0x00000000 },	\
1172b93534efSdamien 	{ RT2860_BKOFF_SLOT_CFG,	0x00000209 },	\
1173b93534efSdamien 	{ RT2860_TX_SW_CFG0,		0x00000000 },	\
1174b93534efSdamien 	{ RT2860_TX_SW_CFG1,		0x00080606 },	\
1175b93534efSdamien 	{ RT2860_TX_LINK_CFG,		0x00001020 },	\
1176b93534efSdamien 	{ RT2860_TX_TIMEOUT_CFG,	0x000a2090 },	\
1177b93534efSdamien 	{ RT2860_LED_CFG,		0x7f031e46 },	\
1178b93534efSdamien 	{ RT2860_WMM_AIFSN_CFG,		0x00002273 },	\
1179b93534efSdamien 	{ RT2860_WMM_CWMIN_CFG,		0x00002344 },	\
1180b93534efSdamien 	{ RT2860_WMM_CWMAX_CFG,		0x000034aa },	\
1181b93534efSdamien 	{ RT2860_MAX_PCNT,		0x1f3fbf9f },	\
1182b93534efSdamien 	{ RT2860_TX_RTY_CFG,		0x47d01f0f },	\
1183b93534efSdamien 	{ RT2860_AUTO_RSP_CFG,		0x00000013 },	\
1184b93534efSdamien 	{ RT2860_CCK_PROT_CFG,		0x05740003 },	\
1185b93534efSdamien 	{ RT2860_OFDM_PROT_CFG,		0x05740003 },	\
1186b93534efSdamien 	{ RT2860_PBF_CFG,		0x00f40006 },	\
1187b93534efSdamien 	{ RT2860_WPDMA_GLO_CFG,		0x00000030 },	\
1188b93534efSdamien 	{ RT2860_GF20_PROT_CFG,		0x01744004 },	\
1189b93534efSdamien 	{ RT2860_GF40_PROT_CFG,		0x03f44084 },	\
1190b93534efSdamien 	{ RT2860_MM20_PROT_CFG,		0x01744004 },	\
1191b93534efSdamien 	{ RT2860_MM40_PROT_CFG,		0x03f44084 },	\
1192b93534efSdamien 	{ RT2860_TXOP_CTRL_CFG,		0x0000583f },	\
1193b93534efSdamien 	{ RT2860_TXOP_HLDR_ET,		0x00000002 },	\
1194b93534efSdamien 	{ RT2860_TX_RTS_CFG,		0x00092b20 },	\
1195b93534efSdamien 	{ RT2860_EXP_ACK_TIME,		0x002400ca },	\
1196b93534efSdamien 	{ RT2860_XIFS_TIME_CFG,		0x33a41010 },	\
1197b93534efSdamien 	{ RT2860_PWR_PIN_CFG,		0x00000003 }
1198b93534efSdamien 
11994180bdb0Sdamien /*
12004180bdb0Sdamien  * Default values for BBP registers; values taken from the reference driver.
12014180bdb0Sdamien  */
12024180bdb0Sdamien #define RT2860_DEF_BBP	\
12034180bdb0Sdamien 	{  65, 0x2c },	\
12044180bdb0Sdamien 	{  66, 0x38 },	\
1205067465feSstsp 	{  68, 0x0b },	\
12064180bdb0Sdamien 	{  69, 0x12 },	\
1207608d72eaSdamien 	{  70, 0x0a },	\
12084180bdb0Sdamien 	{  73, 0x10 },	\
12094180bdb0Sdamien 	{  81, 0x37 },	\
12104180bdb0Sdamien 	{  82, 0x62 },	\
12114180bdb0Sdamien 	{  83, 0x6a },	\
1212608d72eaSdamien 	{  84, 0x99 },	\
1213696f393cSdamien 	{  86, 0x00 },	\
1214696f393cSdamien 	{  91, 0x04 },	\
1215696f393cSdamien 	{  92, 0x00 },	\
1216608d72eaSdamien 	{ 103, 0x00 },	\
12178c7b068dSdamien 	{ 105, 0x05 },	\
12188c7b068dSdamien 	{ 106, 0x35 }
12194180bdb0Sdamien 
1220*44df374bSkevlo #define RT3290_DEF_BBP	\
1221*44df374bSkevlo 	{  31, 0x08 },	\
1222*44df374bSkevlo 	{  68, 0x0b },	\
1223*44df374bSkevlo 	{  73, 0x13 },	\
1224*44df374bSkevlo 	{  75, 0x46 },	\
1225*44df374bSkevlo 	{  76, 0x28 },	\
1226*44df374bSkevlo 	{  77, 0x59 },	\
1227*44df374bSkevlo 	{  82, 0x62 },	\
1228*44df374bSkevlo 	{  83, 0x7a },	\
1229*44df374bSkevlo 	{  84, 0x9a },	\
1230*44df374bSkevlo 	{  86, 0x38 },	\
1231*44df374bSkevlo 	{  91, 0x04 },	\
1232*44df374bSkevlo 	{ 103, 0xc0 },	\
1233*44df374bSkevlo 	{ 104, 0x92 },	\
1234*44df374bSkevlo 	{ 105, 0x3c },	\
1235*44df374bSkevlo 	{ 106, 0x03 },	\
1236*44df374bSkevlo 	{ 128, 0x12 }
1237*44df374bSkevlo 
1238d80de052Sstsp #define RT5390_DEF_BBP	\
1239d80de052Sstsp 	{  31, 0x08 },	\
1240d80de052Sstsp 	{  65, 0x2c },	\
1241d80de052Sstsp 	{  66, 0x38 },	\
1242d80de052Sstsp 	{  68, 0x0b },	\
1243d80de052Sstsp 	{  69, 0x0d },	\
1244d80de052Sstsp 	{  70, 0x06 },	\
1245d80de052Sstsp 	{  73, 0x13 },	\
1246d80de052Sstsp 	{  75, 0x46 },	\
1247d80de052Sstsp 	{  76, 0x28 },	\
1248d80de052Sstsp 	{  77, 0x59 },	\
1249d80de052Sstsp 	{  81, 0x37 },	\
1250d80de052Sstsp 	{  82, 0x62 },	\
1251d80de052Sstsp 	{  83, 0x7a },	\
1252d80de052Sstsp 	{  84, 0x9a },	\
1253d80de052Sstsp 	{  86, 0x38 },	\
1254d80de052Sstsp 	{  91, 0x04 },	\
1255d80de052Sstsp 	{  92, 0x02 },	\
1256d80de052Sstsp 	{ 103, 0xc0 },	\
1257d80de052Sstsp 	{ 104, 0x92 },	\
1258d80de052Sstsp 	{ 105, 0x3c },	\
1259d80de052Sstsp 	{ 106, 0x03 },	\
1260d80de052Sstsp 	{ 128, 0x12 }
1261d80de052Sstsp 
1262d80de052Sstsp #define RT5592_DEF_BBP	\
1263d80de052Sstsp 	{  20, 0x06 },	\
1264d80de052Sstsp 	{  31, 0x08 },	\
1265d80de052Sstsp 	{  65, 0x2c },	\
1266d80de052Sstsp 	{  66, 0x38 },	\
1267d80de052Sstsp 	{  68, 0xdd },	\
1268d80de052Sstsp 	{  69, 0x1a },	\
1269d80de052Sstsp 	{  70, 0x05 },	\
1270d80de052Sstsp 	{  73, 0x13 },	\
1271d80de052Sstsp 	{  74, 0x0f },	\
1272d80de052Sstsp 	{  75, 0x4f },	\
1273d80de052Sstsp 	{  76, 0x28 },	\
1274d80de052Sstsp 	{  77, 0x59 },	\
1275d80de052Sstsp 	{  81, 0x37 },	\
1276d80de052Sstsp 	{  82, 0x62 },	\
1277d80de052Sstsp 	{  83, 0x6a },	\
1278d80de052Sstsp 	{  84, 0x9a },	\
1279d80de052Sstsp 	{  86, 0x38 },	\
1280d80de052Sstsp 	{  88, 0x90 },	\
1281d80de052Sstsp 	{  91, 0x04 },	\
1282d80de052Sstsp 	{  92, 0x02 },	\
1283d80de052Sstsp 	{  95, 0x9a },	\
1284d80de052Sstsp 	{  98, 0x12 },	\
1285d80de052Sstsp 	{ 103, 0xc0 },	\
1286d80de052Sstsp 	{ 104, 0x92 },	\
1287d80de052Sstsp 	{ 105, 0x3c },	\
1288d80de052Sstsp 	{ 106, 0x35 },	\
1289d80de052Sstsp 	{ 128, 0x12 },	\
1290d80de052Sstsp 	{ 134, 0xd0 },	\
1291d80de052Sstsp 	{ 135, 0xf6 },	\
1292d80de052Sstsp 	{ 137, 0x0f }
1293d80de052Sstsp 
12944180bdb0Sdamien /*
12954180bdb0Sdamien  * Default settings for RF registers; values derived from the reference driver.
12964180bdb0Sdamien  */
12974180bdb0Sdamien #define RT2860_RF2850						\
12984180bdb0Sdamien 	{   1, 0x100bb3, 0x1301e1, 0x05a014, 0x001402 },	\
12994180bdb0Sdamien 	{   2, 0x100bb3, 0x1301e1, 0x05a014, 0x001407 },	\
13004180bdb0Sdamien 	{   3, 0x100bb3, 0x1301e2, 0x05a014, 0x001402 },	\
13014180bdb0Sdamien 	{   4, 0x100bb3, 0x1301e2, 0x05a014, 0x001407 },	\
13024180bdb0Sdamien 	{   5, 0x100bb3, 0x1301e3, 0x05a014, 0x001402 },	\
13034180bdb0Sdamien 	{   6, 0x100bb3, 0x1301e3, 0x05a014, 0x001407 },	\
13044180bdb0Sdamien 	{   7, 0x100bb3, 0x1301e4, 0x05a014, 0x001402 },	\
13054180bdb0Sdamien 	{   8, 0x100bb3, 0x1301e4, 0x05a014, 0x001407 },	\
13064180bdb0Sdamien 	{   9, 0x100bb3, 0x1301e5, 0x05a014, 0x001402 },	\
13074180bdb0Sdamien 	{  10, 0x100bb3, 0x1301e5, 0x05a014, 0x001407 },	\
13084180bdb0Sdamien 	{  11, 0x100bb3, 0x1301e6, 0x05a014, 0x001402 },	\
13094180bdb0Sdamien 	{  12, 0x100bb3, 0x1301e6, 0x05a014, 0x001407 },	\
13104180bdb0Sdamien 	{  13, 0x100bb3, 0x1301e7, 0x05a014, 0x001402 },	\
13114180bdb0Sdamien 	{  14, 0x100bb3, 0x1301e8, 0x05a014, 0x001404 },	\
13124180bdb0Sdamien 	{  36, 0x100bb3, 0x130266, 0x056014, 0x001408 },	\
13134180bdb0Sdamien 	{  38, 0x100bb3, 0x130267, 0x056014, 0x001404 },	\
13144180bdb0Sdamien 	{  40, 0x100bb2, 0x1301a0, 0x056014, 0x001400 },	\
13154180bdb0Sdamien 	{  44, 0x100bb2, 0x1301a0, 0x056014, 0x001408 },	\
13164180bdb0Sdamien 	{  46, 0x100bb2, 0x1301a1, 0x056014, 0x001402 },	\
13174180bdb0Sdamien 	{  48, 0x100bb2, 0x1301a1, 0x056014, 0x001406 },	\
13184180bdb0Sdamien 	{  52, 0x100bb2, 0x1301a2, 0x056014, 0x001404 },	\
13194180bdb0Sdamien 	{  54, 0x100bb2, 0x1301a2, 0x056014, 0x001408 },	\
13204180bdb0Sdamien 	{  56, 0x100bb2, 0x1301a3, 0x056014, 0x001402 },	\
13214180bdb0Sdamien 	{  60, 0x100bb2, 0x1301a4, 0x056014, 0x001400 },	\
13224180bdb0Sdamien 	{  62, 0x100bb2, 0x1301a4, 0x056014, 0x001404 },	\
13234180bdb0Sdamien 	{  64, 0x100bb2, 0x1301a4, 0x056014, 0x001408 },	\
13244180bdb0Sdamien 	{ 100, 0x100bb2, 0x1301ac, 0x05e014, 0x001400 },	\
1325b93534efSdamien 	{ 102, 0x100bb2, 0x1701ac, 0x15e014, 0x001404 },	\
1326b93534efSdamien 	{ 104, 0x100bb2, 0x1701ac, 0x15e014, 0x001408 },	\
1327b93534efSdamien 	{ 108, 0x100bb3, 0x17028c, 0x15e014, 0x001404 },	\
13284180bdb0Sdamien 	{ 110, 0x100bb3, 0x13028d, 0x05e014, 0x001400 },	\
13294180bdb0Sdamien 	{ 112, 0x100bb3, 0x13028d, 0x05e014, 0x001406 },	\
13304180bdb0Sdamien 	{ 116, 0x100bb3, 0x13028e, 0x05e014, 0x001408 },	\
13314180bdb0Sdamien 	{ 118, 0x100bb3, 0x13028f, 0x05e014, 0x001404 },	\
13324180bdb0Sdamien 	{ 120, 0x100bb1, 0x1300e0, 0x05e014, 0x001400 },	\
13334180bdb0Sdamien 	{ 124, 0x100bb1, 0x1300e0, 0x05e014, 0x001404 },	\
13341f09e8c5Sdamien 	{ 126, 0x100bb1, 0x1300e0, 0x05e014, 0x001406 },	\
13354180bdb0Sdamien 	{ 128, 0x100bb1, 0x1300e0, 0x05e014, 0x001408 },	\
13364180bdb0Sdamien 	{ 132, 0x100bb1, 0x1300e1, 0x05e014, 0x001402 },	\
13374180bdb0Sdamien 	{ 134, 0x100bb1, 0x1300e1, 0x05e014, 0x001404 },	\
13384180bdb0Sdamien 	{ 136, 0x100bb1, 0x1300e1, 0x05e014, 0x001406 },	\
13394180bdb0Sdamien 	{ 140, 0x100bb1, 0x1300e2, 0x05e014, 0x001400 },	\
13404180bdb0Sdamien 	{ 149, 0x100bb1, 0x1300e2, 0x05e014, 0x001409 },	\
13414180bdb0Sdamien 	{ 151, 0x100bb1, 0x1300e3, 0x05e014, 0x001401 },	\
13424180bdb0Sdamien 	{ 153, 0x100bb1, 0x1300e3, 0x05e014, 0x001403 },	\
13434180bdb0Sdamien 	{ 157, 0x100bb1, 0x1300e3, 0x05e014, 0x001407 },	\
13444180bdb0Sdamien 	{ 159, 0x100bb1, 0x1300e3, 0x05e014, 0x001409 },	\
13454180bdb0Sdamien 	{ 161, 0x100bb1, 0x1300e4, 0x05e014, 0x001401 },	\
13468e0b65aaSdamien 	{ 165, 0x100bb1, 0x1300e4, 0x05e014, 0x001405 },	\
13478e0b65aaSdamien 	{ 167, 0x100bb1, 0x1300f4, 0x05e014, 0x001407 },	\
13488e0b65aaSdamien 	{ 169, 0x100bb1, 0x1300f4, 0x05e014, 0x001409 },	\
13498e0b65aaSdamien 	{ 171, 0x100bb1, 0x1300f5, 0x05e014, 0x001401 },	\
13508e0b65aaSdamien 	{ 173, 0x100bb1, 0x1300f5, 0x05e014, 0x001403 }
1351b93534efSdamien 
13528bab76d8Sdamien #define RT3070_RF3052		\
13538bab76d8Sdamien 	{ 0xf1, 2,  2 },	\
13548bab76d8Sdamien 	{ 0xf1, 2,  7 },	\
13558bab76d8Sdamien 	{ 0xf2, 2,  2 },	\
13568bab76d8Sdamien 	{ 0xf2, 2,  7 },	\
13578bab76d8Sdamien 	{ 0xf3, 2,  2 },	\
13588bab76d8Sdamien 	{ 0xf3, 2,  7 },	\
13598bab76d8Sdamien 	{ 0xf4, 2,  2 },	\
13608bab76d8Sdamien 	{ 0xf4, 2,  7 },	\
13618bab76d8Sdamien 	{ 0xf5, 2,  2 },	\
13628bab76d8Sdamien 	{ 0xf5, 2,  7 },	\
13638bab76d8Sdamien 	{ 0xf6, 2,  2 },	\
13648bab76d8Sdamien 	{ 0xf6, 2,  7 },	\
13658bab76d8Sdamien 	{ 0xf7, 2,  2 },	\
13668bab76d8Sdamien 	{ 0xf8, 2,  4 },	\
13678bab76d8Sdamien 	{ 0x56, 0,  4 },	\
13688bab76d8Sdamien 	{ 0x56, 0,  6 },	\
13698bab76d8Sdamien 	{ 0x56, 0,  8 },	\
13708bab76d8Sdamien 	{ 0x57, 0,  0 },	\
13718bab76d8Sdamien 	{ 0x57, 0,  2 },	\
13728bab76d8Sdamien 	{ 0x57, 0,  4 },	\
13738bab76d8Sdamien 	{ 0x57, 0,  8 },	\
13748bab76d8Sdamien 	{ 0x57, 0, 10 },	\
13758bab76d8Sdamien 	{ 0x58, 0,  0 },	\
13768bab76d8Sdamien 	{ 0x58, 0,  4 },	\
13778bab76d8Sdamien 	{ 0x58, 0,  6 },	\
13788bab76d8Sdamien 	{ 0x58, 0,  8 },	\
13798bab76d8Sdamien 	{ 0x5b, 0,  8 },	\
13808bab76d8Sdamien 	{ 0x5b, 0, 10 },	\
13818bab76d8Sdamien 	{ 0x5c, 0,  0 },	\
13828bab76d8Sdamien 	{ 0x5c, 0,  4 },	\
13838bab76d8Sdamien 	{ 0x5c, 0,  6 },	\
13848bab76d8Sdamien 	{ 0x5c, 0,  8 },	\
13858bab76d8Sdamien 	{ 0x5d, 0,  0 },	\
13868bab76d8Sdamien 	{ 0x5d, 0,  2 },	\
13878bab76d8Sdamien 	{ 0x5d, 0,  4 },	\
13888bab76d8Sdamien 	{ 0x5d, 0,  8 },	\
13898bab76d8Sdamien 	{ 0x5d, 0, 10 },	\
13908bab76d8Sdamien 	{ 0x5e, 0,  0 },	\
13918bab76d8Sdamien 	{ 0x5e, 0,  4 },	\
13928bab76d8Sdamien 	{ 0x5e, 0,  6 },	\
13938bab76d8Sdamien 	{ 0x5e, 0,  8 },	\
13948bab76d8Sdamien 	{ 0x5f, 0,  0 },	\
13958bab76d8Sdamien 	{ 0x5f, 0,  9 },	\
13968bab76d8Sdamien 	{ 0x5f, 0, 11 },	\
13978bab76d8Sdamien 	{ 0x60, 0,  1 },	\
13988bab76d8Sdamien 	{ 0x60, 0,  5 },	\
13998bab76d8Sdamien 	{ 0x60, 0,  7 },	\
14008bab76d8Sdamien 	{ 0x60, 0,  9 },	\
14018bab76d8Sdamien 	{ 0x61, 0,  1 },	\
14028bab76d8Sdamien 	{ 0x61, 0,  3 },	\
14038bab76d8Sdamien 	{ 0x61, 0,  5 },	\
14048bab76d8Sdamien 	{ 0x61, 0,  7 },	\
14058bab76d8Sdamien 	{ 0x61, 0,  9 }
1406b93534efSdamien 
1407d80de052Sstsp #define RT5592_RF5592_20MHZ	\
1408d80de052Sstsp 	{ 0x1e2,  4, 10, 3 },	\
1409d80de052Sstsp 	{ 0x1e3,  4, 10, 3 },	\
1410d80de052Sstsp 	{ 0x1e4,  4, 10, 3 },	\
1411d80de052Sstsp 	{ 0x1e5,  4, 10, 3 },	\
1412d80de052Sstsp 	{ 0x1e6,  4, 10, 3 },	\
1413d80de052Sstsp 	{ 0x1e7,  4, 10, 3 },	\
1414d80de052Sstsp 	{ 0x1e8,  4, 10, 3 },	\
1415d80de052Sstsp 	{ 0x1e9,  4, 10, 3 },	\
1416d80de052Sstsp 	{ 0x1ea,  4, 10, 3 },	\
1417d80de052Sstsp 	{ 0x1eb,  4, 10, 3 },	\
1418d80de052Sstsp 	{ 0x1ec,  4, 10, 3 },	\
1419d80de052Sstsp 	{ 0x1ed,  4, 10, 3 },	\
1420d80de052Sstsp 	{ 0x1ee,  4, 10, 3 },	\
1421d80de052Sstsp 	{ 0x1f0,  8, 10, 3 },	\
1422d80de052Sstsp 	{  0xac,  8, 12, 1 },	\
1423d80de052Sstsp 	{  0xad,  0, 12, 1 },	\
1424d80de052Sstsp 	{  0xad,  4, 12, 1 },	\
1425d80de052Sstsp 	{  0xae,  0, 12, 1 },	\
1426d80de052Sstsp 	{  0xae,  4, 12, 1 },	\
1427d80de052Sstsp 	{  0xae,  8, 12, 1 },	\
1428d80de052Sstsp 	{  0xaf,  4, 12, 1 },	\
1429d80de052Sstsp 	{  0xaf,  8, 12, 1 },	\
1430d80de052Sstsp 	{  0xb0,  0, 12, 1 },	\
1431d80de052Sstsp 	{  0xb0,  8, 12, 1 },	\
1432d80de052Sstsp 	{  0xb1,  0, 12, 1 },	\
1433d80de052Sstsp 	{  0xb1,  4, 12, 1 },	\
1434d80de052Sstsp 	{  0xb7,  4, 12, 1 },	\
1435d80de052Sstsp 	{  0xb7,  8, 12, 1 },	\
1436d80de052Sstsp 	{  0xb8,  0, 12, 1 },	\
1437d80de052Sstsp 	{  0xb8,  8, 12, 1 },	\
1438d80de052Sstsp 	{  0xb9,  0, 12, 1 },	\
1439d80de052Sstsp 	{  0xb9,  4, 12, 1 },	\
1440d80de052Sstsp 	{  0xba,  0, 12, 1 },	\
1441d80de052Sstsp 	{  0xba,  4, 12, 1 },	\
1442d80de052Sstsp 	{  0xba,  8, 12, 1 },	\
1443d80de052Sstsp 	{  0xbb,  4, 12, 1 },	\
1444d80de052Sstsp 	{  0xbb,  8, 12, 1 },	\
1445d80de052Sstsp 	{  0xbc,  0, 12, 1 },	\
1446d80de052Sstsp 	{  0xbc,  8, 12, 1 },	\
1447d80de052Sstsp 	{  0xbd,  0, 12, 1 },	\
1448d80de052Sstsp 	{  0xbd,  4, 12, 1 },	\
1449d80de052Sstsp 	{  0xbe,  0, 12, 1 },	\
1450d80de052Sstsp 	{  0xbf,  6, 12, 1 },	\
1451d80de052Sstsp 	{  0xbf, 10, 12, 1 },	\
1452d80de052Sstsp 	{  0xc0,  2, 12, 1 },	\
1453d80de052Sstsp 	{  0xc0, 10, 12, 1 },	\
1454d80de052Sstsp 	{  0xc1,  2, 12, 1 },	\
1455d80de052Sstsp 	{  0xc1,  6, 12, 1 },	\
1456d80de052Sstsp 	{  0xc2,  2, 12, 1 },	\
1457d80de052Sstsp 	{  0xa4,  0, 12, 1 },	\
1458d80de052Sstsp 	{  0xa4,  4, 12, 1 },	\
1459d80de052Sstsp 	{  0xa5,  8, 12, 1 },	\
1460d80de052Sstsp 	{  0xa6,  0, 12, 1 }
1461d80de052Sstsp 
1462d80de052Sstsp #define RT5592_RF5592_40MHZ	\
1463d80de052Sstsp 	{ 0xf1,  2, 10, 3 },	\
1464d80de052Sstsp 	{ 0xf1,  7, 10, 3 },	\
1465d80de052Sstsp 	{ 0xf2,  2, 10, 3 },	\
1466d80de052Sstsp 	{ 0xf2,  7, 10, 3 },	\
1467d80de052Sstsp 	{ 0xf3,  2, 10, 3 },	\
1468d80de052Sstsp 	{ 0xf3,  7, 10, 3 },	\
1469d80de052Sstsp 	{ 0xf4,  2, 10, 3 },	\
1470d80de052Sstsp 	{ 0xf4,  7, 10, 3 },	\
1471d80de052Sstsp 	{ 0xf5,  2, 10, 3 },	\
1472d80de052Sstsp 	{ 0xf5,  7, 10, 3 },	\
1473d80de052Sstsp 	{ 0xf6,  2, 10, 3 },	\
1474d80de052Sstsp 	{ 0xf6,  7, 10, 3 },	\
1475d80de052Sstsp 	{ 0xf7,  2, 10, 3 },	\
1476d80de052Sstsp 	{ 0xf8,  4, 10, 3 },	\
1477d80de052Sstsp 	{ 0x56,  4, 12, 1 },	\
1478d80de052Sstsp 	{ 0x56,  6, 12, 1 },	\
1479d80de052Sstsp 	{ 0x56,  8, 12, 1 },	\
1480d80de052Sstsp 	{ 0x57,  0, 12, 1 },	\
1481d80de052Sstsp 	{ 0x57,  2, 12, 1 },	\
1482d80de052Sstsp 	{ 0x57,  4, 12, 1 },	\
1483d80de052Sstsp 	{ 0x57,  8, 12, 1 },	\
1484d80de052Sstsp 	{ 0x57, 10, 12, 1 },	\
1485d80de052Sstsp 	{ 0x58,  0, 12, 1 },	\
1486d80de052Sstsp 	{ 0x58,  4, 12, 1 },	\
1487d80de052Sstsp 	{ 0x58,  6, 12, 1 },	\
1488d80de052Sstsp 	{ 0x58,  8, 12, 1 },	\
1489d80de052Sstsp 	{ 0x5b,  8, 12, 1 },	\
1490d80de052Sstsp 	{ 0x5b, 10, 12, 1 },	\
1491d80de052Sstsp 	{ 0x5c,  0, 12, 1 },	\
1492d80de052Sstsp 	{ 0x5c,  4, 12, 1 },	\
1493d80de052Sstsp 	{ 0x5c,  6, 12, 1 },	\
1494d80de052Sstsp 	{ 0x5c,  8, 12, 1 },	\
1495d80de052Sstsp 	{ 0x5d,  0, 12, 1 },	\
1496d80de052Sstsp 	{ 0x5d,  2, 12, 1 },	\
1497d80de052Sstsp 	{ 0x5d,  4, 12, 1 },	\
1498d80de052Sstsp 	{ 0x5d,  8, 12, 1 },	\
1499d80de052Sstsp 	{ 0x5d, 10, 12, 1 },	\
1500d80de052Sstsp 	{ 0x5e,  0, 12, 1 },	\
1501d80de052Sstsp 	{ 0x5e,  4, 12, 1 },	\
1502d80de052Sstsp 	{ 0x5e,  6, 12, 1 },	\
1503d80de052Sstsp 	{ 0x5e,  8, 12, 1 },	\
1504d80de052Sstsp 	{ 0x5f,  0, 12, 1 },	\
1505d80de052Sstsp 	{ 0x5f,  9, 12, 1 },	\
1506d80de052Sstsp 	{ 0x5f, 11, 12, 1 },	\
1507d80de052Sstsp 	{ 0x60,  1, 12, 1 },	\
1508d80de052Sstsp 	{ 0x60,  5, 12, 1 },	\
1509d80de052Sstsp 	{ 0x60,  7, 12, 1 },	\
1510d80de052Sstsp 	{ 0x60,  9, 12, 1 },	\
1511d80de052Sstsp 	{ 0x61,  1, 12, 1 },	\
1512d80de052Sstsp 	{ 0x52,  0, 12, 1 },	\
1513d80de052Sstsp 	{ 0x52,  4, 12, 1 },	\
1514d80de052Sstsp 	{ 0x52,  8, 12, 1 },	\
1515d80de052Sstsp 	{ 0x53,  0, 12, 1 }
1516d80de052Sstsp 
1517b93534efSdamien #define RT3070_DEF_RF	\
1518b93534efSdamien 	{  4, 0x40 },	\
1519b93534efSdamien 	{  5, 0x03 },	\
1520b93534efSdamien 	{  6, 0x02 },	\
1521067465feSstsp 	{  7, 0x60 },	\
1522b93534efSdamien 	{  9, 0x0f },	\
1523b93534efSdamien 	{ 10, 0x41 },	\
1524b93534efSdamien 	{ 11, 0x21 },	\
1525b93534efSdamien 	{ 12, 0x7b },	\
1526b93534efSdamien 	{ 14, 0x90 },	\
1527b93534efSdamien 	{ 15, 0x58 },	\
1528b93534efSdamien 	{ 16, 0xb3 },	\
1529b93534efSdamien 	{ 17, 0x92 },	\
1530b93534efSdamien 	{ 18, 0x2c },	\
1531b93534efSdamien 	{ 19, 0x02 },	\
1532b93534efSdamien 	{ 20, 0xba },	\
1533b93534efSdamien 	{ 21, 0xdb },	\
1534b93534efSdamien 	{ 24, 0x16 },	\
1535b93534efSdamien 	{ 25, 0x01 },	\
1536b93534efSdamien 	{ 29, 0x1f }
15378bab76d8Sdamien 
1538*44df374bSkevlo #define RT3290_DEF_RF	\
1539*44df374bSkevlo 	{  1, 0x0f },	\
1540*44df374bSkevlo 	{  2, 0x80 },	\
1541*44df374bSkevlo 	{  3, 0x08 },	\
1542*44df374bSkevlo 	{  4, 0x00 },	\
1543*44df374bSkevlo 	{  6, 0xa0 },	\
1544*44df374bSkevlo 	{  8, 0xf3 },	\
1545*44df374bSkevlo 	{  9, 0x02 },	\
1546*44df374bSkevlo 	{ 10, 0x53 },	\
1547*44df374bSkevlo 	{ 11, 0x4a },	\
1548*44df374bSkevlo 	{ 12, 0x46 },	\
1549*44df374bSkevlo 	{ 13, 0x9f },	\
1550*44df374bSkevlo 	{ 18, 0x03 },	\
1551*44df374bSkevlo 	{ 22, 0x20 },	\
1552*44df374bSkevlo 	{ 25, 0x80 },	\
1553*44df374bSkevlo 	{ 27, 0x09 },	\
1554*44df374bSkevlo 	{ 29, 0x10 },	\
1555*44df374bSkevlo 	{ 30, 0x10 },	\
1556*44df374bSkevlo 	{ 31, 0x80 },	\
1557*44df374bSkevlo 	{ 32, 0x80 },	\
1558*44df374bSkevlo 	{ 33, 0x00 },	\
1559*44df374bSkevlo 	{ 34, 0x05 },	\
1560*44df374bSkevlo 	{ 35, 0x12 },	\
1561*44df374bSkevlo 	{ 36, 0x00 },	\
1562*44df374bSkevlo 	{ 38, 0x85 },	\
1563*44df374bSkevlo 	{ 39, 0x1b },	\
1564*44df374bSkevlo 	{ 40, 0x0b },	\
1565*44df374bSkevlo 	{ 41, 0xbb },	\
1566*44df374bSkevlo 	{ 42, 0xd5 },	\
1567*44df374bSkevlo 	{ 43, 0x7b },	\
1568*44df374bSkevlo 	{ 44, 0x0e },	\
1569*44df374bSkevlo 	{ 45, 0xa2 },	\
1570*44df374bSkevlo 	{ 46, 0x73 },	\
1571*44df374bSkevlo 	{ 47, 0x00 },	\
1572*44df374bSkevlo 	{ 48, 0x10 },	\
1573*44df374bSkevlo 	{ 49, 0x98 },	\
1574*44df374bSkevlo 	{ 52, 0x38 },	\
1575*44df374bSkevlo 	{ 53, 0x00 },	\
1576*44df374bSkevlo 	{ 54, 0x78 },	\
1577*44df374bSkevlo 	{ 55, 0x43 },	\
1578*44df374bSkevlo 	{ 56, 0x02 },	\
1579*44df374bSkevlo 	{ 57, 0x80 },	\
1580*44df374bSkevlo 	{ 58, 0x7f },	\
1581*44df374bSkevlo 	{ 59, 0x09 },	\
1582*44df374bSkevlo 	{ 60, 0x45 },	\
1583*44df374bSkevlo 	{ 61, 0xc1 }
1584*44df374bSkevlo 
15858bab76d8Sdamien #define RT3572_DEF_RF	\
15868bab76d8Sdamien 	{  0, 0x70 },	\
15878bab76d8Sdamien 	{  1, 0x81 },	\
15888bab76d8Sdamien 	{  2, 0xf1 },	\
15898bab76d8Sdamien 	{  3, 0x02 },	\
15908bab76d8Sdamien 	{  4, 0x4c },	\
15918bab76d8Sdamien 	{  5, 0x05 },	\
15928bab76d8Sdamien 	{  6, 0x4a },	\
15938bab76d8Sdamien 	{  7, 0xd8 },	\
15948bab76d8Sdamien 	{  9, 0xc3 },	\
15958bab76d8Sdamien 	{ 10, 0xf1 },	\
15968bab76d8Sdamien 	{ 11, 0xb9 },	\
15978bab76d8Sdamien 	{ 12, 0x70 },	\
15988bab76d8Sdamien 	{ 13, 0x65 },	\
15998bab76d8Sdamien 	{ 14, 0xa0 },	\
16008bab76d8Sdamien 	{ 15, 0x53 },	\
16018bab76d8Sdamien 	{ 16, 0x4c },	\
16028bab76d8Sdamien 	{ 17, 0x23 },	\
16038bab76d8Sdamien 	{ 18, 0xac },	\
16048bab76d8Sdamien 	{ 19, 0x93 },	\
16058bab76d8Sdamien 	{ 20, 0xb3 },	\
16068bab76d8Sdamien 	{ 21, 0xd0 },	\
16078bab76d8Sdamien 	{ 22, 0x00 },  	\
16088bab76d8Sdamien 	{ 23, 0x3c },	\
16098bab76d8Sdamien 	{ 24, 0x16 },	\
16108bab76d8Sdamien 	{ 25, 0x15 },	\
16118bab76d8Sdamien 	{ 26, 0x85 },	\
16128bab76d8Sdamien 	{ 27, 0x00 },	\
16138bab76d8Sdamien 	{ 28, 0x00 },	\
16148bab76d8Sdamien 	{ 29, 0x9b },	\
16158bab76d8Sdamien 	{ 30, 0x09 },	\
16168bab76d8Sdamien 	{ 31, 0x10 }
1617d80de052Sstsp 
1618d80de052Sstsp #define RT3593_DEF_RF	\
1619d80de052Sstsp 	{  1, 0x03 },	\
1620d80de052Sstsp 	{  3, 0x80 },	\
1621d80de052Sstsp 	{  5, 0x00 },	\
1622d80de052Sstsp 	{  6, 0x40 },	\
1623d80de052Sstsp 	{  8, 0xf1 },	\
1624d80de052Sstsp 	{  9, 0x02 },	\
1625d80de052Sstsp 	{ 10, 0xd3 },	\
1626d80de052Sstsp 	{ 11, 0x40 },	\
1627d80de052Sstsp 	{ 12, 0x4e },	\
1628d80de052Sstsp 	{ 13, 0x12 },	\
1629d80de052Sstsp 	{ 18, 0x40 },	\
1630d80de052Sstsp 	{ 22, 0x20 },	\
1631d80de052Sstsp 	{ 30, 0x10 },	\
1632d80de052Sstsp 	{ 31, 0x80 },	\
1633d80de052Sstsp 	{ 32, 0x78 },	\
1634d80de052Sstsp 	{ 33, 0x3b },	\
1635d80de052Sstsp 	{ 34, 0x3c },	\
1636d80de052Sstsp 	{ 35, 0xe0 },	\
1637d80de052Sstsp 	{ 38, 0x86 },	\
1638d80de052Sstsp 	{ 39, 0x23 },	\
1639d80de052Sstsp 	{ 44, 0xd3 },	\
1640d80de052Sstsp 	{ 45, 0xbb },	\
1641d80de052Sstsp 	{ 46, 0x60 },	\
1642d80de052Sstsp 	{ 49, 0x81 },	\
1643d80de052Sstsp 	{ 50, 0x86 },	\
1644d80de052Sstsp 	{ 51, 0x75 },	\
1645d80de052Sstsp 	{ 52, 0x45 },	\
1646d80de052Sstsp 	{ 53, 0x18 },	\
1647d80de052Sstsp 	{ 54, 0x18 },	\
1648d80de052Sstsp 	{ 55, 0x18 },	\
1649d80de052Sstsp 	{ 56, 0xdb },	\
1650d80de052Sstsp 	{ 57, 0x6e }
1651d80de052Sstsp 
1652d80de052Sstsp #define RT5390_DEF_RF	\
1653d80de052Sstsp 	{  1, 0x0f },	\
1654d80de052Sstsp 	{  2, 0x80 },	\
1655d80de052Sstsp 	{  3, 0x88 },	\
1656d80de052Sstsp 	{  5, 0x10 },	\
1657d80de052Sstsp 	{  6, 0xa0 },	\
1658d80de052Sstsp 	{  7, 0x00 },	\
1659d80de052Sstsp 	{ 10, 0x53 },	\
1660d80de052Sstsp 	{ 11, 0x4a },	\
1661d80de052Sstsp 	{ 12, 0x46 },	\
1662d80de052Sstsp 	{ 13, 0x9f },	\
1663d80de052Sstsp 	{ 14, 0x00 },	\
1664d80de052Sstsp 	{ 15, 0x00 },	\
1665d80de052Sstsp 	{ 16, 0x00 },	\
1666d80de052Sstsp 	{ 18, 0x03 },	\
1667d80de052Sstsp 	{ 19, 0x00 },	\
1668d80de052Sstsp 	{ 20, 0x00 },	\
1669d80de052Sstsp 	{ 21, 0x00 },	\
1670d80de052Sstsp 	{ 22, 0x20 },  	\
1671d80de052Sstsp 	{ 23, 0x00 },	\
1672d80de052Sstsp 	{ 24, 0x00 },	\
1673d80de052Sstsp 	{ 25, 0xc0 },	\
1674d80de052Sstsp 	{ 26, 0x00 },	\
1675d80de052Sstsp 	{ 27, 0x09 },	\
1676d80de052Sstsp 	{ 28, 0x00 },	\
1677d80de052Sstsp 	{ 29, 0x10 },	\
1678d80de052Sstsp 	{ 30, 0x10 },	\
1679d80de052Sstsp 	{ 31, 0x80 },	\
1680d80de052Sstsp 	{ 32, 0x80 },	\
1681d80de052Sstsp 	{ 33, 0x00 },	\
1682d80de052Sstsp 	{ 34, 0x07 },	\
1683d80de052Sstsp 	{ 35, 0x12 },	\
1684d80de052Sstsp 	{ 36, 0x00 },	\
1685d80de052Sstsp 	{ 37, 0x08 },	\
1686d80de052Sstsp 	{ 38, 0x85 },	\
1687d80de052Sstsp 	{ 39, 0x1b },	\
1688d80de052Sstsp 	{ 40, 0x0b },	\
1689d80de052Sstsp 	{ 41, 0xbb },	\
1690d80de052Sstsp 	{ 42, 0xd2 },	\
1691d80de052Sstsp 	{ 43, 0x9a },	\
1692d80de052Sstsp 	{ 44, 0x0e },	\
1693d80de052Sstsp 	{ 45, 0xa2 },	\
1694d80de052Sstsp 	{ 46, 0x7b },	\
1695d80de052Sstsp 	{ 47, 0x00 },	\
1696d80de052Sstsp 	{ 48, 0x10 },	\
1697d80de052Sstsp 	{ 49, 0x94 },	\
1698d80de052Sstsp 	{ 52, 0x38 },	\
1699d80de052Sstsp 	{ 53, 0x84 },	\
1700d80de052Sstsp 	{ 54, 0x78 },	\
1701d80de052Sstsp 	{ 55, 0x44 },	\
1702d80de052Sstsp 	{ 56, 0x22 },	\
1703d80de052Sstsp 	{ 57, 0x80 },	\
1704d80de052Sstsp 	{ 58, 0x7f },	\
1705d80de052Sstsp 	{ 59, 0x8f },	\
1706d80de052Sstsp 	{ 60, 0x45 },	\
1707d80de052Sstsp 	{ 61, 0xdd },	\
1708d80de052Sstsp 	{ 62, 0x00 },	\
1709d80de052Sstsp 	{ 63, 0x00 }
1710d80de052Sstsp 
1711d80de052Sstsp #define RT5392_DEF_RF	\
1712d80de052Sstsp 	{  1, 0x17 },	\
1713d80de052Sstsp 	{  3, 0x88 },	\
1714d80de052Sstsp 	{  5, 0x10 },	\
1715d80de052Sstsp 	{  6, 0xe0 },	\
1716d80de052Sstsp 	{  7, 0x00 },	\
1717d80de052Sstsp 	{ 10, 0x53 },	\
1718d80de052Sstsp 	{ 11, 0x4a },	\
1719d80de052Sstsp 	{ 12, 0x46 },	\
1720d80de052Sstsp 	{ 13, 0x9f },	\
1721d80de052Sstsp 	{ 14, 0x00 },	\
1722d80de052Sstsp 	{ 15, 0x00 },	\
1723d80de052Sstsp 	{ 16, 0x00 },	\
1724d80de052Sstsp 	{ 18, 0x03 },	\
1725d80de052Sstsp 	{ 19, 0x4d },	\
1726d80de052Sstsp 	{ 20, 0x00 },	\
1727d80de052Sstsp 	{ 21, 0x8d },	\
1728d80de052Sstsp 	{ 22, 0x20 },  	\
1729d80de052Sstsp 	{ 23, 0x0b },	\
1730d80de052Sstsp 	{ 24, 0x44 },	\
1731d80de052Sstsp 	{ 25, 0x80 },	\
1732d80de052Sstsp 	{ 26, 0x82 },	\
1733d80de052Sstsp 	{ 27, 0x09 },	\
1734d80de052Sstsp 	{ 28, 0x00 },	\
1735d80de052Sstsp 	{ 29, 0x10 },	\
1736d80de052Sstsp 	{ 30, 0x10 },	\
1737d80de052Sstsp 	{ 31, 0x80 },	\
1738d80de052Sstsp 	{ 32, 0x20 },	\
1739d80de052Sstsp 	{ 33, 0xc0 },	\
1740d80de052Sstsp 	{ 34, 0x07 },	\
1741d80de052Sstsp 	{ 35, 0x12 },	\
1742d80de052Sstsp 	{ 36, 0x00 },	\
1743d80de052Sstsp 	{ 37, 0x08 },	\
1744d80de052Sstsp 	{ 38, 0x89 },	\
1745d80de052Sstsp 	{ 39, 0x1b },	\
1746d80de052Sstsp 	{ 40, 0x0f },	\
1747d80de052Sstsp 	{ 41, 0xbb },	\
1748d80de052Sstsp 	{ 42, 0xd5 },	\
1749d80de052Sstsp 	{ 43, 0x9b },	\
1750d80de052Sstsp 	{ 44, 0x0e },	\
1751d80de052Sstsp 	{ 45, 0xa2 },	\
1752d80de052Sstsp 	{ 46, 0x73 },	\
1753d80de052Sstsp 	{ 47, 0x0c },	\
1754d80de052Sstsp 	{ 48, 0x10 },	\
1755d80de052Sstsp 	{ 49, 0x94 },	\
1756d80de052Sstsp 	{ 50, 0x94 },	\
1757d80de052Sstsp 	{ 51, 0x3a },	\
1758d80de052Sstsp 	{ 52, 0x48 },	\
1759d80de052Sstsp 	{ 53, 0x44 },	\
1760d80de052Sstsp 	{ 54, 0x38 },	\
1761d80de052Sstsp 	{ 55, 0x43 },	\
1762d80de052Sstsp 	{ 56, 0xa1 },	\
1763d80de052Sstsp 	{ 57, 0x00 },	\
1764d80de052Sstsp 	{ 58, 0x39 },	\
1765d80de052Sstsp 	{ 59, 0x07 },	\
1766d80de052Sstsp 	{ 60, 0x45 },	\
1767d80de052Sstsp 	{ 61, 0x91 },	\
1768d80de052Sstsp 	{ 62, 0x39 },	\
1769d80de052Sstsp 	{ 63, 0x07 }
1770d80de052Sstsp 
1771d80de052Sstsp #define RT5592_DEF_RF	\
1772d80de052Sstsp 	{  1, 0x3f },	\
1773d80de052Sstsp 	{  3, 0x08 },	\
1774d80de052Sstsp 	{  5, 0x10 },	\
1775d80de052Sstsp 	{  6, 0xe4 },	\
1776d80de052Sstsp 	{  7, 0x00 },	\
1777d80de052Sstsp 	{ 14, 0x00 },	\
1778d80de052Sstsp 	{ 15, 0x00 },	\
1779d80de052Sstsp 	{ 16, 0x00 },	\
1780d80de052Sstsp 	{ 18, 0x03 },	\
1781d80de052Sstsp 	{ 19, 0x4d },	\
1782d80de052Sstsp 	{ 20, 0x10 },	\
1783d80de052Sstsp 	{ 21, 0x8d },	\
1784d80de052Sstsp 	{ 26, 0x82 },	\
1785d80de052Sstsp 	{ 28, 0x00 },	\
1786d80de052Sstsp 	{ 29, 0x10 },	\
1787d80de052Sstsp 	{ 33, 0xc0 },	\
1788d80de052Sstsp 	{ 34, 0x07 },	\
1789d80de052Sstsp 	{ 35, 0x12 },	\
1790d80de052Sstsp 	{ 47, 0x0c },	\
1791d80de052Sstsp 	{ 53, 0x22 },	\
1792d80de052Sstsp 	{ 63, 0x07 }
1793d80de052Sstsp 
1794d80de052Sstsp #define RT5592_2GHZ_DEF_RF	\
1795d80de052Sstsp 	{ 10, 0x90 },		\
1796d80de052Sstsp 	{ 11, 0x4a },		\
1797d80de052Sstsp 	{ 12, 0x52 },		\
1798d80de052Sstsp 	{ 13, 0x42 },		\
1799d80de052Sstsp 	{ 22, 0x40 },		\
1800d80de052Sstsp 	{ 24, 0x4a },		\
1801d80de052Sstsp 	{ 25, 0x80 },		\
1802d80de052Sstsp 	{ 27, 0x42 },		\
1803d80de052Sstsp 	{ 36, 0x80 },		\
1804d80de052Sstsp 	{ 37, 0x08 },		\
1805d80de052Sstsp 	{ 38, 0x89 },		\
1806d80de052Sstsp 	{ 39, 0x1b },		\
1807d80de052Sstsp 	{ 40, 0x0d },		\
1808d80de052Sstsp 	{ 41, 0x9b },		\
1809d80de052Sstsp 	{ 42, 0xd5 },		\
1810d80de052Sstsp 	{ 43, 0x72 },		\
1811d80de052Sstsp 	{ 44, 0x0e },		\
1812d80de052Sstsp 	{ 45, 0xa2 },		\
1813d80de052Sstsp 	{ 46, 0x6b },		\
1814d80de052Sstsp 	{ 48, 0x10 },		\
1815d80de052Sstsp 	{ 51, 0x3e },		\
1816d80de052Sstsp 	{ 52, 0x48 },		\
1817d80de052Sstsp 	{ 54, 0x38 },		\
1818d80de052Sstsp 	{ 56, 0xa1 },		\
1819d80de052Sstsp 	{ 57, 0x00 },		\
1820d80de052Sstsp 	{ 58, 0x39 },		\
1821d80de052Sstsp 	{ 60, 0x45 },		\
1822d80de052Sstsp 	{ 61, 0x91 },		\
1823d80de052Sstsp 	{ 62, 0x39 }
1824d80de052Sstsp 
1825d80de052Sstsp #define RT5592_5GHZ_DEF_RF	\
1826d80de052Sstsp 	{ 10, 0x97 },		\
1827d80de052Sstsp 	{ 11, 0x40 },		\
1828d80de052Sstsp 	{ 25, 0xbf },		\
1829d80de052Sstsp 	{ 27, 0x42 },		\
1830d80de052Sstsp 	{ 36, 0x00 },		\
1831d80de052Sstsp 	{ 37, 0x04 },		\
1832d80de052Sstsp 	{ 38, 0x85 },		\
1833d80de052Sstsp 	{ 40, 0x42 },		\
1834d80de052Sstsp 	{ 41, 0xbb },		\
1835d80de052Sstsp 	{ 42, 0xd7 },		\
1836d80de052Sstsp 	{ 45, 0x41 },		\
1837d80de052Sstsp 	{ 48, 0x00 },		\
1838d80de052Sstsp 	{ 57, 0x77 },		\
1839d80de052Sstsp 	{ 60, 0x05 },		\
1840d80de052Sstsp 	{ 61, 0x01 }
1841d80de052Sstsp 
1842d80de052Sstsp #define RT5592_CHAN_5GHZ	\
1843d80de052Sstsp 	{  36,  64, 12, 0x2e },	\
1844d80de052Sstsp 	{ 100, 165, 12, 0x0e },	\
1845d80de052Sstsp 	{  36,  64, 13, 0x22 },	\
1846d80de052Sstsp 	{ 100, 165, 13, 0x42 },	\
1847d80de052Sstsp 	{  36,  64, 22, 0x60 },	\
1848d80de052Sstsp 	{ 100, 165, 22, 0x40 },	\
1849d80de052Sstsp 	{  36,  64, 23, 0x7f },	\
1850d80de052Sstsp 	{ 100, 153, 23, 0x3c },	\
1851d80de052Sstsp 	{ 155, 165, 23, 0x38 },	\
1852d80de052Sstsp 	{  36,  50, 24, 0x09 },	\
1853d80de052Sstsp 	{  52,  64, 24, 0x07 },	\
1854d80de052Sstsp 	{ 100, 153, 24, 0x06 },	\
1855d80de052Sstsp 	{ 155, 165, 24, 0x05 },	\
1856d80de052Sstsp 	{  36,  64, 39, 0x1c },	\
1857d80de052Sstsp 	{ 100, 138, 39, 0x1a },	\
1858d80de052Sstsp 	{ 140, 165, 39, 0x18 },	\
1859d80de052Sstsp 	{  36,  64, 43, 0x5b },	\
1860d80de052Sstsp 	{ 100, 138, 43, 0x3b },	\
1861d80de052Sstsp 	{ 140, 165, 43, 0x1b },	\
1862d80de052Sstsp 	{  36,  64, 44, 0x40 },	\
1863d80de052Sstsp 	{ 100, 138, 44, 0x20 },	\
1864d80de052Sstsp 	{ 140, 165, 44, 0x10 },	\
1865d80de052Sstsp 	{  36,  64, 46, 0x00 },	\
1866d80de052Sstsp 	{ 100, 138, 46, 0x18 },	\
1867d80de052Sstsp 	{ 140, 165, 46, 0x08 },	\
1868d80de052Sstsp 	{  36,  64, 51, 0xfe },	\
1869d80de052Sstsp 	{ 100, 124, 51, 0xfc },	\
1870d80de052Sstsp 	{ 126, 165, 51, 0xec },	\
1871d80de052Sstsp 	{  36,  64, 52, 0x0c },	\
1872d80de052Sstsp 	{ 100, 138, 52, 0x06 },	\
1873d80de052Sstsp 	{ 140, 165, 52, 0x06 },	\
1874d80de052Sstsp 	{  36,  64, 54, 0xf8 },	\
1875d80de052Sstsp 	{ 100, 165, 54, 0xeb },	\
1876d80de052Sstsp 	{ 36,   50, 55, 0x06 },	\
1877d80de052Sstsp 	{ 52,   64, 55, 0x04 },	\
1878d80de052Sstsp 	{ 100, 138, 55, 0x01 },	\
1879d80de052Sstsp 	{ 140, 165, 55, 0x00 },	\
1880d80de052Sstsp 	{  36,  50, 56, 0xd3 },	\
1881d80de052Sstsp 	{  52, 128, 56, 0xbb },	\
1882d80de052Sstsp 	{ 130, 165, 56, 0xab },	\
1883d80de052Sstsp 	{  36,  64, 58, 0x15 },	\
1884d80de052Sstsp 	{ 100, 116, 58, 0x1d },	\
1885d80de052Sstsp 	{ 118, 165, 58, 0x15 },	\
1886d80de052Sstsp 	{  36,  64, 59, 0x7f },	\
1887d80de052Sstsp 	{ 100, 138, 59, 0x3f },	\
1888d80de052Sstsp 	{ 140, 165, 59, 0x7c },	\
1889d80de052Sstsp 	{  36,  64, 62, 0x15 },	\
1890d80de052Sstsp 	{ 100, 116, 62, 0x1d },	\
1891d80de052Sstsp 	{ 118, 165, 62, 0x15 }
1892