145d9abdbSWeongyo Jeong /*- 2*4d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 3718cf2ccSPedro F. Giffuni * 445d9abdbSWeongyo Jeong * Copyright (c) 2009-2010 Weongyo Jeong <weongyo@freebsd.org> 545d9abdbSWeongyo Jeong * All rights reserved. 645d9abdbSWeongyo Jeong * 745d9abdbSWeongyo Jeong * Redistribution and use in source and binary forms, with or without 845d9abdbSWeongyo Jeong * modification, are permitted provided that the following conditions 945d9abdbSWeongyo Jeong * are met: 1045d9abdbSWeongyo Jeong * 1. Redistributions of source code must retain the above copyright 1145d9abdbSWeongyo Jeong * notice, this list of conditions and the following disclaimer, 1245d9abdbSWeongyo Jeong * without modification. 1345d9abdbSWeongyo Jeong * 2. Redistributions in binary form must reproduce at minimum a disclaimer 1445d9abdbSWeongyo Jeong * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any 1545d9abdbSWeongyo Jeong * redistribution must be conditioned upon including a substantially 1645d9abdbSWeongyo Jeong * similar Disclaimer requirement for further binary redistribution. 1745d9abdbSWeongyo Jeong * 1845d9abdbSWeongyo Jeong * NO WARRANTY 1945d9abdbSWeongyo Jeong * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2045d9abdbSWeongyo Jeong * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2145d9abdbSWeongyo Jeong * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY 2245d9abdbSWeongyo Jeong * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 2345d9abdbSWeongyo Jeong * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, 2445d9abdbSWeongyo Jeong * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2545d9abdbSWeongyo Jeong * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2645d9abdbSWeongyo Jeong * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 2745d9abdbSWeongyo Jeong * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 2845d9abdbSWeongyo Jeong * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 2945d9abdbSWeongyo Jeong * THE POSSIBILITY OF SUCH DAMAGES. 3045d9abdbSWeongyo Jeong */ 3145d9abdbSWeongyo Jeong 3245d9abdbSWeongyo Jeong #ifndef _IF_BWNREG_H 3345d9abdbSWeongyo Jeong #define _IF_BWNREG_H 3445d9abdbSWeongyo Jeong 35d177c199SLandon J. Fuller /* D11-specific I/O control flags */ 36d177c199SLandon J. Fuller #define BWN_IOCTL_PHYCLOCK_ENABLE 0x0004 37d177c199SLandon J. Fuller #define BWN_IOCTL_PHYRESET 0x0008 38d177c199SLandon J. Fuller #define BWN_IOCTL_MACPHYCLKEN 0x0010 /* MAC PHY Clock Control Enable (rev >= 5) */ 39d177c199SLandon J. Fuller #define BWN_IOCTL_PLLREFSEL 0x0020 /* PLL Frequency Reference Select (rev >= 5) */ 40c3907297SAdrian Chadd /* PHY_BANDWIDTH: N-PHY only */ 41d177c199SLandon J. Fuller #define BWN_IOCTL_PHY_BANDWIDTH 0x00C0 42d177c199SLandon J. Fuller #define BWN_IOCTL_PHY_BANDWIDTH_10MHZ 0x0000 43d177c199SLandon J. Fuller #define BWN_IOCTL_PHY_BANDWIDTH_20MHZ 0x0040 44d177c199SLandon J. Fuller #define BWN_IOCTL_PHY_BANDWIDTH_40MHZ 0x0080 45d177c199SLandon J. Fuller #define BWN_IOCTL_SUPPORT_G 0x2000 46c3907297SAdrian Chadd 47d177c199SLandon J. Fuller /* D11-specific I/O status flags */ 48d177c199SLandon J. Fuller #define BWN_IOST_HAVE_2GHZ 0x0001 49d177c199SLandon J. Fuller #define BWN_IOST_HAVE_5GHZ 0x0002 50d177c199SLandon J. Fuller #define BWN_IOST_DUALPHY 0x0008 5145d9abdbSWeongyo Jeong 5245d9abdbSWeongyo Jeong #define BWN_PHYTYPE_A 0x00 5345d9abdbSWeongyo Jeong #define BWN_PHYTYPE_B 0x01 5445d9abdbSWeongyo Jeong #define BWN_PHYTYPE_G 0x02 5545d9abdbSWeongyo Jeong #define BWN_PHYTYPE_N 0x04 5645d9abdbSWeongyo Jeong #define BWN_PHYTYPE_LP 0x05 57988afd21SAdrian Chadd #define BWN_PHYTYPE_SSLPN 0x06 58988afd21SAdrian Chadd #define BWN_PHYTYPE_HT 0x07 59988afd21SAdrian Chadd #define BWN_PHYTYPE_LCN 0x08 60988afd21SAdrian Chadd #define BWN_PHYTYPE_LCNXN 0x09 61988afd21SAdrian Chadd #define BWN_PHYTYPE_LCN40 0x0a 62988afd21SAdrian Chadd #define BWN_PHYTYPE_AC 0x0b 6345d9abdbSWeongyo Jeong 6445d9abdbSWeongyo Jeong #define BWN_DMA0_REASON 0x20 6545d9abdbSWeongyo Jeong #define BWN_DMA0_INTR_MASK 0x24 6645d9abdbSWeongyo Jeong #define BWN_DMA1_REASON 0x28 6745d9abdbSWeongyo Jeong #define BWN_DMA1_INTR_MASK 0x2c 6845d9abdbSWeongyo Jeong #define BWN_DMA2_REASON 0x30 6945d9abdbSWeongyo Jeong #define BWN_DMA2_INTR_MASK 0x34 7045d9abdbSWeongyo Jeong #define BWN_DMA3_REASON 0x38 7145d9abdbSWeongyo Jeong #define BWN_DMA3_INTR_MASK 0x3c 7245d9abdbSWeongyo Jeong #define BWN_DMA4_REASON 0x40 7345d9abdbSWeongyo Jeong #define BWN_DMA4_INTR_MASK 0x44 7445d9abdbSWeongyo Jeong #define BWN_DMA5_INTR_MASK 0x4c 75c3907297SAdrian Chadd 7645d9abdbSWeongyo Jeong #define BWN_MACCTL 0x120 7745d9abdbSWeongyo Jeong #define BWN_MACCTL_ON 0x00000001 7845d9abdbSWeongyo Jeong #define BWN_MACCTL_MCODE_RUN 0x00000002 7945d9abdbSWeongyo Jeong #define BWN_MACCTL_MCODE_JMP0 0x00000004 8045d9abdbSWeongyo Jeong #define BWN_MACCTL_SHM_ON 0x00000100 8145d9abdbSWeongyo Jeong #define BWN_MACCTL_IHR_ON 0x00000400 8245d9abdbSWeongyo Jeong #define BWN_MACCTL_GPOUT_MASK 0x0000c000 8345d9abdbSWeongyo Jeong #define BWN_MACCTL_BIGENDIAN 0x00010000 8445d9abdbSWeongyo Jeong #define BWN_MACCTL_STA 0x00020000 8545d9abdbSWeongyo Jeong #define BWN_MACCTL_HOSTAP 0x00040000 8645d9abdbSWeongyo Jeong #define BWN_MACCTL_RADIO_LOCK 0x00080000 8745d9abdbSWeongyo Jeong #define BWN_MACCTL_BEACON_PROMISC 0x00100000 8845d9abdbSWeongyo Jeong #define BWN_MACCTL_PASS_BADPLCP 0x00200000 89c3907297SAdrian Chadd #define BWN_MACCTL_PHY_LOCK 0x00200000 /* PHY-N? */ 9045d9abdbSWeongyo Jeong #define BWN_MACCTL_PASS_CTL 0x00400000 9145d9abdbSWeongyo Jeong #define BWN_MACCTL_PASS_BADFCS 0x00800000 9245d9abdbSWeongyo Jeong #define BWN_MACCTL_PROMISC 0x01000000 9345d9abdbSWeongyo Jeong #define BWN_MACCTL_HWPS 0x02000000 9445d9abdbSWeongyo Jeong #define BWN_MACCTL_AWAKE 0x04000000 95c3907297SAdrian Chadd #define BWN_MACCTL_CLOSEDNET 0x08000000 96c3907297SAdrian Chadd #define BWN_MACCTL_TBTT_HOLD 0x10000000 97c3907297SAdrian Chadd #define BWN_MACCTL_DISC_TXSTAT 0x20000000 98c3907297SAdrian Chadd #define BWN_MACCTL_DISC_PMQ 0x40000000 9945d9abdbSWeongyo Jeong #define BWN_MACCTL_GMODE 0x80000000 100c3907297SAdrian Chadd 10145d9abdbSWeongyo Jeong #define BWN_MACCMD 0x124 /* MAC command */ 10245d9abdbSWeongyo Jeong #define BWN_MACCMD_BEACON0_VALID 0x00000001 10345d9abdbSWeongyo Jeong #define BWN_MACCMD_BEACON1_VALID 0x00000002 10445d9abdbSWeongyo Jeong #define BWN_MACCMD_DFQ_VALID 0x00000004 10545d9abdbSWeongyo Jeong #define BWN_MACCMD_BGNOISE 0x00000010 10645d9abdbSWeongyo Jeong #define BWN_INTR_REASON 0x128 10745d9abdbSWeongyo Jeong #define BWN_INTR_MASK 0x12c 10845d9abdbSWeongyo Jeong #define BWN_RAM_CONTROL 0x130 10945d9abdbSWeongyo Jeong #define BWN_RAM_DATA 0x134 11045d9abdbSWeongyo Jeong #define BWN_PS_STATUS 0x140 1114afc7f78SAdrian Chadd #define BWN_MAC_HW_CAP 0x15c /* core rev >= 13 */ 11245d9abdbSWeongyo Jeong #define BWN_RF_HWENABLED_HI 0x158 11345d9abdbSWeongyo Jeong #define BWN_RF_HWENABLED_HI_MASK (1 << 16) 11445d9abdbSWeongyo Jeong #define BWN_SHM_CONTROL 0x160 11545d9abdbSWeongyo Jeong #define BWN_SHM_DATA 0x164 11645d9abdbSWeongyo Jeong #define BWN_SHM_DATA_UNALIGNED 0x166 11745d9abdbSWeongyo Jeong #define BWN_XMITSTAT_0 0x170 11845d9abdbSWeongyo Jeong #define BWN_XMITSTAT_1 0x174 11945d9abdbSWeongyo Jeong #define BWN_REV3PLUS_TSF_LOW 0x180 /* core rev >= 3 only */ 12045d9abdbSWeongyo Jeong #define BWN_REV3PLUS_TSF_HIGH 0x184 /* core rev >= 3 only */ 12145d9abdbSWeongyo Jeong #define BWN_TSF_CFP_START 0x18c 12245d9abdbSWeongyo Jeong 12345d9abdbSWeongyo Jeong /* 32-bit DMA */ 12445d9abdbSWeongyo Jeong #define BWN_DMA32_BASE0 0x200 12545d9abdbSWeongyo Jeong #define BWN_DMA32_BASE1 0x220 12645d9abdbSWeongyo Jeong #define BWN_DMA32_BASE2 0x240 12745d9abdbSWeongyo Jeong #define BWN_DMA32_BASE3 0x260 12845d9abdbSWeongyo Jeong #define BWN_DMA32_BASE4 0x280 12945d9abdbSWeongyo Jeong #define BWN_DMA32_BASE5 0x2a0 13045d9abdbSWeongyo Jeong /* 64-bit DMA */ 13145d9abdbSWeongyo Jeong #define BWN_DMA64_BASE0 0x200 13245d9abdbSWeongyo Jeong #define BWN_DMA64_BASE1 0x240 13345d9abdbSWeongyo Jeong #define BWN_DMA64_BASE2 0x280 13445d9abdbSWeongyo Jeong #define BWN_DMA64_BASE3 0x2c0 13545d9abdbSWeongyo Jeong #define BWN_DMA64_BASE4 0x300 13645d9abdbSWeongyo Jeong #define BWN_DMA64_BASE5 0x340 13745d9abdbSWeongyo Jeong 13845d9abdbSWeongyo Jeong /* PIO on core rev < 11 */ 13945d9abdbSWeongyo Jeong #define BWN_PIO_BASE0 0x300 14045d9abdbSWeongyo Jeong #define BWN_PIO_BASE1 0x310 14145d9abdbSWeongyo Jeong #define BWN_PIO_BASE2 0x320 14245d9abdbSWeongyo Jeong #define BWN_PIO_BASE3 0x330 14345d9abdbSWeongyo Jeong #define BWN_PIO_BASE4 0x340 14445d9abdbSWeongyo Jeong #define BWN_PIO_BASE5 0x350 14545d9abdbSWeongyo Jeong #define BWN_PIO_BASE6 0x360 14645d9abdbSWeongyo Jeong #define BWN_PIO_BASE7 0x370 14745d9abdbSWeongyo Jeong /* PIO on core rev >= 11 */ 14845d9abdbSWeongyo Jeong #define BWN_PIO11_BASE0 0x200 14945d9abdbSWeongyo Jeong #define BWN_PIO11_BASE1 0x240 15045d9abdbSWeongyo Jeong #define BWN_PIO11_BASE2 0x280 15145d9abdbSWeongyo Jeong #define BWN_PIO11_BASE3 0x2c0 15245d9abdbSWeongyo Jeong #define BWN_PIO11_BASE4 0x300 15345d9abdbSWeongyo Jeong #define BWN_PIO11_BASE5 0x340 15445d9abdbSWeongyo Jeong 15545d9abdbSWeongyo Jeong #define BWN_GPIOCTL 0x06c 15645d9abdbSWeongyo Jeong #define BWN_PHYVER 0x3e0 15745d9abdbSWeongyo Jeong #define BWN_PHYVER_ANALOG 0xf000 15845d9abdbSWeongyo Jeong #define BWN_PHYVER_TYPE 0x0f00 15945d9abdbSWeongyo Jeong #define BWN_PHYVER_VERSION 0x00ff 16045d9abdbSWeongyo Jeong #define BWN_PHY_RADIO 0x3e2 16145d9abdbSWeongyo Jeong #define BWN_PHY0 0x3e6 16245d9abdbSWeongyo Jeong #define BWN_CHANNEL 0x3f0 16345d9abdbSWeongyo Jeong #define BWN_CHANNEL_EXT 0x3f4 16445d9abdbSWeongyo Jeong #define BWN_RFCTL 0x3f6 16545d9abdbSWeongyo Jeong #define BWN_RFCTL_ID 0x01 16645d9abdbSWeongyo Jeong #define BWN_RFDATAHI 0x3f8 16745d9abdbSWeongyo Jeong #define BWN_RFDATALO 0x3fa 16845d9abdbSWeongyo Jeong #define BWN_PHYCTL 0x3fc 16945d9abdbSWeongyo Jeong #define BWN_PHYDATA 0x3fe 17045d9abdbSWeongyo Jeong #define BWN_MACFILTER_CONTROL 0x420 17145d9abdbSWeongyo Jeong #define BWN_MACFILTER_DATA 0x422 17245d9abdbSWeongyo Jeong #define BWN_RCMTA_COUNT 0x43c 173c3907297SAdrian Chadd 174c3907297SAdrian Chadd #define BWN_PSM_PHY_HDR 0x492 175c3907297SAdrian Chadd /* BWN_PSM_PHY_HDR bits */ 176c3907297SAdrian Chadd #define BWN_PSM_HDR_MAC_PHY_RESET 0x00000001 177c3907297SAdrian Chadd #define BWN_PSM_HDR_MAC_PHY_CLOCK_EN 0x00000002 178c3907297SAdrian Chadd #define BWN_PSM_HDR_MAC_PHY_FORCE_CLK 0x00000004 179c3907297SAdrian Chadd 18045d9abdbSWeongyo Jeong #define BWN_RF_HWENABLED_LO 0x49a 18145d9abdbSWeongyo Jeong #define BWN_RF_HWENABLED_LO_MASK (1 << 4) 18245d9abdbSWeongyo Jeong #define BWN_GPIO_CONTROL 0x49c 18345d9abdbSWeongyo Jeong #define BWN_GPIO_MASK 0x49e 18445d9abdbSWeongyo Jeong #define BWN_TSF_CFP_START_LOW 0x604 18545d9abdbSWeongyo Jeong #define BWN_TSF_CFP_START_HIGH 0x606 18645d9abdbSWeongyo Jeong #define BWN_TSF_CFP_PRETBTT 0x612 187c3907297SAdrian Chadd #define BWN_TSF_CLK_FRAC_LOW 0x62e 188c3907297SAdrian Chadd #define BWN_TSF_CLK_FRAC_HIGH 0x630 18945d9abdbSWeongyo Jeong #define BWN_RNG 0x65a 19045d9abdbSWeongyo Jeong #define BWN_IFSCTL 0x688 /* Interframe space control */ 19145d9abdbSWeongyo Jeong #define BWN_IFSCTL_USE_EDCF 0x0004 19245d9abdbSWeongyo Jeong #define BWN_POWERUP_DELAY 0x6a8 19345d9abdbSWeongyo Jeong #define BWN_BTCOEX_CTL 0x6b4 19445d9abdbSWeongyo Jeong #define BWN_BTCOEX_TXCTL 0x6b8 19545d9abdbSWeongyo Jeong 19645d9abdbSWeongyo Jeong #define BWN_UCODE 0x0 19745d9abdbSWeongyo Jeong #define BWN_HW 0x3 19845d9abdbSWeongyo Jeong #define BWN_RCMTA 0x4 19945d9abdbSWeongyo Jeong 20045d9abdbSWeongyo Jeong #define BWN_TSSI_MAX 0x7f 20145d9abdbSWeongyo Jeong #define BWN_SHARED 0x1 20245d9abdbSWeongyo Jeong #define BWN_SHARED_UCODE_REV 0x0000 20345d9abdbSWeongyo Jeong #define BWN_SHARED_UCODE_PATCH 0x0002 20445d9abdbSWeongyo Jeong #define BWN_SHARED_UCODE_DATE 0x0004 20545d9abdbSWeongyo Jeong #define BWN_SHARED_UCODE_TIME 0x0006 20645d9abdbSWeongyo Jeong #define BWN_SHARED_COREREV 0x0016 20745d9abdbSWeongyo Jeong #define BWN_SHARED_ACKCTS_PHYCTL 0x0022 20845d9abdbSWeongyo Jeong #define BWN_SHARED_RX_PADOFFSET 0x0034 20945d9abdbSWeongyo Jeong #define BWN_SHARED_UCODESTAT 0x0040 21045d9abdbSWeongyo Jeong #define BWN_SHARED_UCODESTAT_SUSPEND 3 21145d9abdbSWeongyo Jeong #define BWN_SHARED_UCODESTAT_SLEEP 4 21245d9abdbSWeongyo Jeong #define BWN_SHARED_FWCAPS 0x0042 21345d9abdbSWeongyo Jeong #define BWN_SHARED_SHORT_RETRY_FALLBACK 0x0044 21445d9abdbSWeongyo Jeong #define BWN_SHARED_LONG_RETRY_FALLBACK 0x0046 21545d9abdbSWeongyo Jeong #define BWN_SHARED_BEACON_PHYCTL 0x0054 21645d9abdbSWeongyo Jeong #define BWN_SHARED_KEY_TABLEP 0x0056 21745d9abdbSWeongyo Jeong #define BWN_SHARED_TSSI_CCK 0x0058 21845d9abdbSWeongyo Jeong #define BWN_SHARED_HFLO 0x005e /* low hostflag */ 21945d9abdbSWeongyo Jeong #define BWN_SHARED_HFMI 0x0060 /* middle hostflag */ 22045d9abdbSWeongyo Jeong #define BWN_SHARED_HFHI 0x0062 /* high hostflag */ 22145d9abdbSWeongyo Jeong #define BWN_SHARED_RADIO_ATT 0x0064 22245d9abdbSWeongyo Jeong #define BWN_SHARED_TSSI_OFDM_G 0x0070 22345d9abdbSWeongyo Jeong #define BWN_SHARED_PROBE_RESP_MAXTIME 0x0074 22445d9abdbSWeongyo Jeong #define BWN_SHARED_SPU_WAKEUP 0x0094 22545d9abdbSWeongyo Jeong #define BWN_SHARED_PRETBTT 0x0096 22645d9abdbSWeongyo Jeong #define BWN_SHARED_CHAN 0x00a0 2274afc7f78SAdrian Chadd #define BWN_SHARED_MACHW_L 0x00c0 2284afc7f78SAdrian Chadd #define BWN_SHARED_MACHW_H 0x00c2 22945d9abdbSWeongyo Jeong #define BWN_SHARED_AUTOINC 0x0100 23045d9abdbSWeongyo Jeong #define BWN_SHARED_PROBE_RESP_PHYCTL 0x0188 23145d9abdbSWeongyo Jeong #define BWN_SHARED_EDCFQ 0x0240 23245d9abdbSWeongyo Jeong #define BWN_SHARED_KEYIDX_BLOCK 0x05d4 23345d9abdbSWeongyo Jeong #define BWN_SHARED_PSM 0x05f4 23445d9abdbSWeongyo Jeong 235c3907297SAdrian Chadd /* SHM_SHARED tx iq workarounds */ 236c3907297SAdrian Chadd #define BWN_SHM_SH_NPHY_TXIQW0 0x0700 237c3907297SAdrian Chadd #define BWN_SHM_SH_NPHY_TXIQW1 0x0702 238c3907297SAdrian Chadd #define BWN_SHM_SH_NPHY_TXIQW2 0x0704 239c3907297SAdrian Chadd #define BWN_SHM_SH_NPHY_TXIQW3 0x0706 240c3907297SAdrian Chadd /* SHM_SHARED tx pwr ctrl */ 241c3907297SAdrian Chadd #define BWN_SHM_SH_NPHY_TXPWR_INDX0 0x0708 242c3907297SAdrian Chadd #define BWN_SHM_SH_NPHY_TXPWR_INDX1 0x070E 243c3907297SAdrian Chadd 24445d9abdbSWeongyo Jeong /* SHM_SCRATCH offsets */ 24545d9abdbSWeongyo Jeong #define BWN_SCRATCH 0x2 24645d9abdbSWeongyo Jeong #define BWN_SCRATCH_CONT_MIN 0x0003 24745d9abdbSWeongyo Jeong #define BWN_SCRATCH_CONT_MAX 0x0004 24845d9abdbSWeongyo Jeong #define BWN_SCRATCH_SHORT_RETRY 0x0006 24945d9abdbSWeongyo Jeong #define BWN_SCRATCH_LONG_RETRY 0x0007 25045d9abdbSWeongyo Jeong 25145d9abdbSWeongyo Jeong /* Generic-Interrupt reasons. */ 25245d9abdbSWeongyo Jeong #define BWN_INTR_MAC_SUSPENDED 0x00000001 25345d9abdbSWeongyo Jeong #define BWN_INTR_BEACON 0x00000002 25445d9abdbSWeongyo Jeong #define BWN_INTR_TBTT_INDI 0x00000004 25545d9abdbSWeongyo Jeong #define BWN_INTR_ATIM_END 0x00000020 25645d9abdbSWeongyo Jeong #define BWN_INTR_PMQ 0x00000040 25745d9abdbSWeongyo Jeong #define BWN_INTR_MAC_TXERR 0x00000200 25845d9abdbSWeongyo Jeong #define BWN_INTR_PHY_TXERR 0x00000800 25945d9abdbSWeongyo Jeong #define BWN_INTR_DMA 0x00008000 26045d9abdbSWeongyo Jeong #define BWN_INTR_TXFIFO_FLUSH_OK 0x00010000 26145d9abdbSWeongyo Jeong #define BWN_INTR_NOISESAMPLE_OK 0x00040000 26245d9abdbSWeongyo Jeong #define BWN_INTR_UCODE_DEBUG 0x08000000 26345d9abdbSWeongyo Jeong #define BWN_INTR_RFKILL 0x10000000 26445d9abdbSWeongyo Jeong #define BWN_INTR_TX_OK 0x20000000 26545d9abdbSWeongyo Jeong #define BWN_INTR_ALL 0xffffffff 26645d9abdbSWeongyo Jeong #define BWN_INTR_MASKTEMPLATE \ 26745d9abdbSWeongyo Jeong (BWN_INTR_TBTT_INDI | BWN_INTR_ATIM_END | BWN_INTR_PMQ | \ 26845d9abdbSWeongyo Jeong BWN_INTR_MAC_TXERR | BWN_INTR_PHY_TXERR | BWN_INTR_DMA | \ 26945d9abdbSWeongyo Jeong BWN_INTR_TXFIFO_FLUSH_OK | BWN_INTR_NOISESAMPLE_OK | \ 27045d9abdbSWeongyo Jeong BWN_INTR_UCODE_DEBUG | BWN_INTR_RFKILL | BWN_INTR_TX_OK) 27145d9abdbSWeongyo Jeong 27245d9abdbSWeongyo Jeong #define BWN_HF_UCODE_ANTDIV_HELPER 0x000000000001ull 27345d9abdbSWeongyo Jeong #define BWN_HF_GPHY_SYM_WORKAROUND 0x000000000002ull 27445d9abdbSWeongyo Jeong #define BWN_HF_4DB_CCK_POWERBOOST 0x000000000008ull 27545d9abdbSWeongyo Jeong #define BWN_HF_BT_COEXIST 0x000000000010ull 27645d9abdbSWeongyo Jeong #define BWN_HF_GPHY_DC_CANCELFILTER 0x000000000020ull 27745d9abdbSWeongyo Jeong #define BWN_HF_PAGAINBOOST_OFDM_ON 0x000000000040ull 27845d9abdbSWeongyo Jeong #define BWN_HF_JAPAN_CHAN14_OFF 0x000000000080ull 27945d9abdbSWeongyo Jeong #define BWN_HF_EDCF 0x000000000100ull 28045d9abdbSWeongyo Jeong #define BWN_HF_TSSI_RESET_PSM_WORKAROUN 0x000000000200ull 28145d9abdbSWeongyo Jeong #define BWN_HF_SLOWCLOCK_REQ_OFF 0x000000000400ull 28245d9abdbSWeongyo Jeong #define BWN_HF_ACI_WORKAROUND 0x000000000800ull 28345d9abdbSWeongyo Jeong #define BWN_HF_2060_RADIO_WORKAROUND 0x000000001000ull 28445d9abdbSWeongyo Jeong #define BWN_HF_FORCE_VCO_RECALC 0x000000040000ull 28545d9abdbSWeongyo Jeong #define BWN_HF_PCI_SLOWCLOCK_WORKAROUND 0x000000080000ull 28645d9abdbSWeongyo Jeong #define BWN_HF_4318_TSSI 0x000000200000ull 28745d9abdbSWeongyo Jeong #define BWN_HF_HW_POWERCTL 0x000000800000ull 28845d9abdbSWeongyo Jeong #define BWN_HF_BT_COEXISTALT 0x000001000000ull 28945d9abdbSWeongyo Jeong #define BWN_HF_SKIP_CFP_UPDATE 0x000004000000ull 290c3907297SAdrian Chadd #define BWN_HF_N40W 0x000008000000ULL /* N PHY 40 MHz workaround (rev >= 13 only) */ 291c3907297SAdrian Chadd #define BWN_HF_ANTSEL 0x000020000000ULL /* Antenna selection (for testing antenna div.) */ 292c3907297SAdrian Chadd #define BWN_HF_BT3COEXT 0x000020000000ULL /* Bluetooth 3-wire coexistence (rev >= 13 only) */ 293c3907297SAdrian Chadd #define BWN_HF_BTCANT 0x000040000000ULL /* Bluetooth coexistence (antenna mode) (rev >= 13 only) */ 294c3907297SAdrian Chadd #define BWN_HF_ANTSELEN 0x000100000000ULL /* Antenna selection enabled (rev >= 13 only) */ 295c3907297SAdrian Chadd #define BWN_HF_ANTSELMODE 0x000200000000ULL /* Antenna selection mode (rev >= 13 only) */ 296c3907297SAdrian Chadd #define BWN_HF_MLADVW 0x001000000000ULL /* N PHY ML ADV workaround (rev >= 13 only) */ 29745d9abdbSWeongyo Jeong #define BWN_HF_PR45960W 0x080000000000ULL 29845d9abdbSWeongyo Jeong 29945d9abdbSWeongyo Jeong #define BWN_TX_PHY_ENC_CCK 0x0000 30045d9abdbSWeongyo Jeong #define BWN_TX_PHY_ENC_OFDM 0x0001 30145d9abdbSWeongyo Jeong #define BWN_TX_PHY_SHORTPRMBL 0x0010 30245d9abdbSWeongyo Jeong #define BWN_TX_PHY_ANT 0x03c0 30345d9abdbSWeongyo Jeong #define BWN_TX_PHY_ANT0 0x0000 30445d9abdbSWeongyo Jeong #define BWN_TX_PHY_ANT1 0x0040 30545d9abdbSWeongyo Jeong #define BWN_TX_PHY_ANT01AUTO 0x00c0 30645d9abdbSWeongyo Jeong #define BWN_TX_PHY_ANT2 0x0100 30745d9abdbSWeongyo Jeong #define BWN_TX_PHY_ANT3 0x0200 30845d9abdbSWeongyo Jeong #define BWN_TX_PHY_TXPWR 0xfc00 30945d9abdbSWeongyo Jeong #define BWN_TX_MAC_ACK 0x00000001 /* immediate ACK */ 31045d9abdbSWeongyo Jeong #define BWN_TX_MAC_LONGFRAME 0x00000002 31145d9abdbSWeongyo Jeong #define BWN_TX_MAC_SEND_RTSCTS 0x00000004 31245d9abdbSWeongyo Jeong #define BWN_TX_MAC_START_MSDU 0x00000008 31345d9abdbSWeongyo Jeong #define BWN_TX_MAC_HWSEQ 0x00000010 31445d9abdbSWeongyo Jeong #define BWN_TX_MAC_5GHZ 0x00000080 31545d9abdbSWeongyo Jeong #define BWN_TX_MAC_SEND_CTSTOSELF 0x00000800 31645d9abdbSWeongyo Jeong #define BWN_TX_EFT_FB_CCK 0x00 31745d9abdbSWeongyo Jeong #define BWN_TX_EFT_FB_OFDM 0x01 31845d9abdbSWeongyo Jeong #define BWN_TX_EFT_RTS_CCK 0x00 31945d9abdbSWeongyo Jeong #define BWN_TX_EFT_RTS_OFDM 0x04 32045d9abdbSWeongyo Jeong #define BWN_TX_EFT_RTS_FBCCK 0x00 32145d9abdbSWeongyo Jeong #define BWN_TX_EFT_RTS_FBOFDM 0x10 32245d9abdbSWeongyo Jeong 32345d9abdbSWeongyo Jeong #define BWN_PIO_TXCTL 0x00 32445d9abdbSWeongyo Jeong #define BWN_PIO_TXCTL_WRITELO 0x0001 32545d9abdbSWeongyo Jeong #define BWN_PIO_TXCTL_WRITEHI 0x0002 32645d9abdbSWeongyo Jeong #define BWN_PIO_TXCTL_EOF 0x0004 32745d9abdbSWeongyo Jeong #define BWN_PIO_TXCTL_FRAMEREADY 0x0008 32845d9abdbSWeongyo Jeong #define BWN_PIO_TXDATA 0x02 32945d9abdbSWeongyo Jeong #define BWN_PIO_TXQBUFSIZE 0x04 33045d9abdbSWeongyo Jeong #define BWN_PIO_RXCTL 0x00 33145d9abdbSWeongyo Jeong #define BWN_PIO_RXCTL_FRAMEREADY 0x0001 33245d9abdbSWeongyo Jeong #define BWN_PIO_RXCTL_DATAREADY 0x0002 33345d9abdbSWeongyo Jeong #define BWN_PIO_RXDATA 0x02 33445d9abdbSWeongyo Jeong #define BWN_PIO8_TXCTL 0x00 33545d9abdbSWeongyo Jeong #define BWN_PIO8_TXCTL_0_7 0x00000001 33645d9abdbSWeongyo Jeong #define BWN_PIO8_TXCTL_8_15 0x00000002 33745d9abdbSWeongyo Jeong #define BWN_PIO8_TXCTL_16_23 0x00000004 33845d9abdbSWeongyo Jeong #define BWN_PIO8_TXCTL_24_31 0x00000008 33945d9abdbSWeongyo Jeong #define BWN_PIO8_TXCTL_EOF 0x00000010 34045d9abdbSWeongyo Jeong #define BWN_PIO8_TXCTL_FRAMEREADY 0x00000080 34145d9abdbSWeongyo Jeong #define BWN_PIO8_TXDATA 0x04 34245d9abdbSWeongyo Jeong #define BWN_PIO8_RXCTL 0x00 34345d9abdbSWeongyo Jeong #define BWN_PIO8_RXCTL_FRAMEREADY 0x00000001 34445d9abdbSWeongyo Jeong #define BWN_PIO8_RXCTL_DATAREADY 0x00000002 34545d9abdbSWeongyo Jeong #define BWN_PIO8_RXDATA 0x04 34645d9abdbSWeongyo Jeong 34745d9abdbSWeongyo Jeong #define BWN_DMA32_TXCTL 0x00 34845d9abdbSWeongyo Jeong #define BWN_DMA32_TXENABLE 0x00000001 34945d9abdbSWeongyo Jeong #define BWN_DMA32_TXSUSPEND 0x00000002 3500bffd217SLandon J. Fuller #define BWN_DMA32_TXPARITY_DISABLE 0x00000800 35145d9abdbSWeongyo Jeong #define BWN_DMA32_TXADDREXT_MASK 0x00030000 35245d9abdbSWeongyo Jeong #define BWN_DMA32_TXADDREXT_SHIFT 16 35345d9abdbSWeongyo Jeong #define BWN_DMA32_TXRING 0x04 35445d9abdbSWeongyo Jeong #define BWN_DMA32_TXINDEX 0x08 35545d9abdbSWeongyo Jeong #define BWN_DMA32_TXSTATUS 0x0c 35645d9abdbSWeongyo Jeong #define BWN_DMA32_TXSTATE 0x0000f000 35745d9abdbSWeongyo Jeong #define BWN_DMA32_TXSTAT_DISABLED 0x00000000 35845d9abdbSWeongyo Jeong #define BWN_DMA32_TXSTAT_IDLEWAIT 0x00002000 35945d9abdbSWeongyo Jeong #define BWN_DMA32_TXSTAT_STOPPED 0x00003000 36045d9abdbSWeongyo Jeong #define BWN_DMA32_RXCTL 0x10 36145d9abdbSWeongyo Jeong #define BWN_DMA32_RXENABLE 0x00000001 36245d9abdbSWeongyo Jeong #define BWN_DMA32_RXFROFF_SHIFT 1 36345d9abdbSWeongyo Jeong #define BWN_DMA32_RXDIRECTFIFO 0x00000100 3640bffd217SLandon J. Fuller #define BWN_DMA32_RXPARITY_DISABLE 0x00000800 36545d9abdbSWeongyo Jeong #define BWN_DMA32_RXADDREXT_MASK 0x00030000 36645d9abdbSWeongyo Jeong #define BWN_DMA32_RXADDREXT_SHIFT 16 36745d9abdbSWeongyo Jeong #define BWN_DMA32_RXRING 0x14 36845d9abdbSWeongyo Jeong #define BWN_DMA32_RXINDEX 0x18 36945d9abdbSWeongyo Jeong #define BWN_DMA32_RXSTATUS 0x1c 37045d9abdbSWeongyo Jeong #define BWN_DMA32_RXDPTR 0x00000fff 37145d9abdbSWeongyo Jeong #define BWN_DMA32_RXSTATE 0x0000f000 37245d9abdbSWeongyo Jeong #define BWN_DMA32_RXSTAT_DISABLED 0x00000000 373d177c199SLandon J. Fuller #define BWN_DMA32_ADDREXT_MASK 0xC0000000 374d177c199SLandon J. Fuller #define BWN_DMA32_ADDREXT_SHIFT 30 37545d9abdbSWeongyo Jeong #define BWN_DMA64_TXCTL 0x00 37645d9abdbSWeongyo Jeong #define BWN_DMA64_TXENABLE 0x00000001 37745d9abdbSWeongyo Jeong #define BWN_DMA64_TXSUSPEND 0x00000002 3780bffd217SLandon J. Fuller #define BWN_DMA64_TXPARITY_DISABLE 0x00000800 37945d9abdbSWeongyo Jeong #define BWN_DMA64_TXADDREXT_MASK 0x00030000 38045d9abdbSWeongyo Jeong #define BWN_DMA64_TXADDREXT_SHIFT 16 38145d9abdbSWeongyo Jeong #define BWN_DMA64_TXINDEX 0x04 38245d9abdbSWeongyo Jeong #define BWN_DMA64_TXRINGLO 0x08 38345d9abdbSWeongyo Jeong #define BWN_DMA64_TXRINGHI 0x0c 38445d9abdbSWeongyo Jeong #define BWN_DMA64_TXSTATUS 0x10 38545d9abdbSWeongyo Jeong #define BWN_DMA64_TXSTAT 0xf0000000 38645d9abdbSWeongyo Jeong #define BWN_DMA64_TXSTAT_DISABLED 0x00000000 38745d9abdbSWeongyo Jeong #define BWN_DMA64_TXSTAT_IDLEWAIT 0x20000000 38845d9abdbSWeongyo Jeong #define BWN_DMA64_TXSTAT_STOPPED 0x30000000 38945d9abdbSWeongyo Jeong #define BWN_DMA64_RXCTL 0x20 39045d9abdbSWeongyo Jeong #define BWN_DMA64_RXENABLE 0x00000001 39145d9abdbSWeongyo Jeong #define BWN_DMA64_RXFROFF_SHIFT 1 39245d9abdbSWeongyo Jeong #define BWN_DMA64_RXDIRECTFIFO 0x00000100 3930bffd217SLandon J. Fuller #define BWN_DMA64_RXPARITY_DISABLE 0x00000800 39445d9abdbSWeongyo Jeong #define BWN_DMA64_RXADDREXT_MASK 0x00030000 39545d9abdbSWeongyo Jeong #define BWN_DMA64_RXADDREXT_SHIFT 16 39645d9abdbSWeongyo Jeong #define BWN_DMA64_RXINDEX 0x24 39745d9abdbSWeongyo Jeong #define BWN_DMA64_RXRINGLO 0x28 39845d9abdbSWeongyo Jeong #define BWN_DMA64_RXRINGHI 0x2c 39945d9abdbSWeongyo Jeong #define BWN_DMA64_RXSTATUS 0x30 40045d9abdbSWeongyo Jeong #define BWN_DMA64_RXSTATDPTR 0x00001fff 40145d9abdbSWeongyo Jeong #define BWN_DMA64_RXSTAT 0xf0000000 40245d9abdbSWeongyo Jeong #define BWN_DMA64_RXSTAT_DISABLED 0x00000000 403d177c199SLandon J. Fuller #define BWN_DMA64_ADDREXT_MASK 0xC000000000000000ULL 404d177c199SLandon J. Fuller #define BWN_DMA64_ADDREXT_SHIFT 62 40545d9abdbSWeongyo Jeong #define BWN_DMA_RINGMEMSIZE PAGE_SIZE 406f629a238SAdrian Chadd #define BWN_DMA0_RX_FRAMEOFFSET_FW351 30 407f629a238SAdrian Chadd #define BWN_DMA0_RX_FRAMEOFFSET_FW598 38 40845d9abdbSWeongyo Jeong 40945d9abdbSWeongyo Jeong #define BWN_TXRING_SLOTS 64 41045d9abdbSWeongyo Jeong #define BWN_RXRING_SLOTS 64 411f629a238SAdrian Chadd #define BWN_DMA0_RX_BUFFERSIZE_FW351 (IEEE80211_MAX_LEN + BWN_DMA0_RX_FRAMEOFFSET_FW351) 412f629a238SAdrian Chadd #define BWN_DMA0_RX_BUFFERSIZE_FW598 (IEEE80211_MAX_LEN + BWN_DMA0_RX_FRAMEOFFSET_FW598) 41345d9abdbSWeongyo Jeong 41445d9abdbSWeongyo Jeong #define BWN_PHYROUTE_BASE 0x0000 415c3907297SAdrian Chadd #define BWN_PHYROUTE_MASK 0x0c00 41645d9abdbSWeongyo Jeong #define BWN_PHYROUTE_OFDM_GPHY 0x0400 41745d9abdbSWeongyo Jeong #define BWN_PHYROUTE_EXT_GPHY 0x0800 418c3907297SAdrian Chadd #define BWN_PHYROUTE_N_BMODE 0x0C00 41945d9abdbSWeongyo Jeong #define BWN_PHY_CCK(reg) ((reg) | BWN_PHYROUTE_BASE) 420c3907297SAdrian Chadd #define BWN_PHY_N(reg) ((reg) | BWN_PHYROUTE_BASE) /* PHY-N */ 42145d9abdbSWeongyo Jeong #define BWN_PHY_N_BMODE(reg) ((reg) | BWN_PHYROUTE_N_BMODE) 42245d9abdbSWeongyo Jeong #define BWN_PHY_OFDM(reg) ((reg) | BWN_PHYROUTE_OFDM_GPHY) 42345d9abdbSWeongyo Jeong #define BWN_PHY_EXTG(reg) ((reg) | BWN_PHYROUTE_EXT_GPHY) 42445d9abdbSWeongyo Jeong 42545d9abdbSWeongyo Jeong #define BWN_PHY_VERSION_OFDM BWN_PHY_OFDM(0x00) 42645d9abdbSWeongyo Jeong #define BWN_PHY_BBANDCFG BWN_PHY_OFDM(0x01) 42745d9abdbSWeongyo Jeong #define BWN_PHY_BBANDCFG_RXANT 0x180 42845d9abdbSWeongyo Jeong #define BWN_PHY_BBANDCFG_RXANT_SHIFT 7 42945d9abdbSWeongyo Jeong #define BWN_PHY_PWRDOWN BWN_PHY_OFDM(0x03) 43045d9abdbSWeongyo Jeong #define BWN_PHY_CRSTHRES1_R1 BWN_PHY_OFDM(0x06) 43145d9abdbSWeongyo Jeong #define BWN_PHY_CRSGAIN_CTL BWN_PHY_OFDM(0x10) 43245d9abdbSWeongyo Jeong #define BWN_PHY_MINPWR_LEVEL BWN_PHY_OFDM(0x16) 43345d9abdbSWeongyo Jeong #define BWN_PHY_OFDMSYNCTHRESH0 BWN_PHY_OFDM(0x17) 43445d9abdbSWeongyo Jeong #define BWN_PHY_IDLEAFTERPKTRXTO BWN_PHY_OFDM(0x1a) 43545d9abdbSWeongyo Jeong #define BWN_PHY_LNAHPFCTL BWN_PHY_OFDM(0x1c) 43645d9abdbSWeongyo Jeong #define BWN_PHY_DCOFFSETTRANSIENT BWN_PHY_OFDM(0x1c) /* for LP */ 43745d9abdbSWeongyo Jeong #define BWN_PHY_PREAMBLECONFIRMTO BWN_PHY_OFDM(0x1e) 43845d9abdbSWeongyo Jeong #define BWN_PHY_CLIPTHRESH BWN_PHY_OFDM(0x1f) 43945d9abdbSWeongyo Jeong #define BWN_PHY_LPFGAINCTL BWN_PHY_OFDM(0x20) 44045d9abdbSWeongyo Jeong #define BWN_PHY_CLIPCTRTHRESH BWN_PHY_OFDM(0x20) /* for LP */ 44145d9abdbSWeongyo Jeong #define BWN_PHY_HIGAINDB BWN_PHY_OFDM(0x23) 44245d9abdbSWeongyo Jeong #define BWN_PHY_LOWGAINDB BWN_PHY_OFDM(0x24) 44345d9abdbSWeongyo Jeong #define BWN_PHY_VERYLOWGAINDB BWN_PHY_OFDM(0x25) 44445d9abdbSWeongyo Jeong #define BWN_PHY_GAINMISMATCH BWN_PHY_OFDM(0x26) 44545d9abdbSWeongyo Jeong #define BWN_PHY_ADIVRELATED BWN_PHY_OFDM(0x27) 44645d9abdbSWeongyo Jeong #define BWN_PHY_GAINDIRECTMISMATCH BWN_PHY_OFDM(0x27) /* for LP */ 44745d9abdbSWeongyo Jeong #define BWN_PHY_CRS0 BWN_PHY_OFDM(0x29) 44845d9abdbSWeongyo Jeong #define BWN_PHY_CRS0_EN 0x4000 44945d9abdbSWeongyo Jeong #define BWN_PHY_PWR_THRESH1 BWN_PHY_OFDM(0x29) /* for LP */ 45045d9abdbSWeongyo Jeong #define BWN_PHY_ANTDWELL BWN_PHY_OFDM(0x2b) 45145d9abdbSWeongyo Jeong #define BWN_PHY_ANTDWELL_AUTODIV1 0x0100 45245d9abdbSWeongyo Jeong #define BWN_PHY_DSSS_CONFIRM_CNT BWN_PHY_OFDM(0x2f) /* DSSS Confirm Cnt */ 45345d9abdbSWeongyo Jeong #define BWN_PHY_PEAK_COUNT BWN_PHY_OFDM(0x30) 45445d9abdbSWeongyo Jeong #define BWN_PHY_GAIN_MISMATCH_LIMIT BWN_PHY_OFDM(0x31) 45545d9abdbSWeongyo Jeong #define BWN_PHY_CRS_ED_THRESH BWN_PHY_OFDM(0x32) 45645d9abdbSWeongyo Jeong #define BWN_PHY_INPUT_PWRDB BWN_PHY_OFDM(0x34) 45745d9abdbSWeongyo Jeong #define BWN_PHY_AFE_ADC_CTL_0 BWN_PHY_OFDM(0x36) 45845d9abdbSWeongyo Jeong #define BWN_PHY_AFE_ADC_CTL_1 BWN_PHY_OFDM(0x37) 45945d9abdbSWeongyo Jeong #define BWN_PHY_AFE_DAC_CTL BWN_PHY_OFDM(0x39) 46045d9abdbSWeongyo Jeong #define BWN_PHY_AFE_CTL BWN_PHY_OFDM(0x3a) 46145d9abdbSWeongyo Jeong #define BWN_PHY_AFE_CTL_OVR BWN_PHY_OFDM(0x3b) 46245d9abdbSWeongyo Jeong #define BWN_PHY_AFE_CTL_OVRVAL BWN_PHY_OFDM(0x3c) 46345d9abdbSWeongyo Jeong #define BWN_PHY_AFE_RSSI_CTL_0 BWN_PHY_OFDM(0x3d) 46445d9abdbSWeongyo Jeong #define BWN_PHY_AFE_RSSI_CTL_1 BWN_PHY_OFDM(0x3e) 46545d9abdbSWeongyo Jeong #define BWN_PHY_LP_PHY_CTL BWN_PHY_OFDM(0x48) 46645d9abdbSWeongyo Jeong #define BWN_PHY_ENCORE BWN_PHY_OFDM(0x49) 46745d9abdbSWeongyo Jeong #define BWN_PHY_ENCORE_EN 0x0200 46845d9abdbSWeongyo Jeong #define BWN_PHY_RESET_CTL BWN_PHY_OFDM(0x4a) 46945d9abdbSWeongyo Jeong #define BWN_PHY_RF_OVERRIDE_0 BWN_PHY_OFDM(0x4c) 47045d9abdbSWeongyo Jeong #define BWN_PHY_RF_OVERRIDE_VAL_0 BWN_PHY_OFDM(0x4d) 47145d9abdbSWeongyo Jeong #define BWN_PHY_TR_LOOKUP_1 BWN_PHY_OFDM(0x4e) 47245d9abdbSWeongyo Jeong #define BWN_PHY_TR_LOOKUP_2 BWN_PHY_OFDM(0x4F) 47345d9abdbSWeongyo Jeong #define BWN_PHY_LMS BWN_PHY_OFDM(0x55) 47445d9abdbSWeongyo Jeong #define BWN_PHY_TABLE_ADDR BWN_PHY_OFDM(0x55) /* for LP */ 47545d9abdbSWeongyo Jeong #define BWN_PHY_TABLEDATALO BWN_PHY_OFDM(0x56) 47645d9abdbSWeongyo Jeong #define BWN_PHY_TABLEDATAHI BWN_PHY_OFDM(0x57) 47745d9abdbSWeongyo Jeong #define BWN_PHY_OFDM61 BWN_PHY_OFDM(0x61) 47845d9abdbSWeongyo Jeong #define BWN_PHY_OFDM61_10 0x0010 47945d9abdbSWeongyo Jeong #define BWN_PHY_ADC_COMPENSATION_CTL BWN_PHY_OFDM(0x70) 48045d9abdbSWeongyo Jeong #define BWN_PHY_OTABLECTL BWN_PHY_OFDM(0x72) 48145d9abdbSWeongyo Jeong #define BWN_PHY_OTABLENR_SHIFT 10 48245d9abdbSWeongyo Jeong #define BWN_PHY_OTABLEI BWN_PHY_OFDM(0x73) 48345d9abdbSWeongyo Jeong #define BWN_PHY_OTABLEQ BWN_PHY_OFDM(0x74) 48445d9abdbSWeongyo Jeong #define BWN_PHY_HPWR_TSSICTL BWN_PHY_OFDM(0x78) 48545d9abdbSWeongyo Jeong #define BWN_PHY_IQ_ENABLE_WAIT_TIME_ADDR BWN_PHY_OFDM(0x81) 48645d9abdbSWeongyo Jeong #define BWN_PHY_IQ_NUM_SMPLS_ADDR BWN_PHY_OFDM(0x82) 48745d9abdbSWeongyo Jeong #define BWN_PHY_IQ_ACC_HI_ADDR BWN_PHY_OFDM(0x83) 48845d9abdbSWeongyo Jeong #define BWN_PHY_IQ_ACC_LO_ADDR BWN_PHY_OFDM(0x84) 48945d9abdbSWeongyo Jeong #define BWN_PHY_IQ_I_PWR_ACC_HI_ADDR BWN_PHY_OFDM(0x85) 49045d9abdbSWeongyo Jeong #define BWN_PHY_IQ_I_PWR_ACC_LO_ADDR BWN_PHY_OFDM(0x86) 49145d9abdbSWeongyo Jeong #define BWN_PHY_IQ_Q_PWR_ACC_HI_ADDR BWN_PHY_OFDM(0x87) 49245d9abdbSWeongyo Jeong #define BWN_PHY_IQ_Q_PWR_ACC_LO_ADDR BWN_PHY_OFDM(0x88) 49345d9abdbSWeongyo Jeong #define BWN_PHY_ANTWRSETT BWN_PHY_OFDM(0x8c) 49445d9abdbSWeongyo Jeong #define BWN_PHY_ANTWRSETT_ARXDIV 0x2000 49545d9abdbSWeongyo Jeong #define BWN_PHY_OFDM9B BWN_PHY_OFDM(0x9b) 49645d9abdbSWeongyo Jeong #define BWN_PHY_A_PHY_CTL_ADDR BWN_PHY_OFDM(0x9c) 49745d9abdbSWeongyo Jeong #define BWN_PHY_RX_COMP_COEFF_S BWN_PHY_OFDM(0x9e) 49845d9abdbSWeongyo Jeong #define BWN_PHY_N1P1GAIN BWN_PHY_OFDM(0xa0) 49945d9abdbSWeongyo Jeong #define BWN_PHY_SMPL_PLAY_COUNT BWN_PHY_OFDM(0xa0) /* for LP */ 50045d9abdbSWeongyo Jeong #define BWN_PHY_P1P2GAIN BWN_PHY_OFDM(0xa1) 50145d9abdbSWeongyo Jeong #define BWN_PHY_SMPL_PLAY_BUFFER_CTL BWN_PHY_OFDM(0xA1) /* for LP */ 50245d9abdbSWeongyo Jeong #define BWN_PHY_N1N2GAIN BWN_PHY_OFDM(0xa2) 50345d9abdbSWeongyo Jeong #define BWN_PHY_4WIRECTL BWN_PHY_OFDM(0xa2) /* for LP */ 50445d9abdbSWeongyo Jeong #define BWN_PHY_TX_PWR_CTL_CMD BWN_PHY_OFDM(0xa4) 50545d9abdbSWeongyo Jeong #define BWN_PHY_TX_PWR_CTL_CMD_MODE 0xe000 50645d9abdbSWeongyo Jeong #define BWN_PHY_TX_PWR_CTL_CMD_MODE_OFF 0x0000 50745d9abdbSWeongyo Jeong #define BWN_PHY_TX_PWR_CTL_CMD_MODE_SW 0x8000 50845d9abdbSWeongyo Jeong #define BWN_PHY_TX_PWR_CTL_CMD_MODE_HW 0xe000 50945d9abdbSWeongyo Jeong #define BWN_PHY_CCKSHIFTBITS_WA BWN_PHY_OFDM(0xa5) 51045d9abdbSWeongyo Jeong #define BWN_PHY_TX_PWR_CTL_NNUM BWN_PHY_OFDM(0xa5) /* for LP */ 51145d9abdbSWeongyo Jeong #define BWN_PHY_CCKSHIFTBITS BWN_PHY_OFDM(0xa7) 51245d9abdbSWeongyo Jeong #define BWN_PHY_DIVSRCHIDX BWN_PHY_OFDM(0xa8) 51345d9abdbSWeongyo Jeong #define BWN_PHY_DIVP1P2GAIN BWN_PHY_OFDM(0xab) 51445d9abdbSWeongyo Jeong #define BWN_PHY_LP_RF_SIGNAL_LUT BWN_PHY_OFDM(0xac) 51545d9abdbSWeongyo Jeong #define BWN_PHY_DIVSRCHGAINBACK BWN_PHY_OFDM(0xad) 51645d9abdbSWeongyo Jeong #define BWN_PHY_RX_RADIO_CTL BWN_PHY_OFDM(0xae) 51745d9abdbSWeongyo Jeong #define BWN_PHY_RF_OVERRIDE_2 BWN_PHY_OFDM(0xb0) 51845d9abdbSWeongyo Jeong #define BWN_PHY_RF_OVERRIDE_2_VAL BWN_PHY_OFDM(0xb1) 51945d9abdbSWeongyo Jeong #define BWN_PHY_PS_CTL_OVERRIDE_VAL0 BWN_PHY_OFDM(0xB2) 52045d9abdbSWeongyo Jeong #define BWN_PHY_PS_CTL_OVERRIDE_VAL1 BWN_PHY_OFDM(0xB3) 52145d9abdbSWeongyo Jeong #define BWN_PHY_PS_CTL_OVERRIDE_VAL2 BWN_PHY_OFDM(0xB4) 52245d9abdbSWeongyo Jeong #define BWN_PHY_TX_GAIN_CTL_OVERRIDE_VAL BWN_PHY_OFDM(0xB5) 52345d9abdbSWeongyo Jeong #define BWN_PHY_RX_GAIN_CTL_OVERRIDE_VAL BWN_PHY_OFDM(0xB6) 52445d9abdbSWeongyo Jeong #define BWN_PHY_AFE_DDFS BWN_PHY_OFDM(0xb7) 52545d9abdbSWeongyo Jeong #define BWN_PHY_AFE_DDFS_POINTER_INIT BWN_PHY_OFDM(0xB8) 52645d9abdbSWeongyo Jeong #define BWN_PHY_AFE_DDFS_INCR_INIT BWN_PHY_OFDM(0xB9) 52745d9abdbSWeongyo Jeong #define BWN_PHY_TR_LOOKUP_3 BWN_PHY_OFDM(0xbb) 52845d9abdbSWeongyo Jeong #define BWN_PHY_TR_LOOKUP_4 BWN_PHY_OFDM(0xbc) 52945d9abdbSWeongyo Jeong #define BWN_PHY_GPIO_OUTEN BWN_PHY_OFDM(0xbe) 53045d9abdbSWeongyo Jeong #define BWN_PHY_GPIO_SELECT BWN_PHY_OFDM(0xbf) 53145d9abdbSWeongyo Jeong #define BWN_PHY_CRSTHRES1 BWN_PHY_OFDM(0xc0) 53245d9abdbSWeongyo Jeong #define BWN_PHY_CRSTHRES2 BWN_PHY_OFDM(0xc1) 53345d9abdbSWeongyo Jeong #define BWN_PHY_4C3 BWN_PHY_OFDM(0xC3) 53445d9abdbSWeongyo Jeong #define BWN_PHY_4C4 BWN_PHY_OFDM(0xC4) 53545d9abdbSWeongyo Jeong #define BWN_PHY_4C5 BWN_PHY_OFDM(0xC5) 53645d9abdbSWeongyo Jeong #define BWN_PHY_TR_LOOKUP_5 BWN_PHY_OFDM(0xC7) 53745d9abdbSWeongyo Jeong #define BWN_PHY_TR_LOOKUP_6 BWN_PHY_OFDM(0xC8) 53845d9abdbSWeongyo Jeong #define BWN_PHY_TR_LOOKUP_7 BWN_PHY_OFDM(0xC9) 53945d9abdbSWeongyo Jeong #define BWN_PHY_TR_LOOKUP_8 BWN_PHY_OFDM(0xCA) 54045d9abdbSWeongyo Jeong #define BWN_PHY_RF_PWR_OVERRIDE BWN_PHY_OFDM(0xd3) 54145d9abdbSWeongyo Jeong 54245d9abdbSWeongyo Jeong #define BWN_OFDMTAB(number, offset) \ 54345d9abdbSWeongyo Jeong (((number) << BWN_PHY_OTABLENR_SHIFT) | (offset)) 54445d9abdbSWeongyo Jeong #define BWN_OFDMTAB_AGC1 BWN_OFDMTAB(0x00, 0) 54545d9abdbSWeongyo Jeong #define BWN_OFDMTAB_GAIN0 BWN_OFDMTAB(0x00, 0) 54645d9abdbSWeongyo Jeong #define BWN_OFDMTAB_GAINX BWN_OFDMTAB(0x01, 0) 54745d9abdbSWeongyo Jeong #define BWN_OFDMTAB_GAIN1 BWN_OFDMTAB(0x01, 4) 54845d9abdbSWeongyo Jeong #define BWN_OFDMTAB_AGC3 BWN_OFDMTAB(0x02, 0) 54945d9abdbSWeongyo Jeong #define BWN_OFDMTAB_GAIN2 BWN_OFDMTAB(0x02, 3) 55045d9abdbSWeongyo Jeong #define BWN_OFDMTAB_LNAHPFGAIN1 BWN_OFDMTAB(0x03, 0) 55145d9abdbSWeongyo Jeong #define BWN_OFDMTAB_WRSSI BWN_OFDMTAB(0x04, 0) 55245d9abdbSWeongyo Jeong #define BWN_OFDMTAB_NOISESCALE BWN_OFDMTAB(0x05, 0) 55345d9abdbSWeongyo Jeong #define BWN_OFDMTAB_AGC2 BWN_OFDMTAB(0x06, 0) 55445d9abdbSWeongyo Jeong #define BWN_OFDMTAB_ROTOR BWN_OFDMTAB(0x08, 0) 55545d9abdbSWeongyo Jeong #define BWN_OFDMTAB_ADVRETARD BWN_OFDMTAB(0x09, 0) 55645d9abdbSWeongyo Jeong #define BWN_OFDMTAB_DAC BWN_OFDMTAB(0x0c, 0) 55745d9abdbSWeongyo Jeong #define BWN_OFDMTAB_DC BWN_OFDMTAB(0x0e, 7) 55845d9abdbSWeongyo Jeong #define BWN_OFDMTAB_PWRDYN2 BWN_OFDMTAB(0x0e, 12) 55945d9abdbSWeongyo Jeong #define BWN_OFDMTAB_UNKNOWN_0F BWN_OFDMTAB(0x0f, 0) 56045d9abdbSWeongyo Jeong #define BWN_OFDMTAB_UNKNOWN_APHY BWN_OFDMTAB(0x0f, 7) 56145d9abdbSWeongyo Jeong #define BWN_OFDMTAB_LPFGAIN BWN_OFDMTAB(0x0f, 12) 56245d9abdbSWeongyo Jeong #define BWN_OFDMTAB_RSSI BWN_OFDMTAB(0x10, 0) 56345d9abdbSWeongyo Jeong #define BWN_OFDMTAB_UNKNOWN_11 BWN_OFDMTAB(0x11, 4) 56445d9abdbSWeongyo Jeong #define BWN_OFDMTAB_AGC1_R1 BWN_OFDMTAB(0x13, 0) 56545d9abdbSWeongyo Jeong #define BWN_OFDMTAB_GAINX_R1 BWN_OFDMTAB(0x14, 0) 56645d9abdbSWeongyo Jeong #define BWN_OFDMTAB_MINSIGSQ BWN_OFDMTAB(0x14, 0) 56745d9abdbSWeongyo Jeong #define BWN_OFDMTAB_AGC3_R1 BWN_OFDMTAB(0x15, 0) 56845d9abdbSWeongyo Jeong #define BWN_OFDMTAB_WRSSI_R1 BWN_OFDMTAB(0x15, 4) 56945d9abdbSWeongyo Jeong #define BWN_OFDMTAB_DACRFPABB BWN_OFDMTAB(0x16, 0) 57045d9abdbSWeongyo Jeong 57145d9abdbSWeongyo Jeong #define BWN_PHY_CCKBBANDCFG BWN_PHY_CCK(0x01) 57245d9abdbSWeongyo Jeong #define BWN_PHY_PGACTL BWN_PHY_CCK(0x15) 57345d9abdbSWeongyo Jeong #define BWN_PHY_PGACTL_LPF 0x1000 57445d9abdbSWeongyo Jeong #define BWN_PHY_PGACTL_LOWBANDW 0x0040 57545d9abdbSWeongyo Jeong #define BWN_PHY_PGACTL_UNKNOWN 0xefa0 57645d9abdbSWeongyo Jeong #define BWN_PHY_TSSI BWN_PHY_CCK(0x29) 57745d9abdbSWeongyo Jeong #define BWN_PHY_LO_LEAKAGE BWN_PHY_CCK(0x2d) 57845d9abdbSWeongyo Jeong #define BWN_PHY_SYNCPEAKCNT BWN_PHY_CCK(0x30) 57945d9abdbSWeongyo Jeong #define BWN_PHY_SYNCCTL BWN_PHY_CCK(0x35) 58045d9abdbSWeongyo Jeong #define BWN_PHY_DACCTL BWN_PHY_CCK(0x60) 58145d9abdbSWeongyo Jeong 58245d9abdbSWeongyo Jeong #define BWN_PHY_CLASSCTL BWN_PHY_EXTG(0x02) 58345d9abdbSWeongyo Jeong #define BWN_PHY_GTABCTL BWN_PHY_EXTG(0x03) 58445d9abdbSWeongyo Jeong #define BWN_PHY_GTABNR_SHIFT 10 58545d9abdbSWeongyo Jeong #define BWN_PHY_GTABDATA BWN_PHY_EXTG(0x04) 58645d9abdbSWeongyo Jeong #define BWN_PHY_LO_MASK BWN_PHY_EXTG(0x0f) 58745d9abdbSWeongyo Jeong #define BWN_PHY_LO_CTL BWN_PHY_EXTG(0x10) 58845d9abdbSWeongyo Jeong #define BWN_PHY_RFOVER BWN_PHY_EXTG(0x11) 58945d9abdbSWeongyo Jeong #define BWN_PHY_RFOVERVAL BWN_PHY_EXTG(0x12) 59045d9abdbSWeongyo Jeong #define BWN_PHY_RFOVERVAL_EXTLNA 0x8000 59145d9abdbSWeongyo Jeong #define BWN_PHY_RFOVERVAL_LNA 0x7000 59245d9abdbSWeongyo Jeong #define BWN_PHY_RFOVERVAL_LNA_SHIFT 12 59345d9abdbSWeongyo Jeong #define BWN_PHY_RFOVERVAL_PGA 0x0f00 59445d9abdbSWeongyo Jeong #define BWN_PHY_RFOVERVAL_PGA_SHIFT 8 59545d9abdbSWeongyo Jeong #define BWN_PHY_RFOVERVAL_UNK 0x0010 59645d9abdbSWeongyo Jeong #define BWN_PHY_RFOVERVAL_TRSWRX 0x00e0 59745d9abdbSWeongyo Jeong #define BWN_PHY_RFOVERVAL_BW 0x0003 59845d9abdbSWeongyo Jeong #define BWN_PHY_RFOVERVAL_BW_LPF 0x0001 59945d9abdbSWeongyo Jeong #define BWN_PHY_RFOVERVAL_BW_LBW 0x0002 60045d9abdbSWeongyo Jeong #define BWN_PHY_ANALOGOVER BWN_PHY_EXTG(0x14) 60145d9abdbSWeongyo Jeong #define BWN_PHY_ANALOGOVERVAL BWN_PHY_EXTG(0x15) 60245d9abdbSWeongyo Jeong 60345d9abdbSWeongyo Jeong #define BWN_GTAB(number, offset) \ 60445d9abdbSWeongyo Jeong (((number) << BWN_PHY_GTABNR_SHIFT) | (offset)) 60545d9abdbSWeongyo Jeong #define BWN_GTAB_ORIGTR BWN_GTAB(0x2e, 0x298) 60645d9abdbSWeongyo Jeong 60745d9abdbSWeongyo Jeong #define BWN_PHY_G_LOCTL 0x0810 60845d9abdbSWeongyo Jeong #define BWN_PHY_RADIO_BITFIELD 0x0401 60945d9abdbSWeongyo Jeong #define BWN_PHY_G_CRS 0x0429 61045d9abdbSWeongyo Jeong #define BWN_PHY_NRSSI_CTRL 0x0803 61145d9abdbSWeongyo Jeong #define BWN_PHY_NRSSI_DATA 0x0804 61245d9abdbSWeongyo Jeong #define BWN_FWCAPS_HWCRYPTO 0x0001 61345d9abdbSWeongyo Jeong #define BWN_FWCAPS_WME 0x0002 61445d9abdbSWeongyo Jeong #define BWN_MACFILTER_SELF 0x0000 61545d9abdbSWeongyo Jeong #define BWN_MACFILTER_BSSID 0x0003 61645d9abdbSWeongyo Jeong #define BWN_SEC_KEYSIZE 16 61745d9abdbSWeongyo Jeong #define BWN_SEC_ALGO_NONE 0 61845d9abdbSWeongyo Jeong #define BWN_LED_BEHAVIOUR 0x7f 61945d9abdbSWeongyo Jeong #define BWN_LED_ACTIVELOW 0x80 62045d9abdbSWeongyo Jeong 62145d9abdbSWeongyo Jeong #define BWN_DEBUGINTR_REASON_REG 63 62245d9abdbSWeongyo Jeong #define BWN_DEBUGINTR_PANIC 0 62345d9abdbSWeongyo Jeong #define BWN_DEBUGINTR_DUMP_SHM 1 62445d9abdbSWeongyo Jeong #define BWN_DEBUGINTR_DUMP_REGS 2 62545d9abdbSWeongyo Jeong #define BWN_DEBUGINTR_MARKER 3 62645d9abdbSWeongyo Jeong #define BWN_DEBUGINTR_ACK 0xffff 62745d9abdbSWeongyo Jeong 62845d9abdbSWeongyo Jeong #define BWN_FWPANIC_REASON_REG 3 62945d9abdbSWeongyo Jeong #define BWN_FWPANIC_DIE 0 63045d9abdbSWeongyo Jeong #define BWN_FWPANIC_RESTART 1 63145d9abdbSWeongyo Jeong #define BWN_WATCHDOG_REG 1 63245d9abdbSWeongyo Jeong 63345d9abdbSWeongyo Jeong #define BWN_CCK_RATE_1MB 0x02 63445d9abdbSWeongyo Jeong #define BWN_CCK_RATE_2MB 0x04 63545d9abdbSWeongyo Jeong #define BWN_CCK_RATE_5MB 0x0b 63645d9abdbSWeongyo Jeong #define BWN_CCK_RATE_11MB 0x16 63745d9abdbSWeongyo Jeong #define BWN_OFDM_RATE_6MB 0x0c 63845d9abdbSWeongyo Jeong #define BWN_OFDM_RATE_9MB 0x12 63945d9abdbSWeongyo Jeong #define BWN_OFDM_RATE_12MB 0x18 64045d9abdbSWeongyo Jeong #define BWN_OFDM_RATE_18MB 0x24 64145d9abdbSWeongyo Jeong #define BWN_OFDM_RATE_24MB 0x30 64245d9abdbSWeongyo Jeong #define BWN_OFDM_RATE_36MB 0x48 64345d9abdbSWeongyo Jeong #define BWN_OFDM_RATE_48MB 0x60 64445d9abdbSWeongyo Jeong #define BWN_OFDM_RATE_54MB 0x6c 64545d9abdbSWeongyo Jeong 64645d9abdbSWeongyo Jeong #define BWN_RX_CHAN_PHYTYPE 0x0007 64745d9abdbSWeongyo Jeong #define BWN_RX_PHYST0_GAINCTL 0x4000 64845d9abdbSWeongyo Jeong #define BWN_RX_PHYST0_PLCPHCF 0x0200 64945d9abdbSWeongyo Jeong #define BWN_RX_PHYST0_PLCPFV 0x0100 65045d9abdbSWeongyo Jeong #define BWN_RX_PHYST0_SHORTPRMBL 0x0080 65145d9abdbSWeongyo Jeong #define BWN_RX_PHYST0_OFDM 0x0001 65245d9abdbSWeongyo Jeong #define BWN_RX_PHYST3_TRSTATE 0x0400 65345d9abdbSWeongyo Jeong #define BWN_RX_MAC_KEYIDX 0x000007e0 65445d9abdbSWeongyo Jeong #define BWN_RX_MAC_KEYIDX_SHIFT 5 65545d9abdbSWeongyo Jeong #define BWN_RX_MAC_DECERR 0x00000010 65645d9abdbSWeongyo Jeong #define BWN_RX_MAC_DEC 0x00000008 65745d9abdbSWeongyo Jeong #define BWN_RX_MAC_PADDING 0x00000004 65845d9abdbSWeongyo Jeong #define BWN_RX_MAC_FCSERR 0x00000001 65945d9abdbSWeongyo Jeong 66045d9abdbSWeongyo Jeong #define BWN_PS_ON (1 << 0) 66145d9abdbSWeongyo Jeong #define BWN_PS_OFF (1 << 1) 66245d9abdbSWeongyo Jeong #define BWN_PS_AWAKE (1 << 2) 66345d9abdbSWeongyo Jeong #define BWN_PS_ASLEEP (1 << 3) 66445d9abdbSWeongyo Jeong 66545d9abdbSWeongyo Jeong #define BWN_TAB_NOISESCALE_SIZE 27 66645d9abdbSWeongyo Jeong 66745d9abdbSWeongyo Jeong /* 668d177c199SLandon J. Fuller * SPROM rev 1 locale codes. Later SPROM revisions use a two-character 669d177c199SLandon J. Fuller * country code. 670d177c199SLandon J. Fuller */ 671d177c199SLandon J. Fuller enum { 672d177c199SLandon J. Fuller BWN_SPROM1_CC_WORLDWIDE = 0, 673d177c199SLandon J. Fuller BWN_SPROM1_CC_THAILAND = 1, 674d177c199SLandon J. Fuller BWN_SPROM1_CC_ISRAEL = 2, 675d177c199SLandon J. Fuller BWN_SPROM1_CC_JORDAN = 3, 676d177c199SLandon J. Fuller BWN_SPROM1_CC_CHINA = 4, 677d177c199SLandon J. Fuller BWN_SPROM1_CC_JP = 5, 678d177c199SLandon J. Fuller BWN_SPROM1_CC_USA = 6, 679d177c199SLandon J. Fuller BWN_SPROM1_CC_EUROPE = 7, 680d177c199SLandon J. Fuller BWN_SPROM1_CC_US_LOW = 8, 681d177c199SLandon J. Fuller BWN_SPROM1_CC_JP_HIGH = 9, 682d177c199SLandon J. Fuller }; 683d177c199SLandon J. Fuller 684d177c199SLandon J. Fuller /* 68545d9abdbSWeongyo Jeong * SPROM GPIO 68645d9abdbSWeongyo Jeong */ 68745d9abdbSWeongyo Jeong #define BWN_LED_ACT_LOW 0x80 68845d9abdbSWeongyo Jeong #define BWN_LED_ACT_MASK 0x7f 68945d9abdbSWeongyo Jeong #define BWN_LED_ACT_OFF 0 69045d9abdbSWeongyo Jeong #define BWN_LED_ACT_ON 1 69145d9abdbSWeongyo Jeong #define BWN_LED_ACT_BLINK 2 69245d9abdbSWeongyo Jeong #define BWN_LED_ACT_RF_ENABLED 3 69345d9abdbSWeongyo Jeong #define BWN_LED_ACT_5GHZ 4 69445d9abdbSWeongyo Jeong #define BWN_LED_ACT_2GHZ 5 69545d9abdbSWeongyo Jeong #define BWN_LED_ACT_11G 6 69645d9abdbSWeongyo Jeong #define BWN_LED_ACT_BLINK_SLOW 7 69745d9abdbSWeongyo Jeong #define BWN_LED_ACT_BLINK_POLL 8 69845d9abdbSWeongyo Jeong #define BWN_LED_ACT_UNKN 9 69945d9abdbSWeongyo Jeong #define BWN_LED_ACT_ASSOC 10 70045d9abdbSWeongyo Jeong #define BWN_LED_ACT_NULL 11 70145d9abdbSWeongyo Jeong 702d177c199SLandon J. Fuller #define BWN_VENDOR_LED_ACT_HP_COMPAQ \ 70345d9abdbSWeongyo Jeong BWN_LED_ACT_RF_ENABLED, \ 70445d9abdbSWeongyo Jeong BWN_LED_ACT_2GHZ, \ 70545d9abdbSWeongyo Jeong BWN_LED_ACT_5GHZ, \ 70645d9abdbSWeongyo Jeong BWN_LED_ACT_OFF 70745d9abdbSWeongyo Jeong 70845d9abdbSWeongyo Jeong #define BWN_VENDOR_LED_ACT_ASUSTEK \ 70945d9abdbSWeongyo Jeong BWN_LED_ACT_ASSOC, \ 71045d9abdbSWeongyo Jeong BWN_LED_ACT_2GHZ, \ 71145d9abdbSWeongyo Jeong BWN_LED_ACT_5GHZ, \ 71245d9abdbSWeongyo Jeong BWN_LED_ACT_OFF 71345d9abdbSWeongyo Jeong 71445d9abdbSWeongyo Jeong #define BWN_VENDOR_LED_ACT_DEFAULT \ 71545d9abdbSWeongyo Jeong BWN_LED_ACT_BLINK, \ 71645d9abdbSWeongyo Jeong BWN_LED_ACT_2GHZ, \ 71745d9abdbSWeongyo Jeong BWN_LED_ACT_5GHZ, \ 71845d9abdbSWeongyo Jeong BWN_LED_ACT_OFF 71945d9abdbSWeongyo Jeong 72045d9abdbSWeongyo Jeong #define BWN_TAB_ROTOR \ 72145d9abdbSWeongyo Jeong { \ 72245d9abdbSWeongyo Jeong 0xfeb93ffd, 0xfec63ffd, 0xfed23ffd, 0xfedf3ffd, 0xfeec3ffe, \ 72345d9abdbSWeongyo Jeong 0xfef83ffe, 0xff053ffe, 0xff113ffe, 0xff1e3ffe, 0xff2a3fff, \ 72445d9abdbSWeongyo Jeong 0xff373fff, 0xff443fff, 0xff503fff, 0xff5d3fff, 0xff693fff, \ 72545d9abdbSWeongyo Jeong 0xff763fff, 0xff824000, 0xff8f4000, 0xff9b4000, 0xffa84000, \ 72645d9abdbSWeongyo Jeong 0xffb54000, 0xffc14000, 0xffce4000, 0xffda4000, 0xffe74000, \ 72745d9abdbSWeongyo Jeong 0xfff34000, 0x00004000, 0x000d4000, 0x00194000, 0x00264000, \ 72845d9abdbSWeongyo Jeong 0x00324000, 0x003f4000, 0x004b4000, 0x00584000, 0x00654000, \ 72945d9abdbSWeongyo Jeong 0x00714000, 0x007e4000, 0x008a3fff, 0x00973fff, 0x00a33fff, \ 73045d9abdbSWeongyo Jeong 0x00b03fff, 0x00bc3fff, 0x00c93fff, 0x00d63fff, 0x00e23ffe, \ 73145d9abdbSWeongyo Jeong 0x00ef3ffe, 0x00fb3ffe, 0x01083ffe, 0x01143ffe, 0x01213ffd, \ 73245d9abdbSWeongyo Jeong 0x012e3ffd, 0x013a3ffd, 0x01473ffd \ 73345d9abdbSWeongyo Jeong } 73445d9abdbSWeongyo Jeong 73545d9abdbSWeongyo Jeong #define BWN_TAB_RETARD \ 73645d9abdbSWeongyo Jeong { \ 73745d9abdbSWeongyo Jeong 0xdb93cb87, 0xd666cf64, 0xd1fdd358, 0xcda6d826, 0xca38dd9f, \ 73845d9abdbSWeongyo Jeong 0xc729e2b4, 0xc469e88e, 0xc26aee2b, 0xc0def46c, 0xc073fa62, \ 73945d9abdbSWeongyo Jeong 0xc01d00d5, 0xc0760743, 0xc1560d1e, 0xc2e51369, 0xc4ed18ff, \ 74045d9abdbSWeongyo Jeong 0xc7ac1ed7, 0xcb2823b2, 0xcefa28d9, 0xd2f62d3f, 0xd7bb3197, \ 74145d9abdbSWeongyo Jeong 0xdce53568, 0xe1fe3875, 0xe7d13b35, 0xed663d35, 0xf39b3ec4, \ 74245d9abdbSWeongyo Jeong 0xf98e3fa7, 0x00004000, 0x06723fa7, 0x0c653ec4, 0x129a3d35, \ 74345d9abdbSWeongyo Jeong 0x182f3b35, 0x1e023875, 0x231b3568, 0x28453197, 0x2d0a2d3f, \ 74445d9abdbSWeongyo Jeong 0x310628d9, 0x34d823b2, 0x38541ed7, 0x3b1318ff, 0x3d1b1369, \ 74545d9abdbSWeongyo Jeong 0x3eaa0d1e, 0x3f8a0743, 0x3fe300d5, 0x3f8dfa62, 0x3f22f46c, \ 74645d9abdbSWeongyo Jeong 0x3d96ee2b, 0x3b97e88e, 0x38d7e2b4, 0x35c8dd9f, 0x325ad826, \ 74745d9abdbSWeongyo Jeong 0x2e03d358, 0x299acf64, 0x246dcb87, \ 74845d9abdbSWeongyo Jeong } 74945d9abdbSWeongyo Jeong 75045d9abdbSWeongyo Jeong #define BWN_TAB_FINEFREQ_G \ 75145d9abdbSWeongyo Jeong { \ 75245d9abdbSWeongyo Jeong 0x0089, 0x02e9, 0x0409, 0x04e9, 0x05a9, 0x0669, 0x0709, 0x0789, \ 75345d9abdbSWeongyo Jeong 0x0829, 0x08a9, 0x0929, 0x0989, 0x0a09, 0x0a69, 0x0ac9, 0x0b29, \ 75445d9abdbSWeongyo Jeong 0x0ba9, 0x0be9, 0x0c49, 0x0ca9, 0x0d09, 0x0d69, 0x0da9, 0x0e09, \ 75545d9abdbSWeongyo Jeong 0x0e69, 0x0ea9, 0x0f09, 0x0f49, 0x0fa9, 0x0fe9, 0x1029, 0x1089, \ 75645d9abdbSWeongyo Jeong 0x10c9, 0x1109, 0x1169, 0x11a9, 0x11e9, 0x1229, 0x1289, 0x12c9, \ 75745d9abdbSWeongyo Jeong 0x1309, 0x1349, 0x1389, 0x13c9, 0x1409, 0x1449, 0x14a9, 0x14e9, \ 75845d9abdbSWeongyo Jeong 0x1529, 0x1569, 0x15a9, 0x15e9, 0x1629, 0x1669, 0x16a9, 0x16e8, \ 75945d9abdbSWeongyo Jeong 0x1728, 0x1768, 0x17a8, 0x17e8, 0x1828, 0x1868, 0x18a8, 0x18e8, \ 76045d9abdbSWeongyo Jeong 0x1928, 0x1968, 0x19a8, 0x19e8, 0x1a28, 0x1a68, 0x1aa8, 0x1ae8, \ 76145d9abdbSWeongyo Jeong 0x1b28, 0x1b68, 0x1ba8, 0x1be8, 0x1c28, 0x1c68, 0x1ca8, 0x1ce8, \ 76245d9abdbSWeongyo Jeong 0x1d28, 0x1d68, 0x1dc8, 0x1e08, 0x1e48, 0x1e88, 0x1ec8, 0x1f08, \ 76345d9abdbSWeongyo Jeong 0x1f48, 0x1f88, 0x1fe8, 0x2028, 0x2068, 0x20a8, 0x2108, 0x2148, \ 76445d9abdbSWeongyo Jeong 0x2188, 0x21c8, 0x2228, 0x2268, 0x22c8, 0x2308, 0x2348, 0x23a8, \ 76545d9abdbSWeongyo Jeong 0x23e8, 0x2448, 0x24a8, 0x24e8, 0x2548, 0x25a8, 0x2608, 0x2668, \ 76645d9abdbSWeongyo Jeong 0x26c8, 0x2728, 0x2787, 0x27e7, 0x2847, 0x28c7, 0x2947, 0x29a7, \ 76745d9abdbSWeongyo Jeong 0x2a27, 0x2ac7, 0x2b47, 0x2be7, 0x2ca7, 0x2d67, 0x2e47, 0x2f67, \ 76845d9abdbSWeongyo Jeong 0x3247, 0x3526, 0x3646, 0x3726, 0x3806, 0x38a6, 0x3946, 0x39e6, \ 76945d9abdbSWeongyo Jeong 0x3a66, 0x3ae6, 0x3b66, 0x3bc6, 0x3c45, 0x3ca5, 0x3d05, 0x3d85, \ 77045d9abdbSWeongyo Jeong 0x3de5, 0x3e45, 0x3ea5, 0x3ee5, 0x3f45, 0x3fa5, 0x4005, 0x4045, \ 77145d9abdbSWeongyo Jeong 0x40a5, 0x40e5, 0x4145, 0x4185, 0x41e5, 0x4225, 0x4265, 0x42c5, \ 77245d9abdbSWeongyo Jeong 0x4305, 0x4345, 0x43a5, 0x43e5, 0x4424, 0x4464, 0x44c4, 0x4504, \ 77345d9abdbSWeongyo Jeong 0x4544, 0x4584, 0x45c4, 0x4604, 0x4644, 0x46a4, 0x46e4, 0x4724, \ 77445d9abdbSWeongyo Jeong 0x4764, 0x47a4, 0x47e4, 0x4824, 0x4864, 0x48a4, 0x48e4, 0x4924, \ 77545d9abdbSWeongyo Jeong 0x4964, 0x49a4, 0x49e4, 0x4a24, 0x4a64, 0x4aa4, 0x4ae4, 0x4b23, \ 77645d9abdbSWeongyo Jeong 0x4b63, 0x4ba3, 0x4be3, 0x4c23, 0x4c63, 0x4ca3, 0x4ce3, 0x4d23, \ 77745d9abdbSWeongyo Jeong 0x4d63, 0x4da3, 0x4de3, 0x4e23, 0x4e63, 0x4ea3, 0x4ee3, 0x4f23, \ 77845d9abdbSWeongyo Jeong 0x4f63, 0x4fc3, 0x5003, 0x5043, 0x5083, 0x50c3, 0x5103, 0x5143, \ 77945d9abdbSWeongyo Jeong 0x5183, 0x51e2, 0x5222, 0x5262, 0x52a2, 0x52e2, 0x5342, 0x5382, \ 78045d9abdbSWeongyo Jeong 0x53c2, 0x5402, 0x5462, 0x54a2, 0x5502, 0x5542, 0x55a2, 0x55e2, \ 78145d9abdbSWeongyo Jeong 0x5642, 0x5682, 0x56e2, 0x5722, 0x5782, 0x57e1, 0x5841, 0x58a1, \ 78245d9abdbSWeongyo Jeong 0x5901, 0x5961, 0x59c1, 0x5a21, 0x5aa1, 0x5b01, 0x5b81, 0x5be1, \ 78345d9abdbSWeongyo Jeong 0x5c61, 0x5d01, 0x5d80, 0x5e20, 0x5ee0, 0x5fa0, 0x6080, 0x61c0, \ 78445d9abdbSWeongyo Jeong } 78545d9abdbSWeongyo Jeong 78645d9abdbSWeongyo Jeong #define BWN_TAB_NOISE_G1 \ 78745d9abdbSWeongyo Jeong { \ 78845d9abdbSWeongyo Jeong 0x013c, 0x01f5, 0x031a, 0x0631, 0x0001, 0x0001, 0x0001, 0x0001, \ 78945d9abdbSWeongyo Jeong } 79045d9abdbSWeongyo Jeong 79145d9abdbSWeongyo Jeong #define BWN_TAB_NOISE_G2 \ 79245d9abdbSWeongyo Jeong { \ 79345d9abdbSWeongyo Jeong 0x5484, 0x3c40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, \ 79445d9abdbSWeongyo Jeong } 79545d9abdbSWeongyo Jeong 79645d9abdbSWeongyo Jeong #define BWN_TAB_NOISESCALE_G1 \ 79745d9abdbSWeongyo Jeong { \ 79845d9abdbSWeongyo Jeong 0x6c77, 0x5162, 0x3b40, 0x3335, 0x2f2d, 0x2a2a, 0x2527, 0x1f21, \ 79945d9abdbSWeongyo Jeong 0x1a1d, 0x1719, 0x1616, 0x1414, 0x1414, 0x1400, 0x1414, 0x1614, \ 80045d9abdbSWeongyo Jeong 0x1716, 0x1a19, 0x1f1d, 0x2521, 0x2a27, 0x2f2a, 0x332d, 0x3b35, \ 80145d9abdbSWeongyo Jeong 0x5140, 0x6c62, 0x0077, \ 80245d9abdbSWeongyo Jeong } 80345d9abdbSWeongyo Jeong 80445d9abdbSWeongyo Jeong #define BWN_TAB_NOISESCALE_G2 \ 80545d9abdbSWeongyo Jeong { \ 80645d9abdbSWeongyo Jeong 0xd8dd, 0xcbd4, 0xbcc0, 0xb6b7, 0xb2b0, 0xadad, 0xa7a9, 0x9fa1, \ 80745d9abdbSWeongyo Jeong 0x969b, 0x9195, 0x8f8f, 0x8a8a, 0x8a8a, 0x8a00, 0x8a8a, 0x8f8a, \ 80845d9abdbSWeongyo Jeong 0x918f, 0x9695, 0x9f9b, 0xa7a1, 0xada9, 0xb2ad, 0xb6b0, 0xbcb7, \ 80945d9abdbSWeongyo Jeong 0xcbc0, 0xd8d4, 0x00dd, \ 81045d9abdbSWeongyo Jeong } 81145d9abdbSWeongyo Jeong 81245d9abdbSWeongyo Jeong #define BWN_TAB_NOISESCALE_G3 \ 81345d9abdbSWeongyo Jeong { \ 81445d9abdbSWeongyo Jeong 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, \ 81545d9abdbSWeongyo Jeong 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa400, 0xa4a4, 0xa4a4, \ 81645d9abdbSWeongyo Jeong 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, \ 81745d9abdbSWeongyo Jeong 0xa4a4, 0xa4a4, 0x00a4, \ 81845d9abdbSWeongyo Jeong } 81945d9abdbSWeongyo Jeong 82045d9abdbSWeongyo Jeong #define BWN_TAB_SIGMASQR2 \ 82145d9abdbSWeongyo Jeong { \ 82245d9abdbSWeongyo Jeong 0x00de, 0x00dc, 0x00da, 0x00d8, 0x00d6, 0x00d4, 0x00d2, 0x00cf, \ 82345d9abdbSWeongyo Jeong 0x00cd, 0x00ca, 0x00c7, 0x00c4, 0x00c1, 0x00be, 0x00be, 0x00be, \ 82445d9abdbSWeongyo Jeong 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, \ 82545d9abdbSWeongyo Jeong 0x00be, 0x00be, 0x0000, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, \ 82645d9abdbSWeongyo Jeong 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, \ 82745d9abdbSWeongyo Jeong 0x00c1, 0x00c4, 0x00c7, 0x00ca, 0x00cd, 0x00cf, 0x00d2, 0x00d4, \ 82845d9abdbSWeongyo Jeong 0x00d6, 0x00d8, 0x00da, 0x00dc, 0x00de, \ 82945d9abdbSWeongyo Jeong } 83045d9abdbSWeongyo Jeong 83145d9abdbSWeongyo Jeong #define BWN_PHY_G_TSSI2DBM_TABLE \ 83245d9abdbSWeongyo Jeong { \ 83345d9abdbSWeongyo Jeong 77, 77, 77, 76, 76, 76, 75, 75, 74, 74, 73, 73, 73, 72, 72, 71, \ 83445d9abdbSWeongyo Jeong 71, 70, 70, 69, 68, 68, 67, 67, 66, 65, 65, 64, 63, 63, 62, 61, \ 83545d9abdbSWeongyo Jeong 60, 59, 58, 57, 56, 55, 54, 53, 52, 50, 49, 47, 45, 43, 40, 37, \ 83645d9abdbSWeongyo Jeong 33, 28, 22, 14, 5, -7, -20, -20, -20, -20, -20, -20, -20, -20, \ 83745d9abdbSWeongyo Jeong -20, -20 \ 83845d9abdbSWeongyo Jeong } 83945d9abdbSWeongyo Jeong 84045d9abdbSWeongyo Jeong #define BWN_PHY_G_RF_CHANNELS \ 84145d9abdbSWeongyo Jeong { \ 84245d9abdbSWeongyo Jeong 12, 17, 22, 27, 32, 37, 42, 47, 52, 57, 62, 67, 72, 84, \ 84345d9abdbSWeongyo Jeong } 84445d9abdbSWeongyo Jeong 84545d9abdbSWeongyo Jeong #define BWN_BITREV_TABLE \ 84645d9abdbSWeongyo Jeong { \ 84745d9abdbSWeongyo Jeong 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 0x10, 0x90, \ 84845d9abdbSWeongyo Jeong 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, 0x08, 0x88, 0x48, 0xc8, \ 84945d9abdbSWeongyo Jeong 0x28, 0xa8, 0x68, 0xe8, 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, \ 85045d9abdbSWeongyo Jeong 0x78, 0xf8, 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, \ 85145d9abdbSWeongyo Jeong 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, 0x0c, 0x8c, \ 85245d9abdbSWeongyo Jeong 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 0x1c, 0x9c, 0x5c, 0xdc, \ 85345d9abdbSWeongyo Jeong 0x3c, 0xbc, 0x7c, 0xfc, 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, \ 85445d9abdbSWeongyo Jeong 0x62, 0xe2, 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, \ 85545d9abdbSWeongyo Jeong 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, 0x1a, 0x9a, \ 85645d9abdbSWeongyo Jeong 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, 0x06, 0x86, 0x46, 0xc6, \ 85745d9abdbSWeongyo Jeong 0x26, 0xa6, 0x66, 0xe6, 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, \ 85845d9abdbSWeongyo Jeong 0x76, 0xf6, 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, \ 85945d9abdbSWeongyo Jeong 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 0x01, 0x81, \ 86045d9abdbSWeongyo Jeong 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, 0x11, 0x91, 0x51, 0xd1, \ 86145d9abdbSWeongyo Jeong 0x31, 0xb1, 0x71, 0xf1, 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, \ 86245d9abdbSWeongyo Jeong 0x69, 0xe9, 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, \ 86345d9abdbSWeongyo Jeong 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, 0x15, 0x95, \ 86445d9abdbSWeongyo Jeong 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, 0x0d, 0x8d, 0x4d, 0xcd, \ 86545d9abdbSWeongyo Jeong 0x2d, 0xad, 0x6d, 0xed, 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, \ 86645d9abdbSWeongyo Jeong 0x7d, 0xfd, 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, \ 86745d9abdbSWeongyo Jeong 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, 0x0b, 0x8b, \ 86845d9abdbSWeongyo Jeong 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, 0x1b, 0x9b, 0x5b, 0xdb, \ 86945d9abdbSWeongyo Jeong 0x3b, 0xbb, 0x7b, 0xfb, 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, \ 87045d9abdbSWeongyo Jeong 0x67, 0xe7, 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, \ 87145d9abdbSWeongyo Jeong 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, 0x1f, 0x9f, \ 87245d9abdbSWeongyo Jeong 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff \ 87345d9abdbSWeongyo Jeong } 87445d9abdbSWeongyo Jeong 87545d9abdbSWeongyo Jeong /* 87645d9abdbSWeongyo Jeong * LP PHY 87745d9abdbSWeongyo Jeong */ 87845d9abdbSWeongyo Jeong 87945d9abdbSWeongyo Jeong #define BWN_TAB_TYPEMASK 0xf0000000 88045d9abdbSWeongyo Jeong #define BWN_TAB_GETTYPE(v) ((v) & BWN_TAB_TYPEMASK) 88145d9abdbSWeongyo Jeong #define BWN_TAB_GETOFFSET(v) ((v) & ~BWN_TAB_TYPEMASK) 88245d9abdbSWeongyo Jeong #define BWN_TAB_8BIT 0x10000000 88345d9abdbSWeongyo Jeong #define BWN_TAB_16BIT 0x20000000 88445d9abdbSWeongyo Jeong #define BWN_TAB_32BIT 0x30000000 88545d9abdbSWeongyo Jeong #define BWN_TAB_1(table, offset) \ 88645d9abdbSWeongyo Jeong (((table) << 10) | (offset) | BWN_TAB_8BIT) 88745d9abdbSWeongyo Jeong #define BWN_TAB_2(table, offset) \ 88845d9abdbSWeongyo Jeong (((table) << 10) | (offset) | BWN_TAB_16BIT) 88945d9abdbSWeongyo Jeong #define BWN_TAB_4(table, offset) \ 89045d9abdbSWeongyo Jeong (((table) << 10) | (offset) | BWN_TAB_32BIT) 89145d9abdbSWeongyo Jeong 89245d9abdbSWeongyo Jeong #define BWN_LP_RADIO(radio_reg) (radio_reg) 89345d9abdbSWeongyo Jeong #define BWN_LP_NORTH(radio_reg) BWN_LP_RADIO(radio_reg) 89445d9abdbSWeongyo Jeong #define BWN_LP_SOUTH(radio_reg) BWN_LP_RADIO((radio_reg) | 0x4000) 89545d9abdbSWeongyo Jeong 89645d9abdbSWeongyo Jeong #define BWN_B2062_N_COM1 BWN_LP_NORTH(0x000) 89745d9abdbSWeongyo Jeong #define BWN_B2062_N_COM2 BWN_LP_NORTH(0x002) 89845d9abdbSWeongyo Jeong #define BWN_B2062_N_COM4 BWN_LP_NORTH(0x004) 89945d9abdbSWeongyo Jeong #define BWN_B2062_N_PDNCTL0 BWN_LP_NORTH(0x010) 90045d9abdbSWeongyo Jeong #define BWN_B2062_N_PDNCTL1 BWN_LP_NORTH(0x011) 90145d9abdbSWeongyo Jeong #define BWN_B2062_N_PDNCTL3 BWN_LP_NORTH(0x013) 90245d9abdbSWeongyo Jeong #define BWN_B2062_N_PDNCTL4 BWN_LP_NORTH(0x014) 90345d9abdbSWeongyo Jeong #define BWN_B2062_N_LGENC BWN_LP_NORTH(0x017) 90445d9abdbSWeongyo Jeong #define BWN_B2062_N_LGENATUNE0 BWN_LP_NORTH(0x01E) 90545d9abdbSWeongyo Jeong #define BWN_B2062_N_LGENATUNE2 BWN_LP_NORTH(0x020) 90645d9abdbSWeongyo Jeong #define BWN_B2062_N_LGENATUNE3 BWN_LP_NORTH(0x021) 90745d9abdbSWeongyo Jeong #define BWN_B2062_N_LGENACTL3 BWN_LP_NORTH(0x022) 90845d9abdbSWeongyo Jeong #define BWN_B2062_N_LGENACTL5 BWN_LP_NORTH(0x024) 90945d9abdbSWeongyo Jeong #define BWN_B2062_N_LGENACTL6 BWN_LP_NORTH(0x025) 91045d9abdbSWeongyo Jeong #define BWN_B2062_N_LGENACTL7 BWN_LP_NORTH(0x026) 91145d9abdbSWeongyo Jeong #define BWN_B2062_N_RXA_CTL1 BWN_LP_NORTH(0x028) 91245d9abdbSWeongyo Jeong #define BWN_B2062_N_RXBB_CTL0 BWN_LP_NORTH(0x02F) 91345d9abdbSWeongyo Jeong #define BWN_B2062_N_RXBB_GAIN1 BWN_LP_NORTH(0x033) 91445d9abdbSWeongyo Jeong #define BWN_B2062_N_RXBB_GAIN2 BWN_LP_NORTH(0x034) 91545d9abdbSWeongyo Jeong #define BWN_B2062_N_RXBB_CALIB2 BWN_LP_NORTH(0x03A) 91645d9abdbSWeongyo Jeong #define BWN_B2062_N_TXCTL3 BWN_LP_NORTH(0x048) 91745d9abdbSWeongyo Jeong #define BWN_B2062_N_TXCTL4 BWN_LP_NORTH(0x049) 91845d9abdbSWeongyo Jeong #define BWN_B2062_N_TXCTL5 BWN_LP_NORTH(0x04A) 91945d9abdbSWeongyo Jeong #define BWN_B2062_N_TXCTL6 BWN_LP_NORTH(0x04B) 92045d9abdbSWeongyo Jeong #define BWN_B2062_N_TXCTL_A BWN_LP_NORTH(0x04F) 92145d9abdbSWeongyo Jeong #define BWN_B2062_N_TX_TUNE BWN_LP_NORTH(0x052) 92245d9abdbSWeongyo Jeong #define BWN_B2062_N_TX_PAD BWN_LP_NORTH(0x053) 92345d9abdbSWeongyo Jeong #define BWN_B2062_N_TX_PGA BWN_LP_NORTH(0x054) 92445d9abdbSWeongyo Jeong #define BWN_B2062_N_TSSI_CTL0 BWN_LP_NORTH(0x057) 92545d9abdbSWeongyo Jeong #define BWN_B2062_N_CALIB_TS BWN_LP_NORTH(0x05D) 92645d9abdbSWeongyo Jeong #define BWN_B2062_S_COM4 BWN_LP_SOUTH(0x004) 92745d9abdbSWeongyo Jeong #define BWN_B2062_S_PDS_CTL0 BWN_LP_SOUTH(0x010) 92845d9abdbSWeongyo Jeong #define BWN_B2062_S_BG_CTL1 BWN_LP_SOUTH(0x015) 92945d9abdbSWeongyo Jeong #define BWN_B2062_S_LGENG_CTL0 BWN_LP_SOUTH(0x017) 93045d9abdbSWeongyo Jeong #define BWN_B2062_S_LGENG_CTL1 BWN_LP_SOUTH(0x018) 93145d9abdbSWeongyo Jeong #define BWN_B2062_S_LGENG_CTL8 BWN_LP_SOUTH(0x01F) 93245d9abdbSWeongyo Jeong #define BWN_B2062_S_LGENG_CTL10 BWN_LP_SOUTH(0x021) 93345d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL0 BWN_LP_SOUTH(0x034) 93445d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL1 BWN_LP_SOUTH(0x035) 93545d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL2 BWN_LP_SOUTH(0x036) 93645d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL3 BWN_LP_SOUTH(0x037) 93745d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL5 BWN_LP_SOUTH(0x039) 93845d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL6 BWN_LP_SOUTH(0x03A) 93945d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL7 BWN_LP_SOUTH(0x03B) 94045d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL8 BWN_LP_SOUTH(0x03C) 94145d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL9 BWN_LP_SOUTH(0x03D) 94245d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL10 BWN_LP_SOUTH(0x03E) 94345d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL11 BWN_LP_SOUTH(0x03F) 94445d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL12 BWN_LP_SOUTH(0x040) 94545d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL13 BWN_LP_SOUTH(0x041) 94645d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL14 BWN_LP_SOUTH(0x042) 94745d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL18 BWN_LP_SOUTH(0x046) 94845d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL19 BWN_LP_SOUTH(0x047) 94945d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL21 BWN_LP_SOUTH(0x049) 95045d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL22 BWN_LP_SOUTH(0x04A) 95145d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL23 BWN_LP_SOUTH(0x04B) 95245d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL24 BWN_LP_SOUTH(0x04C) 95345d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL25 BWN_LP_SOUTH(0x04D) 95445d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL26 BWN_LP_SOUTH(0x04E) 95545d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL27 BWN_LP_SOUTH(0x04F) 95645d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL28 BWN_LP_SOUTH(0x050) 95745d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL29 BWN_LP_SOUTH(0x051) 95845d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL30 BWN_LP_SOUTH(0x052) 95945d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL31 BWN_LP_SOUTH(0x053) 96045d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL33 BWN_LP_SOUTH(0x055) 96145d9abdbSWeongyo Jeong #define BWN_B2062_S_RFPLLCTL34 BWN_LP_SOUTH(0x056) 96245d9abdbSWeongyo Jeong #define BWN_B2062_S_RXG_CNT8 BWN_LP_SOUTH(0x05F) 96345d9abdbSWeongyo Jeong #define BWN_B2062_S_RXG_CNT16 BWN_LP_SOUTH(0x067) 96445d9abdbSWeongyo Jeong #define BWN_B2063_COM1 BWN_LP_RADIO(0x000) 96545d9abdbSWeongyo Jeong #define BWN_B2063_COM8 BWN_LP_RADIO(0x008) 96645d9abdbSWeongyo Jeong #define BWN_B2063_COM10 BWN_LP_RADIO(0x00A) 96745d9abdbSWeongyo Jeong #define BWN_B2063_COM15 BWN_LP_RADIO(0x00F) 96845d9abdbSWeongyo Jeong #define BWN_B2063_COM16 BWN_LP_RADIO(0x010) 96945d9abdbSWeongyo Jeong #define BWN_B2063_COM17 BWN_LP_RADIO(0x011) 97045d9abdbSWeongyo Jeong #define BWN_B2063_COM18 BWN_LP_RADIO(0x012) 97145d9abdbSWeongyo Jeong #define BWN_B2063_COM19 BWN_LP_RADIO(0x013) 97245d9abdbSWeongyo Jeong #define BWN_B2063_COM20 BWN_LP_RADIO(0x014) 97345d9abdbSWeongyo Jeong #define BWN_B2063_COM21 BWN_LP_RADIO(0x015) 97445d9abdbSWeongyo Jeong #define BWN_B2063_COM22 BWN_LP_RADIO(0x016) 97545d9abdbSWeongyo Jeong #define BWN_B2063_COM23 BWN_LP_RADIO(0x017) 97645d9abdbSWeongyo Jeong #define BWN_B2063_COM24 BWN_LP_RADIO(0x018) 97745d9abdbSWeongyo Jeong #define BWN_B2063_PLL_SP1 BWN_LP_RADIO(0x01A) 97845d9abdbSWeongyo Jeong #define BWN_B2063_PLL_SP2 BWN_LP_RADIO(0x01B) 97945d9abdbSWeongyo Jeong #define BWN_B2063_LOGEN_SP1 BWN_LP_RADIO(0x01C) 98045d9abdbSWeongyo Jeong #define BWN_B2063_LOGEN_SP2 BWN_LP_RADIO(0x01D) 98145d9abdbSWeongyo Jeong #define BWN_B2063_LOGEN_SP4 BWN_LP_RADIO(0x01F) 98245d9abdbSWeongyo Jeong #define BWN_B2063_LOGEN_SP5 BWN_LP_RADIO(0x020) 98345d9abdbSWeongyo Jeong #define BWN_B2063_G_RX_SP1 BWN_LP_RADIO(0x021) 98445d9abdbSWeongyo Jeong #define BWN_B2063_G_RX_SP2 BWN_LP_RADIO(0x022) 98545d9abdbSWeongyo Jeong #define BWN_B2063_G_RX_SP3 BWN_LP_RADIO(0x023) 98645d9abdbSWeongyo Jeong #define BWN_B2063_G_RX_SP7 BWN_LP_RADIO(0x027) 98745d9abdbSWeongyo Jeong #define BWN_B2063_G_RX_SP10 BWN_LP_RADIO(0x02A) 98845d9abdbSWeongyo Jeong #define BWN_B2063_A_RX_SP1 BWN_LP_RADIO(0x02C) 98945d9abdbSWeongyo Jeong #define BWN_B2063_A_RX_SP2 BWN_LP_RADIO(0x02D) 99045d9abdbSWeongyo Jeong #define BWN_B2063_A_RX_SP7 BWN_LP_RADIO(0x032) 99145d9abdbSWeongyo Jeong #define BWN_B2063_RX_BB_SP3 BWN_LP_RADIO(0x035) 99245d9abdbSWeongyo Jeong #define BWN_B2063_RX_BB_SP4 BWN_LP_RADIO(0x036) 99345d9abdbSWeongyo Jeong #define BWN_B2063_RX_BB_SP8 BWN_LP_RADIO(0x03A) 99445d9abdbSWeongyo Jeong #define BWN_B2063_TX_RF_SP3 BWN_LP_RADIO(0x03D) 99545d9abdbSWeongyo Jeong #define BWN_B2063_TX_RF_SP4 BWN_LP_RADIO(0x03E) 99645d9abdbSWeongyo Jeong #define BWN_B2063_TX_RF_SP6 BWN_LP_RADIO(0x040) 99745d9abdbSWeongyo Jeong #define BWN_B2063_TX_RF_SP9 BWN_LP_RADIO(0x043) 99845d9abdbSWeongyo Jeong #define BWN_B2063_PA_SP1 BWN_LP_RADIO(0x04C) 99945d9abdbSWeongyo Jeong #define BWN_B2063_PA_SP2 BWN_LP_RADIO(0x04D) 100045d9abdbSWeongyo Jeong #define BWN_B2063_PA_SP3 BWN_LP_RADIO(0x04E) 100145d9abdbSWeongyo Jeong #define BWN_B2063_PA_SP4 BWN_LP_RADIO(0x04F) 100245d9abdbSWeongyo Jeong #define BWN_B2063_PA_SP7 BWN_LP_RADIO(0x052) 100345d9abdbSWeongyo Jeong #define BWN_B2063_TX_BB_SP1 BWN_LP_RADIO(0x053) 100445d9abdbSWeongyo Jeong #define BWN_B2063_TX_BB_SP3 BWN_LP_RADIO(0x055) 100545d9abdbSWeongyo Jeong #define BWN_B2063_REG_SP1 BWN_LP_RADIO(0x056) 100645d9abdbSWeongyo Jeong #define BWN_B2063_BANDGAP_CTL1 BWN_LP_RADIO(0x057) 100745d9abdbSWeongyo Jeong #define BWN_B2063_RC_CALIB_CTL1 BWN_LP_RADIO(0x05A) 100845d9abdbSWeongyo Jeong #define BWN_B2063_RC_CALIB_CTL2 BWN_LP_RADIO(0x05B) 100945d9abdbSWeongyo Jeong #define BWN_B2063_RC_CALIB_CTL3 BWN_LP_RADIO(0x05C) 101045d9abdbSWeongyo Jeong #define BWN_B2063_RC_CALIB_CTL4 BWN_LP_RADIO(0x05D) 101145d9abdbSWeongyo Jeong #define BWN_B2063_RC_CALIB_CTL5 BWN_LP_RADIO(0x05E) 101245d9abdbSWeongyo Jeong #define BWN_B2063_RC_CALIB_CTL6 BWN_LP_RADIO(0x05F) 101345d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_CALNRST BWN_LP_RADIO(0x064) 101445d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_CP2 BWN_LP_RADIO(0x068) 101545d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_CP3 BWN_LP_RADIO(0x069) 101645d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_LF1 BWN_LP_RADIO(0x06C) 101745d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_LF2 BWN_LP_RADIO(0x06D) 101845d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_LF3 BWN_LP_RADIO(0x06E) 101945d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_LF4 BWN_LP_RADIO(0x06F) 102045d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_SG1 BWN_LP_RADIO(0x070) 102145d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_SG2 BWN_LP_RADIO(0x071) 102245d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_SG3 BWN_LP_RADIO(0x072) 102345d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_SG4 BWN_LP_RADIO(0x073) 102445d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_VCO1 BWN_LP_RADIO(0x075) 102545d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_VCO2 BWN_LP_RADIO(0x076) 102645d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_VCO_CALIB3 BWN_LP_RADIO(0x079) 102745d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_VCO_CALIB5 BWN_LP_RADIO(0x07B) 102845d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_VCO_CALIB6 BWN_LP_RADIO(0x07C) 102945d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_VCO_CALIB7 BWN_LP_RADIO(0x07D) 103045d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_VCO_CALIB8 BWN_LP_RADIO(0x07E) 103145d9abdbSWeongyo Jeong #define BWN_B2063_JTAG_XTAL_12 BWN_LP_RADIO(0x081) 103245d9abdbSWeongyo Jeong #define BWN_B2063_LOGEN_RCCR1 BWN_LP_RADIO(0x0A1) 103345d9abdbSWeongyo Jeong #define BWN_B2063_LOGEN_VCOBUF1 BWN_LP_RADIO(0x0A2) 103445d9abdbSWeongyo Jeong #define BWN_B2063_LOGEN_MIXER2 BWN_LP_RADIO(0x0A4) 103545d9abdbSWeongyo Jeong #define BWN_B2063_LOGEN_BUF2 BWN_LP_RADIO(0x0A6) 103645d9abdbSWeongyo Jeong #define BWN_B2063_G_RX_MIX3 BWN_LP_RADIO(0x0C4) 103745d9abdbSWeongyo Jeong #define BWN_B2063_G_RX_MIX4 BWN_LP_RADIO(0x0C5) 103845d9abdbSWeongyo Jeong #define BWN_B2063_A_RX_1ST2 BWN_LP_RADIO(0x0CF) 103945d9abdbSWeongyo Jeong #define BWN_B2063_A_RX_1ST3 BWN_LP_RADIO(0x0D0) 104045d9abdbSWeongyo Jeong #define BWN_B2063_A_RX_2ND1 BWN_LP_RADIO(0x0D3) 104145d9abdbSWeongyo Jeong #define BWN_B2063_A_RX_2ND4 BWN_LP_RADIO(0x0D6) 104245d9abdbSWeongyo Jeong #define BWN_B2063_A_RX_2ND7 BWN_LP_RADIO(0x0D9) 104345d9abdbSWeongyo Jeong #define BWN_B2063_A_RX_PS6 BWN_LP_RADIO(0x0DF) 104445d9abdbSWeongyo Jeong #define BWN_B2063_A_RX_MIX4 BWN_LP_RADIO(0x0E3) 104545d9abdbSWeongyo Jeong #define BWN_B2063_A_RX_MIX5 BWN_LP_RADIO(0x0E4) 104645d9abdbSWeongyo Jeong #define BWN_B2063_A_RX_MIX6 BWN_LP_RADIO(0x0E5) 104745d9abdbSWeongyo Jeong #define BWN_B2063_RX_TIA_CTL1 BWN_LP_RADIO(0x0EC) 104845d9abdbSWeongyo Jeong #define BWN_B2063_RX_TIA_CTL3 BWN_LP_RADIO(0x0EE) 104945d9abdbSWeongyo Jeong #define BWN_B2063_RX_BB_CTL2 BWN_LP_RADIO(0x0F3) 105045d9abdbSWeongyo Jeong #define BWN_B2063_TX_RF_CTL2 BWN_LP_RADIO(0x100) 105145d9abdbSWeongyo Jeong #define BWN_B2063_TX_RF_CTL5 BWN_LP_RADIO(0x103) 105245d9abdbSWeongyo Jeong #define BWN_B2063_PA_CTL1 BWN_LP_RADIO(0x10B) 105345d9abdbSWeongyo Jeong #define BWN_B2063_PA_CTL11 BWN_LP_RADIO(0x115) 105445d9abdbSWeongyo Jeong #define BWN_B2063_VREG_CTL1 BWN_LP_RADIO(0x11D) 105545d9abdbSWeongyo Jeong 1056c3907297SAdrian Chadd /* N-PHY, etc TX configuration */ 1057c3907297SAdrian Chadd 1058c3907297SAdrian Chadd #define BWN_TXH_PHY1_BW 0x0007 /* Bandwidth */ 1059c3907297SAdrian Chadd #define BWN_TXH_PHY1_BW_10 0x0000 /* 10 MHz */ 1060c3907297SAdrian Chadd #define BWN_TXH_PHY1_BW_10U 0x0001 /* 10 MHz upper */ 1061c3907297SAdrian Chadd #define BWN_TXH_PHY1_BW_20 0x0002 /* 20 MHz */ 1062c3907297SAdrian Chadd #define BWN_TXH_PHY1_BW_20U 0x0003 /* 20 MHz upper */ 1063c3907297SAdrian Chadd #define BWN_TXH_PHY1_BW_40 0x0004 /* 40 MHz */ 1064c3907297SAdrian Chadd #define BWN_TXH_PHY1_BW_40DUP 0x0005 /* 40 MHz duplicate */ 1065c3907297SAdrian Chadd #define BWN_TXH_PHY1_MODE 0x0038 /* Mode */ 1066c3907297SAdrian Chadd #define BWN_TXH_PHY1_MODE_SISO 0x0000 /* SISO */ 1067c3907297SAdrian Chadd #define BWN_TXH_PHY1_MODE_CDD 0x0008 /* CDD */ 1068c3907297SAdrian Chadd #define BWN_TXH_PHY1_MODE_STBC 0x0010 /* STBC */ 1069c3907297SAdrian Chadd #define BWN_TXH_PHY1_MODE_SDM 0x0018 /* SDM */ 1070c3907297SAdrian Chadd #define BWN_TXH_PHY1_CRATE 0x0700 /* Coding rate */ 1071c3907297SAdrian Chadd #define BWN_TXH_PHY1_CRATE_1_2 0x0000 /* 1/2 */ 1072c3907297SAdrian Chadd #define BWN_TXH_PHY1_CRATE_2_3 0x0100 /* 2/3 */ 1073c3907297SAdrian Chadd #define BWN_TXH_PHY1_CRATE_3_4 0x0200 /* 3/4 */ 1074c3907297SAdrian Chadd #define BWN_TXH_PHY1_CRATE_4_5 0x0300 /* 4/5 */ 1075c3907297SAdrian Chadd #define BWN_TXH_PHY1_CRATE_5_6 0x0400 /* 5/6 */ 1076c3907297SAdrian Chadd #define BWN_TXH_PHY1_CRATE_7_8 0x0600 /* 7/8 */ 1077c3907297SAdrian Chadd #define BWN_TXH_PHY1_MODUL 0x3800 /* Modulation scheme */ 1078c3907297SAdrian Chadd #define BWN_TXH_PHY1_MODUL_BPSK 0x0000 /* BPSK */ 1079c3907297SAdrian Chadd #define BWN_TXH_PHY1_MODUL_QPSK 0x0800 /* QPSK */ 1080c3907297SAdrian Chadd #define BWN_TXH_PHY1_MODUL_QAM16 0x1000 /* QAM16 */ 1081c3907297SAdrian Chadd #define BWN_TXH_PHY1_MODUL_QAM64 0x1800 /* QAM64 */ 1082c3907297SAdrian Chadd #define BWN_TXH_PHY1_MODUL_QAM256 0x2000 /* QAM256 */ 1083c3907297SAdrian Chadd 108445d9abdbSWeongyo Jeong #endif /* !_IF_BWNREG_H */ 1085