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