14310d6deSBernhard Schmidt /*- 24310d6deSBernhard Schmidt * Copyright (c) 2007 Damien Bergamini <damien.bergamini@free.fr> 34310d6deSBernhard Schmidt * Copyright (c) 2012 Bernhard Schmidt <bschmidt@FreeBSD.org> 44310d6deSBernhard Schmidt * 54310d6deSBernhard Schmidt * Permission to use, copy, modify, and distribute this software for any 64310d6deSBernhard Schmidt * purpose with or without fee is hereby granted, provided that the above 74310d6deSBernhard Schmidt * copyright notice and this permission notice appear in all copies. 84310d6deSBernhard Schmidt * 94310d6deSBernhard Schmidt * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 104310d6deSBernhard Schmidt * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 114310d6deSBernhard Schmidt * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 124310d6deSBernhard Schmidt * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 134310d6deSBernhard Schmidt * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 144310d6deSBernhard Schmidt * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 154310d6deSBernhard Schmidt * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 164310d6deSBernhard Schmidt * 174310d6deSBernhard Schmidt * $OpenBSD: rt2860reg.h,v 1.30 2010/05/10 18:17:10 damien Exp $ 184310d6deSBernhard Schmidt */ 194310d6deSBernhard Schmidt 204310d6deSBernhard Schmidt #define RT2860_NOISE_FLOOR -95 214310d6deSBernhard Schmidt 224310d6deSBernhard Schmidt /* PCI registers */ 234310d6deSBernhard Schmidt #define RT2860_PCI_CFG 0x0000 244310d6deSBernhard Schmidt #define RT2860_PCI_EECTRL 0x0004 254310d6deSBernhard Schmidt #define RT2860_PCI_MCUCTRL 0x0008 264310d6deSBernhard Schmidt #define RT2860_PCI_SYSCTRL 0x000c 274310d6deSBernhard Schmidt #define RT2860_PCIE_JTAG 0x0010 284310d6deSBernhard Schmidt 294310d6deSBernhard Schmidt #define RT3090_AUX_CTRL 0x010c 304310d6deSBernhard Schmidt 314310d6deSBernhard Schmidt #define RT3070_OPT_14 0x0114 324310d6deSBernhard Schmidt 334310d6deSBernhard Schmidt /* SCH/DMA registers */ 344310d6deSBernhard Schmidt #define RT2860_INT_STATUS 0x0200 354310d6deSBernhard Schmidt #define RT2860_INT_MASK 0x0204 364310d6deSBernhard Schmidt #define RT2860_WPDMA_GLO_CFG 0x0208 374310d6deSBernhard Schmidt #define RT2860_WPDMA_RST_IDX 0x020c 384310d6deSBernhard Schmidt #define RT2860_DELAY_INT_CFG 0x0210 394310d6deSBernhard Schmidt #define RT2860_WMM_AIFSN_CFG 0x0214 404310d6deSBernhard Schmidt #define RT2860_WMM_CWMIN_CFG 0x0218 414310d6deSBernhard Schmidt #define RT2860_WMM_CWMAX_CFG 0x021c 424310d6deSBernhard Schmidt #define RT2860_WMM_TXOP0_CFG 0x0220 434310d6deSBernhard Schmidt #define RT2860_WMM_TXOP1_CFG 0x0224 444310d6deSBernhard Schmidt #define RT2860_GPIO_CTRL 0x0228 454310d6deSBernhard Schmidt #define RT2860_MCU_CMD_REG 0x022c 464310d6deSBernhard Schmidt #define RT2860_TX_BASE_PTR(qid) (0x0230 + (qid) * 16) 474310d6deSBernhard Schmidt #define RT2860_TX_MAX_CNT(qid) (0x0234 + (qid) * 16) 484310d6deSBernhard Schmidt #define RT2860_TX_CTX_IDX(qid) (0x0238 + (qid) * 16) 494310d6deSBernhard Schmidt #define RT2860_TX_DTX_IDX(qid) (0x023c + (qid) * 16) 504310d6deSBernhard Schmidt #define RT2860_RX_BASE_PTR 0x0290 514310d6deSBernhard Schmidt #define RT2860_RX_MAX_CNT 0x0294 524310d6deSBernhard Schmidt #define RT2860_RX_CALC_IDX 0x0298 534310d6deSBernhard Schmidt #define RT2860_FS_DRX_IDX 0x029c 544310d6deSBernhard Schmidt #define RT2860_USB_DMA_CFG 0x02a0 /* RT2870 only */ 554310d6deSBernhard Schmidt #define RT2860_US_CYC_CNT 0x02a4 564310d6deSBernhard Schmidt 574310d6deSBernhard Schmidt /* PBF registers */ 584310d6deSBernhard Schmidt #define RT2860_SYS_CTRL 0x0400 594310d6deSBernhard Schmidt #define RT2860_HOST_CMD 0x0404 604310d6deSBernhard Schmidt #define RT2860_PBF_CFG 0x0408 614310d6deSBernhard Schmidt #define RT2860_MAX_PCNT 0x040c 624310d6deSBernhard Schmidt #define RT2860_BUF_CTRL 0x0410 634310d6deSBernhard Schmidt #define RT2860_MCU_INT_STA 0x0414 644310d6deSBernhard Schmidt #define RT2860_MCU_INT_ENA 0x0418 654310d6deSBernhard Schmidt #define RT2860_TXQ_IO(qid) (0x041c + (qid) * 4) 664310d6deSBernhard Schmidt #define RT2860_RX0Q_IO 0x0424 674310d6deSBernhard Schmidt #define RT2860_BCN_OFFSET0 0x042c 684310d6deSBernhard Schmidt #define RT2860_BCN_OFFSET1 0x0430 694310d6deSBernhard Schmidt #define RT2860_TXRXQ_STA 0x0434 704310d6deSBernhard Schmidt #define RT2860_TXRXQ_PCNT 0x0438 714310d6deSBernhard Schmidt #define RT2860_PBF_DBG 0x043c 724310d6deSBernhard Schmidt #define RT2860_CAP_CTRL 0x0440 734310d6deSBernhard Schmidt 744310d6deSBernhard Schmidt /* RT3070 registers */ 754310d6deSBernhard Schmidt #define RT3070_RF_CSR_CFG 0x0500 764310d6deSBernhard Schmidt #define RT3070_EFUSE_CTRL 0x0580 774310d6deSBernhard Schmidt #define RT3070_EFUSE_DATA0 0x0590 784310d6deSBernhard Schmidt #define RT3070_EFUSE_DATA1 0x0594 794310d6deSBernhard Schmidt #define RT3070_EFUSE_DATA2 0x0598 804310d6deSBernhard Schmidt #define RT3070_EFUSE_DATA3 0x059c 814310d6deSBernhard Schmidt #define RT3090_OSC_CTRL 0x05a4 824310d6deSBernhard Schmidt #define RT3070_LDO_CFG0 0x05d4 834310d6deSBernhard Schmidt #define RT3070_GPIO_SWITCH 0x05dc 844310d6deSBernhard Schmidt 854310d6deSBernhard Schmidt /* MAC registers */ 864310d6deSBernhard Schmidt #define RT2860_ASIC_VER_ID 0x1000 874310d6deSBernhard Schmidt #define RT2860_MAC_SYS_CTRL 0x1004 884310d6deSBernhard Schmidt #define RT2860_MAC_ADDR_DW0 0x1008 894310d6deSBernhard Schmidt #define RT2860_MAC_ADDR_DW1 0x100c 904310d6deSBernhard Schmidt #define RT2860_MAC_BSSID_DW0 0x1010 914310d6deSBernhard Schmidt #define RT2860_MAC_BSSID_DW1 0x1014 924310d6deSBernhard Schmidt #define RT2860_MAX_LEN_CFG 0x1018 934310d6deSBernhard Schmidt #define RT2860_BBP_CSR_CFG 0x101c 944310d6deSBernhard Schmidt #define RT2860_RF_CSR_CFG0 0x1020 954310d6deSBernhard Schmidt #define RT2860_RF_CSR_CFG1 0x1024 964310d6deSBernhard Schmidt #define RT2860_RF_CSR_CFG2 0x1028 974310d6deSBernhard Schmidt #define RT2860_LED_CFG 0x102c 984310d6deSBernhard Schmidt 994310d6deSBernhard Schmidt /* undocumented registers */ 1004310d6deSBernhard Schmidt #define RT2860_DEBUG 0x10f4 1014310d6deSBernhard Schmidt 1024310d6deSBernhard Schmidt /* MAC Timing control registers */ 1034310d6deSBernhard Schmidt #define RT2860_XIFS_TIME_CFG 0x1100 1044310d6deSBernhard Schmidt #define RT2860_BKOFF_SLOT_CFG 0x1104 1054310d6deSBernhard Schmidt #define RT2860_NAV_TIME_CFG 0x1108 1064310d6deSBernhard Schmidt #define RT2860_CH_TIME_CFG 0x110c 1074310d6deSBernhard Schmidt #define RT2860_PBF_LIFE_TIMER 0x1110 1084310d6deSBernhard Schmidt #define RT2860_BCN_TIME_CFG 0x1114 1094310d6deSBernhard Schmidt #define RT2860_TBTT_SYNC_CFG 0x1118 1104310d6deSBernhard Schmidt #define RT2860_TSF_TIMER_DW0 0x111c 1114310d6deSBernhard Schmidt #define RT2860_TSF_TIMER_DW1 0x1120 1124310d6deSBernhard Schmidt #define RT2860_TBTT_TIMER 0x1124 1134310d6deSBernhard Schmidt #define RT2860_INT_TIMER_CFG 0x1128 1144310d6deSBernhard Schmidt #define RT2860_INT_TIMER_EN 0x112c 1154310d6deSBernhard Schmidt #define RT2860_CH_IDLE_TIME 0x1130 1164310d6deSBernhard Schmidt 1174310d6deSBernhard Schmidt /* MAC Power Save configuration registers */ 1184310d6deSBernhard Schmidt #define RT2860_MAC_STATUS_REG 0x1200 1194310d6deSBernhard Schmidt #define RT2860_PWR_PIN_CFG 0x1204 1204310d6deSBernhard Schmidt #define RT2860_AUTO_WAKEUP_CFG 0x1208 1214310d6deSBernhard Schmidt 1224310d6deSBernhard Schmidt /* MAC TX configuration registers */ 1234310d6deSBernhard Schmidt #define RT2860_EDCA_AC_CFG(aci) (0x1300 + (aci) * 4) 1244310d6deSBernhard Schmidt #define RT2860_EDCA_TID_AC_MAP 0x1310 1254310d6deSBernhard Schmidt #define RT2860_TX_PWR_CFG(ridx) (0x1314 + (ridx) * 4) 1264310d6deSBernhard Schmidt #define RT2860_TX_PIN_CFG 0x1328 1274310d6deSBernhard Schmidt #define RT2860_TX_BAND_CFG 0x132c 1284310d6deSBernhard Schmidt #define RT2860_TX_SW_CFG0 0x1330 1294310d6deSBernhard Schmidt #define RT2860_TX_SW_CFG1 0x1334 1304310d6deSBernhard Schmidt #define RT2860_TX_SW_CFG2 0x1338 1314310d6deSBernhard Schmidt #define RT2860_TXOP_THRES_CFG 0x133c 1324310d6deSBernhard Schmidt #define RT2860_TXOP_CTRL_CFG 0x1340 1334310d6deSBernhard Schmidt #define RT2860_TX_RTS_CFG 0x1344 1344310d6deSBernhard Schmidt #define RT2860_TX_TIMEOUT_CFG 0x1348 1354310d6deSBernhard Schmidt #define RT2860_TX_RTY_CFG 0x134c 1364310d6deSBernhard Schmidt #define RT2860_TX_LINK_CFG 0x1350 1374310d6deSBernhard Schmidt #define RT2860_HT_FBK_CFG0 0x1354 1384310d6deSBernhard Schmidt #define RT2860_HT_FBK_CFG1 0x1358 1394310d6deSBernhard Schmidt #define RT2860_LG_FBK_CFG0 0x135c 1404310d6deSBernhard Schmidt #define RT2860_LG_FBK_CFG1 0x1360 1414310d6deSBernhard Schmidt #define RT2860_CCK_PROT_CFG 0x1364 1424310d6deSBernhard Schmidt #define RT2860_OFDM_PROT_CFG 0x1368 1434310d6deSBernhard Schmidt #define RT2860_MM20_PROT_CFG 0x136c 1444310d6deSBernhard Schmidt #define RT2860_MM40_PROT_CFG 0x1370 1454310d6deSBernhard Schmidt #define RT2860_GF20_PROT_CFG 0x1374 1464310d6deSBernhard Schmidt #define RT2860_GF40_PROT_CFG 0x1378 1474310d6deSBernhard Schmidt #define RT2860_EXP_CTS_TIME 0x137c 1484310d6deSBernhard Schmidt #define RT2860_EXP_ACK_TIME 0x1380 1494310d6deSBernhard Schmidt 1504310d6deSBernhard Schmidt /* MAC RX configuration registers */ 1514310d6deSBernhard Schmidt #define RT2860_RX_FILTR_CFG 0x1400 1524310d6deSBernhard Schmidt #define RT2860_AUTO_RSP_CFG 0x1404 1534310d6deSBernhard Schmidt #define RT2860_LEGACY_BASIC_RATE 0x1408 1544310d6deSBernhard Schmidt #define RT2860_HT_BASIC_RATE 0x140c 1554310d6deSBernhard Schmidt #define RT2860_HT_CTRL_CFG 0x1410 1564310d6deSBernhard Schmidt #define RT2860_SIFS_COST_CFG 0x1414 1574310d6deSBernhard Schmidt #define RT2860_RX_PARSER_CFG 0x1418 1584310d6deSBernhard Schmidt 1594310d6deSBernhard Schmidt /* MAC Security configuration registers */ 1604310d6deSBernhard Schmidt #define RT2860_TX_SEC_CNT0 0x1500 1614310d6deSBernhard Schmidt #define RT2860_RX_SEC_CNT0 0x1504 1624310d6deSBernhard Schmidt #define RT2860_CCMP_FC_MUTE 0x1508 1634310d6deSBernhard Schmidt 1644310d6deSBernhard Schmidt /* MAC HCCA/PSMP configuration registers */ 1654310d6deSBernhard Schmidt #define RT2860_TXOP_HLDR_ADDR0 0x1600 1664310d6deSBernhard Schmidt #define RT2860_TXOP_HLDR_ADDR1 0x1604 1674310d6deSBernhard Schmidt #define RT2860_TXOP_HLDR_ET 0x1608 1684310d6deSBernhard Schmidt #define RT2860_QOS_CFPOLL_RA_DW0 0x160c 1694310d6deSBernhard Schmidt #define RT2860_QOS_CFPOLL_A1_DW1 0x1610 1704310d6deSBernhard Schmidt #define RT2860_QOS_CFPOLL_QC 0x1614 1714310d6deSBernhard Schmidt 1724310d6deSBernhard Schmidt /* MAC Statistics Counters */ 1734310d6deSBernhard Schmidt #define RT2860_RX_STA_CNT0 0x1700 1744310d6deSBernhard Schmidt #define RT2860_RX_STA_CNT1 0x1704 1754310d6deSBernhard Schmidt #define RT2860_RX_STA_CNT2 0x1708 1764310d6deSBernhard Schmidt #define RT2860_TX_STA_CNT0 0x170c 1774310d6deSBernhard Schmidt #define RT2860_TX_STA_CNT1 0x1710 1784310d6deSBernhard Schmidt #define RT2860_TX_STA_CNT2 0x1714 1794310d6deSBernhard Schmidt #define RT2860_TX_STAT_FIFO 0x1718 1804310d6deSBernhard Schmidt 1814310d6deSBernhard Schmidt /* RX WCID search table */ 1824310d6deSBernhard Schmidt #define RT2860_WCID_ENTRY(wcid) (0x1800 + (wcid) * 8) 1834310d6deSBernhard Schmidt 1844310d6deSBernhard Schmidt #define RT2860_FW_BASE 0x2000 1854310d6deSBernhard Schmidt #define RT2870_FW_BASE 0x3000 1864310d6deSBernhard Schmidt 1874310d6deSBernhard Schmidt /* Pair-wise key table */ 1884310d6deSBernhard Schmidt #define RT2860_PKEY(wcid) (0x4000 + (wcid) * 32) 1894310d6deSBernhard Schmidt 1904310d6deSBernhard Schmidt /* IV/EIV table */ 1914310d6deSBernhard Schmidt #define RT2860_IVEIV(wcid) (0x6000 + (wcid) * 8) 1924310d6deSBernhard Schmidt 1934310d6deSBernhard Schmidt /* WCID attribute table */ 1944310d6deSBernhard Schmidt #define RT2860_WCID_ATTR(wcid) (0x6800 + (wcid) * 4) 1954310d6deSBernhard Schmidt 1964310d6deSBernhard Schmidt /* Shared Key Table */ 1974310d6deSBernhard Schmidt #define RT2860_SKEY(vap, kidx) (0x6c00 + (vap) * 128 + (kidx) * 32) 1984310d6deSBernhard Schmidt 1994310d6deSBernhard Schmidt /* Shared Key Mode */ 2004310d6deSBernhard Schmidt #define RT2860_SKEY_MODE_0_7 0x7000 2014310d6deSBernhard Schmidt #define RT2860_SKEY_MODE_8_15 0x7004 2024310d6deSBernhard Schmidt #define RT2860_SKEY_MODE_16_23 0x7008 2034310d6deSBernhard Schmidt #define RT2860_SKEY_MODE_24_31 0x700c 2044310d6deSBernhard Schmidt 2054310d6deSBernhard Schmidt /* Shared Memory between MCU and host */ 2064310d6deSBernhard Schmidt #define RT2860_H2M_MAILBOX 0x7010 2074310d6deSBernhard Schmidt #define RT2860_H2M_MAILBOX_CID 0x7014 2084310d6deSBernhard Schmidt #define RT2860_H2M_MAILBOX_STATUS 0x701c 2094310d6deSBernhard Schmidt #define RT2860_H2M_BBPAGENT 0x7028 2104310d6deSBernhard Schmidt #define RT2860_BCN_BASE(vap) (0x7800 + (vap) * 512) 2114310d6deSBernhard Schmidt 2124310d6deSBernhard Schmidt /* possible flags for RT2860_PCI_CFG */ 2134310d6deSBernhard Schmidt #define RT2860_PCI_CFG_USB (1 << 17) 2144310d6deSBernhard Schmidt #define RT2860_PCI_CFG_PCI (1 << 16) 2154310d6deSBernhard Schmidt 2164310d6deSBernhard Schmidt /* possible flags for register RT2860_PCI_EECTRL */ 2174310d6deSBernhard Schmidt #define RT2860_C (1 << 0) 2184310d6deSBernhard Schmidt #define RT2860_S (1 << 1) 2194310d6deSBernhard Schmidt #define RT2860_D (1 << 2) 2204310d6deSBernhard Schmidt #define RT2860_SHIFT_D 2 2214310d6deSBernhard Schmidt #define RT2860_Q (1 << 3) 2224310d6deSBernhard Schmidt #define RT2860_SHIFT_Q 3 2234310d6deSBernhard Schmidt 2244310d6deSBernhard Schmidt /* possible flags for registers INT_STATUS/INT_MASK */ 2254310d6deSBernhard Schmidt #define RT2860_TX_COHERENT (1 << 17) 2264310d6deSBernhard Schmidt #define RT2860_RX_COHERENT (1 << 16) 2274310d6deSBernhard Schmidt #define RT2860_MAC_INT_4 (1 << 15) 2284310d6deSBernhard Schmidt #define RT2860_MAC_INT_3 (1 << 14) 2294310d6deSBernhard Schmidt #define RT2860_MAC_INT_2 (1 << 13) 2304310d6deSBernhard Schmidt #define RT2860_MAC_INT_1 (1 << 12) 2314310d6deSBernhard Schmidt #define RT2860_MAC_INT_0 (1 << 11) 2324310d6deSBernhard Schmidt #define RT2860_TX_RX_COHERENT (1 << 10) 2334310d6deSBernhard Schmidt #define RT2860_MCU_CMD_INT (1 << 9) 2344310d6deSBernhard Schmidt #define RT2860_TX_DONE_INT5 (1 << 8) 2354310d6deSBernhard Schmidt #define RT2860_TX_DONE_INT4 (1 << 7) 2364310d6deSBernhard Schmidt #define RT2860_TX_DONE_INT3 (1 << 6) 2374310d6deSBernhard Schmidt #define RT2860_TX_DONE_INT2 (1 << 5) 2384310d6deSBernhard Schmidt #define RT2860_TX_DONE_INT1 (1 << 4) 2394310d6deSBernhard Schmidt #define RT2860_TX_DONE_INT0 (1 << 3) 2404310d6deSBernhard Schmidt #define RT2860_RX_DONE_INT (1 << 2) 2414310d6deSBernhard Schmidt #define RT2860_TX_DLY_INT (1 << 1) 2424310d6deSBernhard Schmidt #define RT2860_RX_DLY_INT (1 << 0) 2434310d6deSBernhard Schmidt 2444310d6deSBernhard Schmidt /* possible flags for register WPDMA_GLO_CFG */ 2454310d6deSBernhard Schmidt #define RT2860_HDR_SEG_LEN_SHIFT 8 2464310d6deSBernhard Schmidt #define RT2860_BIG_ENDIAN (1 << 7) 2474310d6deSBernhard Schmidt #define RT2860_TX_WB_DDONE (1 << 6) 2484310d6deSBernhard Schmidt #define RT2860_WPDMA_BT_SIZE_SHIFT 4 2494310d6deSBernhard Schmidt #define RT2860_WPDMA_BT_SIZE16 0 2504310d6deSBernhard Schmidt #define RT2860_WPDMA_BT_SIZE32 1 2514310d6deSBernhard Schmidt #define RT2860_WPDMA_BT_SIZE64 2 2524310d6deSBernhard Schmidt #define RT2860_WPDMA_BT_SIZE128 3 2534310d6deSBernhard Schmidt #define RT2860_RX_DMA_BUSY (1 << 3) 2544310d6deSBernhard Schmidt #define RT2860_RX_DMA_EN (1 << 2) 2554310d6deSBernhard Schmidt #define RT2860_TX_DMA_BUSY (1 << 1) 2564310d6deSBernhard Schmidt #define RT2860_TX_DMA_EN (1 << 0) 2574310d6deSBernhard Schmidt 258*5c95ab02SKevin Lo /* flags for register WPDMA_RST_IDX */ 259*5c95ab02SKevin Lo #define RT2860_RST_DRX_IDX0 (1 << 16) 260*5c95ab02SKevin Lo #define RT2860_RST_DTX_IDX5 (1 << 5) 261*5c95ab02SKevin Lo #define RT2860_RST_DTX_IDX4 (1 << 4) 262*5c95ab02SKevin Lo #define RT2860_RST_DTX_IDX3 (1 << 3) 263*5c95ab02SKevin Lo #define RT2860_RST_DTX_IDX2 (1 << 2) 264*5c95ab02SKevin Lo #define RT2860_RST_DTX_IDX1 (1 << 1) 265*5c95ab02SKevin Lo #define RT2860_RST_DTX_IDX0 (1 << 0) 266*5c95ab02SKevin Lo 2674310d6deSBernhard Schmidt /* possible flags for register DELAY_INT_CFG */ 2687a22215cSEitan Adler #define RT2860_TXDLY_INT_EN (1U << 31) 2694310d6deSBernhard Schmidt #define RT2860_TXMAX_PINT_SHIFT 24 2704310d6deSBernhard Schmidt #define RT2860_TXMAX_PTIME_SHIFT 16 2714310d6deSBernhard Schmidt #define RT2860_RXDLY_INT_EN (1 << 15) 2724310d6deSBernhard Schmidt #define RT2860_RXMAX_PINT_SHIFT 8 2734310d6deSBernhard Schmidt #define RT2860_RXMAX_PTIME_SHIFT 0 2744310d6deSBernhard Schmidt 2754310d6deSBernhard Schmidt /* possible flags for register GPIO_CTRL */ 2764310d6deSBernhard Schmidt #define RT2860_GPIO_D_SHIFT 8 2774310d6deSBernhard Schmidt #define RT2860_GPIO_O_SHIFT 0 2784310d6deSBernhard Schmidt 2794310d6deSBernhard Schmidt /* possible flags for register USB_DMA_CFG */ 2807a22215cSEitan Adler #define RT2860_USB_TX_BUSY (1U << 31) 2814310d6deSBernhard Schmidt #define RT2860_USB_RX_BUSY (1 << 30) 2824310d6deSBernhard Schmidt #define RT2860_USB_EPOUT_VLD_SHIFT 24 2834310d6deSBernhard Schmidt #define RT2860_USB_TX_EN (1 << 23) 2844310d6deSBernhard Schmidt #define RT2860_USB_RX_EN (1 << 22) 2854310d6deSBernhard Schmidt #define RT2860_USB_RX_AGG_EN (1 << 21) 2864310d6deSBernhard Schmidt #define RT2860_USB_TXOP_HALT (1 << 20) 2874310d6deSBernhard Schmidt #define RT2860_USB_TX_CLEAR (1 << 19) 2884310d6deSBernhard Schmidt #define RT2860_USB_PHY_WD_EN (1 << 16) 2894310d6deSBernhard Schmidt #define RT2860_USB_PHY_MAN_RST (1 << 15) 2904310d6deSBernhard Schmidt #define RT2860_USB_RX_AGG_LMT(x) ((x) << 8) /* in unit of 1KB */ 2914310d6deSBernhard Schmidt #define RT2860_USB_RX_AGG_TO(x) ((x) & 0xff) /* in unit of 33ns */ 2924310d6deSBernhard Schmidt 2934310d6deSBernhard Schmidt /* possible flags for register US_CYC_CNT */ 2944310d6deSBernhard Schmidt #define RT2860_TEST_EN (1 << 24) 2954310d6deSBernhard Schmidt #define RT2860_TEST_SEL_SHIFT 16 2964310d6deSBernhard Schmidt #define RT2860_BT_MODE_EN (1 << 8) 2974310d6deSBernhard Schmidt #define RT2860_US_CYC_CNT_SHIFT 0 2984310d6deSBernhard Schmidt 2994310d6deSBernhard Schmidt /* possible flags for register SYS_CTRL */ 3004310d6deSBernhard Schmidt #define RT2860_HST_PM_SEL (1 << 16) 3014310d6deSBernhard Schmidt #define RT2860_CAP_MODE (1 << 14) 3024310d6deSBernhard Schmidt #define RT2860_PME_OEN (1 << 13) 3034310d6deSBernhard Schmidt #define RT2860_CLKSELECT (1 << 12) 3044310d6deSBernhard Schmidt #define RT2860_PBF_CLK_EN (1 << 11) 3054310d6deSBernhard Schmidt #define RT2860_MAC_CLK_EN (1 << 10) 3064310d6deSBernhard Schmidt #define RT2860_DMA_CLK_EN (1 << 9) 3074310d6deSBernhard Schmidt #define RT2860_MCU_READY (1 << 7) 3084310d6deSBernhard Schmidt #define RT2860_ASY_RESET (1 << 4) 3094310d6deSBernhard Schmidt #define RT2860_PBF_RESET (1 << 3) 3104310d6deSBernhard Schmidt #define RT2860_MAC_RESET (1 << 2) 3114310d6deSBernhard Schmidt #define RT2860_DMA_RESET (1 << 1) 3124310d6deSBernhard Schmidt #define RT2860_MCU_RESET (1 << 0) 3134310d6deSBernhard Schmidt 3144310d6deSBernhard Schmidt /* possible values for register HOST_CMD */ 3154310d6deSBernhard Schmidt #define RT2860_MCU_CMD_SLEEP 0x30 3164310d6deSBernhard Schmidt #define RT2860_MCU_CMD_WAKEUP 0x31 3174310d6deSBernhard Schmidt #define RT2860_MCU_CMD_LEDS 0x50 3184310d6deSBernhard Schmidt #define RT2860_MCU_CMD_LED_RSSI 0x51 3194310d6deSBernhard Schmidt #define RT2860_MCU_CMD_LED1 0x52 3204310d6deSBernhard Schmidt #define RT2860_MCU_CMD_LED2 0x53 3214310d6deSBernhard Schmidt #define RT2860_MCU_CMD_LED3 0x54 3224310d6deSBernhard Schmidt #define RT2860_MCU_CMD_RFRESET 0x72 3234310d6deSBernhard Schmidt #define RT2860_MCU_CMD_ANTSEL 0x73 3244310d6deSBernhard Schmidt #define RT2860_MCU_CMD_BBP 0x80 3254310d6deSBernhard Schmidt #define RT2860_MCU_CMD_PSLEVEL 0x83 3264310d6deSBernhard Schmidt 3274310d6deSBernhard Schmidt /* possible flags for register PBF_CFG */ 3284310d6deSBernhard Schmidt #define RT2860_TX1Q_NUM_SHIFT 21 3294310d6deSBernhard Schmidt #define RT2860_TX2Q_NUM_SHIFT 16 3304310d6deSBernhard Schmidt #define RT2860_NULL0_MODE (1 << 15) 3314310d6deSBernhard Schmidt #define RT2860_NULL1_MODE (1 << 14) 3324310d6deSBernhard Schmidt #define RT2860_RX_DROP_MODE (1 << 13) 3334310d6deSBernhard Schmidt #define RT2860_TX0Q_MANUAL (1 << 12) 3344310d6deSBernhard Schmidt #define RT2860_TX1Q_MANUAL (1 << 11) 3354310d6deSBernhard Schmidt #define RT2860_TX2Q_MANUAL (1 << 10) 3364310d6deSBernhard Schmidt #define RT2860_RX0Q_MANUAL (1 << 9) 3374310d6deSBernhard Schmidt #define RT2860_HCCA_EN (1 << 8) 3384310d6deSBernhard Schmidt #define RT2860_TX0Q_EN (1 << 4) 3394310d6deSBernhard Schmidt #define RT2860_TX1Q_EN (1 << 3) 3404310d6deSBernhard Schmidt #define RT2860_TX2Q_EN (1 << 2) 3414310d6deSBernhard Schmidt #define RT2860_RX0Q_EN (1 << 1) 3424310d6deSBernhard Schmidt 3434310d6deSBernhard Schmidt /* possible flags for register BUF_CTRL */ 3444310d6deSBernhard Schmidt #define RT2860_WRITE_TXQ(qid) (1 << (11 - (qid))) 3454310d6deSBernhard Schmidt #define RT2860_NULL0_KICK (1 << 7) 3464310d6deSBernhard Schmidt #define RT2860_NULL1_KICK (1 << 6) 3474310d6deSBernhard Schmidt #define RT2860_BUF_RESET (1 << 5) 3484310d6deSBernhard Schmidt #define RT2860_READ_TXQ(qid) (1 << (3 - (qid)) 3494310d6deSBernhard Schmidt #define RT2860_READ_RX0Q (1 << 0) 3504310d6deSBernhard Schmidt 3514310d6deSBernhard Schmidt /* possible flags for registers MCU_INT_STA/MCU_INT_ENA */ 3524310d6deSBernhard Schmidt #define RT2860_MCU_MAC_INT_8 (1 << 24) 3534310d6deSBernhard Schmidt #define RT2860_MCU_MAC_INT_7 (1 << 23) 3544310d6deSBernhard Schmidt #define RT2860_MCU_MAC_INT_6 (1 << 22) 3554310d6deSBernhard Schmidt #define RT2860_MCU_MAC_INT_4 (1 << 20) 3564310d6deSBernhard Schmidt #define RT2860_MCU_MAC_INT_3 (1 << 19) 3574310d6deSBernhard Schmidt #define RT2860_MCU_MAC_INT_2 (1 << 18) 3584310d6deSBernhard Schmidt #define RT2860_MCU_MAC_INT_1 (1 << 17) 3594310d6deSBernhard Schmidt #define RT2860_MCU_MAC_INT_0 (1 << 16) 3604310d6deSBernhard Schmidt #define RT2860_DTX0_INT (1 << 11) 3614310d6deSBernhard Schmidt #define RT2860_DTX1_INT (1 << 10) 3624310d6deSBernhard Schmidt #define RT2860_DTX2_INT (1 << 9) 3634310d6deSBernhard Schmidt #define RT2860_DRX0_INT (1 << 8) 3644310d6deSBernhard Schmidt #define RT2860_HCMD_INT (1 << 7) 3654310d6deSBernhard Schmidt #define RT2860_N0TX_INT (1 << 6) 3664310d6deSBernhard Schmidt #define RT2860_N1TX_INT (1 << 5) 3674310d6deSBernhard Schmidt #define RT2860_BCNTX_INT (1 << 4) 3684310d6deSBernhard Schmidt #define RT2860_MTX0_INT (1 << 3) 3694310d6deSBernhard Schmidt #define RT2860_MTX1_INT (1 << 2) 3704310d6deSBernhard Schmidt #define RT2860_MTX2_INT (1 << 1) 3714310d6deSBernhard Schmidt #define RT2860_MRX0_INT (1 << 0) 3724310d6deSBernhard Schmidt 3734310d6deSBernhard Schmidt /* possible flags for register TXRXQ_PCNT */ 3744310d6deSBernhard Schmidt #define RT2860_RX0Q_PCNT_MASK 0xff000000 3754310d6deSBernhard Schmidt #define RT2860_TX2Q_PCNT_MASK 0x00ff0000 3764310d6deSBernhard Schmidt #define RT2860_TX1Q_PCNT_MASK 0x0000ff00 3774310d6deSBernhard Schmidt #define RT2860_TX0Q_PCNT_MASK 0x000000ff 3784310d6deSBernhard Schmidt 3794310d6deSBernhard Schmidt /* possible flags for register CAP_CTRL */ 3807a22215cSEitan Adler #define RT2860_CAP_ADC_FEQ (1U << 31) 3814310d6deSBernhard Schmidt #define RT2860_CAP_START (1 << 30) 3824310d6deSBernhard Schmidt #define RT2860_MAN_TRIG (1 << 29) 3834310d6deSBernhard Schmidt #define RT2860_TRIG_OFFSET_SHIFT 16 3844310d6deSBernhard Schmidt #define RT2860_START_ADDR_SHIFT 0 3854310d6deSBernhard Schmidt 3864310d6deSBernhard Schmidt /* possible flags for register RF_CSR_CFG */ 3874310d6deSBernhard Schmidt #define RT3070_RF_KICK (1 << 17) 3884310d6deSBernhard Schmidt #define RT3070_RF_WRITE (1 << 16) 3894310d6deSBernhard Schmidt 3904310d6deSBernhard Schmidt /* possible flags for register EFUSE_CTRL */ 3917a22215cSEitan Adler #define RT3070_SEL_EFUSE (1U << 31) 3924310d6deSBernhard Schmidt #define RT3070_EFSROM_KICK (1 << 30) 3934310d6deSBernhard Schmidt #define RT3070_EFSROM_AIN_MASK 0x03ff0000 3944310d6deSBernhard Schmidt #define RT3070_EFSROM_AIN_SHIFT 16 3954310d6deSBernhard Schmidt #define RT3070_EFSROM_MODE_MASK 0x000000c0 3964310d6deSBernhard Schmidt #define RT3070_EFUSE_AOUT_MASK 0x0000003f 3974310d6deSBernhard Schmidt 3984310d6deSBernhard Schmidt /* possible flags for register MAC_SYS_CTRL */ 3994310d6deSBernhard Schmidt #define RT2860_RX_TS_EN (1 << 7) 4004310d6deSBernhard Schmidt #define RT2860_WLAN_HALT_EN (1 << 6) 4014310d6deSBernhard Schmidt #define RT2860_PBF_LOOP_EN (1 << 5) 4024310d6deSBernhard Schmidt #define RT2860_CONT_TX_TEST (1 << 4) 4034310d6deSBernhard Schmidt #define RT2860_MAC_RX_EN (1 << 3) 4044310d6deSBernhard Schmidt #define RT2860_MAC_TX_EN (1 << 2) 4054310d6deSBernhard Schmidt #define RT2860_BBP_HRST (1 << 1) 4064310d6deSBernhard Schmidt #define RT2860_MAC_SRST (1 << 0) 4074310d6deSBernhard Schmidt 4084310d6deSBernhard Schmidt /* possible flags for register MAC_BSSID_DW1 */ 4094310d6deSBernhard Schmidt #define RT2860_MULTI_BCN_NUM_SHIFT 18 4104310d6deSBernhard Schmidt #define RT2860_MULTI_BSSID_MODE_SHIFT 16 4114310d6deSBernhard Schmidt 4124310d6deSBernhard Schmidt /* possible flags for register MAX_LEN_CFG */ 4134310d6deSBernhard Schmidt #define RT2860_MIN_MPDU_LEN_SHIFT 16 4144310d6deSBernhard Schmidt #define RT2860_MAX_PSDU_LEN_SHIFT 12 4154310d6deSBernhard Schmidt #define RT2860_MAX_PSDU_LEN8K 0 4164310d6deSBernhard Schmidt #define RT2860_MAX_PSDU_LEN16K 1 4174310d6deSBernhard Schmidt #define RT2860_MAX_PSDU_LEN32K 2 4184310d6deSBernhard Schmidt #define RT2860_MAX_PSDU_LEN64K 3 4194310d6deSBernhard Schmidt #define RT2860_MAX_MPDU_LEN_SHIFT 0 4204310d6deSBernhard Schmidt 4214310d6deSBernhard Schmidt /* possible flags for registers BBP_CSR_CFG/H2M_BBPAGENT */ 4224310d6deSBernhard Schmidt #define RT2860_BBP_RW_PARALLEL (1 << 19) 4234310d6deSBernhard Schmidt #define RT2860_BBP_PAR_DUR_112_5 (1 << 18) 4244310d6deSBernhard Schmidt #define RT2860_BBP_CSR_KICK (1 << 17) 4254310d6deSBernhard Schmidt #define RT2860_BBP_CSR_READ (1 << 16) 4264310d6deSBernhard Schmidt #define RT2860_BBP_ADDR_SHIFT 8 4274310d6deSBernhard Schmidt #define RT2860_BBP_DATA_SHIFT 0 4284310d6deSBernhard Schmidt 4294310d6deSBernhard Schmidt /* possible flags for register RF_CSR_CFG0 */ 4307a22215cSEitan Adler #define RT2860_RF_REG_CTRL (1U << 31) 4314310d6deSBernhard Schmidt #define RT2860_RF_LE_SEL1 (1 << 30) 4324310d6deSBernhard Schmidt #define RT2860_RF_LE_STBY (1 << 29) 4334310d6deSBernhard Schmidt #define RT2860_RF_REG_WIDTH_SHIFT 24 4344310d6deSBernhard Schmidt #define RT2860_RF_REG_0_SHIFT 0 4354310d6deSBernhard Schmidt 4364310d6deSBernhard Schmidt /* possible flags for register RF_CSR_CFG1 */ 4374310d6deSBernhard Schmidt #define RT2860_RF_DUR_5 (1 << 24) 4384310d6deSBernhard Schmidt #define RT2860_RF_REG_1_SHIFT 0 4394310d6deSBernhard Schmidt 4404310d6deSBernhard Schmidt /* possible flags for register LED_CFG */ 4414310d6deSBernhard Schmidt #define RT2860_LED_POL (1 << 30) 4424310d6deSBernhard Schmidt #define RT2860_Y_LED_MODE_SHIFT 28 4434310d6deSBernhard Schmidt #define RT2860_G_LED_MODE_SHIFT 26 4444310d6deSBernhard Schmidt #define RT2860_R_LED_MODE_SHIFT 24 4454310d6deSBernhard Schmidt #define RT2860_LED_MODE_OFF 0 4464310d6deSBernhard Schmidt #define RT2860_LED_MODE_BLINK_TX 1 4474310d6deSBernhard Schmidt #define RT2860_LED_MODE_SLOW_BLINK 2 4484310d6deSBernhard Schmidt #define RT2860_LED_MODE_ON 3 4494310d6deSBernhard Schmidt #define RT2860_SLOW_BLK_TIME_SHIFT 16 4504310d6deSBernhard Schmidt #define RT2860_LED_OFF_TIME_SHIFT 8 4514310d6deSBernhard Schmidt #define RT2860_LED_ON_TIME_SHIFT 0 4524310d6deSBernhard Schmidt 4534310d6deSBernhard Schmidt /* possible flags for register XIFS_TIME_CFG */ 4544310d6deSBernhard Schmidt #define RT2860_BB_RXEND_EN (1 << 29) 4554310d6deSBernhard Schmidt #define RT2860_EIFS_TIME_SHIFT 20 4564310d6deSBernhard Schmidt #define RT2860_OFDM_XIFS_TIME_SHIFT 16 4574310d6deSBernhard Schmidt #define RT2860_OFDM_SIFS_TIME_SHIFT 8 4584310d6deSBernhard Schmidt #define RT2860_CCK_SIFS_TIME_SHIFT 0 4594310d6deSBernhard Schmidt 4604310d6deSBernhard Schmidt /* possible flags for register BKOFF_SLOT_CFG */ 4614310d6deSBernhard Schmidt #define RT2860_CC_DELAY_TIME_SHIFT 8 4624310d6deSBernhard Schmidt #define RT2860_SLOT_TIME 0 4634310d6deSBernhard Schmidt 4644310d6deSBernhard Schmidt /* possible flags for register NAV_TIME_CFG */ 4657a22215cSEitan Adler #define RT2860_NAV_UPD (1U << 31) 4664310d6deSBernhard Schmidt #define RT2860_NAV_UPD_VAL_SHIFT 16 4674310d6deSBernhard Schmidt #define RT2860_NAV_CLR_EN (1 << 15) 4684310d6deSBernhard Schmidt #define RT2860_NAV_TIMER_SHIFT 0 4694310d6deSBernhard Schmidt 4704310d6deSBernhard Schmidt /* possible flags for register CH_TIME_CFG */ 4714310d6deSBernhard Schmidt #define RT2860_EIFS_AS_CH_BUSY (1 << 4) 4724310d6deSBernhard Schmidt #define RT2860_NAV_AS_CH_BUSY (1 << 3) 4734310d6deSBernhard Schmidt #define RT2860_RX_AS_CH_BUSY (1 << 2) 4744310d6deSBernhard Schmidt #define RT2860_TX_AS_CH_BUSY (1 << 1) 4754310d6deSBernhard Schmidt #define RT2860_CH_STA_TIMER_EN (1 << 0) 4764310d6deSBernhard Schmidt 4774310d6deSBernhard Schmidt /* possible values for register BCN_TIME_CFG */ 4784310d6deSBernhard Schmidt #define RT2860_TSF_INS_COMP_SHIFT 24 4794310d6deSBernhard Schmidt #define RT2860_BCN_TX_EN (1 << 20) 4804310d6deSBernhard Schmidt #define RT2860_TBTT_TIMER_EN (1 << 19) 4814310d6deSBernhard Schmidt #define RT2860_TSF_SYNC_MODE_SHIFT 17 4824310d6deSBernhard Schmidt #define RT2860_TSF_SYNC_MODE_DIS 0 4834310d6deSBernhard Schmidt #define RT2860_TSF_SYNC_MODE_STA 1 4844310d6deSBernhard Schmidt #define RT2860_TSF_SYNC_MODE_IBSS 2 4854310d6deSBernhard Schmidt #define RT2860_TSF_SYNC_MODE_HOSTAP 3 4864310d6deSBernhard Schmidt #define RT2860_TSF_TIMER_EN (1 << 16) 4874310d6deSBernhard Schmidt #define RT2860_BCN_INTVAL_SHIFT 0 4884310d6deSBernhard Schmidt 4894310d6deSBernhard Schmidt /* possible flags for register TBTT_SYNC_CFG */ 4904310d6deSBernhard Schmidt #define RT2860_BCN_CWMIN_SHIFT 20 4914310d6deSBernhard Schmidt #define RT2860_BCN_AIFSN_SHIFT 16 4924310d6deSBernhard Schmidt #define RT2860_BCN_EXP_WIN_SHIFT 8 4934310d6deSBernhard Schmidt #define RT2860_TBTT_ADJUST_SHIFT 0 4944310d6deSBernhard Schmidt 4954310d6deSBernhard Schmidt /* possible flags for register INT_TIMER_CFG */ 4964310d6deSBernhard Schmidt #define RT2860_GP_TIMER_SHIFT 16 4974310d6deSBernhard Schmidt #define RT2860_PRE_TBTT_TIMER_SHIFT 0 4984310d6deSBernhard Schmidt 4994310d6deSBernhard Schmidt /* possible flags for register INT_TIMER_EN */ 5004310d6deSBernhard Schmidt #define RT2860_GP_TIMER_EN (1 << 1) 5014310d6deSBernhard Schmidt #define RT2860_PRE_TBTT_INT_EN (1 << 0) 5024310d6deSBernhard Schmidt 5034310d6deSBernhard Schmidt /* possible flags for register MAC_STATUS_REG */ 5044310d6deSBernhard Schmidt #define RT2860_RX_STATUS_BUSY (1 << 1) 5054310d6deSBernhard Schmidt #define RT2860_TX_STATUS_BUSY (1 << 0) 5064310d6deSBernhard Schmidt 5074310d6deSBernhard Schmidt /* possible flags for register PWR_PIN_CFG */ 5084310d6deSBernhard Schmidt #define RT2860_IO_ADDA_PD (1 << 3) 5094310d6deSBernhard Schmidt #define RT2860_IO_PLL_PD (1 << 2) 5104310d6deSBernhard Schmidt #define RT2860_IO_RA_PE (1 << 1) 5114310d6deSBernhard Schmidt #define RT2860_IO_RF_PE (1 << 0) 5124310d6deSBernhard Schmidt 5134310d6deSBernhard Schmidt /* possible flags for register AUTO_WAKEUP_CFG */ 5144310d6deSBernhard Schmidt #define RT2860_AUTO_WAKEUP_EN (1 << 15) 5154310d6deSBernhard Schmidt #define RT2860_SLEEP_TBTT_NUM_SHIFT 8 5164310d6deSBernhard Schmidt #define RT2860_WAKEUP_LEAD_TIME_SHIFT 0 5174310d6deSBernhard Schmidt 5184310d6deSBernhard Schmidt /* possible flags for register TX_PIN_CFG */ 5197a22215cSEitan Adler #define RT3593_LNA_PE_G2_POL (1U << 31) 5204310d6deSBernhard Schmidt #define RT3593_LNA_PE_A2_POL (1 << 30) 5214310d6deSBernhard Schmidt #define RT3593_LNA_PE_G2_EN (1 << 29) 5224310d6deSBernhard Schmidt #define RT3593_LNA_PE_A2_EN (1 << 28) 5234310d6deSBernhard Schmidt #define RT3593_LNA_PE2_EN (RT3593_LNA_PE_A2_EN | RT3593_LNA_PE_G2_EN) 5244310d6deSBernhard Schmidt #define RT3593_PA_PE_G2_POL (1 << 27) 5254310d6deSBernhard Schmidt #define RT3593_PA_PE_A2_POL (1 << 26) 5264310d6deSBernhard Schmidt #define RT3593_PA_PE_G2_EN (1 << 25) 5274310d6deSBernhard Schmidt #define RT3593_PA_PE_A2_EN (1 << 24) 5284310d6deSBernhard Schmidt #define RT2860_TRSW_POL (1 << 19) 5294310d6deSBernhard Schmidt #define RT2860_TRSW_EN (1 << 18) 5304310d6deSBernhard Schmidt #define RT2860_RFTR_POL (1 << 17) 5314310d6deSBernhard Schmidt #define RT2860_RFTR_EN (1 << 16) 5324310d6deSBernhard Schmidt #define RT2860_LNA_PE_G1_POL (1 << 15) 5334310d6deSBernhard Schmidt #define RT2860_LNA_PE_A1_POL (1 << 14) 5344310d6deSBernhard Schmidt #define RT2860_LNA_PE_G0_POL (1 << 13) 5354310d6deSBernhard Schmidt #define RT2860_LNA_PE_A0_POL (1 << 12) 5364310d6deSBernhard Schmidt #define RT2860_LNA_PE_G1_EN (1 << 11) 5374310d6deSBernhard Schmidt #define RT2860_LNA_PE_A1_EN (1 << 10) 5384310d6deSBernhard Schmidt #define RT2860_LNA_PE1_EN (RT2860_LNA_PE_A1_EN | RT2860_LNA_PE_G1_EN) 5394310d6deSBernhard Schmidt #define RT2860_LNA_PE_G0_EN (1 << 9) 5404310d6deSBernhard Schmidt #define RT2860_LNA_PE_A0_EN (1 << 8) 5414310d6deSBernhard Schmidt #define RT2860_LNA_PE0_EN (RT2860_LNA_PE_A0_EN | RT2860_LNA_PE_G0_EN) 5424310d6deSBernhard Schmidt #define RT2860_PA_PE_G1_POL (1 << 7) 5434310d6deSBernhard Schmidt #define RT2860_PA_PE_A1_POL (1 << 6) 5444310d6deSBernhard Schmidt #define RT2860_PA_PE_G0_POL (1 << 5) 5454310d6deSBernhard Schmidt #define RT2860_PA_PE_A0_POL (1 << 4) 5464310d6deSBernhard Schmidt #define RT2860_PA_PE_G1_EN (1 << 3) 5474310d6deSBernhard Schmidt #define RT2860_PA_PE_A1_EN (1 << 2) 5484310d6deSBernhard Schmidt #define RT2860_PA_PE_G0_EN (1 << 1) 5494310d6deSBernhard Schmidt #define RT2860_PA_PE_A0_EN (1 << 0) 5504310d6deSBernhard Schmidt 5514310d6deSBernhard Schmidt /* possible flags for register TX_BAND_CFG */ 5524310d6deSBernhard Schmidt #define RT2860_5G_BAND_SEL_N (1 << 2) 5534310d6deSBernhard Schmidt #define RT2860_5G_BAND_SEL_P (1 << 1) 5544310d6deSBernhard Schmidt #define RT2860_TX_BAND_SEL (1 << 0) 5554310d6deSBernhard Schmidt 5564310d6deSBernhard Schmidt /* possible flags for register TX_SW_CFG0 */ 5574310d6deSBernhard Schmidt #define RT2860_DLY_RFTR_EN_SHIFT 24 5584310d6deSBernhard Schmidt #define RT2860_DLY_TRSW_EN_SHIFT 16 5594310d6deSBernhard Schmidt #define RT2860_DLY_PAPE_EN_SHIFT 8 5604310d6deSBernhard Schmidt #define RT2860_DLY_TXPE_EN_SHIFT 0 5614310d6deSBernhard Schmidt 5624310d6deSBernhard Schmidt /* possible flags for register TX_SW_CFG1 */ 5634310d6deSBernhard Schmidt #define RT2860_DLY_RFTR_DIS_SHIFT 16 5644310d6deSBernhard Schmidt #define RT2860_DLY_TRSW_DIS_SHIFT 8 5654310d6deSBernhard Schmidt #define RT2860_DLY_PAPE_DIS SHIFT 0 5664310d6deSBernhard Schmidt 5674310d6deSBernhard Schmidt /* possible flags for register TX_SW_CFG2 */ 5684310d6deSBernhard Schmidt #define RT2860_DLY_LNA_EN_SHIFT 24 5694310d6deSBernhard Schmidt #define RT2860_DLY_LNA_DIS_SHIFT 16 5704310d6deSBernhard Schmidt #define RT2860_DLY_DAC_EN_SHIFT 8 5714310d6deSBernhard Schmidt #define RT2860_DLY_DAC_DIS_SHIFT 0 5724310d6deSBernhard Schmidt 5734310d6deSBernhard Schmidt /* possible flags for register TXOP_THRES_CFG */ 5744310d6deSBernhard Schmidt #define RT2860_TXOP_REM_THRES_SHIFT 24 5754310d6deSBernhard Schmidt #define RT2860_CF_END_THRES_SHIFT 16 5764310d6deSBernhard Schmidt #define RT2860_RDG_IN_THRES 8 5774310d6deSBernhard Schmidt #define RT2860_RDG_OUT_THRES 0 5784310d6deSBernhard Schmidt 5794310d6deSBernhard Schmidt /* possible flags for register TXOP_CTRL_CFG */ 5804310d6deSBernhard Schmidt #define RT2860_EXT_CW_MIN_SHIFT 16 5814310d6deSBernhard Schmidt #define RT2860_EXT_CCA_DLY_SHIFT 8 5824310d6deSBernhard Schmidt #define RT2860_EXT_CCA_EN (1 << 7) 5834310d6deSBernhard Schmidt #define RT2860_LSIG_TXOP_EN (1 << 6) 5844310d6deSBernhard Schmidt #define RT2860_TXOP_TRUN_EN_MIMOPS (1 << 4) 5854310d6deSBernhard Schmidt #define RT2860_TXOP_TRUN_EN_TXOP (1 << 3) 5864310d6deSBernhard Schmidt #define RT2860_TXOP_TRUN_EN_RATE (1 << 2) 5874310d6deSBernhard Schmidt #define RT2860_TXOP_TRUN_EN_AC (1 << 1) 5884310d6deSBernhard Schmidt #define RT2860_TXOP_TRUN_EN_TIMEOUT (1 << 0) 5894310d6deSBernhard Schmidt 5904310d6deSBernhard Schmidt /* possible flags for register TX_RTS_CFG */ 5914310d6deSBernhard Schmidt #define RT2860_RTS_FBK_EN (1 << 24) 5924310d6deSBernhard Schmidt #define RT2860_RTS_THRES_SHIFT 8 5934310d6deSBernhard Schmidt #define RT2860_RTS_RTY_LIMIT_SHIFT 0 5944310d6deSBernhard Schmidt 5954310d6deSBernhard Schmidt /* possible flags for register TX_TIMEOUT_CFG */ 5964310d6deSBernhard Schmidt #define RT2860_TXOP_TIMEOUT_SHIFT 16 5974310d6deSBernhard Schmidt #define RT2860_RX_ACK_TIMEOUT_SHIFT 8 5984310d6deSBernhard Schmidt #define RT2860_MPDU_LIFE_TIME_SHIFT 4 5994310d6deSBernhard Schmidt 6004310d6deSBernhard Schmidt /* possible flags for register TX_RTY_CFG */ 6014310d6deSBernhard Schmidt #define RT2860_TX_AUTOFB_EN (1 << 30) 6024310d6deSBernhard Schmidt #define RT2860_AGG_RTY_MODE_TIMER (1 << 29) 6034310d6deSBernhard Schmidt #define RT2860_NAG_RTY_MODE_TIMER (1 << 28) 6044310d6deSBernhard Schmidt #define RT2860_LONG_RTY_THRES_SHIFT 16 6054310d6deSBernhard Schmidt #define RT2860_LONG_RTY_LIMIT_SHIFT 8 6064310d6deSBernhard Schmidt #define RT2860_SHORT_RTY_LIMIT_SHIFT 0 6074310d6deSBernhard Schmidt 6084310d6deSBernhard Schmidt /* possible flags for register TX_LINK_CFG */ 6094310d6deSBernhard Schmidt #define RT2860_REMOTE_MFS_SHIFT 24 6104310d6deSBernhard Schmidt #define RT2860_REMOTE_MFB_SHIFT 16 6114310d6deSBernhard Schmidt #define RT2860_TX_CFACK_EN (1 << 12) 6124310d6deSBernhard Schmidt #define RT2860_TX_RDG_EN (1 << 11) 6134310d6deSBernhard Schmidt #define RT2860_TX_MRQ_EN (1 << 10) 6144310d6deSBernhard Schmidt #define RT2860_REMOTE_UMFS_EN (1 << 9) 6154310d6deSBernhard Schmidt #define RT2860_TX_MFB_EN (1 << 8) 6164310d6deSBernhard Schmidt #define RT2860_REMOTE_MFB_LT_SHIFT 0 6174310d6deSBernhard Schmidt 6184310d6deSBernhard Schmidt /* possible flags for registers *_PROT_CFG */ 6194310d6deSBernhard Schmidt #define RT2860_RTSTH_EN (1 << 26) 6204310d6deSBernhard Schmidt #define RT2860_TXOP_ALLOW_GF40 (1 << 25) 6214310d6deSBernhard Schmidt #define RT2860_TXOP_ALLOW_GF20 (1 << 24) 6224310d6deSBernhard Schmidt #define RT2860_TXOP_ALLOW_MM40 (1 << 23) 6234310d6deSBernhard Schmidt #define RT2860_TXOP_ALLOW_MM20 (1 << 22) 6244310d6deSBernhard Schmidt #define RT2860_TXOP_ALLOW_OFDM (1 << 21) 6254310d6deSBernhard Schmidt #define RT2860_TXOP_ALLOW_CCK (1 << 20) 6264310d6deSBernhard Schmidt #define RT2860_TXOP_ALLOW_ALL (0x3f << 20) 6274310d6deSBernhard Schmidt #define RT2860_PROT_NAV_SHORT (1 << 18) 6284310d6deSBernhard Schmidt #define RT2860_PROT_NAV_LONG (2 << 18) 6294310d6deSBernhard Schmidt #define RT2860_PROT_CTRL_RTS_CTS (1 << 16) 6304310d6deSBernhard Schmidt #define RT2860_PROT_CTRL_CTS (2 << 16) 6314310d6deSBernhard Schmidt 6324310d6deSBernhard Schmidt /* possible flags for registers EXP_{CTS,ACK}_TIME */ 6334310d6deSBernhard Schmidt #define RT2860_EXP_OFDM_TIME_SHIFT 16 6344310d6deSBernhard Schmidt #define RT2860_EXP_CCK_TIME_SHIFT 0 6354310d6deSBernhard Schmidt 6364310d6deSBernhard Schmidt /* possible flags for register RX_FILTR_CFG */ 6374310d6deSBernhard Schmidt #define RT2860_DROP_CTRL_RSV (1 << 16) 6384310d6deSBernhard Schmidt #define RT2860_DROP_BAR (1 << 15) 6394310d6deSBernhard Schmidt #define RT2860_DROP_BA (1 << 14) 6404310d6deSBernhard Schmidt #define RT2860_DROP_PSPOLL (1 << 13) 6414310d6deSBernhard Schmidt #define RT2860_DROP_RTS (1 << 12) 6424310d6deSBernhard Schmidt #define RT2860_DROP_CTS (1 << 11) 6434310d6deSBernhard Schmidt #define RT2860_DROP_ACK (1 << 10) 6444310d6deSBernhard Schmidt #define RT2860_DROP_CFEND (1 << 9) 6454310d6deSBernhard Schmidt #define RT2860_DROP_CFACK (1 << 8) 6464310d6deSBernhard Schmidt #define RT2860_DROP_DUPL (1 << 7) 6474310d6deSBernhard Schmidt #define RT2860_DROP_BC (1 << 6) 6484310d6deSBernhard Schmidt #define RT2860_DROP_MC (1 << 5) 6494310d6deSBernhard Schmidt #define RT2860_DROP_VER_ERR (1 << 4) 6504310d6deSBernhard Schmidt #define RT2860_DROP_NOT_MYBSS (1 << 3) 6514310d6deSBernhard Schmidt #define RT2860_DROP_UC_NOME (1 << 2) 6524310d6deSBernhard Schmidt #define RT2860_DROP_PHY_ERR (1 << 1) 6534310d6deSBernhard Schmidt #define RT2860_DROP_CRC_ERR (1 << 0) 6544310d6deSBernhard Schmidt 6554310d6deSBernhard Schmidt /* possible flags for register AUTO_RSP_CFG */ 6564310d6deSBernhard Schmidt #define RT2860_CTRL_PWR_BIT (1 << 7) 6574310d6deSBernhard Schmidt #define RT2860_BAC_ACK_POLICY (1 << 6) 6584310d6deSBernhard Schmidt #define RT2860_CCK_SHORT_EN (1 << 4) 6594310d6deSBernhard Schmidt #define RT2860_CTS_40M_REF_EN (1 << 3) 6604310d6deSBernhard Schmidt #define RT2860_CTS_40M_MODE_EN (1 << 2) 6614310d6deSBernhard Schmidt #define RT2860_BAC_ACKPOLICY_EN (1 << 1) 6624310d6deSBernhard Schmidt #define RT2860_AUTO_RSP_EN (1 << 0) 6634310d6deSBernhard Schmidt 6644310d6deSBernhard Schmidt /* possible flags for register SIFS_COST_CFG */ 6654310d6deSBernhard Schmidt #define RT2860_OFDM_SIFS_COST_SHIFT 8 6664310d6deSBernhard Schmidt #define RT2860_CCK_SIFS_COST_SHIFT 0 6674310d6deSBernhard Schmidt 6684310d6deSBernhard Schmidt /* possible flags for register TXOP_HLDR_ET */ 6694310d6deSBernhard Schmidt #define RT2860_TXOP_ETM1_EN (1 << 25) 6704310d6deSBernhard Schmidt #define RT2860_TXOP_ETM0_EN (1 << 24) 6714310d6deSBernhard Schmidt #define RT2860_TXOP_ETM_THRES_SHIFT 16 6724310d6deSBernhard Schmidt #define RT2860_TXOP_ETO_EN (1 << 8) 6734310d6deSBernhard Schmidt #define RT2860_TXOP_ETO_THRES_SHIFT 1 6744310d6deSBernhard Schmidt #define RT2860_PER_RX_RST_EN (1 << 0) 6754310d6deSBernhard Schmidt 6764310d6deSBernhard Schmidt /* possible flags for register TX_STAT_FIFO */ 6774310d6deSBernhard Schmidt #define RT2860_TXQ_MCS_SHIFT 16 6784310d6deSBernhard Schmidt #define RT2860_TXQ_WCID_SHIFT 8 6794310d6deSBernhard Schmidt #define RT2860_TXQ_ACKREQ (1 << 7) 6804310d6deSBernhard Schmidt #define RT2860_TXQ_AGG (1 << 6) 6814310d6deSBernhard Schmidt #define RT2860_TXQ_OK (1 << 5) 6824310d6deSBernhard Schmidt #define RT2860_TXQ_PID_SHIFT 1 6834310d6deSBernhard Schmidt #define RT2860_TXQ_VLD (1 << 0) 6844310d6deSBernhard Schmidt 6854310d6deSBernhard Schmidt /* possible flags for register WCID_ATTR */ 6864310d6deSBernhard Schmidt #define RT2860_MODE_NOSEC 0 6874310d6deSBernhard Schmidt #define RT2860_MODE_WEP40 1 6884310d6deSBernhard Schmidt #define RT2860_MODE_WEP104 2 6894310d6deSBernhard Schmidt #define RT2860_MODE_TKIP 3 6904310d6deSBernhard Schmidt #define RT2860_MODE_AES_CCMP 4 6914310d6deSBernhard Schmidt #define RT2860_MODE_CKIP40 5 6924310d6deSBernhard Schmidt #define RT2860_MODE_CKIP104 6 6934310d6deSBernhard Schmidt #define RT2860_MODE_CKIP128 7 6944310d6deSBernhard Schmidt #define RT2860_RX_PKEY_EN (1 << 0) 6954310d6deSBernhard Schmidt 6964310d6deSBernhard Schmidt /* possible flags for register H2M_MAILBOX */ 6974310d6deSBernhard Schmidt #define RT2860_H2M_BUSY (1 << 24) 6984310d6deSBernhard Schmidt #define RT2860_TOKEN_NO_INTR 0xff 6994310d6deSBernhard Schmidt 7004310d6deSBernhard Schmidt /* possible flags for MCU command RT2860_MCU_CMD_LEDS */ 7014310d6deSBernhard Schmidt #define RT2860_LED_RADIO (1 << 13) 7024310d6deSBernhard Schmidt #define RT2860_LED_LINK_2GHZ (1 << 14) 7034310d6deSBernhard Schmidt #define RT2860_LED_LINK_5GHZ (1 << 15) 7044310d6deSBernhard Schmidt 7054310d6deSBernhard Schmidt /* possible flags for RT3020 RF register 1 */ 7064310d6deSBernhard Schmidt #define RT3070_RF_BLOCK (1 << 0) 7076fc44dabSKevin Lo #define RT3070_PLL_PD (1 << 1) 7084310d6deSBernhard Schmidt #define RT3070_RX0_PD (1 << 2) 7094310d6deSBernhard Schmidt #define RT3070_TX0_PD (1 << 3) 7104310d6deSBernhard Schmidt #define RT3070_RX1_PD (1 << 4) 7114310d6deSBernhard Schmidt #define RT3070_TX1_PD (1 << 5) 7124310d6deSBernhard Schmidt #define RT3070_RX2_PD (1 << 6) 7134310d6deSBernhard Schmidt #define RT3070_TX2_PD (1 << 7) 7144310d6deSBernhard Schmidt 7154310d6deSBernhard Schmidt /* possible flags for RT3020 RF register 7 */ 7164310d6deSBernhard Schmidt #define RT3070_TUNE (1 << 0) 7174310d6deSBernhard Schmidt 7184310d6deSBernhard Schmidt /* possible flags for RT3020 RF register 15 */ 7194310d6deSBernhard Schmidt #define RT3070_TX_LO2 (1 << 3) 7204310d6deSBernhard Schmidt 7214310d6deSBernhard Schmidt /* possible flags for RT3020 RF register 17 */ 7224310d6deSBernhard Schmidt #define RT3070_TX_LO1 (1 << 3) 7234310d6deSBernhard Schmidt 7244310d6deSBernhard Schmidt /* possible flags for RT3020 RF register 20 */ 7254310d6deSBernhard Schmidt #define RT3070_RX_LO1 (1 << 3) 7264310d6deSBernhard Schmidt 7274310d6deSBernhard Schmidt /* possible flags for RT3020 RF register 21 */ 7284310d6deSBernhard Schmidt #define RT3070_RX_LO2 (1 << 3) 7294310d6deSBernhard Schmidt #define RT3070_RX_CTB (1 << 7) 7304310d6deSBernhard Schmidt 7314310d6deSBernhard Schmidt /* possible flags for RT3020 RF register 22 */ 7324310d6deSBernhard Schmidt #define RT3070_BB_LOOPBACK (1 << 0) 7334310d6deSBernhard Schmidt 7344310d6deSBernhard Schmidt /* possible flags for RT3053 RF register 1 */ 7354310d6deSBernhard Schmidt #define RT3593_VCO (1 << 0) 7364310d6deSBernhard Schmidt 7374310d6deSBernhard Schmidt /* possible flags for RT3053 RF register 2 */ 7384310d6deSBernhard Schmidt #define RT3593_RESCAL (1 << 7) 7394310d6deSBernhard Schmidt 7404310d6deSBernhard Schmidt /* possible flags for RT3053 RF register 3 */ 7414310d6deSBernhard Schmidt #define RT3593_VCOCAL (1 << 7) 7424310d6deSBernhard Schmidt 7434310d6deSBernhard Schmidt /* possible flags for RT3053 RF register 6 */ 7444310d6deSBernhard Schmidt #define RT3593_VCO_IC (1 << 6) 7454310d6deSBernhard Schmidt 7464310d6deSBernhard Schmidt /* possible flags for RT3053 RF register 20 */ 7474310d6deSBernhard Schmidt #define RT3593_LDO_PLL_VC_MASK 0x0e 7484310d6deSBernhard Schmidt #define RT3593_LDO_RF_VC_MASK 0xe0 7494310d6deSBernhard Schmidt 7504310d6deSBernhard Schmidt /* possible flags for RT3053 RF register 22 */ 7514310d6deSBernhard Schmidt #define RT3593_CP_IC_MASK 0xe0 7524310d6deSBernhard Schmidt #define RT3593_CP_IC_SHIFT 5 7534310d6deSBernhard Schmidt 7544310d6deSBernhard Schmidt /* possible flags for RT3053 RF register 46 */ 7554310d6deSBernhard Schmidt #define RT3593_RX_CTB (1 << 5) 7564310d6deSBernhard Schmidt 7574310d6deSBernhard Schmidt #define RT3090_DEF_LNA 10 7584310d6deSBernhard Schmidt 7596fc44dabSKevin Lo /* possible flags for RT5390 RF register 38 */ 7606fc44dabSKevin Lo #define RT5390_RX_LO1 (1 << 5) 7616fc44dabSKevin Lo 7626fc44dabSKevin Lo /* possible flags for RT5390 RF register 39 */ 7636fc44dabSKevin Lo #define RT5390_RX_LO2 (1 << 7) 7646fc44dabSKevin Lo 7656fc44dabSKevin Lo /* possible flags for RT5390 RF register 42 */ 7666fc44dabSKevin Lo #define RT5390_RX_CTB (1 << 6) 7676fc44dabSKevin Lo 7686fc44dabSKevin Lo /* possible flags for RT5390 BBP register 4 */ 7696fc44dabSKevin Lo #define RT5390_MAC_IF_CTRL (1 << 6) 7706fc44dabSKevin Lo 7716fc44dabSKevin Lo /* possible flags for RT5390 BBP register 105 */ 7726fc44dabSKevin Lo #define RT5390_MLD (1 << 2) 7736fc44dabSKevin Lo #define RT5390_SIG_MODULATION (1 << 3) 7746fc44dabSKevin Lo 7754310d6deSBernhard Schmidt /* RT2860 TX descriptor */ 7764310d6deSBernhard Schmidt struct rt2860_txd { 7774310d6deSBernhard Schmidt uint32_t sdp0; /* Segment Data Pointer 0 */ 7784310d6deSBernhard Schmidt uint16_t sdl1; /* Segment Data Length 1 */ 7794310d6deSBernhard Schmidt #define RT2860_TX_BURST (1 << 15) 7804310d6deSBernhard Schmidt #define RT2860_TX_LS1 (1 << 14) /* SDP1 is the last segment */ 7814310d6deSBernhard Schmidt 7824310d6deSBernhard Schmidt uint16_t sdl0; /* Segment Data Length 0 */ 7834310d6deSBernhard Schmidt #define RT2860_TX_DDONE (1 << 15) 7844310d6deSBernhard Schmidt #define RT2860_TX_LS0 (1 << 14) /* SDP0 is the last segment */ 7854310d6deSBernhard Schmidt 7864310d6deSBernhard Schmidt uint32_t sdp1; /* Segment Data Pointer 1 */ 7874310d6deSBernhard Schmidt uint8_t reserved[3]; 7884310d6deSBernhard Schmidt uint8_t flags; 7894310d6deSBernhard Schmidt #define RT2860_TX_QSEL_SHIFT 1 7904310d6deSBernhard Schmidt #define RT2860_TX_QSEL_MGMT (0 << 1) 7914310d6deSBernhard Schmidt #define RT2860_TX_QSEL_HCCA (1 << 1) 7924310d6deSBernhard Schmidt #define RT2860_TX_QSEL_EDCA (2 << 1) 7934310d6deSBernhard Schmidt #define RT2860_TX_WIV (1 << 0) 7944310d6deSBernhard Schmidt } __packed; 7954310d6deSBernhard Schmidt 7964310d6deSBernhard Schmidt /* RT2870 TX descriptor */ 7974310d6deSBernhard Schmidt struct rt2870_txd { 7984310d6deSBernhard Schmidt uint16_t len; 7994310d6deSBernhard Schmidt uint8_t pad; 8004310d6deSBernhard Schmidt uint8_t flags; 8014310d6deSBernhard Schmidt } __packed; 8024310d6deSBernhard Schmidt 8034310d6deSBernhard Schmidt /* TX Wireless Information */ 8044310d6deSBernhard Schmidt struct rt2860_txwi { 8054310d6deSBernhard Schmidt uint8_t flags; 8064310d6deSBernhard Schmidt #define RT2860_TX_MPDU_DSITY_SHIFT 5 8074310d6deSBernhard Schmidt #define RT2860_TX_AMPDU (1 << 4) 8084310d6deSBernhard Schmidt #define RT2860_TX_TS (1 << 3) 8094310d6deSBernhard Schmidt #define RT2860_TX_CFACK (1 << 2) 8104310d6deSBernhard Schmidt #define RT2860_TX_MMPS (1 << 1) 8114310d6deSBernhard Schmidt #define RT2860_TX_FRAG (1 << 0) 8124310d6deSBernhard Schmidt 8134310d6deSBernhard Schmidt uint8_t txop; 8144310d6deSBernhard Schmidt #define RT2860_TX_TXOP_HT 0 8154310d6deSBernhard Schmidt #define RT2860_TX_TXOP_PIFS 1 8164310d6deSBernhard Schmidt #define RT2860_TX_TXOP_SIFS 2 8174310d6deSBernhard Schmidt #define RT2860_TX_TXOP_BACKOFF 3 8184310d6deSBernhard Schmidt 8194310d6deSBernhard Schmidt uint16_t phy; 8204310d6deSBernhard Schmidt #define RT2860_PHY_MODE 0xc000 8214310d6deSBernhard Schmidt #define RT2860_PHY_CCK (0 << 14) 8224310d6deSBernhard Schmidt #define RT2860_PHY_OFDM (1 << 14) 8234310d6deSBernhard Schmidt #define RT2860_PHY_HT (2 << 14) 8244310d6deSBernhard Schmidt #define RT2860_PHY_HT_GF (3 << 14) 8254310d6deSBernhard Schmidt #define RT2860_PHY_SGI (1 << 8) 8264310d6deSBernhard Schmidt #define RT2860_PHY_BW40 (1 << 7) 8274310d6deSBernhard Schmidt #define RT2860_PHY_MCS 0x7f 8284310d6deSBernhard Schmidt #define RT2860_PHY_SHPRE (1 << 3) 8294310d6deSBernhard Schmidt 8304310d6deSBernhard Schmidt uint8_t xflags; 8314310d6deSBernhard Schmidt #define RT2860_TX_BAWINSIZE_SHIFT 2 8324310d6deSBernhard Schmidt #define RT2860_TX_NSEQ (1 << 1) 8334310d6deSBernhard Schmidt #define RT2860_TX_ACK (1 << 0) 8344310d6deSBernhard Schmidt 8354310d6deSBernhard Schmidt uint8_t wcid; /* Wireless Client ID */ 8364310d6deSBernhard Schmidt uint16_t len; 8374310d6deSBernhard Schmidt #define RT2860_TX_PID_SHIFT 12 8384310d6deSBernhard Schmidt 8394310d6deSBernhard Schmidt uint32_t iv; 8404310d6deSBernhard Schmidt uint32_t eiv; 8414310d6deSBernhard Schmidt } __packed; 8424310d6deSBernhard Schmidt 8434310d6deSBernhard Schmidt /* RT2860 RX descriptor */ 8444310d6deSBernhard Schmidt struct rt2860_rxd { 8454310d6deSBernhard Schmidt uint32_t sdp0; 8464310d6deSBernhard Schmidt uint16_t sdl1; /* unused */ 8474310d6deSBernhard Schmidt uint16_t sdl0; 8484310d6deSBernhard Schmidt #define RT2860_RX_DDONE (1 << 15) 8494310d6deSBernhard Schmidt #define RT2860_RX_LS0 (1 << 14) 8504310d6deSBernhard Schmidt 8514310d6deSBernhard Schmidt uint32_t sdp1; /* unused */ 8524310d6deSBernhard Schmidt uint32_t flags; 8534310d6deSBernhard Schmidt #define RT2860_RX_DEC (1 << 16) 8544310d6deSBernhard Schmidt #define RT2860_RX_AMPDU (1 << 15) 8554310d6deSBernhard Schmidt #define RT2860_RX_L2PAD (1 << 14) 8564310d6deSBernhard Schmidt #define RT2860_RX_RSSI (1 << 13) 8574310d6deSBernhard Schmidt #define RT2860_RX_HTC (1 << 12) 8584310d6deSBernhard Schmidt #define RT2860_RX_AMSDU (1 << 11) 8594310d6deSBernhard Schmidt #define RT2860_RX_MICERR (1 << 10) 8604310d6deSBernhard Schmidt #define RT2860_RX_ICVERR (1 << 9) 8614310d6deSBernhard Schmidt #define RT2860_RX_CRCERR (1 << 8) 8624310d6deSBernhard Schmidt #define RT2860_RX_MYBSS (1 << 7) 8634310d6deSBernhard Schmidt #define RT2860_RX_BC (1 << 6) 8644310d6deSBernhard Schmidt #define RT2860_RX_MC (1 << 5) 8654310d6deSBernhard Schmidt #define RT2860_RX_UC2ME (1 << 4) 8664310d6deSBernhard Schmidt #define RT2860_RX_FRAG (1 << 3) 8674310d6deSBernhard Schmidt #define RT2860_RX_NULL (1 << 2) 8684310d6deSBernhard Schmidt #define RT2860_RX_DATA (1 << 1) 8694310d6deSBernhard Schmidt #define RT2860_RX_BA (1 << 0) 8704310d6deSBernhard Schmidt } __packed; 8714310d6deSBernhard Schmidt 8724310d6deSBernhard Schmidt /* RT2870 RX descriptor */ 8734310d6deSBernhard Schmidt struct rt2870_rxd { 8744310d6deSBernhard Schmidt /* single 32-bit field */ 8754310d6deSBernhard Schmidt uint32_t flags; 8764310d6deSBernhard Schmidt } __packed; 8774310d6deSBernhard Schmidt 8784310d6deSBernhard Schmidt /* RX Wireless Information */ 8794310d6deSBernhard Schmidt struct rt2860_rxwi { 8804310d6deSBernhard Schmidt uint8_t wcid; 8814310d6deSBernhard Schmidt uint8_t keyidx; 8824310d6deSBernhard Schmidt #define RT2860_RX_UDF_SHIFT 5 8834310d6deSBernhard Schmidt #define RT2860_RX_BSS_IDX_SHIFT 2 8844310d6deSBernhard Schmidt 8854310d6deSBernhard Schmidt uint16_t len; 8864310d6deSBernhard Schmidt #define RT2860_RX_TID_SHIFT 12 8874310d6deSBernhard Schmidt 8884310d6deSBernhard Schmidt uint16_t seq; 8894310d6deSBernhard Schmidt uint16_t phy; 8904310d6deSBernhard Schmidt uint8_t rssi[3]; 8914310d6deSBernhard Schmidt uint8_t reserved1; 8924310d6deSBernhard Schmidt uint8_t snr[2]; 8934310d6deSBernhard Schmidt uint16_t reserved2; 8944310d6deSBernhard Schmidt } __packed; 8954310d6deSBernhard Schmidt 8964310d6deSBernhard Schmidt /* first DMA segment contains TXWI + 802.11 header + 32-bit padding */ 8974310d6deSBernhard Schmidt #define RT2860_TXWI_DMASZ \ 8984310d6deSBernhard Schmidt (sizeof (struct rt2860_txwi) + \ 8994310d6deSBernhard Schmidt sizeof (struct ieee80211_frame) + 6 + \ 9004310d6deSBernhard Schmidt sizeof (uint16_t)) 9014310d6deSBernhard Schmidt 9024310d6deSBernhard Schmidt #define RT2860_RF1 0 9034310d6deSBernhard Schmidt #define RT2860_RF2 2 9044310d6deSBernhard Schmidt #define RT2860_RF3 1 9054310d6deSBernhard Schmidt #define RT2860_RF4 3 9064310d6deSBernhard Schmidt 907b0f7be91SKevin Lo #define RT2860_RF_2820 0x0001 /* 2T3R */ 908b0f7be91SKevin Lo #define RT2860_RF_2850 0x0002 /* dual-band 2T3R */ 909b0f7be91SKevin Lo #define RT2860_RF_2720 0x0003 /* 1T2R */ 910b0f7be91SKevin Lo #define RT2860_RF_2750 0x0004 /* dual-band 1T2R */ 911b0f7be91SKevin Lo #define RT3070_RF_3020 0x0005 /* 1T1R */ 912b0f7be91SKevin Lo #define RT3070_RF_2020 0x0006 /* b/g */ 913b0f7be91SKevin Lo #define RT3070_RF_3021 0x0007 /* 1T2R */ 914b0f7be91SKevin Lo #define RT3070_RF_3022 0x0008 /* 2T2R */ 915b0f7be91SKevin Lo #define RT3070_RF_3052 0x0009 /* dual-band 2T2R */ 916b0f7be91SKevin Lo #define RT3070_RF_3320 0x000b /* 1T1R */ 917b0f7be91SKevin Lo #define RT3070_RF_3053 0x000d /* dual-band 3T3R */ 918b0f7be91SKevin Lo #define RT5390_RF_5360 0x5360 /* 1T1R */ 919b0f7be91SKevin Lo #define RT5390_RF_5390 0x5390 /* 1T1R */ 9204310d6deSBernhard Schmidt 9214310d6deSBernhard Schmidt /* USB commands for RT2870 only */ 9224310d6deSBernhard Schmidt #define RT2870_RESET 1 9234310d6deSBernhard Schmidt #define RT2870_WRITE_2 2 9244310d6deSBernhard Schmidt #define RT2870_WRITE_REGION_1 6 9254310d6deSBernhard Schmidt #define RT2870_READ_REGION_1 7 9264310d6deSBernhard Schmidt #define RT2870_EEPROM_READ 9 9274310d6deSBernhard Schmidt 9284310d6deSBernhard Schmidt #define RT2860_EEPROM_DELAY 1 /* minimum hold time (microsecond) */ 9294310d6deSBernhard Schmidt 930b0f7be91SKevin Lo #define RT2860_EEPROM_CHIPID 0x00 9314310d6deSBernhard Schmidt #define RT2860_EEPROM_VERSION 0x01 9324310d6deSBernhard Schmidt #define RT2860_EEPROM_MAC01 0x02 9334310d6deSBernhard Schmidt #define RT2860_EEPROM_MAC23 0x03 9344310d6deSBernhard Schmidt #define RT2860_EEPROM_MAC45 0x04 9354310d6deSBernhard Schmidt #define RT2860_EEPROM_PCIE_PSLEVEL 0x11 9364310d6deSBernhard Schmidt #define RT2860_EEPROM_REV 0x12 9374310d6deSBernhard Schmidt #define RT2860_EEPROM_ANTENNA 0x1a 9384310d6deSBernhard Schmidt #define RT2860_EEPROM_CONFIG 0x1b 9394310d6deSBernhard Schmidt #define RT2860_EEPROM_COUNTRY 0x1c 9404310d6deSBernhard Schmidt #define RT2860_EEPROM_FREQ_LEDS 0x1d 9414310d6deSBernhard Schmidt #define RT2860_EEPROM_LED1 0x1e 9424310d6deSBernhard Schmidt #define RT2860_EEPROM_LED2 0x1f 9434310d6deSBernhard Schmidt #define RT2860_EEPROM_LED3 0x20 9444310d6deSBernhard Schmidt #define RT2860_EEPROM_LNA 0x22 9454310d6deSBernhard Schmidt #define RT2860_EEPROM_RSSI1_2GHZ 0x23 9464310d6deSBernhard Schmidt #define RT2860_EEPROM_RSSI2_2GHZ 0x24 9474310d6deSBernhard Schmidt #define RT2860_EEPROM_RSSI1_5GHZ 0x25 9484310d6deSBernhard Schmidt #define RT2860_EEPROM_RSSI2_5GHZ 0x26 9494310d6deSBernhard Schmidt #define RT2860_EEPROM_DELTAPWR 0x28 9504310d6deSBernhard Schmidt #define RT2860_EEPROM_PWR2GHZ_BASE1 0x29 9514310d6deSBernhard Schmidt #define RT2860_EEPROM_PWR2GHZ_BASE2 0x30 9524310d6deSBernhard Schmidt #define RT2860_EEPROM_TSSI1_2GHZ 0x37 9534310d6deSBernhard Schmidt #define RT2860_EEPROM_TSSI2_2GHZ 0x38 9544310d6deSBernhard Schmidt #define RT2860_EEPROM_TSSI3_2GHZ 0x39 9554310d6deSBernhard Schmidt #define RT2860_EEPROM_TSSI4_2GHZ 0x3a 9564310d6deSBernhard Schmidt #define RT2860_EEPROM_TSSI5_2GHZ 0x3b 9574310d6deSBernhard Schmidt #define RT2860_EEPROM_PWR5GHZ_BASE1 0x3c 9584310d6deSBernhard Schmidt #define RT2860_EEPROM_PWR5GHZ_BASE2 0x53 9594310d6deSBernhard Schmidt #define RT2860_EEPROM_TSSI1_5GHZ 0x6a 9604310d6deSBernhard Schmidt #define RT2860_EEPROM_TSSI2_5GHZ 0x6b 9614310d6deSBernhard Schmidt #define RT2860_EEPROM_TSSI3_5GHZ 0x6c 9624310d6deSBernhard Schmidt #define RT2860_EEPROM_TSSI4_5GHZ 0x6d 9634310d6deSBernhard Schmidt #define RT2860_EEPROM_TSSI5_5GHZ 0x6e 9644310d6deSBernhard Schmidt #define RT2860_EEPROM_RPWR 0x6f 9654310d6deSBernhard Schmidt #define RT2860_EEPROM_BBP_BASE 0x78 9664310d6deSBernhard Schmidt #define RT3071_EEPROM_RF_BASE 0x82 9674310d6deSBernhard Schmidt 9684310d6deSBernhard Schmidt #define RT2860_RIDX_CCK1 0 9694310d6deSBernhard Schmidt #define RT2860_RIDX_CCK11 3 9704310d6deSBernhard Schmidt #define RT2860_RIDX_OFDM6 4 9714310d6deSBernhard Schmidt #define RT2860_RIDX_MAX 11 9724310d6deSBernhard Schmidt static const struct rt2860_rate { 9734310d6deSBernhard Schmidt uint8_t rate; 9744310d6deSBernhard Schmidt uint8_t mcs; 9754310d6deSBernhard Schmidt enum ieee80211_phytype phy; 9764310d6deSBernhard Schmidt uint8_t ctl_ridx; 9774310d6deSBernhard Schmidt uint16_t sp_ack_dur; 9784310d6deSBernhard Schmidt uint16_t lp_ack_dur; 9794310d6deSBernhard Schmidt } rt2860_rates[] = { 9804310d6deSBernhard Schmidt { 2, 0, IEEE80211_T_DS, 0, 314, 314 }, 9814310d6deSBernhard Schmidt { 4, 1, IEEE80211_T_DS, 1, 258, 162 }, 9824310d6deSBernhard Schmidt { 11, 2, IEEE80211_T_DS, 2, 223, 127 }, 9834310d6deSBernhard Schmidt { 22, 3, IEEE80211_T_DS, 3, 213, 117 }, 9844310d6deSBernhard Schmidt { 12, 0, IEEE80211_T_OFDM, 4, 60, 60 }, 9854310d6deSBernhard Schmidt { 18, 1, IEEE80211_T_OFDM, 4, 52, 52 }, 9864310d6deSBernhard Schmidt { 24, 2, IEEE80211_T_OFDM, 6, 48, 48 }, 9874310d6deSBernhard Schmidt { 36, 3, IEEE80211_T_OFDM, 6, 44, 44 }, 9884310d6deSBernhard Schmidt { 48, 4, IEEE80211_T_OFDM, 8, 44, 44 }, 9894310d6deSBernhard Schmidt { 72, 5, IEEE80211_T_OFDM, 8, 40, 40 }, 9904310d6deSBernhard Schmidt { 96, 6, IEEE80211_T_OFDM, 8, 40, 40 }, 9914310d6deSBernhard Schmidt { 108, 7, IEEE80211_T_OFDM, 8, 40, 40 } 9924310d6deSBernhard Schmidt }; 9934310d6deSBernhard Schmidt 9944310d6deSBernhard Schmidt /* 9954310d6deSBernhard Schmidt * Control and status registers access macros. 9964310d6deSBernhard Schmidt */ 9974310d6deSBernhard Schmidt #define RAL_READ(sc, reg) \ 9984310d6deSBernhard Schmidt bus_space_read_4((sc)->sc_st, (sc)->sc_sh, (reg)) 9994310d6deSBernhard Schmidt 10004310d6deSBernhard Schmidt #define RAL_WRITE(sc, reg, val) \ 10014310d6deSBernhard Schmidt bus_space_write_4((sc)->sc_st, (sc)->sc_sh, (reg), (val)) 10024310d6deSBernhard Schmidt 10034310d6deSBernhard Schmidt #define RAL_BARRIER_WRITE(sc) \ 10044310d6deSBernhard Schmidt bus_space_barrier((sc)->sc_st, (sc)->sc_sh, 0, 0x1800, \ 10054310d6deSBernhard Schmidt BUS_SPACE_BARRIER_WRITE) 10064310d6deSBernhard Schmidt 10074310d6deSBernhard Schmidt #define RAL_BARRIER_READ_WRITE(sc) \ 10084310d6deSBernhard Schmidt bus_space_barrier((sc)->sc_st, (sc)->sc_sh, 0, 0x1800, \ 10094310d6deSBernhard Schmidt BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE) 10104310d6deSBernhard Schmidt 10114310d6deSBernhard Schmidt #define RAL_WRITE_REGION_1(sc, offset, datap, count) \ 10124310d6deSBernhard Schmidt bus_space_write_region_1((sc)->sc_st, (sc)->sc_sh, (offset), \ 10134310d6deSBernhard Schmidt (datap), (count)) 10144310d6deSBernhard Schmidt 10154310d6deSBernhard Schmidt #define RAL_SET_REGION_4(sc, offset, val, count) \ 10164310d6deSBernhard Schmidt bus_space_set_region_4((sc)->sc_st, (sc)->sc_sh, (offset), \ 10174310d6deSBernhard Schmidt (val), (count)) 10184310d6deSBernhard Schmidt 10194310d6deSBernhard Schmidt /* 10204310d6deSBernhard Schmidt * EEPROM access macro. 10214310d6deSBernhard Schmidt */ 10224310d6deSBernhard Schmidt #define RT2860_EEPROM_CTL(sc, val) do { \ 10234310d6deSBernhard Schmidt RAL_WRITE((sc), RT2860_PCI_EECTRL, (val)); \ 10244310d6deSBernhard Schmidt RAL_BARRIER_READ_WRITE((sc)); \ 10254310d6deSBernhard Schmidt DELAY(RT2860_EEPROM_DELAY); \ 10264310d6deSBernhard Schmidt } while (/* CONSTCOND */0) 10274310d6deSBernhard Schmidt 10284310d6deSBernhard Schmidt /* 10294310d6deSBernhard Schmidt * Default values for MAC registers; values taken from the reference driver. 10304310d6deSBernhard Schmidt */ 10314310d6deSBernhard Schmidt #define RT2860_DEF_MAC \ 10324310d6deSBernhard Schmidt { RT2860_BCN_OFFSET0, 0xf8f0e8e0 }, \ 10336fc44dabSKevin Lo { RT2860_BCN_OFFSET1, 0x6f77d0c8 }, \ 10344310d6deSBernhard Schmidt { RT2860_LEGACY_BASIC_RATE, 0x0000013f }, \ 10354310d6deSBernhard Schmidt { RT2860_HT_BASIC_RATE, 0x00008003 }, \ 10364310d6deSBernhard Schmidt { RT2860_MAC_SYS_CTRL, 0x00000000 }, \ 10376fc44dabSKevin Lo { RT2860_RX_FILTR_CFG, 0x00017f97 }, \ 10384310d6deSBernhard Schmidt { RT2860_BKOFF_SLOT_CFG, 0x00000209 }, \ 10394310d6deSBernhard Schmidt { RT2860_TX_SW_CFG0, 0x00000000 }, \ 10404310d6deSBernhard Schmidt { RT2860_TX_SW_CFG1, 0x00080606 }, \ 10414310d6deSBernhard Schmidt { RT2860_TX_LINK_CFG, 0x00001020 }, \ 10424310d6deSBernhard Schmidt { RT2860_TX_TIMEOUT_CFG, 0x000a2090 }, \ 10436fc44dabSKevin Lo { RT2860_MAX_LEN_CFG, 0x00001f00 }, \ 10444310d6deSBernhard Schmidt { RT2860_LED_CFG, 0x7f031e46 }, \ 10454310d6deSBernhard Schmidt { RT2860_WMM_AIFSN_CFG, 0x00002273 }, \ 10464310d6deSBernhard Schmidt { RT2860_WMM_CWMIN_CFG, 0x00002344 }, \ 10474310d6deSBernhard Schmidt { RT2860_WMM_CWMAX_CFG, 0x000034aa }, \ 10484310d6deSBernhard Schmidt { RT2860_MAX_PCNT, 0x1f3fbf9f }, \ 10494310d6deSBernhard Schmidt { RT2860_TX_RTY_CFG, 0x47d01f0f }, \ 10504310d6deSBernhard Schmidt { RT2860_AUTO_RSP_CFG, 0x00000013 }, \ 10514310d6deSBernhard Schmidt { RT2860_CCK_PROT_CFG, 0x05740003 }, \ 10524310d6deSBernhard Schmidt { RT2860_OFDM_PROT_CFG, 0x05740003 }, \ 10534310d6deSBernhard Schmidt { RT2860_GF20_PROT_CFG, 0x01744004 }, \ 10544310d6deSBernhard Schmidt { RT2860_GF40_PROT_CFG, 0x03f44084 }, \ 10554310d6deSBernhard Schmidt { RT2860_MM20_PROT_CFG, 0x01744004 }, \ 10564310d6deSBernhard Schmidt { RT2860_MM40_PROT_CFG, 0x03f54084 }, \ 10574310d6deSBernhard Schmidt { RT2860_TXOP_CTRL_CFG, 0x0000583f }, \ 10584310d6deSBernhard Schmidt { RT2860_TX_RTS_CFG, 0x00092b20 }, \ 10594310d6deSBernhard Schmidt { RT2860_EXP_ACK_TIME, 0x002400ca }, \ 10604310d6deSBernhard Schmidt { RT2860_TXOP_HLDR_ET, 0x00000002 }, \ 10614310d6deSBernhard Schmidt { RT2860_XIFS_TIME_CFG, 0x33a41010 }, \ 10624310d6deSBernhard Schmidt { RT2860_PWR_PIN_CFG, 0x00000003 } 10634310d6deSBernhard Schmidt 10644310d6deSBernhard Schmidt /* 10654310d6deSBernhard Schmidt * Default values for BBP registers; values taken from the reference driver. 10664310d6deSBernhard Schmidt */ 10674310d6deSBernhard Schmidt #define RT2860_DEF_BBP \ 10684310d6deSBernhard Schmidt { 65, 0x2c }, \ 10694310d6deSBernhard Schmidt { 66, 0x38 }, \ 10706fc44dabSKevin Lo { 68, 0x0b }, \ 10714310d6deSBernhard Schmidt { 69, 0x12 }, \ 10724310d6deSBernhard Schmidt { 70, 0x0a }, \ 10734310d6deSBernhard Schmidt { 73, 0x10 }, \ 10744310d6deSBernhard Schmidt { 81, 0x37 }, \ 10754310d6deSBernhard Schmidt { 82, 0x62 }, \ 10764310d6deSBernhard Schmidt { 83, 0x6a }, \ 10774310d6deSBernhard Schmidt { 84, 0x99 }, \ 10784310d6deSBernhard Schmidt { 86, 0x00 }, \ 10794310d6deSBernhard Schmidt { 91, 0x04 }, \ 10804310d6deSBernhard Schmidt { 92, 0x00 }, \ 10814310d6deSBernhard Schmidt { 103, 0x00 }, \ 10824310d6deSBernhard Schmidt { 105, 0x05 }, \ 10834310d6deSBernhard Schmidt { 106, 0x35 } 10844310d6deSBernhard Schmidt 10856fc44dabSKevin Lo #define RT5390_DEF_BBP \ 10866fc44dabSKevin Lo { 31, 0x08 }, \ 10876fc44dabSKevin Lo { 65, 0x2c }, \ 10886fc44dabSKevin Lo { 66, 0x38 }, \ 10896fc44dabSKevin Lo { 68, 0x0b }, \ 10906fc44dabSKevin Lo { 69, 0x12 }, \ 10916fc44dabSKevin Lo { 70, 0x0a }, \ 10926fc44dabSKevin Lo { 73, 0x13 }, \ 10936fc44dabSKevin Lo { 75, 0x46 }, \ 10946fc44dabSKevin Lo { 76, 0x28 }, \ 10956fc44dabSKevin Lo { 77, 0x59 }, \ 10966fc44dabSKevin Lo { 81, 0x37 }, \ 10976fc44dabSKevin Lo { 82, 0x62 }, \ 10986fc44dabSKevin Lo { 83, 0x7a }, \ 10996fc44dabSKevin Lo { 84, 0x19 }, \ 11006fc44dabSKevin Lo { 86, 0x38 }, \ 11016fc44dabSKevin Lo { 91, 0x04 }, \ 11026fc44dabSKevin Lo { 92, 0x02 }, \ 11036fc44dabSKevin Lo { 103, 0xc0 }, \ 11046fc44dabSKevin Lo { 104, 0x92 }, \ 11056fc44dabSKevin Lo { 105, 0x3c }, \ 11066fc44dabSKevin Lo { 106, 0x03 }, \ 11076fc44dabSKevin Lo { 128, 0x12 }, \ 11086fc44dabSKevin Lo 11094310d6deSBernhard Schmidt /* 11104310d6deSBernhard Schmidt * Default settings for RF registers; values derived from the reference driver. 11114310d6deSBernhard Schmidt */ 11124310d6deSBernhard Schmidt #define RT2860_RF2850 \ 11134310d6deSBernhard Schmidt { 1, 0x100bb3, 0x1301e1, 0x05a014, 0x001402 }, \ 11144310d6deSBernhard Schmidt { 2, 0x100bb3, 0x1301e1, 0x05a014, 0x001407 }, \ 11154310d6deSBernhard Schmidt { 3, 0x100bb3, 0x1301e2, 0x05a014, 0x001402 }, \ 11164310d6deSBernhard Schmidt { 4, 0x100bb3, 0x1301e2, 0x05a014, 0x001407 }, \ 11174310d6deSBernhard Schmidt { 5, 0x100bb3, 0x1301e3, 0x05a014, 0x001402 }, \ 11184310d6deSBernhard Schmidt { 6, 0x100bb3, 0x1301e3, 0x05a014, 0x001407 }, \ 11194310d6deSBernhard Schmidt { 7, 0x100bb3, 0x1301e4, 0x05a014, 0x001402 }, \ 11204310d6deSBernhard Schmidt { 8, 0x100bb3, 0x1301e4, 0x05a014, 0x001407 }, \ 11214310d6deSBernhard Schmidt { 9, 0x100bb3, 0x1301e5, 0x05a014, 0x001402 }, \ 11224310d6deSBernhard Schmidt { 10, 0x100bb3, 0x1301e5, 0x05a014, 0x001407 }, \ 11234310d6deSBernhard Schmidt { 11, 0x100bb3, 0x1301e6, 0x05a014, 0x001402 }, \ 11244310d6deSBernhard Schmidt { 12, 0x100bb3, 0x1301e6, 0x05a014, 0x001407 }, \ 11254310d6deSBernhard Schmidt { 13, 0x100bb3, 0x1301e7, 0x05a014, 0x001402 }, \ 11264310d6deSBernhard Schmidt { 14, 0x100bb3, 0x1301e8, 0x05a014, 0x001404 }, \ 11274310d6deSBernhard Schmidt { 36, 0x100bb3, 0x130266, 0x056014, 0x001408 }, \ 11284310d6deSBernhard Schmidt { 38, 0x100bb3, 0x130267, 0x056014, 0x001404 }, \ 11294310d6deSBernhard Schmidt { 40, 0x100bb2, 0x1301a0, 0x056014, 0x001400 }, \ 11304310d6deSBernhard Schmidt { 44, 0x100bb2, 0x1301a0, 0x056014, 0x001408 }, \ 11314310d6deSBernhard Schmidt { 46, 0x100bb2, 0x1301a1, 0x056014, 0x001402 }, \ 11324310d6deSBernhard Schmidt { 48, 0x100bb2, 0x1301a1, 0x056014, 0x001406 }, \ 11334310d6deSBernhard Schmidt { 52, 0x100bb2, 0x1301a2, 0x056014, 0x001404 }, \ 11344310d6deSBernhard Schmidt { 54, 0x100bb2, 0x1301a2, 0x056014, 0x001408 }, \ 11354310d6deSBernhard Schmidt { 56, 0x100bb2, 0x1301a3, 0x056014, 0x001402 }, \ 11364310d6deSBernhard Schmidt { 60, 0x100bb2, 0x1301a4, 0x056014, 0x001400 }, \ 11374310d6deSBernhard Schmidt { 62, 0x100bb2, 0x1301a4, 0x056014, 0x001404 }, \ 11384310d6deSBernhard Schmidt { 64, 0x100bb2, 0x1301a4, 0x056014, 0x001408 }, \ 11394310d6deSBernhard Schmidt { 100, 0x100bb2, 0x1301ac, 0x05e014, 0x001400 }, \ 11404310d6deSBernhard Schmidt { 102, 0x100bb2, 0x1701ac, 0x15e014, 0x001404 }, \ 11414310d6deSBernhard Schmidt { 104, 0x100bb2, 0x1701ac, 0x15e014, 0x001408 }, \ 11424310d6deSBernhard Schmidt { 108, 0x100bb3, 0x17028c, 0x15e014, 0x001404 }, \ 11434310d6deSBernhard Schmidt { 110, 0x100bb3, 0x13028d, 0x05e014, 0x001400 }, \ 11444310d6deSBernhard Schmidt { 112, 0x100bb3, 0x13028d, 0x05e014, 0x001406 }, \ 11454310d6deSBernhard Schmidt { 116, 0x100bb3, 0x13028e, 0x05e014, 0x001408 }, \ 11464310d6deSBernhard Schmidt { 118, 0x100bb3, 0x13028f, 0x05e014, 0x001404 }, \ 11474310d6deSBernhard Schmidt { 120, 0x100bb1, 0x1300e0, 0x05e014, 0x001400 }, \ 11484310d6deSBernhard Schmidt { 124, 0x100bb1, 0x1300e0, 0x05e014, 0x001404 }, \ 11494310d6deSBernhard Schmidt { 126, 0x100bb1, 0x1300e0, 0x05e014, 0x001406 }, \ 11504310d6deSBernhard Schmidt { 128, 0x100bb1, 0x1300e0, 0x05e014, 0x001408 }, \ 11514310d6deSBernhard Schmidt { 132, 0x100bb1, 0x1300e1, 0x05e014, 0x001402 }, \ 11524310d6deSBernhard Schmidt { 134, 0x100bb1, 0x1300e1, 0x05e014, 0x001404 }, \ 11534310d6deSBernhard Schmidt { 136, 0x100bb1, 0x1300e1, 0x05e014, 0x001406 }, \ 11544310d6deSBernhard Schmidt { 140, 0x100bb1, 0x1300e2, 0x05e014, 0x001400 }, \ 11554310d6deSBernhard Schmidt { 149, 0x100bb1, 0x1300e2, 0x05e014, 0x001409 }, \ 11564310d6deSBernhard Schmidt { 151, 0x100bb1, 0x1300e3, 0x05e014, 0x001401 }, \ 11574310d6deSBernhard Schmidt { 153, 0x100bb1, 0x1300e3, 0x05e014, 0x001403 }, \ 11584310d6deSBernhard Schmidt { 157, 0x100bb1, 0x1300e3, 0x05e014, 0x001407 }, \ 11594310d6deSBernhard Schmidt { 159, 0x100bb1, 0x1300e3, 0x05e014, 0x001409 }, \ 11604310d6deSBernhard Schmidt { 161, 0x100bb1, 0x1300e4, 0x05e014, 0x001401 }, \ 11614310d6deSBernhard Schmidt { 165, 0x100bb1, 0x1300e4, 0x05e014, 0x001405 }, \ 11624310d6deSBernhard Schmidt { 167, 0x100bb1, 0x1300f4, 0x05e014, 0x001407 }, \ 11634310d6deSBernhard Schmidt { 169, 0x100bb1, 0x1300f4, 0x05e014, 0x001409 }, \ 11644310d6deSBernhard Schmidt { 171, 0x100bb1, 0x1300f5, 0x05e014, 0x001401 }, \ 11654310d6deSBernhard Schmidt { 173, 0x100bb1, 0x1300f5, 0x05e014, 0x001403 } 11664310d6deSBernhard Schmidt 11674310d6deSBernhard Schmidt #define RT3070_RF3052 \ 11684310d6deSBernhard Schmidt { 0xf1, 2, 2 }, \ 11694310d6deSBernhard Schmidt { 0xf1, 2, 7 }, \ 11704310d6deSBernhard Schmidt { 0xf2, 2, 2 }, \ 11714310d6deSBernhard Schmidt { 0xf2, 2, 7 }, \ 11724310d6deSBernhard Schmidt { 0xf3, 2, 2 }, \ 11734310d6deSBernhard Schmidt { 0xf3, 2, 7 }, \ 11744310d6deSBernhard Schmidt { 0xf4, 2, 2 }, \ 11754310d6deSBernhard Schmidt { 0xf4, 2, 7 }, \ 11764310d6deSBernhard Schmidt { 0xf5, 2, 2 }, \ 11774310d6deSBernhard Schmidt { 0xf5, 2, 7 }, \ 11784310d6deSBernhard Schmidt { 0xf6, 2, 2 }, \ 11794310d6deSBernhard Schmidt { 0xf6, 2, 7 }, \ 11804310d6deSBernhard Schmidt { 0xf7, 2, 2 }, \ 11814310d6deSBernhard Schmidt { 0xf8, 2, 4 }, \ 11824310d6deSBernhard Schmidt { 0x56, 0, 4 }, \ 11834310d6deSBernhard Schmidt { 0x56, 0, 6 }, \ 11844310d6deSBernhard Schmidt { 0x56, 0, 8 }, \ 11854310d6deSBernhard Schmidt { 0x57, 0, 0 }, \ 11864310d6deSBernhard Schmidt { 0x57, 0, 2 }, \ 11874310d6deSBernhard Schmidt { 0x57, 0, 4 }, \ 11884310d6deSBernhard Schmidt { 0x57, 0, 8 }, \ 11894310d6deSBernhard Schmidt { 0x57, 0, 10 }, \ 11904310d6deSBernhard Schmidt { 0x58, 0, 0 }, \ 11914310d6deSBernhard Schmidt { 0x58, 0, 4 }, \ 11924310d6deSBernhard Schmidt { 0x58, 0, 6 }, \ 11934310d6deSBernhard Schmidt { 0x58, 0, 8 }, \ 11944310d6deSBernhard Schmidt { 0x5b, 0, 8 }, \ 11954310d6deSBernhard Schmidt { 0x5b, 0, 10 }, \ 11964310d6deSBernhard Schmidt { 0x5c, 0, 0 }, \ 11974310d6deSBernhard Schmidt { 0x5c, 0, 4 }, \ 11984310d6deSBernhard Schmidt { 0x5c, 0, 6 }, \ 11994310d6deSBernhard Schmidt { 0x5c, 0, 8 }, \ 12004310d6deSBernhard Schmidt { 0x5d, 0, 0 }, \ 12014310d6deSBernhard Schmidt { 0x5d, 0, 2 }, \ 12024310d6deSBernhard Schmidt { 0x5d, 0, 4 }, \ 12034310d6deSBernhard Schmidt { 0x5d, 0, 8 }, \ 12044310d6deSBernhard Schmidt { 0x5d, 0, 10 }, \ 12054310d6deSBernhard Schmidt { 0x5e, 0, 0 }, \ 12064310d6deSBernhard Schmidt { 0x5e, 0, 4 }, \ 12074310d6deSBernhard Schmidt { 0x5e, 0, 6 }, \ 12084310d6deSBernhard Schmidt { 0x5e, 0, 8 }, \ 12094310d6deSBernhard Schmidt { 0x5f, 0, 0 }, \ 12104310d6deSBernhard Schmidt { 0x5f, 0, 9 }, \ 12114310d6deSBernhard Schmidt { 0x5f, 0, 11 }, \ 12124310d6deSBernhard Schmidt { 0x60, 0, 1 }, \ 12134310d6deSBernhard Schmidt { 0x60, 0, 5 }, \ 12144310d6deSBernhard Schmidt { 0x60, 0, 7 }, \ 12154310d6deSBernhard Schmidt { 0x60, 0, 9 }, \ 12164310d6deSBernhard Schmidt { 0x61, 0, 1 }, \ 12174310d6deSBernhard Schmidt { 0x61, 0, 3 }, \ 12184310d6deSBernhard Schmidt { 0x61, 0, 5 }, \ 12194310d6deSBernhard Schmidt { 0x61, 0, 7 }, \ 12204310d6deSBernhard Schmidt { 0x61, 0, 9 } 12214310d6deSBernhard Schmidt 12224310d6deSBernhard Schmidt #define RT3070_DEF_RF \ 12234310d6deSBernhard Schmidt { 4, 0x40 }, \ 12244310d6deSBernhard Schmidt { 5, 0x03 }, \ 12254310d6deSBernhard Schmidt { 6, 0x02 }, \ 12266fc44dabSKevin Lo { 7, 0x60 }, \ 12274310d6deSBernhard Schmidt { 9, 0x0f }, \ 12284310d6deSBernhard Schmidt { 10, 0x41 }, \ 12294310d6deSBernhard Schmidt { 11, 0x21 }, \ 12304310d6deSBernhard Schmidt { 12, 0x7b }, \ 12314310d6deSBernhard Schmidt { 14, 0x90 }, \ 12324310d6deSBernhard Schmidt { 15, 0x58 }, \ 12334310d6deSBernhard Schmidt { 16, 0xb3 }, \ 12344310d6deSBernhard Schmidt { 17, 0x92 }, \ 12354310d6deSBernhard Schmidt { 18, 0x2c }, \ 12364310d6deSBernhard Schmidt { 19, 0x02 }, \ 12374310d6deSBernhard Schmidt { 20, 0xba }, \ 12384310d6deSBernhard Schmidt { 21, 0xdb }, \ 12394310d6deSBernhard Schmidt { 24, 0x16 }, \ 1240*5c95ab02SKevin Lo { 25, 0x03 }, \ 12414310d6deSBernhard Schmidt { 29, 0x1f } 12424310d6deSBernhard Schmidt 12436fc44dabSKevin Lo #define RT5390_DEF_RF \ 12446fc44dabSKevin Lo { 1, 0x0f }, \ 12456fc44dabSKevin Lo { 2, 0x80 }, \ 12466fc44dabSKevin Lo { 3, 0x88 }, \ 12476fc44dabSKevin Lo { 5, 0x10 }, \ 12486fc44dabSKevin Lo { 6, 0xe0 }, \ 12496fc44dabSKevin Lo { 7, 0x00 }, \ 12506fc44dabSKevin Lo { 10, 0x53 }, \ 12516fc44dabSKevin Lo { 11, 0x4a }, \ 12526fc44dabSKevin Lo { 12, 0x46 }, \ 12536fc44dabSKevin Lo { 13, 0x9f }, \ 12546fc44dabSKevin Lo { 14, 0x00 }, \ 12556fc44dabSKevin Lo { 15, 0x00 }, \ 12566fc44dabSKevin Lo { 16, 0x00 }, \ 12576fc44dabSKevin Lo { 18, 0x03 }, \ 12586fc44dabSKevin Lo { 19, 0x00 }, \ 12596fc44dabSKevin Lo { 20, 0x00 }, \ 12606fc44dabSKevin Lo { 21, 0x00 }, \ 12616fc44dabSKevin Lo { 22, 0x20 }, \ 12626fc44dabSKevin Lo { 23, 0x00 }, \ 12636fc44dabSKevin Lo { 24, 0x00 }, \ 12646fc44dabSKevin Lo { 25, 0x80 }, \ 12656fc44dabSKevin Lo { 26, 0x00 }, \ 12666fc44dabSKevin Lo { 27, 0x09 }, \ 12674310d6deSBernhard Schmidt { 28, 0x00 }, \ 12686fc44dabSKevin Lo { 29, 0x10 }, \ 12696fc44dabSKevin Lo { 30, 0x10 }, \ 12706fc44dabSKevin Lo { 31, 0x80 }, \ 12716fc44dabSKevin Lo { 32, 0x80 }, \ 12726fc44dabSKevin Lo { 33, 0x00 }, \ 12736fc44dabSKevin Lo { 34, 0x07 }, \ 12746fc44dabSKevin Lo { 35, 0x12 }, \ 12756fc44dabSKevin Lo { 36, 0x00 }, \ 12766fc44dabSKevin Lo { 37, 0x08 }, \ 12776fc44dabSKevin Lo { 38, 0x85 }, \ 12786fc44dabSKevin Lo { 39, 0x1b }, \ 12796fc44dabSKevin Lo { 40, 0x0b }, \ 12806fc44dabSKevin Lo { 41, 0xbb }, \ 12816fc44dabSKevin Lo { 42, 0xd2 }, \ 12826fc44dabSKevin Lo { 43, 0x9a }, \ 12836fc44dabSKevin Lo { 44, 0x0e }, \ 12846fc44dabSKevin Lo { 45, 0xa2 }, \ 12856fc44dabSKevin Lo { 46, 0x73 }, \ 12866fc44dabSKevin Lo { 47, 0x00 }, \ 12876fc44dabSKevin Lo { 48, 0x10 }, \ 12886fc44dabSKevin Lo { 49, 0x94 }, \ 12896fc44dabSKevin Lo { 52, 0x38 }, \ 12906fc44dabSKevin Lo { 53, 0x00 }, \ 12916fc44dabSKevin Lo { 54, 0x78 }, \ 12926fc44dabSKevin Lo { 55, 0x23 }, \ 12936fc44dabSKevin Lo { 56, 0x22 }, \ 12946fc44dabSKevin Lo { 57, 0x80 }, \ 12956fc44dabSKevin Lo { 58, 0x7f }, \ 12966fc44dabSKevin Lo { 59, 0x07 }, \ 12976fc44dabSKevin Lo { 60, 0x45 }, \ 12986fc44dabSKevin Lo { 61, 0xd1 }, \ 12996fc44dabSKevin Lo { 62, 0x00 }, \ 13006fc44dabSKevin Lo { 63, 0x00 } 13016fc44dabSKevin Lo 13026fc44dabSKevin Lo #define RT5392_DEF_RF \ 13036fc44dabSKevin Lo { 1, 0x17 }, \ 13046fc44dabSKevin Lo { 2, 0x80 }, \ 13056fc44dabSKevin Lo { 3, 0x88 }, \ 13066fc44dabSKevin Lo { 5, 0x10 }, \ 13076fc44dabSKevin Lo { 6, 0xe0 }, \ 13086fc44dabSKevin Lo { 7, 0x00 }, \ 13096fc44dabSKevin Lo { 10, 0x53 }, \ 13106fc44dabSKevin Lo { 11, 0x4a }, \ 13116fc44dabSKevin Lo { 12, 0x46 }, \ 13126fc44dabSKevin Lo { 13, 0x9f }, \ 13136fc44dabSKevin Lo { 14, 0x00 }, \ 13146fc44dabSKevin Lo { 15, 0x00 }, \ 13156fc44dabSKevin Lo { 16, 0x00 }, \ 13166fc44dabSKevin Lo { 18, 0x03 }, \ 13176fc44dabSKevin Lo { 19, 0x4d }, \ 13186fc44dabSKevin Lo { 20, 0x00 }, \ 13196fc44dabSKevin Lo { 21, 0x8d }, \ 13206fc44dabSKevin Lo { 22, 0x20 }, \ 13216fc44dabSKevin Lo { 23, 0x0b }, \ 13226fc44dabSKevin Lo { 24, 0x44 }, \ 13236fc44dabSKevin Lo { 25, 0x80 }, \ 13246fc44dabSKevin Lo { 26, 0x82 }, \ 13256fc44dabSKevin Lo { 27, 0x09 }, \ 13266fc44dabSKevin Lo { 28, 0x00 }, \ 13276fc44dabSKevin Lo { 29, 0x10 }, \ 13286fc44dabSKevin Lo { 30, 0x10 }, \ 13296fc44dabSKevin Lo { 31, 0x80 }, \ 13306fc44dabSKevin Lo { 32, 0x80 }, \ 13316fc44dabSKevin Lo { 33, 0xc0 }, \ 13326fc44dabSKevin Lo { 34, 0x07 }, \ 13336fc44dabSKevin Lo { 35, 0x12 }, \ 13346fc44dabSKevin Lo { 36, 0x00 }, \ 13356fc44dabSKevin Lo { 37, 0x08 }, \ 13366fc44dabSKevin Lo { 38, 0x89 }, \ 13376fc44dabSKevin Lo { 39, 0x1b }, \ 13386fc44dabSKevin Lo { 40, 0x0f }, \ 13396fc44dabSKevin Lo { 41, 0xbb }, \ 13406fc44dabSKevin Lo { 42, 0xd5 }, \ 13416fc44dabSKevin Lo { 43, 0x9b }, \ 13426fc44dabSKevin Lo { 44, 0x0e }, \ 13436fc44dabSKevin Lo { 45, 0xa2 }, \ 13446fc44dabSKevin Lo { 46, 0x73 }, \ 13456fc44dabSKevin Lo { 47, 0x0c }, \ 13466fc44dabSKevin Lo { 48, 0x10 }, \ 13476fc44dabSKevin Lo { 49, 0x94 }, \ 13486fc44dabSKevin Lo { 50, 0x94 }, \ 13496fc44dabSKevin Lo { 51, 0x3a }, \ 13506fc44dabSKevin Lo { 52, 0x48 }, \ 13516fc44dabSKevin Lo { 53, 0x44 }, \ 13526fc44dabSKevin Lo { 54, 0x38 }, \ 13536fc44dabSKevin Lo { 55, 0x43 }, \ 13546fc44dabSKevin Lo { 56, 0xa1 }, \ 13556fc44dabSKevin Lo { 57, 0x00 }, \ 13566fc44dabSKevin Lo { 58, 0x39 }, \ 13576fc44dabSKevin Lo { 59, 0x07 }, \ 13586fc44dabSKevin Lo { 60, 0x45 }, \ 13596fc44dabSKevin Lo { 61, 0x91 }, \ 13606fc44dabSKevin Lo { 62, 0x39 }, \ 13616fc44dabSKevin Lo { 63, 0x00 } 1362