1*4b1a56afSjsg /* $OpenBSD: bwireg.h,v 1.11 2022/01/09 05:42:38 jsg Exp $ */ 20ad0890cSmglocker 31efc4635Sjsg /* 41efc4635Sjsg * Copyright (c) 2007 The DragonFly Project. All rights reserved. 51efc4635Sjsg * 61efc4635Sjsg * This code is derived from software contributed to The DragonFly Project 71efc4635Sjsg * by Sepherosa Ziehau <sepherosa@gmail.com> 81efc4635Sjsg * 91efc4635Sjsg * Redistribution and use in source and binary forms, with or without 101efc4635Sjsg * modification, are permitted provided that the following conditions 111efc4635Sjsg * are met: 121efc4635Sjsg * 131efc4635Sjsg * 1. Redistributions of source code must retain the above copyright 141efc4635Sjsg * notice, this list of conditions and the following disclaimer. 151efc4635Sjsg * 2. Redistributions in binary form must reproduce the above copyright 161efc4635Sjsg * notice, this list of conditions and the following disclaimer in 171efc4635Sjsg * the documentation and/or other materials provided with the 181efc4635Sjsg * distribution. 191efc4635Sjsg * 3. Neither the name of The DragonFly Project nor the names of its 201efc4635Sjsg * contributors may be used to endorse or promote products derived 211efc4635Sjsg * from this software without specific, prior written permission. 221efc4635Sjsg * 231efc4635Sjsg * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 241efc4635Sjsg * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 251efc4635Sjsg * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 261efc4635Sjsg * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 271efc4635Sjsg * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 281efc4635Sjsg * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 291efc4635Sjsg * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 301efc4635Sjsg * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 311efc4635Sjsg * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 321efc4635Sjsg * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 331efc4635Sjsg * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 341efc4635Sjsg * SUCH DAMAGE. 351efc4635Sjsg * 361efc4635Sjsg * $DragonFly: src/sys/dev/netif/bwi/if_bwireg.h,v 1.1 2007/09/08 06:15:54 sephe Exp $ 371efc4635Sjsg */ 381efc4635Sjsg 391efc4635Sjsg #ifndef _IF_BWIREG_H 401efc4635Sjsg #define _IF_BWIREG_H 411efc4635Sjsg 421efc4635Sjsg /* 431efc4635Sjsg * Registers for all of the register windows 441efc4635Sjsg */ 4514b491c0Smglocker #define BWI_FLAGS 0x00000f18 46b2ffa9ccSmglocker #define BWI_FLAGS_INTR_MASK 0x0000003f 471efc4635Sjsg 4814b491c0Smglocker #define BWI_IMSTATE 0x00000f90 49b2ffa9ccSmglocker #define BWI_IMSTATE_INBAND_ERR (1 << 17) 50b2ffa9ccSmglocker #define BWI_IMSTATE_TIMEOUT (1 << 18) 511efc4635Sjsg 5214b491c0Smglocker #define BWI_INTRVEC 0x00000f94 531efc4635Sjsg 5414b491c0Smglocker #define BWI_STATE_LO 0x00000f98 55b2ffa9ccSmglocker #define BWI_STATE_LO_RESET (1 << 0) 56b2ffa9ccSmglocker #define BWI_STATE_LO_DISABLE1 (1 << 1) 57b2ffa9ccSmglocker #define BWI_STATE_LO_DISABLE2 (1 << 2) 58b2ffa9ccSmglocker #define BWI_STATE_LO_CLOCK (1 << 16) 59b2ffa9ccSmglocker #define BWI_STATE_LO_GATED_CLOCK (1 << 17) 60b2ffa9ccSmglocker #define BWI_STATE_LO_FLAG_PHYCLKEN (1 << 0) 61b2ffa9ccSmglocker #define BWI_STATE_LO_FLAG_PHYRST (1 << 1) 62b2ffa9ccSmglocker #define BWI_STATE_LO_FLAG_PHYLNK (1 << 11) 63b2ffa9ccSmglocker #define BWI_STATE_LO_FLAGS_MASK 0x3ffc0000 641efc4635Sjsg 6514b491c0Smglocker #define BWI_STATE_HI 0x00000f9c 66b2ffa9ccSmglocker #define BWI_STATE_HI_SERROR (1 << 0) 67b2ffa9ccSmglocker #define BWI_STATE_HI_BUSY (1 << 2) 681efc4635Sjsg #define BWI_STATE_HI_FLAG_MAGIC1 0x1 691efc4635Sjsg #define BWI_STATE_HI_FLAG_MAGIC2 0x2 701efc4635Sjsg #define BWI_STATE_HI_FLAG_64BIT 0x1000 71b2ffa9ccSmglocker #define BWI_STATE_HI_FLAGS_MASK 0x1fff0000 721efc4635Sjsg 7314b491c0Smglocker #define BWI_CONF_LO 0x00000fa8 74b2ffa9ccSmglocker #define BWI_CONF_LO_SERVTO_MASK 0x00000007 /* service timeout */ 751efc4635Sjsg #define BWI_CONF_LO_SERVTO 2 76b2ffa9ccSmglocker #define BWI_CONF_LO_REQTO_MASK 0x00000070 /* request timeout */ 771efc4635Sjsg #define BWI_CONF_LO_REQTO 3 781efc4635Sjsg 7914b491c0Smglocker #define BWI_ID_LO 0x00000ff8 80b2ffa9ccSmglocker #define BWI_ID_LO_BUSREV_MASK 0xf0000000 811efc4635Sjsg /* Bus revision */ 821efc4635Sjsg #define BWI_BUSREV_0 0 831efc4635Sjsg #define BWI_BUSREV_1 1 841efc4635Sjsg 8514b491c0Smglocker #define BWI_ID_HI 0x00000ffc 861efc4635Sjsg #define BWI_ID_HI_REGWIN_REV(v) (((v) & 0xf) | (((v) & 0x7000) >> 8)) 871efc4635Sjsg #define BWI_ID_HI_REGWIN_TYPE(v) (((v) & 0x8ff0) >> 4) 88b2ffa9ccSmglocker #define BWI_ID_HI_REGWIN_VENDOR_MASK 0xffff0000 891efc4635Sjsg 901efc4635Sjsg /* 911efc4635Sjsg * Registers for common register window 921efc4635Sjsg */ 9314b491c0Smglocker #define BWI_INFO 0x00000000 94b2ffa9ccSmglocker #define BWI_INFO_BBPID_MASK 0x0000ffff 95b2ffa9ccSmglocker #define BWI_INFO_BBPREV_MASK 0x000f0000 96b2ffa9ccSmglocker #define BWI_INFO_BBPPKG_MASK 0x00f00000 97b2ffa9ccSmglocker #define BWI_INFO_NREGWIN_MASK 0x0f000000 981efc4635Sjsg 9914b491c0Smglocker #define BWI_CAPABILITY 0x00000004 100b2ffa9ccSmglocker #define BWI_CAP_CLKMODE (1 << 18) 1011efc4635Sjsg 10214b491c0Smglocker #define BWI_CONTROL 0x00000028 1031efc4635Sjsg #define BWI_CONTROL_MAGIC0 0x3a4 1041efc4635Sjsg #define BWI_CONTROL_MAGIC1 0xa4 1051efc4635Sjsg #define BWI_PLL_ON_DELAY 0xb0 1061efc4635Sjsg #define BWI_FREQ_SEL_DELAY 0xb4 1071efc4635Sjsg 10814b491c0Smglocker #define BWI_CLOCK_CTRL 0x000000b8 109b2ffa9ccSmglocker #define BWI_CLOCK_CTRL_CLKSRC (7 << 0) 110b2ffa9ccSmglocker #define BWI_CLOCK_CTRL_SLOW (1 << 11) 111b2ffa9ccSmglocker #define BWI_CLOCK_CTRL_IGNPLL (1 << 12) 112b2ffa9ccSmglocker #define BWI_CLOCK_CTRL_NODYN (1 << 13) 113b2ffa9ccSmglocker #define BWI_CLOCK_CTRL_FDIV (0xffff << 16) /* freq divisor */ 1141efc4635Sjsg 1151efc4635Sjsg /* Possible values for BWI_CLOCK_CTRL_CLKSRC */ 1161efc4635Sjsg #define BWI_CLKSRC_LP_OSC 0 /* Low power oscillator */ 1171efc4635Sjsg #define BWI_CLKSRC_CS_OSC 1 /* Crystal oscillator */ 1181efc4635Sjsg #define BWI_CLKSRC_PCI 2 1191efc4635Sjsg #define BWI_CLKSRC_MAX 3 /* Maximum of clock source */ 1201efc4635Sjsg /* Min/Max frequency for given clock source */ 1211efc4635Sjsg #define BWI_CLKSRC_LP_OSC_FMIN 25000 1221efc4635Sjsg #define BWI_CLKSRC_LP_OSC_FMAX 43000 1231efc4635Sjsg #define BWI_CLKSRC_CS_OSC_FMIN 19800000 1241efc4635Sjsg #define BWI_CLKSRC_CS_OSC_FMAX 20200000 1251efc4635Sjsg #define BWI_CLKSRC_PCI_FMIN 25000000 1261efc4635Sjsg #define BWI_CLKSRC_PCI_FMAX 34000000 1271efc4635Sjsg 12814b491c0Smglocker #define BWI_CLOCK_INFO 0x000000c0 129b2ffa9ccSmglocker #define BWI_CLOCK_INFO_FDIV (0xffff << 16) /* freq divisor */ 1301efc4635Sjsg 1311efc4635Sjsg /* 1321efc4635Sjsg * Registers for bus register window 1331efc4635Sjsg */ 13414b491c0Smglocker #define BWI_BUS_ADDR 0x00000050 1351efc4635Sjsg #define BWI_BUS_ADDR_MAGIC 0xfd8 1361efc4635Sjsg 13714b491c0Smglocker #define BWI_BUS_DATA 0x00000054 1381efc4635Sjsg 13914b491c0Smglocker #define BWI_BUS_CONFIG 0x00000108 140b2ffa9ccSmglocker #define BWI_BUS_CONFIG_PREFETCH (1 << 2) 141b2ffa9ccSmglocker #define BWI_BUS_CONFIG_BURST (1 << 3) 142b2ffa9ccSmglocker #define BWI_BUS_CONFIG_MRM (1 << 5) 1431efc4635Sjsg 1441efc4635Sjsg /* 1451efc4635Sjsg * Register for MAC 1461efc4635Sjsg */ 1471efc4635Sjsg #define BWI_TXRX_INTR_STATUS_BASE 0x20 1481efc4635Sjsg #define BWI_TXRX_INTR_MASK_BASE 0x24 1491efc4635Sjsg #define BWI_TXRX_INTR_STATUS(i) (BWI_TXRX_INTR_STATUS_BASE + ((i) * 8)) 1501efc4635Sjsg #define BWI_TXRX_INTR_MASK(i) (BWI_TXRX_INTR_MASK_BASE + ((i) * 8)) 1511efc4635Sjsg 15214b491c0Smglocker #define BWI_MAC_STATUS 0x00000120 15361e87b28Sderaadt #define BWI_MAC_STATUS_ENABLE (1U << 0) 15461e87b28Sderaadt #define BWI_MAC_STATUS_UCODE_START (1U << 1) 15561e87b28Sderaadt #define BWI_MAC_STATUS_UCODE_JUMP0 (1U << 2) 15661e87b28Sderaadt #define BWI_MAC_STATUS_IHREN (1U << 10) 15761e87b28Sderaadt #define BWI_MAC_STATUS_GPOSEL_MASK (3U << 14) 15861e87b28Sderaadt #define BWI_MAC_STATUS_BSWAP (1U << 16) 15961e87b28Sderaadt #define BWI_MAC_STATUS_INFRA (1U << 17) 16061e87b28Sderaadt #define BWI_MAC_STATUS_OPMODE_HOSTAP (1U << 18) 16161e87b28Sderaadt #define BWI_MAC_STATUS_RFLOCK (1U << 19) 16261e87b28Sderaadt #define BWI_MAC_STATUS_PASS_BCN (1U << 20) 16361e87b28Sderaadt #define BWI_MAC_STATUS_PASS_BADPLCP (1U << 21) 16461e87b28Sderaadt #define BWI_MAC_STATUS_PASS_CTL (1U << 22) 16561e87b28Sderaadt #define BWI_MAC_STATUS_PASS_BADFCS (1U << 23) 16661e87b28Sderaadt #define BWI_MAC_STATUS_PROMISC (1U << 24) 16761e87b28Sderaadt #define BWI_MAC_STATUS_HW_PS (1U << 25) 16861e87b28Sderaadt #define BWI_MAC_STATUS_WAKEUP (1U << 26) 16961e87b28Sderaadt #define BWI_MAC_STATUS_PHYLNK (1U << 31) 1701efc4635Sjsg 17114b491c0Smglocker #define BWI_MAC_INTR_STATUS 0x00000128 17214b491c0Smglocker #define BWI_MAC_INTR_MASK 0x0000012c 1731efc4635Sjsg 17414b491c0Smglocker #define BWI_MAC_TMPLT_CTRL 0x00000130 17514b491c0Smglocker #define BWI_MAC_TMPLT_DATA 0x00000134 1761efc4635Sjsg 17714b491c0Smglocker #define BWI_MAC_PS_STATUS 0x00000140 1781efc4635Sjsg 17914b491c0Smglocker #define BWI_MOBJ_CTRL 0x00000160 1801efc4635Sjsg #define BWI_MOBJ_CTRL_VAL(objid, ofs) ((objid) << 16 | (ofs)) 18114b491c0Smglocker #define BWI_MOBJ_DATA 0x00000164 18214b491c0Smglocker #define BWI_MOBJ_DATA_UNALIGN 0x0166 183f4ee82a0Smglocker 1841efc4635Sjsg /* 1851efc4635Sjsg * Memory object IDs 1861efc4635Sjsg */ 1871efc4635Sjsg #define BWI_WR_MOBJ_AUTOINC 0x100 /* Auto-increment wr */ 1881efc4635Sjsg #define BWI_RD_MOBJ_AUTOINC 0x200 /* Auto-increment rd */ 1891efc4635Sjsg /* Firmware ucode object */ 1901efc4635Sjsg #define BWI_FW_UCODE_MOBJ 0x0 1911efc4635Sjsg /* Common object */ 1921efc4635Sjsg #define BWI_COMM_MOBJ 0x1 1931efc4635Sjsg #define BWI_COMM_MOBJ_FWREV 0x0 1941efc4635Sjsg #define BWI_COMM_MOBJ_FWPATCHLV 0x2 1951efc4635Sjsg #define BWI_COMM_MOBJ_SLOTTIME 0x10 1961efc4635Sjsg #define BWI_COMM_MOBJ_MACREV 0x16 1971efc4635Sjsg #define BWI_COMM_MOBJ_TX_ACK 0x22 1981efc4635Sjsg #define BWI_COMM_MOBJ_UCODE_STATE 0x40 1991efc4635Sjsg #define BWI_COMM_MOBJ_SHRETRY_FB 0x44 2001efc4635Sjsg #define BWI_COMM_MOBJ_LGRETEY_FB 0x46 2011efc4635Sjsg #define BWI_COMM_MOBJ_TX_BEACON 0x54 2021efc4635Sjsg #define BWI_COMM_MOBJ_KEYTABLE_OFS 0x56 2031efc4635Sjsg #define BWI_COMM_MOBJ_TSSI_DS 0x58 2041efc4635Sjsg #define BWI_COMM_MOBJ_HFLAGS_LO 0x5e 2051efc4635Sjsg #define BWI_COMM_MOBJ_HFLAGS_MI 0x60 2061efc4635Sjsg #define BWI_COMM_MOBJ_HFLAGS_HI 0x62 2071efc4635Sjsg #define BWI_COMM_MOBJ_RF_ATTEN 0x64 2081efc4635Sjsg #define BWI_COMM_MOBJ_TSSI_OFDM 0x70 2091efc4635Sjsg #define BWI_COMM_MOBJ_PROBE_RESP_TO 0x74 2101efc4635Sjsg #define BWI_COMM_MOBJ_CHAN 0xa0 2111efc4635Sjsg #define BWI_COMM_MOBJ_KEY_ALGO 0x100 2121efc4635Sjsg #define BWI_COMM_MOBJ_TX_PROBE_RESP 0x188 2131efc4635Sjsg #define BWI_HFLAG_AUTO_ANTDIV 0x1ULL 2141efc4635Sjsg #define BWI_HFLAG_SYM_WA 0x2ULL /* ??? SYM work around */ 2151efc4635Sjsg #define BWI_HFLAG_PWR_BOOST_DS 0x8ULL 2161efc4635Sjsg #define BWI_HFLAG_GDC_WA 0x20ULL /* ??? GDC work around */ 2171efc4635Sjsg #define BWI_HFLAG_OFDM_PA 0x40ULL 2181efc4635Sjsg #define BWI_HFLAG_NOT_JAPAN 0x80ULL 2191efc4635Sjsg #define BWI_HFLAG_MAGIC1 0x200ULL 2201efc4635Sjsg #define BWI_UCODE_STATE_PS 4 221b2ffa9ccSmglocker #define BWI_LO_TSSI_MASK 0x00ff 222b2ffa9ccSmglocker #define BWI_HI_TSSI_MASK 0xff00 2231efc4635Sjsg #define BWI_INVALID_TSSI 0x7f 2241efc4635Sjsg /* 802.11 object */ 2251efc4635Sjsg #define BWI_80211_MOBJ 0x2 2261efc4635Sjsg #define BWI_80211_MOBJ_CWMIN 0xc 2271efc4635Sjsg #define BWI_80211_MOBJ_CWMAX 0x10 2281efc4635Sjsg #define BWI_80211_MOBJ_SHRETRY 0x18 2291efc4635Sjsg #define BWI_80211_MOBJ_LGRETRY 0x1c 2301efc4635Sjsg /* Firmware PCM object */ 2311efc4635Sjsg #define BWI_FW_PCM_MOBJ 0x3 2321efc4635Sjsg /* MAC address of pairwise keys */ 2331efc4635Sjsg #define BWI_PKEY_ADDR_MOBJ 0x4 2341efc4635Sjsg 23514b491c0Smglocker #define BWI_TXSTATUS_0 0x00000170 236b2ffa9ccSmglocker #define BWI_TXSTATUS_0_MORE (1 << 0) 237b2ffa9ccSmglocker #define BWI_TXSTATUS_0_TXID_MASK 0xffff0000 2381efc4635Sjsg #define BWI_TXSTATUS_0_INFO(st) (((st) & 0xfff0) | (((st) & 0xf) >> 1)) 23914b491c0Smglocker #define BWI_TXSTATUS_1 0x00000174 2401efc4635Sjsg 2411efc4635Sjsg #define BWI_TXRX_CTRL_BASE 0x200 2421efc4635Sjsg #define BWI_TX32_CTRL 0x0 2431efc4635Sjsg #define BWI_TX32_RINGINFO 0x4 2441efc4635Sjsg #define BWI_TX32_INDEX 0x8 2451efc4635Sjsg #define BWI_TX32_STATUS 0xc 246b2ffa9ccSmglocker #define BWI_TX32_STATUS_STATE_MASK 0xf000 2471efc4635Sjsg #define BWI_TX32_STATUS_STATE_DISABLED 0 2481efc4635Sjsg #define BWI_TX32_STATUS_STATE_IDLE 2 2491efc4635Sjsg #define BWI_TX32_STATUS_STATE_STOPPED 3 2501efc4635Sjsg #define BWI_RX32_CTRL 0x10 251b2ffa9ccSmglocker #define BWI_RX32_CTRL_HDRSZ_MASK 0x00fe 2521efc4635Sjsg #define BWI_RX32_RINGINFO 0x14 2531efc4635Sjsg #define BWI_RX32_INDEX 0x18 2541efc4635Sjsg #define BWI_RX32_STATUS 0x1c 255b2ffa9ccSmglocker #define BWI_RX32_STATUS_INDEX_MASK 0x0fff 256b2ffa9ccSmglocker #define BWI_RX32_STATUS_STATE_MASK 0xf000 2571efc4635Sjsg #define BWI_RX32_STATUS_STATE_DISABLED 0 2581efc4635Sjsg /* Shared by 32bit TX/RX CTRL */ 259b2ffa9ccSmglocker #define BWI_TXRX32_CTRL_ENABLE (1 << 0) 260b2ffa9ccSmglocker #define BWI_TXRX32_CTRL_ADDRHI_MASK 0x00030000 2611efc4635Sjsg /* Shared by 32bit TX/RX RINGINFO */ 2621efc4635Sjsg #define BWI_TXRX32_RINGINFO_FUNC_TXRX 0x1 263b2ffa9ccSmglocker #define BWI_TXRX32_RINGINFO_FUNC_MASK 0xc0000000 264b2ffa9ccSmglocker #define BWI_TXRX32_RINGINFO_ADDR_MASK 0x3fffffff 2651efc4635Sjsg 26614b491c0Smglocker #define BWI_PHYINFO 0x03e0 267b2ffa9ccSmglocker #define BWI_PHYINFO_REV_MASK 0x000f 268b2ffa9ccSmglocker #define BWI_PHYINFO_TYPE_MASK 0x0f00 2691efc4635Sjsg #define BWI_PHYINFO_TYPE_11A 0 2701efc4635Sjsg #define BWI_PHYINFO_TYPE_11B 1 2711efc4635Sjsg #define BWI_PHYINFO_TYPE_11G 2 2721efc4635Sjsg #define BWI_PHYINFO_TYPE_11N 5 273b2ffa9ccSmglocker #define BWI_PHYINFO_VER_MASK 0xf000 2741efc4635Sjsg 27514b491c0Smglocker #define BWI_RF_ANTDIV 0x03e2 /* Antenna Diversity ?? */ 2761efc4635Sjsg 27714b491c0Smglocker #define BWI_PHY_MAGIC_REG1 0x03e4 2781efc4635Sjsg #define BWI_PHY_MAGIC_REG1_VAL1 0x3000 27914b491c0Smglocker #define BWI_PHY_MAGIC_REG1_VAL2 0x0009 2801efc4635Sjsg 28114b491c0Smglocker #define BWI_BBP_ATTEN 0x03e6 28214b491c0Smglocker #define BWI_BBP_ATTEN_MAGIC 0x00f4 2831efc4635Sjsg #define BWI_BBP_ATTEN_MAGIC2 0x8140 2841efc4635Sjsg 28514b491c0Smglocker #define BWI_BPHY_CTRL 0x03ec 2861efc4635Sjsg #define BWI_BPHY_CTRL_INIT 0x3f22 2871efc4635Sjsg 28814b491c0Smglocker #define BWI_RF_CHAN 0x03f0 28914b491c0Smglocker #define BWI_RF_CHAN_EX 0x03f4 2901efc4635Sjsg 29114b491c0Smglocker #define BWI_RF_CTRL 0x03f6 2921efc4635Sjsg /* Register values for BWI_RF_CTRL */ 2931efc4635Sjsg #define BWI_RF_CTRL_RFINFO 0x1 2941efc4635Sjsg /* XXX extra bits for reading from radio */ 2951efc4635Sjsg #define BWI_RF_CTRL_RD_11A 0x40 2961efc4635Sjsg #define BWI_RF_CTRL_RD_11BG 0x80 2971efc4635Sjsg #define BWI_RF_DATA_HI 0x3f8 2981efc4635Sjsg #define BWI_RF_DATA_LO 0x3fa 2991efc4635Sjsg /* Values read from BWI_RF_DATA_{HI,LO} after BWI_RF_CTRL_RFINFO */ 300b2ffa9ccSmglocker #define BWI_RFINFO_MANUFACT_MASK 0x0fff 3011efc4635Sjsg #define BWI_RF_MANUFACT_BCM 0x17f /* XXX */ 302b2ffa9ccSmglocker #define BWI_RFINFO_TYPE_MASK 0x0ffff000 3031efc4635Sjsg #define BWI_RF_T_BCM2050 0x2050 3041efc4635Sjsg #define BWI_RF_T_BCM2053 0x2053 3051efc4635Sjsg #define BWI_RF_T_BCM2060 0x2060 306b2ffa9ccSmglocker #define BWI_RFINFO_REV_MASK 0xf0000000 3071efc4635Sjsg 30814b491c0Smglocker #define BWI_PHY_CTRL 0x03fc 30914b491c0Smglocker #define BWI_PHY_DATA 0x03fe 3101efc4635Sjsg 31114b491c0Smglocker #define BWI_ADDR_FILTER_CTRL 0x0420 31214b491c0Smglocker #define BWI_ADDR_FILTER_CTRL_SET 0x0020 3131efc4635Sjsg #define BWI_ADDR_FILTER_MYADDR 0 3141efc4635Sjsg #define BWI_ADDR_FILTER_BSSID 3 3151efc4635Sjsg #define BWI_ADDR_FILTER_DATA 0x422 3161efc4635Sjsg 317418fe01fSmglocker #define BWI_MAC_GPIO_CTRL 0x049c 31814b491c0Smglocker #define BWI_MAC_GPIO_MASK 0x049e 31914b491c0Smglocker #define BWI_MAC_PRE_TBTT 0x0612 32014b491c0Smglocker #define BWI_MAC_SLOTTIME 0x0684 3211efc4635Sjsg #define BWI_MAC_SLOTTIME_ADJUST 510 32214b491c0Smglocker #define BWI_MAC_POWERUP_DELAY 0x06a8 3231efc4635Sjsg 3241efc4635Sjsg /* 3251efc4635Sjsg * Special registers 3261efc4635Sjsg */ 3271efc4635Sjsg /* 3281efc4635Sjsg * GPIO control 3291efc4635Sjsg * If common regwin exists, then it is within common regwin, 3301efc4635Sjsg * else it is in bus regwin. 3311efc4635Sjsg */ 33214b491c0Smglocker #define BWI_GPIO_CTRL 0x0000006c 3331efc4635Sjsg 3341efc4635Sjsg /* 3351109d94fSbcook * Core reset 3361109d94fSbcook */ 3371109d94fSbcook #define BWI_RESET_CTRL 0x1800 3381109d94fSbcook #define BWI_RESET_STATUS 0x1804 3391109d94fSbcook #define BWI_RESET_CTRL_RESET (1 << 0) 3401109d94fSbcook 3411109d94fSbcook /* 3421efc4635Sjsg * Extended PCI registers 3431efc4635Sjsg */ 3441efc4635Sjsg #define BWI_PCIR_BAR PCIR_BAR(0) 34514b491c0Smglocker #define BWI_PCIR_SEL_REGWIN 0x00000080 3461efc4635Sjsg /* Register value for BWI_PCIR_SEL_REGWIN */ 3471efc4635Sjsg #define BWI_PCIM_REGWIN(id) (((id) * 0x1000) + 0x18000000) 34814b491c0Smglocker #define BWI_PCIR_GPIO_IN 0x000000b0 34914b491c0Smglocker #define BWI_PCIR_GPIO_OUT 0x000000b4 350b2ffa9ccSmglocker #define BWI_PCIM_GPIO_OUT_CLKSRC (1 << 4) 35114b491c0Smglocker #define BWI_PCIR_GPIO_ENABLE 0x000000b8 3521efc4635Sjsg /* Register values for BWI_PCIR_GPIO_{IN,OUT,ENABLE} */ 353b2ffa9ccSmglocker #define BWI_PCIM_GPIO_PWR_ON (1 << 6) 354b2ffa9ccSmglocker #define BWI_PCIM_GPIO_PLL_PWR_OFF (1 << 7) 35514b491c0Smglocker #define BWI_PCIR_INTCTL 0x00000094 3561efc4635Sjsg 3571efc4635Sjsg /* 3581efc4635Sjsg * PCI subdevice IDs 3591efc4635Sjsg */ 3601efc4635Sjsg #define BWI_PCI_SUBDEVICE_BU4306 0x416 3611efc4635Sjsg #define BWI_PCI_SUBDEVICE_BCM4309G 0x421 3621efc4635Sjsg 3631efc4635Sjsg #define BWI_IS_BRCM_BU4306(sc) \ 3641efc4635Sjsg ((sc)->sc_pci_subvid == PCI_VENDOR_BROADCOM && \ 3651efc4635Sjsg (sc)->sc_pci_subdid == BWI_PCI_SUBDEVICE_BU4306) 3661efc4635Sjsg #define BWI_IS_BRCM_BCM4309G(sc) \ 3671efc4635Sjsg ((sc)->sc_pci_subvid == PCI_VENDOR_BROADCOM && \ 3681efc4635Sjsg (sc)->sc_pci_subdid == BWI_PCI_SUBDEVICE_BCM4309G) 3691efc4635Sjsg 3701efc4635Sjsg /* 3711efc4635Sjsg * EEPROM start address 3721efc4635Sjsg */ 3731efc4635Sjsg #define BWI_SPROM_START 0x1000 3741efc4635Sjsg #define BWI_SPROM_11BG_EADDR 0x48 3751efc4635Sjsg #define BWI_SPROM_11A_EADDR 0x54 3761efc4635Sjsg #define BWI_SPROM_CARD_INFO 0x5c 377b2ffa9ccSmglocker #define BWI_SPROM_CARD_INFO_LOCALE (0x0f << 8) 3781efc4635Sjsg #define BWI_SPROM_LOCALE_JAPAN 5 3791efc4635Sjsg #define BWI_SPROM_PA_PARAM_11BG 0x5e 380418fe01fSmglocker #define BWI_SPROM_GPIO01 0x64 381418fe01fSmglocker #define BWI_SPROM_GPIO_0 0x00ff 382418fe01fSmglocker #define BWI_SPROM_GPIO_1 0xff00 383418fe01fSmglocker #define BWI_SPROM_GPIO23 0x0066 384418fe01fSmglocker #define BWI_SPROM_GPIO_2 0x00ff 385418fe01fSmglocker #define BWI_SPROM_GPIO_3 0xff00 3861efc4635Sjsg #define BWI_SPROM_MAX_TXPWR 0x68 387b2ffa9ccSmglocker #define BWI_SPROM_MAX_TXPWR_MASK_11BG 0x00ff /* XXX */ 388b2ffa9ccSmglocker #define BWI_SPROM_MAX_TXPWR_MASK_11A 0xff00 /* XXX */ 3891efc4635Sjsg #define BWI_SPROM_PA_PARAM_11A 0x6a 3901efc4635Sjsg #define BWI_SPROM_IDLE_TSSI 0x70 391b2ffa9ccSmglocker #define BWI_SPROM_IDLE_TSSI_MASK_11BG 0x00ff /* XXX */ 392b2ffa9ccSmglocker #define BWI_SPROM_IDLE_TSSI_MASK_11A 0xff00 /* XXX */ 3931efc4635Sjsg #define BWI_SPROM_CARD_FLAGS 0x72 3941efc4635Sjsg #define BWI_SPROM_ANT_GAIN 0x74 395b2ffa9ccSmglocker #define BWI_SPROM_ANT_GAIN_MASK_11A 0x00ff 396b2ffa9ccSmglocker #define BWI_SPROM_ANT_GAIN_MASK_11BG 0xff00 3971efc4635Sjsg 3981efc4635Sjsg /* 3991efc4635Sjsg * SPROM card flags 4001efc4635Sjsg */ 401b2ffa9ccSmglocker #define BWI_CARD_F_PA_GPIO9 (1 << 1) /* GPIO 9 controls PA */ 402b2ffa9ccSmglocker #define BWI_CARD_F_SW_NRSSI (1 << 3) 403b2ffa9ccSmglocker #define BWI_CARD_F_NO_SLOWCLK (1 << 5) /* no slow clock */ 404b2ffa9ccSmglocker #define BWI_CARD_F_EXT_LNA (1 << 12) /* external LNA */ 405b2ffa9ccSmglocker #define BWI_CARD_F_ALT_IQ (1 << 15) /* alternate I/Q */ 4061efc4635Sjsg 4071efc4635Sjsg /* 408418fe01fSmglocker * PROM GPIO 409418fe01fSmglocker */ 410418fe01fSmglocker #define BWI_LED_ACT_LOW (1 << 7) 411418fe01fSmglocker #define BWI_LED_ACT_MASK 0x7f 412418fe01fSmglocker #define BWI_LED_ACT_OFF 0 413418fe01fSmglocker #define BWI_LED_ACT_ON 1 4148a1cd61dSmglocker #define BWI_LED_ACT_BLINK 2 4158a1cd61dSmglocker #define BWI_LED_ACT_RF_ENABLED 3 416418fe01fSmglocker #define BWI_LED_ACT_5GHZ 4 417418fe01fSmglocker #define BWI_LED_ACT_2GHZ 5 418418fe01fSmglocker #define BWI_LED_ACT_11G 6 4198a1cd61dSmglocker #define BWI_LED_ACT_BLINK_SLOW 7 4208a1cd61dSmglocker #define BWI_LED_ACT_BLINK_POLL 8 421418fe01fSmglocker #define BWI_LED_ACT_UNKN 9 4228a1cd61dSmglocker #define BWI_LED_ACT_ASSOC 10 423418fe01fSmglocker #define BWI_LED_ACT_NULL 11 424418fe01fSmglocker 4258a1cd61dSmglocker #define BWI_VENDOR_LED_ACT_COMPAQ \ 4268a1cd61dSmglocker BWI_LED_ACT_RF_ENABLED, \ 4278a1cd61dSmglocker BWI_LED_ACT_2GHZ, \ 4288a1cd61dSmglocker BWI_LED_ACT_5GHZ, \ 4298a1cd61dSmglocker BWI_LED_ACT_OFF 4308a1cd61dSmglocker 4318a1cd61dSmglocker #define BWI_VENDOR_LED_ACT_LINKSYS \ 4328a1cd61dSmglocker BWI_LED_ACT_ASSOC, \ 4338a1cd61dSmglocker BWI_LED_ACT_2GHZ, \ 4348a1cd61dSmglocker BWI_LED_ACT_5GHZ, \ 4358a1cd61dSmglocker BWI_LED_ACT_OFF 4368a1cd61dSmglocker 4378a1cd61dSmglocker #define BWI_VENDOR_LED_ACT_DEFAULT \ 4388a1cd61dSmglocker BWI_LED_ACT_BLINK, \ 4398a1cd61dSmglocker BWI_LED_ACT_2GHZ, \ 4408a1cd61dSmglocker BWI_LED_ACT_5GHZ, \ 4418a1cd61dSmglocker BWI_LED_ACT_OFF 4428a1cd61dSmglocker 443418fe01fSmglocker /* 4441efc4635Sjsg * BBP IDs 4451efc4635Sjsg */ 4461efc4635Sjsg #define BWI_BBPID_BCM4301 0x4301 4471efc4635Sjsg #define BWI_BBPID_BCM4306 0x4306 4481efc4635Sjsg #define BWI_BBPID_BCM4317 0x4317 4491efc4635Sjsg #define BWI_BBPID_BCM4320 0x4320 4501efc4635Sjsg #define BWI_BBPID_BCM4321 0x4321 4511efc4635Sjsg 4521efc4635Sjsg /* 4531efc4635Sjsg * Register window types 4541efc4635Sjsg */ 4551efc4635Sjsg #define BWI_REGWIN_T_COM 0x800 4561efc4635Sjsg #define BWI_REGWIN_T_BUSPCI 0x804 4571efc4635Sjsg #define BWI_REGWIN_T_MAC 0x812 4581efc4635Sjsg #define BWI_REGWIN_T_BUSPCIE 0x820 4591efc4635Sjsg 4601efc4635Sjsg /* 4611efc4635Sjsg * MAC interrupts 4621efc4635Sjsg */ 463b2ffa9ccSmglocker #define BWI_INTR_READY (1 << 0) 464b2ffa9ccSmglocker #define BWI_INTR_BEACON (1 << 1) 465b2ffa9ccSmglocker #define BWI_INTR_TBTT (1 << 2) 466b2ffa9ccSmglocker #define BWI_INTR_EO_ATIM (1 << 5) /* End of ATIM */ 467b2ffa9ccSmglocker #define BWI_INTR_PMQ (1 << 6) /* XXX?? */ 468b2ffa9ccSmglocker #define BWI_INTR_MAC_TXERR (1 << 9) 469b2ffa9ccSmglocker #define BWI_INTR_PHY_TXERR (1 << 11) 470b2ffa9ccSmglocker #define BWI_INTR_TIMER1 (1 << 14) 471b2ffa9ccSmglocker #define BWI_INTR_RX_DONE (1 << 15) 472b2ffa9ccSmglocker #define BWI_INTR_TX_FIFO (1 << 16) /* XXX?? */ 473b2ffa9ccSmglocker #define BWI_INTR_NOISE (1 << 18) 474b2ffa9ccSmglocker #define BWI_INTR_RF_DISABLED (1 << 28) 475b2ffa9ccSmglocker #define BWI_INTR_TX_DONE (1 << 29) 4761efc4635Sjsg 4771efc4635Sjsg #define BWI_INIT_INTRS \ 4781efc4635Sjsg (BWI_INTR_READY | BWI_INTR_BEACON | BWI_INTR_TBTT | \ 4791efc4635Sjsg BWI_INTR_EO_ATIM | BWI_INTR_PMQ | BWI_INTR_MAC_TXERR | \ 4801efc4635Sjsg BWI_INTR_PHY_TXERR | BWI_INTR_RX_DONE | BWI_INTR_TX_FIFO | \ 4811efc4635Sjsg BWI_INTR_NOISE | BWI_INTR_RF_DISABLED | BWI_INTR_TX_DONE) 4821efc4635Sjsg #define BWI_ALL_INTRS 0xffffffff 4831efc4635Sjsg 4841efc4635Sjsg /* 4851efc4635Sjsg * TX/RX interrupts 4861efc4635Sjsg */ 487a0fd6b98Sstsp 488a0fd6b98Sstsp /* from brcmsmac */ 489a0fd6b98Sstsp #define BWI_I_PC (1 << 10) /* pci descriptor error */ 490a0fd6b98Sstsp #define BWI_I_PD (1 << 11) /* pci data error */ 491a0fd6b98Sstsp #define BWI_I_DE (1 << 12) /* descriptor protocol error */ 492a0fd6b98Sstsp #define BWI_I_RU (1 << 13) /* receive descriptor underflow */ 493a0fd6b98Sstsp #define BWI_I_RO (1 << 14) /* receive fifo overflow */ 494a0fd6b98Sstsp #define BWI_I_XU (1 << 15) /* transmit fifo underflow */ 495a0fd6b98Sstsp #define BWI_I_RI (1 << 16) /* receive interrupt */ 496a0fd6b98Sstsp #define BWI_I_XI (1 << 24) /* transmit interrupt */ 497a0fd6b98Sstsp 498a0fd6b98Sstsp #define BWI_TXRX_INTR_ERROR (BWI_I_XU | BWI_I_RO | BWI_I_DE | \ 499a0fd6b98Sstsp BWI_I_PD | BWI_I_PC) 500a0fd6b98Sstsp #define BWI_TXRX_INTR_RX BWI_I_RI 5011efc4635Sjsg #define BWI_TXRX_TX_INTRS BWI_TXRX_INTR_ERROR 5021efc4635Sjsg #define BWI_TXRX_RX_INTRS (BWI_TXRX_INTR_ERROR | BWI_TXRX_INTR_RX) 5031efc4635Sjsg #define BWI_TXRX_IS_RX(i) ((i) % 3 == 0) 5041efc4635Sjsg 5051efc4635Sjsg /* PHY */ 5061efc4635Sjsg 5071efc4635Sjsg #define BWI_PHYR_NRSSI_THR_11B 0x020 5081efc4635Sjsg #define BWI_PHYR_BBP_ATTEN 0x060 5091efc4635Sjsg #define BWI_PHYR_TBL_CTRL_11A 0x072 5101efc4635Sjsg #define BWI_PHYR_TBL_DATA_LO_11A 0x073 5111efc4635Sjsg #define BWI_PHYR_TBL_DATA_HI_11A 0x074 5121efc4635Sjsg #define BWI_PHYR_TBL_CTRL_11G 0x472 5131efc4635Sjsg #define BWI_PHYR_TBL_DATA_LO_11G 0x473 5141efc4635Sjsg #define BWI_PHYR_TBL_DATA_HI_11G 0x474 5151efc4635Sjsg #define BWI_PHYR_NRSSI_THR_11G 0x48a 5161efc4635Sjsg #define BWI_PHYR_NRSSI_CTRL 0x803 5171efc4635Sjsg #define BWI_PHYR_NRSSI_DATA 0x804 5181efc4635Sjsg #define BWI_PHYR_RF_LO 0x810 5191efc4635Sjsg 5201efc4635Sjsg /* 5211efc4635Sjsg * PHY Tables 5221efc4635Sjsg */ 5231efc4635Sjsg /* 5241efc4635Sjsg * http://bcm-specs.sipsolutions.net/APHYSetup/FineFrequency 5251efc4635Sjsg * G PHY 5261efc4635Sjsg */ 5271efc4635Sjsg #define BWI_PHY_FREQ_11G_REV1 \ 5281efc4635Sjsg 0x0089, 0x02e9, 0x0409, 0x04e9, 0x05a9, 0x0669, 0x0709, 0x0789, \ 5291efc4635Sjsg 0x0829, 0x08a9, 0x0929, 0x0989, 0x0a09, 0x0a69, 0x0ac9, 0x0b29, \ 5301efc4635Sjsg 0x0ba9, 0x0be9, 0x0c49, 0x0ca9, 0x0d09, 0x0d69, 0x0da9, 0x0e09, \ 5311efc4635Sjsg 0x0e69, 0x0ea9, 0x0f09, 0x0f49, 0x0fa9, 0x0fe9, 0x1029, 0x1089, \ 5321efc4635Sjsg 0x10c9, 0x1109, 0x1169, 0x11a9, 0x11e9, 0x1229, 0x1289, 0x12c9, \ 5331efc4635Sjsg 0x1309, 0x1349, 0x1389, 0x13c9, 0x1409, 0x1449, 0x14a9, 0x14e9, \ 5341efc4635Sjsg 0x1529, 0x1569, 0x15a9, 0x15e9, 0x1629, 0x1669, 0x16a9, 0x16e8, \ 5351efc4635Sjsg 0x1728, 0x1768, 0x17a8, 0x17e8, 0x1828, 0x1868, 0x18a8, 0x18e8, \ 5361efc4635Sjsg 0x1928, 0x1968, 0x19a8, 0x19e8, 0x1a28, 0x1a68, 0x1aa8, 0x1ae8, \ 5371efc4635Sjsg 0x1b28, 0x1b68, 0x1ba8, 0x1be8, 0x1c28, 0x1c68, 0x1ca8, 0x1ce8, \ 5381efc4635Sjsg 0x1d28, 0x1d68, 0x1dc8, 0x1e08, 0x1e48, 0x1e88, 0x1ec8, 0x1f08, \ 5391efc4635Sjsg 0x1f48, 0x1f88, 0x1fe8, 0x2028, 0x2068, 0x20a8, 0x2108, 0x2148, \ 5401efc4635Sjsg 0x2188, 0x21c8, 0x2228, 0x2268, 0x22c8, 0x2308, 0x2348, 0x23a8, \ 5411efc4635Sjsg 0x23e8, 0x2448, 0x24a8, 0x24e8, 0x2548, 0x25a8, 0x2608, 0x2668, \ 5421efc4635Sjsg 0x26c8, 0x2728, 0x2787, 0x27e7, 0x2847, 0x28c7, 0x2947, 0x29a7, \ 5431efc4635Sjsg 0x2a27, 0x2ac7, 0x2b47, 0x2be7, 0x2ca7, 0x2d67, 0x2e47, 0x2f67, \ 5441efc4635Sjsg 0x3247, 0x3526, 0x3646, 0x3726, 0x3806, 0x38a6, 0x3946, 0x39e6, \ 5451efc4635Sjsg 0x3a66, 0x3ae6, 0x3b66, 0x3bc6, 0x3c45, 0x3ca5, 0x3d05, 0x3d85, \ 5461efc4635Sjsg 0x3de5, 0x3e45, 0x3ea5, 0x3ee5, 0x3f45, 0x3fa5, 0x4005, 0x4045, \ 5471efc4635Sjsg 0x40a5, 0x40e5, 0x4145, 0x4185, 0x41e5, 0x4225, 0x4265, 0x42c5, \ 5481efc4635Sjsg 0x4305, 0x4345, 0x43a5, 0x43e5, 0x4424, 0x4464, 0x44c4, 0x4504, \ 5491efc4635Sjsg 0x4544, 0x4584, 0x45c4, 0x4604, 0x4644, 0x46a4, 0x46e4, 0x4724, \ 5501efc4635Sjsg 0x4764, 0x47a4, 0x47e4, 0x4824, 0x4864, 0x48a4, 0x48e4, 0x4924, \ 5511efc4635Sjsg 0x4964, 0x49a4, 0x49e4, 0x4a24, 0x4a64, 0x4aa4, 0x4ae4, 0x4b23, \ 5521efc4635Sjsg 0x4b63, 0x4ba3, 0x4be3, 0x4c23, 0x4c63, 0x4ca3, 0x4ce3, 0x4d23, \ 5531efc4635Sjsg 0x4d63, 0x4da3, 0x4de3, 0x4e23, 0x4e63, 0x4ea3, 0x4ee3, 0x4f23, \ 5541efc4635Sjsg 0x4f63, 0x4fc3, 0x5003, 0x5043, 0x5083, 0x50c3, 0x5103, 0x5143, \ 5551efc4635Sjsg 0x5183, 0x51e2, 0x5222, 0x5262, 0x52a2, 0x52e2, 0x5342, 0x5382, \ 5561efc4635Sjsg 0x53c2, 0x5402, 0x5462, 0x54a2, 0x5502, 0x5542, 0x55a2, 0x55e2, \ 5571efc4635Sjsg 0x5642, 0x5682, 0x56e2, 0x5722, 0x5782, 0x57e1, 0x5841, 0x58a1, \ 5581efc4635Sjsg 0x5901, 0x5961, 0x59c1, 0x5a21, 0x5aa1, 0x5b01, 0x5b81, 0x5be1, \ 5591efc4635Sjsg 0x5c61, 0x5d01, 0x5d80, 0x5e20, 0x5ee0, 0x5fa0, 0x6080, 0x61c0 5601efc4635Sjsg 5611efc4635Sjsg /* 5621efc4635Sjsg * http://bcm-specs.sipsolutions.net/APHYSetup/noise_table 5631efc4635Sjsg */ 5641efc4635Sjsg /* G PHY Revision 1 */ 5651efc4635Sjsg #define BWI_PHY_NOISE_11G_REV1 \ 5661efc4635Sjsg 0x013c, 0x01f5, 0x031a, 0x0631, 0x0001, 0x0001, 0x0001, 0x0001 5671efc4635Sjsg /* G PHY generic */ 5681efc4635Sjsg #define BWI_PHY_NOISE_11G \ 5691efc4635Sjsg 0x5484, 0x3c40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 5701efc4635Sjsg 5711efc4635Sjsg /* 5721efc4635Sjsg * http://bcm-specs.sipsolutions.net/APHYSetup/rotor_table 5731efc4635Sjsg * G PHY Revision 1 5741efc4635Sjsg */ 5751efc4635Sjsg #define BWI_PHY_ROTOR_11G_REV1 \ 5761efc4635Sjsg 0xfeb93ffd, 0xfec63ffd, 0xfed23ffd, 0xfedf3ffd, \ 5771efc4635Sjsg 0xfeec3ffe, 0xfef83ffe, 0xff053ffe, 0xff113ffe, \ 5781efc4635Sjsg 0xff1e3ffe, 0xff2a3fff, 0xff373fff, 0xff443fff, \ 5791efc4635Sjsg 0xff503fff, 0xff5d3fff, 0xff693fff, 0xff763fff, \ 5801efc4635Sjsg 0xff824000, 0xff8f4000, 0xff9b4000, 0xffa84000, \ 5811efc4635Sjsg 0xffb54000, 0xffc14000, 0xffce4000, 0xffda4000, \ 5821efc4635Sjsg 0xffe74000, 0xfff34000, 0x00004000, 0x000d4000, \ 5831efc4635Sjsg 0x00194000, 0x00264000, 0x00324000, 0x003f4000, \ 5841efc4635Sjsg 0x004b4000, 0x00584000, 0x00654000, 0x00714000, \ 5851efc4635Sjsg 0x007e4000, 0x008a3fff, 0x00973fff, 0x00a33fff, \ 5861efc4635Sjsg 0x00b03fff, 0x00bc3fff, 0x00c93fff, 0x00d63fff, \ 5871efc4635Sjsg 0x00e23ffe, 0x00ef3ffe, 0x00fb3ffe, 0x01083ffe, \ 5881efc4635Sjsg 0x01143ffe, 0x01213ffd, 0x012e3ffd, 0x013a3ffd, \ 5891efc4635Sjsg 0x01473ffd 5901efc4635Sjsg 5911efc4635Sjsg /* 5921efc4635Sjsg * http://bcm-specs.sipsolutions.net/APHYSetup/noise_scale_table 5931efc4635Sjsg */ 5941efc4635Sjsg /* G PHY Revision [0,2] */ 5951efc4635Sjsg #define BWI_PHY_NOISE_SCALE_11G_REV2 \ 5961efc4635Sjsg 0x6c77, 0x5162, 0x3b40, 0x3335, 0x2f2d, 0x2a2a, 0x2527, 0x1f21, \ 5971efc4635Sjsg 0x1a1d, 0x1719, 0x1616, 0x1414, 0x1414, 0x1400, 0x1414, 0x1614, \ 5981efc4635Sjsg 0x1716, 0x1a19, 0x1f1d, 0x2521, 0x2a27, 0x2f2a, 0x332d, 0x3b35, \ 5991efc4635Sjsg 0x5140, 0x6c62, 0x0077 600*4b1a56afSjsg /* G PHY Revision 7 */ 6011efc4635Sjsg #define BWI_PHY_NOISE_SCALE_11G_REV7 \ 6021efc4635Sjsg 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, \ 6031efc4635Sjsg 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa400, 0xa4a4, 0xa4a4, \ 6041efc4635Sjsg 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, \ 6051efc4635Sjsg 0xa4a4, 0xa4a4, 0x00a4 6061efc4635Sjsg /* G PHY generic */ 6071efc4635Sjsg #define BWI_PHY_NOISE_SCALE_11G \ 6081efc4635Sjsg 0xd8dd, 0xcbd4, 0xbcc0, 0xb6b7, 0xb2b0, 0xadad, 0xa7a9, 0x9fa1, \ 6091efc4635Sjsg 0x969b, 0x9195, 0x8f8f, 0x8a8a, 0x8a8a, 0x8a00, 0x8a8a, 0x8f8a, \ 6101efc4635Sjsg 0x918f, 0x9695, 0x9f9b, 0xa7a1, 0xada9, 0xb2ad, 0xb6b0, 0xbcb7, \ 6111efc4635Sjsg 0xcbc0, 0xd8d4, 0x00dd 6121efc4635Sjsg 6131efc4635Sjsg /* 6141efc4635Sjsg * http://bcm-specs.sipsolutions.net/APHYSetup/sigma_square_table 6151efc4635Sjsg */ 6161efc4635Sjsg /* G PHY Revision 2 */ 6171efc4635Sjsg #define BWI_PHY_SIGMA_SQ_11G_REV2 \ 6181efc4635Sjsg 0x007a, 0x0075, 0x0071, 0x006c, 0x0067, 0x0063, 0x005e, 0x0059, \ 6191efc4635Sjsg 0x0054, 0x0050, 0x004b, 0x0046, 0x0042, 0x003d, 0x003d, 0x003d, \ 6201efc4635Sjsg 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, \ 6211efc4635Sjsg 0x003d, 0x003d, 0x0000, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, \ 6221efc4635Sjsg 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, \ 6231efc4635Sjsg 0x0042, 0x0046, 0x004b, 0x0050, 0x0054, 0x0059, 0x005e, 0x0063, \ 6241efc4635Sjsg 0x0067, 0x006c, 0x0071, 0x0075, 0x007a 6251efc4635Sjsg /* G PHY Revision (2,7] */ 6261efc4635Sjsg #define BWI_PHY_SIGMA_SQ_11G_REV7 \ 6271efc4635Sjsg 0x00de, 0x00dc, 0x00da, 0x00d8, 0x00d6, 0x00d4, 0x00d2, 0x00cf, \ 6281efc4635Sjsg 0x00cd, 0x00ca, 0x00c7, 0x00c4, 0x00c1, 0x00be, 0x00be, 0x00be, \ 6291efc4635Sjsg 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, \ 6301efc4635Sjsg 0x00be, 0x00be, 0x0000, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, \ 6311efc4635Sjsg 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, \ 6321efc4635Sjsg 0x00c1, 0x00c4, 0x00c7, 0x00ca, 0x00cd, 0x00cf, 0x00d2, 0x00d4, \ 6331efc4635Sjsg 0x00d6, 0x00d8, 0x00da, 0x00dc, 0x00de 6341efc4635Sjsg 6351efc4635Sjsg /* 6361efc4635Sjsg * http://bcm-specs.sipsolutions.net/APHYSetup/retard_table 6371efc4635Sjsg * G PHY 6381efc4635Sjsg */ 6391efc4635Sjsg #define BWI_PHY_DELAY_11G_REV1 \ 6401efc4635Sjsg 0xdb93cb87, 0xd666cf64, 0xd1fdd358, 0xcda6d826, \ 6411efc4635Sjsg 0xca38dd9f, 0xc729e2b4, 0xc469e88e, 0xc26aee2b, \ 6421efc4635Sjsg 0xc0def46c, 0xc073fa62, 0xc01d00d5, 0xc0760743, \ 6431efc4635Sjsg 0xc1560d1e, 0xc2e51369, 0xc4ed18ff, 0xc7ac1ed7, \ 6441efc4635Sjsg 0xcb2823b2, 0xcefa28d9, 0xd2f62d3f, 0xd7bb3197, \ 6451efc4635Sjsg 0xdce53568, 0xe1fe3875, 0xe7d13b35, 0xed663d35, \ 6461efc4635Sjsg 0xf39b3ec4, 0xf98e3fa7, 0x00004000, 0x06723fa7, \ 6471efc4635Sjsg 0x0c653ec4, 0x129a3d35, 0x182f3b35, 0x1e023875, \ 6481efc4635Sjsg 0x231b3568, 0x28453197, 0x2d0a2d3f, 0x310628d9, \ 6491efc4635Sjsg 0x34d823b2, 0x38541ed7, 0x3b1318ff, 0x3d1b1369, \ 6501efc4635Sjsg 0x3eaa0d1e, 0x3f8a0743, 0x3fe300d5, 0x3f8dfa62, \ 6511efc4635Sjsg 0x3f22f46c, 0x3d96ee2b, 0x3b97e88e, 0x38d7e2b4, \ 6521efc4635Sjsg 0x35c8dd9f, 0x325ad826, 0x2e03d358, 0x299acf64, \ 6531efc4635Sjsg 0x246dcb87 6541efc4635Sjsg 6551efc4635Sjsg /* RF */ 6561efc4635Sjsg 6571efc4635Sjsg #define BWI_RFR_ATTEN 0x43 6581efc4635Sjsg 6591efc4635Sjsg #define BWI_RFR_TXPWR 0x52 660b2ffa9ccSmglocker #define BWI_RFR_TXPWR1_MASK 0x0070 6611efc4635Sjsg 6621efc4635Sjsg #define BWI_RFR_BBP_ATTEN 0x60 663b2ffa9ccSmglocker #define BWI_RFR_BBP_ATTEN_CALIB_BIT (1 << 0) 664b2ffa9ccSmglocker #define BWI_RFR_BBP_ATTEN_CALIB_IDX (0x0f << 1) 6651efc4635Sjsg 6661efc4635Sjsg /* 6671efc4635Sjsg * TSSI -- TX power maps 6681efc4635Sjsg */ 6691efc4635Sjsg /* 6701efc4635Sjsg * http://bcm-specs.sipsolutions.net/TSSI_to_DBM_Table 6711efc4635Sjsg * B PHY 6721efc4635Sjsg */ 6731efc4635Sjsg #define BWI_TXPOWER_MAP_11B \ 6741efc4635Sjsg 0x4d, 0x4c, 0x4b, 0x4a, 0x4a, 0x49, 0x48, 0x47, \ 6751efc4635Sjsg 0x47, 0x46, 0x45, 0x45, 0x44, 0x43, 0x42, 0x42, \ 6761efc4635Sjsg 0x41, 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, \ 6771efc4635Sjsg 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x32, 0x31, \ 6781efc4635Sjsg 0x30, 0x2f, 0x2d, 0x2c, 0x2b, 0x29, 0x28, 0x26, \ 6791efc4635Sjsg 0x25, 0x23, 0x21, 0x1f, 0x1d, 0x1a, 0x17, 0x14, \ 6801efc4635Sjsg 0x10, 0x0c, 0x06, 0x00, -7, -7, -7, -7, \ 6811efc4635Sjsg -7, -7, -7, -7, -7, -7, -7, -7 6821efc4635Sjsg /* 6831efc4635Sjsg * http://bcm-specs.sipsolutions.net/TSSI_to_DBM_Table 6841efc4635Sjsg * G PHY 6851efc4635Sjsg */ 6861efc4635Sjsg #define BWI_TXPOWER_MAP_11G \ 6871efc4635Sjsg 77, 77, 77, 76, 76, 76, 75, 75, \ 6881efc4635Sjsg 74, 74, 73, 73, 73, 72, 72, 71, \ 6891efc4635Sjsg 71, 70, 70, 69, 68, 68, 67, 67, \ 6901efc4635Sjsg 66, 65, 65, 64, 63, 63, 62, 61, \ 6911efc4635Sjsg 60, 59, 58, 57, 56, 55, 54, 53, \ 6921efc4635Sjsg 52, 50, 49, 47, 45, 43, 40, 37, \ 6931efc4635Sjsg 33, 28, 22, 14, 5, -7, -20, -20, \ 6941efc4635Sjsg -20, -20, -20, -20, -20, -20, -20, -20 6951efc4635Sjsg 6961efc4635Sjsg /* Find least significant bit that is set */ 6971efc4635Sjsg #define __LOWEST_SET_BIT(__mask) ((((__mask) - 1) & (__mask)) ^ (__mask)) 6981efc4635Sjsg 6991efc4635Sjsg #define __SHIFTOUT(__x, __mask) (((__x) & (__mask)) / __LOWEST_SET_BIT(__mask)) 7001efc4635Sjsg #define __SHIFTIN(__x, __mask) ((__x) * __LOWEST_SET_BIT(__mask)) 7011efc4635Sjsg #define __SHIFTOUT_MASK(__mask) __SHIFTOUT((__mask), (__mask)) 7021efc4635Sjsg 7031efc4635Sjsg #endif /* !_IF_BWIREG_H */ 704