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