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