xref: /OK3568_Linux_fs/external/rkwifibt/drivers/bcmdhd/include/sbpcmcia.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * BCM43XX Sonics SiliconBackplane PCMCIA core hardware definitions.
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Copyright (C) 2020, Broadcom.
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  *      Unless you and Broadcom execute a separate written software license
7*4882a593Smuzhiyun  * agreement governing use of this software, this software is licensed to you
8*4882a593Smuzhiyun  * under the terms of the GNU General Public License version 2 (the "GPL"),
9*4882a593Smuzhiyun  * available at http://www.broadcom.com/licenses/GPLv2.php, with the
10*4882a593Smuzhiyun  * following added to such license:
11*4882a593Smuzhiyun  *
12*4882a593Smuzhiyun  *      As a special exception, the copyright holders of this software give you
13*4882a593Smuzhiyun  * permission to link this software with independent modules, and to copy and
14*4882a593Smuzhiyun  * distribute the resulting executable under terms of your choice, provided that
15*4882a593Smuzhiyun  * you also meet, for each linked independent module, the terms and conditions of
16*4882a593Smuzhiyun  * the license of that module.  An independent module is a module which is not
17*4882a593Smuzhiyun  * derived from this software.  The special exception does not apply to any
18*4882a593Smuzhiyun  * modifications of the software.
19*4882a593Smuzhiyun  *
20*4882a593Smuzhiyun  *
21*4882a593Smuzhiyun  * <<Broadcom-WL-IPTag/Dual:>>
22*4882a593Smuzhiyun  */
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun #ifndef	_SBPCMCIA_H
25*4882a593Smuzhiyun #define	_SBPCMCIA_H
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun /* All the addresses that are offsets in attribute space are divided
28*4882a593Smuzhiyun  * by two to account for the fact that odd bytes are invalid in
29*4882a593Smuzhiyun  * attribute space and our read/write routines make the space appear
30*4882a593Smuzhiyun  * as if they didn't exist. Still we want to show the original numbers
31*4882a593Smuzhiyun  * as documented in the hnd_pcmcia core manual.
32*4882a593Smuzhiyun  */
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun /* PCMCIA Function Configuration Registers */
35*4882a593Smuzhiyun #define	PCMCIA_FCR		(0x700 / 2)
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun #define	FCR0_OFF		0
38*4882a593Smuzhiyun #define	FCR1_OFF		(0x40 / 2)
39*4882a593Smuzhiyun #define	FCR2_OFF		(0x80 / 2)
40*4882a593Smuzhiyun #define	FCR3_OFF		(0xc0 / 2)
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun #define	PCMCIA_FCR0		(0x700 / 2)
43*4882a593Smuzhiyun #define	PCMCIA_FCR1		(0x740 / 2)
44*4882a593Smuzhiyun #define	PCMCIA_FCR2		(0x780 / 2)
45*4882a593Smuzhiyun #define	PCMCIA_FCR3		(0x7c0 / 2)
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun /* Standard PCMCIA FCR registers */
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun #define	PCMCIA_COR		0
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun #define	COR_RST			0x80
52*4882a593Smuzhiyun #define	COR_LEV			0x40
53*4882a593Smuzhiyun #define	COR_IRQEN		0x04
54*4882a593Smuzhiyun #define	COR_BLREN		0x01
55*4882a593Smuzhiyun #define	COR_FUNEN		0x01
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun #define	PCICIA_FCSR		(2 / 2)
58*4882a593Smuzhiyun #define	PCICIA_PRR		(4 / 2)
59*4882a593Smuzhiyun #define	PCICIA_SCR		(6 / 2)
60*4882a593Smuzhiyun #define	PCICIA_ESR		(8 / 2)
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun #define PCM_MEMOFF		0x0000
63*4882a593Smuzhiyun #define F0_MEMOFF		0x1000
64*4882a593Smuzhiyun #define F1_MEMOFF		0x2000
65*4882a593Smuzhiyun #define F2_MEMOFF		0x3000
66*4882a593Smuzhiyun #define F3_MEMOFF		0x4000
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun /* Memory base in the function fcr's */
69*4882a593Smuzhiyun #define MEM_ADDR0		(0x728 / 2)
70*4882a593Smuzhiyun #define MEM_ADDR1		(0x72a / 2)
71*4882a593Smuzhiyun #define MEM_ADDR2		(0x72c / 2)
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun /* PCMCIA base plus Srom access in fcr0: */
74*4882a593Smuzhiyun #define PCMCIA_ADDR0		(0x072e / 2)
75*4882a593Smuzhiyun #define PCMCIA_ADDR1		(0x0730 / 2)
76*4882a593Smuzhiyun #define PCMCIA_ADDR2		(0x0732 / 2)
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun #define MEM_SEG			(0x0734 / 2)
79*4882a593Smuzhiyun #define SROM_CS			(0x0736 / 2)
80*4882a593Smuzhiyun #define SROM_DATAL		(0x0738 / 2)
81*4882a593Smuzhiyun #define SROM_DATAH		(0x073a / 2)
82*4882a593Smuzhiyun #define SROM_ADDRL		(0x073c / 2)
83*4882a593Smuzhiyun #define SROM_ADDRH		(0x073e / 2)
84*4882a593Smuzhiyun #define	SROM_INFO2		(0x0772 / 2)	/* Corerev >= 2 && <= 5 */
85*4882a593Smuzhiyun #define	SROM_INFO		(0x07be / 2)	/* Corerev >= 6 */
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun /*  Values for srom_cs: */
88*4882a593Smuzhiyun #define SROM_IDLE		0
89*4882a593Smuzhiyun #define SROM_WRITE		1
90*4882a593Smuzhiyun #define SROM_READ		2
91*4882a593Smuzhiyun #define SROM_WEN		4
92*4882a593Smuzhiyun #define SROM_WDS		7
93*4882a593Smuzhiyun #define SROM_DONE		8
94*4882a593Smuzhiyun 
95*4882a593Smuzhiyun /* Fields in srom_info: */
96*4882a593Smuzhiyun #define	SRI_SZ_MASK		0x03
97*4882a593Smuzhiyun #define	SRI_BLANK		0x04
98*4882a593Smuzhiyun #define	SRI_OTP			0x80
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun #define SROM16K_BANK_SEL_MASK		(3 << 11)
101*4882a593Smuzhiyun #define SROM16K_BANK_SHFT_MASK		11
102*4882a593Smuzhiyun #define SROM16K_ADDR_SEL_MASK	((1 << SROM16K_BANK_SHFT_MASK) - 1)
103*4882a593Smuzhiyun #define SROM_PRSNT_MASK		0x1
104*4882a593Smuzhiyun #define SROM_SUPPORT_SHIFT_MASK 30
105*4882a593Smuzhiyun #define SROM_SUPPORTED	(0x1 << SROM_SUPPORT_SHIFT_MASK)
106*4882a593Smuzhiyun #define SROM_SIZE_MASK    0x00000006
107*4882a593Smuzhiyun #define SROM_SIZE_2K	2
108*4882a593Smuzhiyun #define SROM_SIZE_512	1
109*4882a593Smuzhiyun #define SROM_SIZE_128	0
110*4882a593Smuzhiyun #define SROM_SIZE_SHFT_MASK  1
111*4882a593Smuzhiyun 
112*4882a593Smuzhiyun /* CIS stuff */
113*4882a593Smuzhiyun 
114*4882a593Smuzhiyun /* The CIS stops where the FCRs start */
115*4882a593Smuzhiyun #define	CIS_SIZE		PCMCIA_FCR
116*4882a593Smuzhiyun #define CIS_SIZE_12K    1154    /* Maximum h/w + s/w sub region size for 12k OTP */
117*4882a593Smuzhiyun 
118*4882a593Smuzhiyun /* CIS tuple length field max */
119*4882a593Smuzhiyun #define CIS_TUPLE_LEN_MAX	0xff
120*4882a593Smuzhiyun 
121*4882a593Smuzhiyun /* Standard tuples we know about */
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun #define CISTPL_NULL		0x00
124*4882a593Smuzhiyun #define	CISTPL_END		0xff		/* End of the CIS tuple chain */
125*4882a593Smuzhiyun 
126*4882a593Smuzhiyun #define	CISTPL_VERS_1		0x15		/* CIS ver, manf, dev & ver strings */
127*4882a593Smuzhiyun #define	CISTPL_MANFID		0x20		/* Manufacturer and device id */
128*4882a593Smuzhiyun #define CISTPL_FUNCID		0x21		/* Function identification */
129*4882a593Smuzhiyun #define	CISTPL_FUNCE		0x22		/* Function extensions */
130*4882a593Smuzhiyun #define	CISTPL_CFTABLE		0x1b		/* Config table entry */
131*4882a593Smuzhiyun 
132*4882a593Smuzhiyun /* Function identifier provides context for the function extentions tuple */
133*4882a593Smuzhiyun #define CISTPL_FID_SDIO		0x0c		/* Extensions defined by SDIO spec */
134*4882a593Smuzhiyun 
135*4882a593Smuzhiyun /* Function extensions for LANs (assumed for extensions other than SDIO) */
136*4882a593Smuzhiyun #define	LAN_TECH		1		/* Technology type */
137*4882a593Smuzhiyun #define	LAN_SPEED		2		/* Raw bit rate */
138*4882a593Smuzhiyun #define	LAN_MEDIA		3		/* Transmission media */
139*4882a593Smuzhiyun #define	LAN_NID			4		/* Node identification (aka MAC addr) */
140*4882a593Smuzhiyun #define	LAN_CONN		5		/* Connector standard */
141*4882a593Smuzhiyun 
142*4882a593Smuzhiyun /* CFTable */
143*4882a593Smuzhiyun #define CFTABLE_REGWIN_2K	0x08		/* 2k reg windows size */
144*4882a593Smuzhiyun #define CFTABLE_REGWIN_4K	0x10		/* 4k reg windows size */
145*4882a593Smuzhiyun #define CFTABLE_REGWIN_8K	0x20		/* 8k reg windows size */
146*4882a593Smuzhiyun 
147*4882a593Smuzhiyun /* Vendor unique tuples are 0x80-0x8f. Within Broadcom we'll
148*4882a593Smuzhiyun  * take one for HNBU, and use "extensions" (a la FUNCE) within it.
149*4882a593Smuzhiyun  */
150*4882a593Smuzhiyun 
151*4882a593Smuzhiyun #define	CISTPL_BRCM_HNBU	0x80
152*4882a593Smuzhiyun 
153*4882a593Smuzhiyun /* Subtypes of BRCM_HNBU: */
154*4882a593Smuzhiyun 
155*4882a593Smuzhiyun #define HNBU_SROMREV		0x00	/* A byte with sromrev, 1 if not present */
156*4882a593Smuzhiyun #define HNBU_CHIPID		0x01	/* Two 16bit values: PCI vendor & device id */
157*4882a593Smuzhiyun 
158*4882a593Smuzhiyun #define HNBU_BOARDREV		0x02	/* One byte board revision */
159*4882a593Smuzhiyun 
160*4882a593Smuzhiyun #define HNBU_PAPARMS		0x03	/* PA parameters: 8 (sromrev == 1)
161*4882a593Smuzhiyun 					 * or 9 (sromrev > 1) bytes
162*4882a593Smuzhiyun 					 */
163*4882a593Smuzhiyun #define HNBU_OEM		0x04	/* Eight bytes OEM data (sromrev == 1) */
164*4882a593Smuzhiyun #define HNBU_CC			0x05	/* Default country code (sromrev == 1) */
165*4882a593Smuzhiyun #define	HNBU_AA			0x06	/* Antennas available */
166*4882a593Smuzhiyun #define	HNBU_AG			0x07	/* Antenna gain */
167*4882a593Smuzhiyun #define HNBU_BOARDFLAGS		0x08	/* board flags (2 or 4 bytes) */
168*4882a593Smuzhiyun #define HNBU_UNUSED		0x09	/* UNUSED (was LEDs) */
169*4882a593Smuzhiyun #define HNBU_CCODE		0x0a	/* Country code (2 bytes ascii + 1 byte cctl)
170*4882a593Smuzhiyun 					 * in rev 2
171*4882a593Smuzhiyun 					 */
172*4882a593Smuzhiyun #define HNBU_CCKPO		0x0b	/* 2 byte cck power offsets in rev 3 */
173*4882a593Smuzhiyun #define HNBU_OFDMPO		0x0c	/* 4 byte 11g ofdm power offsets in rev 3 */
174*4882a593Smuzhiyun #define HNBU_GPIOTIMER		0x0d	/* 2 bytes with on/off values in rev 3 */
175*4882a593Smuzhiyun #define HNBU_PAPARMS5G		0x0e	/* 5G PA params */
176*4882a593Smuzhiyun #define HNBU_ANT5G		0x0f	/* 4328 5G antennas available/gain */
177*4882a593Smuzhiyun #define HNBU_RDLID		0x10	/* 2 byte USB remote downloader (RDL) product Id */
178*4882a593Smuzhiyun #define HNBU_RSSISMBXA2G	0x11	/* 4328 2G RSSI mid pt sel & board switch arch,
179*4882a593Smuzhiyun 					 * 2 bytes, rev 3.
180*4882a593Smuzhiyun 					 */
181*4882a593Smuzhiyun #define HNBU_RSSISMBXA5G	0x12	/* 4328 5G RSSI mid pt sel & board switch arch,
182*4882a593Smuzhiyun 					 * 2 bytes, rev 3.
183*4882a593Smuzhiyun 					 */
184*4882a593Smuzhiyun #define HNBU_XTALFREQ		0x13	/* 4 byte Crystal frequency in kilohertz */
185*4882a593Smuzhiyun #define HNBU_TRI2G		0x14	/* 4328 2G TR isolation, 1 byte */
186*4882a593Smuzhiyun #define HNBU_TRI5G		0x15	/* 4328 5G TR isolation, 3 bytes */
187*4882a593Smuzhiyun #define HNBU_RXPO2G		0x16	/* 4328 2G RX power offset, 1 byte */
188*4882a593Smuzhiyun #define HNBU_RXPO5G		0x17	/* 4328 5G RX power offset, 1 byte */
189*4882a593Smuzhiyun #define HNBU_BOARDNUM		0x18	/* board serial number, independent of mac addr */
190*4882a593Smuzhiyun #define HNBU_MACADDR		0x19	/* mac addr override for the standard CIS LAN_NID */
191*4882a593Smuzhiyun #define HNBU_RDLSN		0x1a	/* 2 bytes; serial # advertised in USB descriptor */
192*4882a593Smuzhiyun 
193*4882a593Smuzhiyun #define HNBU_BOARDTYPE		0x1b	/* 2 bytes; boardtype */
194*4882a593Smuzhiyun 
195*4882a593Smuzhiyun #define HNBU_UNUSED2		0x1c	/* was LEDs duty cycle */
196*4882a593Smuzhiyun 
197*4882a593Smuzhiyun #define HNBU_HNBUCIS		0x1d	/* what follows is proprietary HNBU CIS format */
198*4882a593Smuzhiyun 
199*4882a593Smuzhiyun #define HNBU_PAPARMS_SSLPNPHY	0x1e	/* SSLPNPHY PA params */
200*4882a593Smuzhiyun #define HNBU_RSSISMBXA2G_SSLPNPHY 0x1f /* SSLPNPHY RSSI mid pt sel & board switch arch */
201*4882a593Smuzhiyun #define HNBU_RDLRNDIS		0x20	/* 1 byte; 1 = RDL advertises RNDIS config */
202*4882a593Smuzhiyun #define HNBU_CHAINSWITCH	0x21	/* 2 byte; txchain, rxchain */
203*4882a593Smuzhiyun #define HNBU_REGREV		0x22	/* 1 byte; */
204*4882a593Smuzhiyun #define HNBU_FEM		0x23	/* 2 or 4 byte: 11n frontend specification */
205*4882a593Smuzhiyun #define HNBU_PAPARMS_C0		0x24	/* 8 or 30 bytes: 11n pa paramater for chain 0 */
206*4882a593Smuzhiyun #define HNBU_PAPARMS_C1		0x25	/* 8 or 30 bytes: 11n pa paramater for chain 1 */
207*4882a593Smuzhiyun #define HNBU_PAPARMS_C2		0x26	/* 8 or 30 bytes: 11n pa paramater for chain 2 */
208*4882a593Smuzhiyun #define HNBU_PAPARMS_C3		0x27	/* 8 or 30 bytes: 11n pa paramater for chain 3 */
209*4882a593Smuzhiyun #define HNBU_PO_CCKOFDM		0x28	/* 6 or 18 bytes: cck2g/ofdm2g/ofdm5g power offset */
210*4882a593Smuzhiyun #define HNBU_PO_MCS2G		0x29	/* 8 bytes: mcs2g power offset */
211*4882a593Smuzhiyun #define HNBU_PO_MCS5GM		0x2a	/* 8 bytes: mcs5g mid band power offset */
212*4882a593Smuzhiyun #define HNBU_PO_MCS5GLH		0x2b	/* 16 bytes: mcs5g low-high band power offset */
213*4882a593Smuzhiyun #define HNBU_PO_CDD		0x2c	/* 2 bytes: cdd2g/5g power offset */
214*4882a593Smuzhiyun #define HNBU_PO_STBC		0x2d	/* 2 bytes: stbc2g/5g power offset */
215*4882a593Smuzhiyun #define HNBU_PO_40M		0x2e	/* 2 bytes: 40Mhz channel 2g/5g power offset */
216*4882a593Smuzhiyun #define HNBU_PO_40MDUP		0x2f	/* 2 bytes: 40Mhz channel dup 2g/5g power offset */
217*4882a593Smuzhiyun 
218*4882a593Smuzhiyun #define HNBU_RDLRWU		0x30	/* 1 byte; 1 = RDL advertises Remote Wake-up */
219*4882a593Smuzhiyun #define HNBU_WPS		0x31	/* 1 byte; GPIO pin for WPS button */
220*4882a593Smuzhiyun #define HNBU_USBFS		0x32	/* 1 byte; 1 = USB advertises FS mode only */
221*4882a593Smuzhiyun #define HNBU_BRMIN		0x33	/* 4 byte bootloader min resource mask */
222*4882a593Smuzhiyun #define HNBU_BRMAX		0x34	/* 4 byte bootloader max resource mask */
223*4882a593Smuzhiyun #define HNBU_PATCH		0x35	/* bootloader patch addr(2b) & data(4b) pair */
224*4882a593Smuzhiyun #define HNBU_CCKFILTTYPE	0x36	/* CCK digital filter selection options */
225*4882a593Smuzhiyun #define HNBU_OFDMPO5G		0x37	/* 4 * 3 = 12 byte 11a ofdm power offsets in rev 3 */
226*4882a593Smuzhiyun #define HNBU_ELNA2G             0x38
227*4882a593Smuzhiyun #define HNBU_ELNA5G             0x39
228*4882a593Smuzhiyun #define HNBU_TEMPTHRESH 0x3A /* 2 bytes
229*4882a593Smuzhiyun 					 * byte1 tempthresh
230*4882a593Smuzhiyun 					 * byte2 period(msb 4 bits) | hysterisis(lsb 4 bits)
231*4882a593Smuzhiyun 					 */
232*4882a593Smuzhiyun #define HNBU_UUID 0x3B /* 16 Bytes Hex */
233*4882a593Smuzhiyun 
234*4882a593Smuzhiyun #define HNBU_USBEPNUM		0x40	/* USB endpoint numbers */
235*4882a593Smuzhiyun 
236*4882a593Smuzhiyun /* POWER PER RATE for SROM V9 */
237*4882a593Smuzhiyun #define HNBU_CCKBW202GPO       0x41    /* 2 bytes each
238*4882a593Smuzhiyun 					 * CCK Power offsets for 20 MHz rates (11, 5.5, 2, 1Mbps)
239*4882a593Smuzhiyun 					 * cckbw202gpo cckbw20ul2gpo
240*4882a593Smuzhiyun 					 */
241*4882a593Smuzhiyun 
242*4882a593Smuzhiyun #define HNBU_LEGOFDMBW202GPO    0x42    /* 4 bytes each
243*4882a593Smuzhiyun 					 * OFDM power offsets for 20 MHz Legacy rates
244*4882a593Smuzhiyun 					 * (54, 48, 36, 24, 18, 12, 9, 6 Mbps)
245*4882a593Smuzhiyun 					 * legofdmbw202gpo  legofdmbw20ul2gpo
246*4882a593Smuzhiyun 					 */
247*4882a593Smuzhiyun 
248*4882a593Smuzhiyun #define HNBU_LEGOFDMBW205GPO   0x43    /* 4 bytes each
249*4882a593Smuzhiyun 					* 5G band: OFDM power offsets for 20 MHz Legacy rates
250*4882a593Smuzhiyun 					* (54, 48, 36, 24, 18, 12, 9, 6 Mbps)
251*4882a593Smuzhiyun 					* low subband : legofdmbw205glpo  legofdmbw20ul2glpo
252*4882a593Smuzhiyun 					* mid subband :legofdmbw205gmpo  legofdmbw20ul2gmpo
253*4882a593Smuzhiyun 					* high subband :legofdmbw205ghpo  legofdmbw20ul2ghpo
254*4882a593Smuzhiyun 					*/
255*4882a593Smuzhiyun 
256*4882a593Smuzhiyun #define HNBU_MCS2GPO    0x44    /* 4 bytes each
257*4882a593Smuzhiyun 				     * mcs 0-7  power-offset. LSB nibble: m0, MSB nibble: m7
258*4882a593Smuzhiyun 				     * mcsbw202gpo  mcsbw20ul2gpo mcsbw402gpo
259*4882a593Smuzhiyun 				     */
260*4882a593Smuzhiyun #define HNBU_MCS5GLPO    0x45    /* 4 bytes each
261*4882a593Smuzhiyun 				     * 5G low subband mcs 0-7 power-offset.
262*4882a593Smuzhiyun 				     * LSB nibble: m0, MSB nibble: m7
263*4882a593Smuzhiyun 				     * mcsbw205glpo  mcsbw20ul5glpo mcsbw405glpo
264*4882a593Smuzhiyun 				     */
265*4882a593Smuzhiyun #define HNBU_MCS5GMPO    0x46    /* 4 bytes each
266*4882a593Smuzhiyun 				     * 5G mid subband mcs 0-7 power-offset.
267*4882a593Smuzhiyun 				     * LSB nibble: m0, MSB nibble: m7
268*4882a593Smuzhiyun 				     * mcsbw205gmpo  mcsbw20ul5gmpo mcsbw405gmpo
269*4882a593Smuzhiyun 				     */
270*4882a593Smuzhiyun #define HNBU_MCS5GHPO    0x47    /* 4 bytes each
271*4882a593Smuzhiyun 				     * 5G high subband mcs 0-7 power-offset.
272*4882a593Smuzhiyun 				     * LSB nibble: m0, MSB nibble: m7
273*4882a593Smuzhiyun 				     * mcsbw205ghpo  mcsbw20ul5ghpo mcsbw405ghpo
274*4882a593Smuzhiyun 				     */
275*4882a593Smuzhiyun #define HNBU_MCS32PO	0x48	/*  2 bytes total
276*4882a593Smuzhiyun 				 * mcs-32 power offset for each band/subband.
277*4882a593Smuzhiyun 				 * LSB nibble: 2G band, MSB nibble:
278*4882a593Smuzhiyun 				 * mcs322ghpo, mcs325gmpo, mcs325glpo, mcs322gpo
279*4882a593Smuzhiyun 				 */
280*4882a593Smuzhiyun #define HNBU_LEG40DUPPO	0x49 /*  2 bytes total
281*4882a593Smuzhiyun 				* Additional power offset for Legacy Dup40 transmissions.
282*4882a593Smuzhiyun 				 * Applied in addition to legofdmbw20ulXpo, X=2g, 5gl, 5gm, or 5gh.
283*4882a593Smuzhiyun 				 * LSB nibble: 2G band, MSB nibble: 5G band high subband.
284*4882a593Smuzhiyun 				 * leg40dup5ghpo, leg40dup5gmpo, leg40dup5glpo, leg40dup2gpo
285*4882a593Smuzhiyun 				 */
286*4882a593Smuzhiyun 
287*4882a593Smuzhiyun #define HNBU_PMUREGS	0x4a /* Variable length (5 bytes for each register)
288*4882a593Smuzhiyun 				* The setting of the ChipCtrl, PLL, RegulatorCtrl, Up/Down Timer and
289*4882a593Smuzhiyun 				* ResourceDependency Table registers.
290*4882a593Smuzhiyun 				*/
291*4882a593Smuzhiyun 
292*4882a593Smuzhiyun #define HNBU_PATCH2		0x4b	/* bootloader TCAM patch addr(4b) & data(4b) pair .
293*4882a593Smuzhiyun 				* This is required for socram rev 15 onwards.
294*4882a593Smuzhiyun 				*/
295*4882a593Smuzhiyun 
296*4882a593Smuzhiyun #define HNBU_USBRDY		0x4c	/* Variable length (upto 5 bytes)
297*4882a593Smuzhiyun 				* This is to indicate the USB/HSIC host controller
298*4882a593Smuzhiyun 				* that the device is ready for enumeration.
299*4882a593Smuzhiyun 				*/
300*4882a593Smuzhiyun 
301*4882a593Smuzhiyun #define HNBU_USBREGS	0x4d	/* Variable length
302*4882a593Smuzhiyun 				* The setting of the devcontrol, HSICPhyCtrl1 and HSICPhyCtrl2
303*4882a593Smuzhiyun 				* registers during the USB initialization.
304*4882a593Smuzhiyun 				*/
305*4882a593Smuzhiyun 
306*4882a593Smuzhiyun #define HNBU_BLDR_TIMEOUT	0x4e	/* 2 bytes used for HSIC bootloader to reset chip
307*4882a593Smuzhiyun 				* on connect timeout.
308*4882a593Smuzhiyun 				* The Delay after USBConnect for timeout till dongle receives
309*4882a593Smuzhiyun 				* get_descriptor request.
310*4882a593Smuzhiyun 				*/
311*4882a593Smuzhiyun #define HNBU_USBFLAGS		0x4f
312*4882a593Smuzhiyun #define HNBU_PATCH_AUTOINC	0x50
313*4882a593Smuzhiyun #define HNBU_MDIO_REGLIST	0x51
314*4882a593Smuzhiyun #define HNBU_MDIOEX_REGLIST	0x52
315*4882a593Smuzhiyun /* Unified OTP: tupple to embed USB manfid inside SDIO CIS */
316*4882a593Smuzhiyun #define HNBU_UMANFID		0x53
317*4882a593Smuzhiyun #define HNBU_PUBKEY		0x54	/* 128 byte; publick key to validate downloaded FW */
318*4882a593Smuzhiyun #define HNBU_WOWLGPIO       0x55   /* 1 byte bit 7 initial polarity, bit 6..0 gpio pin */
319*4882a593Smuzhiyun #define HNBU_MUXENAB		0x56	/* 1 byte to enable mux options */
320*4882a593Smuzhiyun #define HNBU_GCI_CCR		0x57	/* GCI Chip control register */
321*4882a593Smuzhiyun 
322*4882a593Smuzhiyun #define HNBU_FEM_CFG		0x58	/* FEM config */
323*4882a593Smuzhiyun #define HNBU_ACPA_C0		0x59	/* ACPHY PA parameters: chain 0 */
324*4882a593Smuzhiyun #define HNBU_ACPA_C1		0x5a	/* ACPHY PA parameters: chain 1 */
325*4882a593Smuzhiyun #define HNBU_ACPA_C2		0x5b	/* ACPHY PA parameters: chain 2 */
326*4882a593Smuzhiyun #define HNBU_MEAS_PWR		0x5c
327*4882a593Smuzhiyun #define HNBU_PDOFF		0x5d
328*4882a593Smuzhiyun #define HNBU_ACPPR_2GPO		0x5e	/* ACPHY Power-per-rate 2gpo */
329*4882a593Smuzhiyun #define HNBU_ACPPR_5GPO		0x5f	/* ACPHY Power-per-rate 5gpo */
330*4882a593Smuzhiyun #define HNBU_ACPPR_SBPO		0x60	/* ACPHY Power-per-rate sbpo */
331*4882a593Smuzhiyun #define HNBU_NOISELVL		0x61
332*4882a593Smuzhiyun #define HNBU_RXGAIN_ERR		0x62
333*4882a593Smuzhiyun #define HNBU_AGBGA		0x63
334*4882a593Smuzhiyun #define HNBU_USBDESC_COMPOSITE	0x64    /* USB WLAN/BT composite descriptor */
335*4882a593Smuzhiyun #define HNBU_PATCH_AUTOINC8	0x65	/* Auto increment patch entry for 8 byte patching */
336*4882a593Smuzhiyun #define HNBU_PATCH8		0x66	/* Patch entry for 8 byte patching */
337*4882a593Smuzhiyun #define HNBU_ACRXGAINS_C0	0x67	/* ACPHY rxgains: chain 0 */
338*4882a593Smuzhiyun #define HNBU_ACRXGAINS_C1	0x68	/* ACPHY rxgains: chain 1 */
339*4882a593Smuzhiyun #define HNBU_ACRXGAINS_C2	0x69	/* ACPHY rxgains: chain 2 */
340*4882a593Smuzhiyun #define HNBU_TXDUTY		0x6a	/* Tx duty cycle for ACPHY 5g 40/80 Mhz */
341*4882a593Smuzhiyun #define HNBU_USBUTMI_CTL        0x6b    /* 2 byte USB UTMI/LDO Control */
342*4882a593Smuzhiyun #define HNBU_PDOFF_2G		0x6c
343*4882a593Smuzhiyun #define HNBU_USBSSPHY_UTMI_CTL0 0x6d    /* 4 byte USB SSPHY UTMI Control */
344*4882a593Smuzhiyun #define HNBU_USBSSPHY_UTMI_CTL1 0x6e    /* 4 byte USB SSPHY UTMI Control */
345*4882a593Smuzhiyun #define HNBU_USBSSPHY_UTMI_CTL2 0x6f    /* 4 byte USB SSPHY UTMI Control */
346*4882a593Smuzhiyun #define HNBU_USBSSPHY_SLEEP0    0x70    /* 2 byte USB SSPHY sleep */
347*4882a593Smuzhiyun #define HNBU_USBSSPHY_SLEEP1    0x71    /* 2 byte USB SSPHY sleep */
348*4882a593Smuzhiyun #define HNBU_USBSSPHY_SLEEP2    0x72    /* 2 byte USB SSPHY sleep */
349*4882a593Smuzhiyun #define HNBU_USBSSPHY_SLEEP3    0x73    /* 2 byte USB SSPHY sleep */
350*4882a593Smuzhiyun #define HNBU_USBSSPHY_MDIO      0x74    /* USB SSPHY INIT regs setting */
351*4882a593Smuzhiyun #define HNBU_USB30PHY_NOSS      0x75    /* USB30 NO Super Speed */
352*4882a593Smuzhiyun #define HNBU_USB30PHY_U1U2      0x76    /* USB30 PHY U1U2 Enable */
353*4882a593Smuzhiyun #define HNBU_USB30PHY_REGS      0x77    /* USB30 PHY REGs update */
354*4882a593Smuzhiyun #define HNBU_GPIO_PULL_DOWN     0x78    /* 4 byte GPIO pull down mask */
355*4882a593Smuzhiyun 
356*4882a593Smuzhiyun #define HNBU_SROM3SWRGN		0x80	/* 78 bytes; srom rev 3 s/w region without crc8
357*4882a593Smuzhiyun 					 * plus extra info appended.
358*4882a593Smuzhiyun 					 */
359*4882a593Smuzhiyun #define HNBU_RESERVED		0x81
360*4882a593Smuzhiyun #define HNBU_CUSTOM1		0x82	/* 4 byte; For non-BRCM post-mfg additions */
361*4882a593Smuzhiyun #define HNBU_CUSTOM2		0x83	/* Reserved; For non-BRCM post-mfg additions */
362*4882a593Smuzhiyun #define HNBU_ACPAPARAM		0x84	/* ACPHY PAPARAM */
363*4882a593Smuzhiyun #define HNBU_ACPA_CCK_C0	0x86	/* ACPHY PA trimming parameters: CCK */
364*4882a593Smuzhiyun #define HNBU_ACPA_40		0x87	/* ACPHY PA trimming parameters: 40 */
365*4882a593Smuzhiyun #define HNBU_ACPA_80		0x88	/* ACPHY PA trimming parameters: 80 */
366*4882a593Smuzhiyun #define HNBU_ACPA_4080		0x89	/* ACPHY PA trimming parameters: 40/80 */
367*4882a593Smuzhiyun #define HNBU_SUBBAND5GVER	0x8a	/* subband5gver */
368*4882a593Smuzhiyun #define HNBU_PAPARAMBWVER	0x8b	/* paparambwver */
369*4882a593Smuzhiyun 
370*4882a593Smuzhiyun #define HNBU_MCS5Gx1PO		0x8c
371*4882a593Smuzhiyun #define HNBU_ACPPR_SB8080_PO		0x8d
372*4882a593Smuzhiyun #define HNBU_TXBFRPCALS			0x8f	/* phy txbf rpcalvars */
373*4882a593Smuzhiyun #define HNBU_MACADDR2				0x90	/* (optional) 2nd mac-addr for RSDB chips */
374*4882a593Smuzhiyun 
375*4882a593Smuzhiyun #define HNBU_ACPA_4X4C0	0x91
376*4882a593Smuzhiyun #define HNBU_ACPA_4X4C1	0x92
377*4882a593Smuzhiyun #define HNBU_ACPA_4X4C2	0x93
378*4882a593Smuzhiyun #define HNBU_ACPA_4X4C3	0x94
379*4882a593Smuzhiyun #define HNBU_ACPA_BW20_4X4C0	0x95
380*4882a593Smuzhiyun #define HNBU_ACPA_BW40_4X4C0	0x96
381*4882a593Smuzhiyun #define HNBU_ACPA_BW80_4X4C0	0x97
382*4882a593Smuzhiyun #define HNBU_ACPA_BW20_4X4C1	0x98
383*4882a593Smuzhiyun #define HNBU_ACPA_BW40_4X4C1	0x99
384*4882a593Smuzhiyun #define HNBU_ACPA_BW80_4X4C1	0x9a
385*4882a593Smuzhiyun #define HNBU_ACPA_BW20_4X4C2	0x9b
386*4882a593Smuzhiyun #define HNBU_ACPA_BW40_4X4C2	0x9c
387*4882a593Smuzhiyun #define HNBU_ACPA_BW80_4X4C2	0x9d
388*4882a593Smuzhiyun #define HNBU_ACPA_BW20_4X4C3	0x9e
389*4882a593Smuzhiyun #define HNBU_ACPA_BW40_4X4C3	0x9f
390*4882a593Smuzhiyun #define HNBU_ACPA_BW80_4X4C3	0xa0
391*4882a593Smuzhiyun #define HNBU_ACPA_CCK_C1	0xa1	/* ACPHY PA trimming parameters: CCK */
392*4882a593Smuzhiyun 
393*4882a593Smuzhiyun #define HNBU_GAIN_CAL_TEMP          0xa2 /* RSSI Cal temperature parameter              */
394*4882a593Smuzhiyun #define HNBU_RSSI_DELTA_2G_B0       0xa3 /* RSSI Cal parameter for 2G channel group 0   */
395*4882a593Smuzhiyun #define HNBU_RSSI_DELTA_2G_B1       0xa4 /* RSSI Cal parameter for 2G channel group 1   */
396*4882a593Smuzhiyun #define HNBU_RSSI_DELTA_2G_B2       0xa5 /* RSSI Cal parameter for 2G channel group 2   */
397*4882a593Smuzhiyun #define HNBU_RSSI_DELTA_2G_B3       0xa6 /* RSSI Cal parameter for 2G channel group 3   */
398*4882a593Smuzhiyun #define HNBU_RSSI_DELTA_2G_B4       0xa7 /* RSSI Cal parameter for 2G channel group 4   */
399*4882a593Smuzhiyun #define HNBU_RSSI_CAL_FREQ_GRP_2G   0xa8 /* RSSI Cal parameter for channel group def.   */
400*4882a593Smuzhiyun #define HNBU_RSSI_DELTA_5GL         0xa9 /* RSSI Cal parameter for 5G low channel       */
401*4882a593Smuzhiyun #define HNBU_RSSI_DELTA_5GML        0xaa /* RSSI Cal parameter for 5G mid lower channel */
402*4882a593Smuzhiyun #define HNBU_RSSI_DELTA_5GMU        0xab /* RSSI Cal parameter for 5G mid upper channel */
403*4882a593Smuzhiyun #define HNBU_RSSI_DELTA_5GH         0xac /* RSSI Cal parameter for 5G high channel      */
404*4882a593Smuzhiyun 
405*4882a593Smuzhiyun #define HNBU_ACPA_6G_C0         0xad /* paparams for 6G Core0 */
406*4882a593Smuzhiyun #define HNBU_ACPA_6G_C1         0xae /* paparams for 6G Core1 */
407*4882a593Smuzhiyun #define HNBU_ACPA_6G_C2         0xaf /* paparams for 6G Core2 */
408*4882a593Smuzhiyun 
409*4882a593Smuzhiyun /* sbtmstatelow */
410*4882a593Smuzhiyun #define SBTML_INT_ACK		0x40000		/* ack the sb interrupt */
411*4882a593Smuzhiyun #define SBTML_INT_EN		0x20000		/* enable sb interrupt */
412*4882a593Smuzhiyun 
413*4882a593Smuzhiyun /* sbtmstatehigh */
414*4882a593Smuzhiyun #define SBTMH_INT_STATUS	0x40000		/* sb interrupt status */
415*4882a593Smuzhiyun #endif	/* _SBPCMCIA_H */
416