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