Skip to content

Instantly share code, notes, and snippets.

@landonf
Last active January 5, 2016 19:27
Show Gist options
  • Save landonf/541a30ffa79d463c7906 to your computer and use it in GitHub Desktop.
Save landonf/541a30ffa79d463c7906 to your computer and use it in GitHub Desktop.
BHND PCI SPROM map, extracted via libclang from the header definitions
private uint devid {
revs >= 256 { u16 0x0060 }
}
uint boardrev {
revs 2-15 { u8 0x005D }
revs 16-255 { u16 0x0042 }
revs >= 256 { u16 0x0082 }
}
uint boardflags {
revs 2-3 { u16 0x0072 }
revs 4-7 {
u16 0x0072 |
u16 0x0038 (<<16)
}
revs 8-15 {
u16 0x0072 |
u16 0x007A (<<16)
}
revs 16-31 { u32 0x0044 }
revs 32-255 { u32 0x004A }
revs >= 256 { u32 0x0084 }
}
uint boardflags2 {
revs 16-31 { u32 0x0048 }
revs 32-255 { u32 0x004E }
revs >= 256 { u32 0x0088 }
}
uint boardtype {
revs >= 4 { u16 0x0004 }
}
uint subvid {
revs >= 4 { u16 0x0006 }
}
uint boardnum {
revs 2-7 { u16 0x004C }
revs 8-15 { u16 0x004E }
revs 16-31 { u16 0x0050 }
revs 32-255 { u16 0x0056 }
revs 256-2047 { u16 0x0090 }
revs >= 2048 { u16 0x0094 }
}
uint cc {
revs 2-3 { u8 0x005C (&0xF00, >>8) }
}
uint regrev {
revs 8-15 { u8 0x0078 (&0xFF00, >>8) }
revs 16-31 { u8 0x0055 }
revs 32-255 { u8 0x0047 }
revs 256-2047 { u8 0x0095 }
revs >= 2048 { u8 0x0099 }
}
uint ledbh0 {
all1 ignore
revs 2-15 { u8 0x0065 }
revs 16-31 { u8 0x0057 }
revs 32-255 { u8 0x0077 }
revs 256-2047 { u8 0x0097 }
revs >= 2048 { u8 0x009B }
}
uint ledbh1 {
all1 ignore
revs 2-15 { u8 0x0064 (&0xFF00, >>8) }
revs 16-31 { u8 0x0056 (&0xFF00, >>8) }
revs 32-255 { u8 0x0076 (&0xFF00, >>8) }
revs 256-2047 { u8 0x0096 (&0xFF00, >>8) }
revs >= 2048 { u8 0x009A (&0xFF00, >>8) }
}
uint ledbh2 {
all1 ignore
revs 2-15 { u8 0x0067 }
revs 16-31 { u8 0x0059 }
revs 32-255 { u8 0x0079 }
revs 256-2047 { u8 0x0099 }
revs >= 2048 { u8 0x009D }
}
uint ledbh3 {
all1 ignore
revs 2-15 { u8 0x0066 (&0xFF00, >>8) }
revs 16-31 { u8 0x0058 (&0xFF00, >>8) }
revs 32-255 { u8 0x0078 (&0xFF00, >>8) }
revs 256-2047 { u8 0x0098 (&0xFF00, >>8) }
revs >= 2048 { u8 0x009C (&0xFF00, >>8) }
}
uint pa0b0 {
revs 2-15 { u16 0x005E }
revs 256-2047 { u16 0x0000 }
}
uint pa0b1 {
revs 2-15 { u16 0x0060 }
revs 256-2047 { u16 0x0000 }
}
uint pa0b2 {
revs 2-15 { u16 0x0062 }
revs 256-2047 { u16 0x0000 }
}
uint pa0itssit {
revs 2-15 { u8 0x0071 }
revs 256-2047 { u8 0x0000 (&0xFF00, >>8) }
}
uint pa0maxpwr {
revs 2-15 { u8 0x0069 }
revs 256-2047 { u8 0x0001 }
}
uint opo {
revs 4-15 { u8 0x0079 }
revs 256-2047 { u8 0x0143 }
}
uint aa2g {
revs 2-15 { u8 0x005C (&0x3000, >>12) }
revs 16-255 { u8 0x005D }
revs 256-2047 { u8 0x009D }
revs >= 2048 { u8 0x00A1 }
}
uint aa5g {
revs 2-15 { u8 0x005C (&0xC000, >>14) }
revs 16-255 { u8 0x005C (&0xFF00, >>8) }
revs 256-2047 { u8 0x009C (&0xFF00, >>8) }
revs >= 2048 { u8 0x00A0 (&0xFF00, >>8) }
}
uint ag0 {
revs 2-15 { u8 0x0075 }
revs 16-255 { u8 0x005F }
revs 256-2047 { u8 0x009F }
}
uint ag1 {
revs 2-15 { u8 0x0074 (&0xFF00, >>8) }
revs 16-255 { u8 0x005E (&0xFF00, >>8) }
revs 256-2047 { u8 0x009E (&0xFF00, >>8) }
}
uint ag2 {
revs 16-255 { u8 0x0061 }
revs 256-2047 { u8 0x00A1 }
}
uint ag3 {
revs 16-255 { u8 0x0060 (&0xFF00, >>8) }
revs 256-2047 { u8 0x00A0 (&0xFF00, >>8) }
}
uint pa1b0 {
revs 2-15 { u16 0x006A }
revs 256-2047 { u16 0x0000 }
}
uint pa1b1 {
revs 2-15 { u16 0x006C }
revs 256-2047 { u16 0x0000 }
}
uint pa1b2 {
revs 2-15 { u16 0x006E }
revs 256-2047 { u16 0x0000 }
}
uint pa1lob0 {
revs 4-15 { u16 0x003C }
revs 256-2047 { u16 0x0000 }
}
uint pa1lob1 {
revs 4-15 { u16 0x003E }
revs 256-2047 { u16 0x0000 }
}
uint pa1lob2 {
revs 4-15 { u16 0x0040 }
revs 256-2047 { u16 0x0000 }
}
uint pa1hib0 {
revs 4-15 { u16 0x0042 }
revs 256-2047 { u16 0x0000 }
}
uint pa1hib1 {
revs 4-15 { u16 0x0044 }
revs 256-2047 { u16 0x0000 }
}
uint pa1hib2 {
revs 4-15 { u16 0x0046 }
revs 256-2047 { u16 0x0000 }
}
uint pa1itssit {
revs 2-15 { u8 0x0070 (&0xFF00, >>8) }
revs 256-2047 { u8 0x0000 (&0xFF00, >>8) }
}
uint pa1maxpwr {
revs 2-15 { u8 0x0068 (&0xFF00, >>8) }
revs 256-2047 { u8 0x0001 }
}
uint pa1lomaxpwr {
revs 4-15 { u8 0x003A (&0xFF00, >>8) }
revs 256-2047 { u8 0x0000 (&0xFF00, >>8) }
}
uint pa1himaxpwr {
revs 4-15 { u8 0x003B }
revs 256-2047 { u8 0x0001 }
}
uint bxa2g {
revs 8-15 { u8 0x0050 (&0x1800, >>11) }
revs 256-2047 { u8 0x00A4 (&0x1800, >>11) }
}
uint rssisav2g {
revs 8-15 { u8 0x0050 (&0x700, >>8) }
revs 256-2047 { u8 0x00A4 (&0x700, >>8) }
}
uint rssismc2g {
revs 8-15 { u8 0x0051 (&0xF0, >>4) }
revs 256-2047 { u8 0x00A5 (&0xF0, >>4) }
}
uint rssismf2g {
revs 8-15 { u8 0x0051 (&0xF) }
revs 256-2047 { u8 0x00A5 (&0xF) }
}
uint bxa5g {
revs 8-15 { u8 0x0052 (&0x1800, >>11) }
revs 256-2047 { u8 0x00A6 (&0x1800, >>11) }
}
uint rssisav5g {
revs 8-15 { u8 0x0052 (&0x700, >>8) }
revs 256-2047 { u8 0x00A6 (&0x700, >>8) }
}
uint rssismc5g {
revs 8-15 { u8 0x0053 (&0xF0, >>4) }
revs 256-2047 { u8 0x00A7 (&0xF0, >>4) }
}
uint rssismf5g {
revs 8-15 { u8 0x0053 (&0xF) }
revs 256-2047 { u8 0x00A7 (&0xF) }
}
uint tri2g {
revs 8-15 { u8 0x0055 }
revs 256-2047 { u8 0x00A9 }
}
uint tri5g {
revs 8-15 { u8 0x0054 (&0xFF00, >>8) }
revs 256-2047 { u8 0x00A8 (&0xFF00, >>8) }
}
uint tri5gl {
revs 8-15 { u8 0x0057 }
revs 256-2047 { u8 0x00AB }
}
uint tri5gh {
revs 8-15 { u8 0x0056 (&0xFF00, >>8) }
revs 256-2047 { u8 0x00AA (&0xFF00, >>8) }
}
sint rxpo2g {
sfmt sdec
revs 8-15 { u8 0x005B }
revs 256-2047 { u8 0x00AD }
}
sint rxpo5g {
sfmt sdec
revs 8-15 { u8 0x005A (&0xFF00, >>8) }
revs 256-2047 { u8 0x00AC (&0xFF00, >>8) }
}
uint txchain {
all1 ignore
revs 16-255 { u8 0x007B (&0xF) }
revs 256-2047 { u8 0x00A3 (&0xF) }
revs >= 2048 { u8 0x00A9 (&0xF) }
}
uint rxchain {
all1 ignore
revs 16-255 { u8 0x007B (&0xF0, >>4) }
revs 256-2047 { u8 0x00A3 (&0xF0, >>4) }
revs >= 2048 { u8 0x00A9 (&0xF0, >>4) }
}
uint antswitch {
all1 ignore
revs 16-255 { u8 0x007A (&0xFF00, >>8) }
revs 256-2047 { u8 0x00A2 (&0xFF00, >>8) }
revs >= 2048 { u8 0x00A8 (&0xFF00, >>8) }
}
uint tssipos2g {
revs 256-2047 { u8 0x00AF (&0x1) }
}
uint extpagain2g {
revs 256-2047 { u8 0x00AF (&0x6, >>1) }
}
uint pdetrange2g {
revs 256-2047 { u8 0x00AF (&0xF8, >>3) }
}
uint triso2g {
revs 256-2047 { u8 0x00AE (&0x700, >>8) }
}
uint antswctl2g {
revs 256-2047 { u8 0x00AE (&0xF800, >>11) }
}
uint tssipos5g {
revs 256-2047 { u8 0x00B1 (&0x1) }
}
uint extpagain5g {
revs 256-2047 { u8 0x00B1 (&0x6, >>1) }
}
uint pdetrange5g {
revs 256-2047 { u8 0x00B1 (&0xF8, >>3) }
}
uint triso5g {
revs 256-2047 { u8 0x00B0 (&0x700, >>8) }
}
uint antswctl5g {
revs 256-2047 { u8 0x00B0 (&0xF800, >>11) }
}
uint txpid2ga0 {
revs 16-255 { u8 0x0063 }
}
uint txpid2ga1 {
revs 16-255 { u8 0x0062 (&0xFF00, >>8) }
}
uint txpid2ga2 {
revs 16-255 { u8 0x0065 }
}
uint txpid2ga3 {
revs 16-255 { u8 0x0064 (&0xFF00, >>8) }
}
uint txpid5ga0 {
revs 16-255 { u8 0x0067 }
}
uint txpid5ga1 {
revs 16-255 { u8 0x0066 (&0xFF00, >>8) }
}
uint txpid5ga2 {
revs 16-255 { u8 0x0069 }
}
uint txpid5ga3 {
revs 16-255 { u8 0x0068 (&0xFF00, >>8) }
}
uint txpid5gla0 {
revs 16-255 { u8 0x006B }
}
uint txpid5gla1 {
revs 16-255 { u8 0x006A (&0xFF00, >>8) }
}
uint txpid5gla2 {
revs 16-255 { u8 0x006D }
}
uint txpid5gla3 {
revs 16-255 { u8 0x006C (&0xFF00, >>8) }
}
uint txpid5gha0 {
revs 16-255 { u8 0x006F }
}
uint txpid5gha1 {
revs 16-255 { u8 0x006E (&0xFF00, >>8) }
}
uint txpid5gha2 {
revs 16-255 { u8 0x0071 }
}
uint txpid5gha3 {
revs 16-255 { u8 0x0070 (&0xFF00, >>8) }
}
cc ccode {
sfmt ascii
revs >= 1 { u16 0x0076 }
revs 16-31 { u16 0x0052 }
revs 32-255 { u16 0x0044 }
revs 256-2047 { u16 0x0092 }
revs >= 2048 { u16 0x0096 }
}
mac48 macaddr {
sfmt macaddr
revs 256-2047 { u16 0x008C }
revs 32-255 { u16 0x0052 }
revs 16-31 { u16 0x004C }
revs 8-15 { u16 0x004A }
revs >= 2048 { u16 0x0090 }
}
mac48 il0macaddr {
sfmt macaddr
revs >= 1 { u16 0x0048 }
}
mac48 et1macaddr {
sfmt macaddr
revs >= 1 { u16 0x0054 }
}
led leddc {
all1 ignore
revs 256-2047 { u16 0x009A }
revs 32-255 { u16 0x005A }
revs 16-31 { u16 0x005A }
revs 8-15 { u16 0x007C }
revs >= 2048 { u16 0x009E }
}
uint tempthresh {
revs 256-2047 { u8 0x00B2 (&0xFF00, >>8) }
revs >= 2048 { u8 0x00AE (&0xFF00, >>8) }
}
uint tempoffset {
revs 256-2047 { u8 0x00B3 }
revs >= 2048 { u8 0x00AF }
}
uint rawtempsense {
revs 256-2047 { u16 0x00B4 (&0x1FF) }
revs >= 2048 { u16 0x00B0 (&0x1FF) }
}
uint measpower {
revs 256-2047 { u8 0x00B4 (&0xFE00, >>9) }
revs >= 2048 { u8 0x00B0 (&0xFE00, >>9) }
}
uint tempsense_slope {
revs 256-2047 { u8 0x00B7 }
revs >= 2048 { u8 0x00B3 }
}
uint tempcorrx {
revs 256-2047 { u8 0x00B6 (&0xFC00, >>10) }
revs >= 2048 { u8 0x00B2 (&0xFC00, >>10) }
}
uint tempsense_option {
revs 256-2047 { u8 0x00B6 (&0x300, >>8) }
revs >= 2048 { u8 0x00B2 (&0x300, >>8) }
}
uint freqoffset_corr {
revs 256-2047 { u8 0x00B9 (&0xF) }
}
uint iqcal_swp_dis {
revs 256-2047 { u8 0x00B9 (&0x10, >>4) }
}
uint hw_iqcal_en {
revs 256-2047 { u8 0x00B9 (&0x20, >>5) }
}
uint elna2g {
revs 256-2047 { u8 0x00BB }
}
uint elna5g {
revs 256-2047 { u8 0x00BA (&0xFF00, >>8) }
}
uint phycal_tempdelta {
revs 256-2047 { u8 0x00BD }
revs >= 2048 { u8 0x00B9 }
}
uint temps_period {
revs 256-2047 { u8 0x00BC (&0xF00, >>8) }
revs >= 2048 { u8 0x00B8 (&0xF00, >>8) }
}
uint temps_hysteresis {
revs 256-2047 { u8 0x00BC (&0xF000, >>12) }
revs >= 2048 { u8 0x00B8 (&0xF000, >>12) }
}
uint measpower1 {
revs 256-2047 { u8 0x00BF (&0x7F) }
revs >= 2048 { u8 0x00BB (&0x7F) }
}
uint measpower2 {
revs 256-2047 { u16 0x00BE (&0x3F80, >>7) }
revs >= 2048 { u16 0x00BA (&0x3F80, >>7) }
}
uint cck2gpo {
revs 16-255 { u16 0x0138 }
revs 256-511 { u16 0x0140 }
}
uint ofdm2gpo {
revs 16-255 { u32 0x013A }
revs 256-511 { u32 0x0142 }
}
uint ofdm5gpo {
revs 16-255 { u32 0x013E }
revs 256-511 { u32 0x0146 }
}
uint ofdm5glpo {
revs 16-255 { u32 0x0142 }
revs 256-511 { u32 0x014A }
}
uint ofdm5ghpo {
revs 16-255 { u32 0x0146 }
revs 256-511 { u32 0x014E }
}
uint mcs2gpo0 {
revs 16-255 { u16 0x014A }
revs 256-511 { u16 0x0152 }
}
uint mcs2gpo1 {
revs 16-255 { u16 0x014C }
revs 256-511 { u16 0x0154 }
}
uint mcs2gpo2 {
revs 16-255 { u16 0x014E }
revs 256-511 { u16 0x0156 }
}
uint mcs2gpo3 {
revs 16-255 { u16 0x0150 }
revs 256-511 { u16 0x0158 }
}
uint mcs2gpo4 {
revs 16-255 { u16 0x0152 }
revs 256-511 { u16 0x015A }
}
uint mcs2gpo5 {
revs 16-255 { u16 0x0154 }
revs 256-511 { u16 0x015C }
}
uint mcs2gpo6 {
revs 16-255 { u16 0x0156 }
revs 256-511 { u16 0x015E }
}
uint mcs2gpo7 {
revs 16-255 { u16 0x0158 }
revs 256-511 { u16 0x0160 }
}
uint mcs5gpo0 {
revs 16-255 { u16 0x015A }
revs 256-511 { u16 0x0162 }
}
uint mcs5gpo1 {
revs 16-255 { u16 0x015C }
revs 256-511 { u16 0x0164 }
}
uint mcs5gpo2 {
revs 16-255 { u16 0x015E }
revs 256-511 { u16 0x0166 }
}
uint mcs5gpo3 {
revs 16-255 { u16 0x0160 }
revs 256-511 { u16 0x0168 }
}
uint mcs5gpo4 {
revs 16-255 { u16 0x0162 }
revs 256-511 { u16 0x016A }
}
uint mcs5gpo5 {
revs 16-255 { u16 0x0164 }
revs 256-511 { u16 0x016C }
}
uint mcs5gpo6 {
revs 16-255 { u16 0x0166 }
revs 256-511 { u16 0x016E }
}
uint mcs5gpo7 {
revs 16-255 { u16 0x0168 }
revs 256-511 { u16 0x0170 }
}
uint mcs5glpo0 {
revs 16-255 { u16 0x016A }
revs 256-511 { u16 0x0172 }
}
uint mcs5glpo1 {
revs 16-255 { u16 0x016C }
revs 256-511 { u16 0x0174 }
}
uint mcs5glpo2 {
revs 16-255 { u16 0x016E }
revs 256-511 { u16 0x0176 }
}
uint mcs5glpo3 {
revs 16-255 { u16 0x0170 }
revs 256-511 { u16 0x0178 }
}
uint mcs5glpo4 {
revs 16-255 { u16 0x0172 }
revs 256-511 { u16 0x017A }
}
uint mcs5glpo5 {
revs 16-255 { u16 0x0174 }
revs 256-511 { u16 0x017C }
}
uint mcs5glpo6 {
revs 16-255 { u16 0x0176 }
revs 256-511 { u16 0x017E }
}
uint mcs5glpo7 {
revs 16-255 { u16 0x0178 }
revs 256-511 { u16 0x0180 }
}
uint mcs5ghpo0 {
revs 16-255 { u16 0x017A }
revs 256-511 { u16 0x0182 }
}
uint mcs5ghpo1 {
revs 16-255 { u16 0x017C }
revs 256-511 { u16 0x0184 }
}
uint mcs5ghpo2 {
revs 16-255 { u16 0x017E }
revs 256-511 { u16 0x0186 }
}
uint mcs5ghpo3 {
revs 16-255 { u16 0x0180 }
revs 256-511 { u16 0x0188 }
}
uint mcs5ghpo4 {
revs 16-255 { u16 0x0182 }
revs 256-511 { u16 0x018A }
}
uint mcs5ghpo5 {
revs 16-255 { u16 0x0184 }
revs 256-511 { u16 0x018C }
}
uint mcs5ghpo6 {
revs 16-255 { u16 0x0186 }
revs 256-511 { u16 0x018E }
}
uint mcs5ghpo7 {
revs 16-255 { u16 0x0188 }
revs 256-511 { u16 0x0190 }
}
uint cddpo {
revs 16-255 { u16 0x018A }
revs 256-511 { u16 0x0192 }
}
uint stbcpo {
revs 16-255 { u16 0x018C }
revs 256-511 { u16 0x0194 }
}
uint bw40po {
revs 16-255 { u16 0x018E }
revs 256-511 { u16 0x0196 }
}
uint bwduppo {
revs 16-255 { u16 0x0190 }
revs 256-511 { u16 0x0198 }
}
uint cckbw202gpo {
revs 512-2047 { u16 0x0140 }
revs >= 2048 { u16 0x0150 }
}
uint cckbw20ul2gpo {
revs 512-2047 { u16 0x0142 }
revs >= 2048 { u16 0x0152 }
}
uint legofdmbw202gpo {
revs 512-2047 { u32 0x0144 }
}
uint legofdmbw20ul2gpo {
revs 512-2047 { u32 0x0148 }
}
uint legofdmbw205glpo {
revs 512-2047 { u32 0x014C }
}
uint legofdmbw20ul5glpo {
revs 512-2047 { u32 0x0150 }
}
uint legofdmbw205gmpo {
revs 512-2047 { u32 0x0154 }
}
uint legofdmbw20ul5gmpo {
revs 512-2047 { u32 0x0158 }
}
uint legofdmbw205ghpo {
revs 512-2047 { u32 0x015C }
}
uint legofdmbw20ul5ghpo {
revs 512-2047 { u32 0x0160 }
}
uint mcsbw202gpo {
revs 512-2047 { u32 0x0164 }
revs >= 2048 { u32 0x0154 }
}
uint mcsbw20ul2gpo {
revs 512-2047 { u32 0x0168 }
}
uint mcsbw402gpo {
revs 512-2047 { u32 0x016C }
revs >= 2048 { u32 0x0158 }
}
uint mcsbw205glpo {
revs 512-2047 { u32 0x0170 }
revs >= 2048 { u32 0x0160 }
}
uint mcsbw20ul5glpo {
revs 512-2047 { u32 0x0174 }
}
uint mcsbw405glpo {
revs 512-2047 { u32 0x0178 }
revs >= 2048 { u32 0x0164 }
}
uint mcsbw205gmpo {
revs 512-2047 { u32 0x017C }
revs >= 2048 { u32 0x0170 }
}
uint mcsbw20ul5gmpo {
revs 512-2047 { u32 0x0180 }
}
uint mcsbw405gmpo {
revs 512-2047 { u32 0x0184 }
revs >= 2048 { u32 0x0174 }
}
uint mcsbw205ghpo {
revs 512-2047 { u32 0x0188 }
revs >= 2048 { u32 0x0180 }
}
uint mcsbw20ul5ghpo {
revs 512-2047 { u32 0x018C }
}
uint mcsbw405ghpo {
revs 512-2047 { u32 0x0190 }
revs >= 2048 { u32 0x0184 }
}
uint mcs32po {
revs 512-2047 { u16 0x0194 }
}
uint legofdm40duppo {
revs 512-2047 { u16 0x0196 }
}
uint pcieingress_war {
revs 256-2047 { u8 0x01A7 (&0xF) }
}
uint eu_edthresh2g {
revs 256-511 { u8 0x01A9 }
revs 512-1023 { u8 0x0199 }
revs 1024-2047 { u8 0x0199 }
revs 2048-4095 { u8 0x01D1 }
}
uint eu_edthresh5g {
revs 256-511 { u8 0x01A8 (&0xFF00, >>8) }
revs 512-1023 { u8 0x0198 (&0xFF00, >>8) }
revs 1024-2047 { u8 0x0198 (&0xFF00, >>8) }
revs 2048-4095 { u8 0x01D0 (&0xFF00, >>8) }
}
uint rxgainerr2ga0 {
revs 256-2047 { u8 0x019B (&0x3F) }
revs >= 2048 { u8 0x01C7 (&0x3F) }
}
uint rxgainerr2ga1 {
revs 256-2047 { u16 0x019A (&0x7C0, >>6) }
revs >= 2048 { u16 0x01C6 (&0x7C0, >>6) }
}
uint rxgainerr2ga2 {
revs 256-2047 { u8 0x019A (&0xF800, >>11) }
revs >= 2048 { u8 0x01C6 (&0xF800, >>11) }
}
uint rxgainerr5gla0 {
revs 256-2047 { u8 0x019D (&0x3F) }
}
uint rxgainerr5gla1 {
revs 256-2047 { u16 0x019C (&0x7C0, >>6) }
}
uint rxgainerr5gla2 {
revs 256-2047 { u8 0x019C (&0xF800, >>11) }
}
uint rxgainerr5gma0 {
revs 256-2047 { u8 0x019F (&0x3F) }
}
uint rxgainerr5gma1 {
revs 256-2047 { u16 0x019E (&0x7C0, >>6) }
}
uint rxgainerr5gma2 {
revs 256-2047 { u8 0x019E (&0xF800, >>11) }
}
uint rxgainerr5gha0 {
revs 256-2047 { u8 0x01A1 (&0x3F) }
}
uint rxgainerr5gha1 {
revs 256-2047 { u16 0x01A0 (&0x7C0, >>6) }
}
uint rxgainerr5gha2 {
revs 256-2047 { u8 0x01A0 (&0xF800, >>11) }
}
uint rxgainerr5gua0 {
revs 256-2047 { u8 0x01A3 (&0x3F) }
}
uint rxgainerr5gua1 {
revs 256-2047 { u16 0x01A2 (&0x7C0, >>6) }
}
uint rxgainerr5gua2 {
revs 256-2047 { u8 0x01A2 (&0xF800, >>11) }
}
uint sar2g {
revs 512-2047 { u8 0x01A9 }
revs >= 2048 { u8 0x01BB }
}
uint sar5g {
revs 512-2047 { u8 0x01A8 (&0xFF00, >>8) }
revs >= 2048 { u8 0x01BA (&0xFF00, >>8) }
}
uint noiselvl2ga0 {
revs 256-2047 { u8 0x01AB (&0x1F) }
revs >= 2048 { u8 0x01BD (&0x1F) }
}
uint noiselvl2ga1 {
revs 256-2047 { u16 0x01AA (&0x3E0, >>5) }
revs >= 2048 { u16 0x01BC (&0x3E0, >>5) }
}
uint noiselvl2ga2 {
revs 256-2047 { u8 0x01AA (&0x7C00, >>10) }
revs >= 2048 { u8 0x01BC (&0x7C00, >>10) }
}
uint noiselvl5gla0 {
revs 256-2047 { u8 0x01AD (&0x1F) }
}
uint noiselvl5gla1 {
revs 256-2047 { u16 0x01AC (&0x3E0, >>5) }
}
uint noiselvl5gla2 {
revs 256-2047 { u8 0x01AC (&0x7C00, >>10) }
}
uint noiselvl5gma0 {
revs 256-2047 { u8 0x01AF (&0x1F) }
}
uint noiselvl5gma1 {
revs 256-2047 { u16 0x01AE (&0x3E0, >>5) }
}
uint noiselvl5gma2 {
revs 256-2047 { u8 0x01AE (&0x7C00, >>10) }
}
uint noiselvl5gha0 {
revs 256-2047 { u8 0x01B1 (&0x1F) }
}
uint noiselvl5gha1 {
revs 256-2047 { u16 0x01B0 (&0x3E0, >>5) }
}
uint noiselvl5gha2 {
revs 256-2047 { u8 0x01B0 (&0x7C00, >>10) }
}
uint noiselvl5gua0 {
revs 256-2047 { u8 0x01B3 (&0x1F) }
}
uint noiselvl5gua1 {
revs 256-2047 { u16 0x01B2 (&0x3E0, >>5) }
}
uint noiselvl5gua2 {
revs 256-2047 { u8 0x01B2 (&0x7C00, >>10) }
}
uint noisecaloffset {
revs 256-1023 { u8 0x01B5 }
}
uint noisecaloffset5g {
revs 256-1023 { u8 0x01B4 (&0xFF00, >>8) }
}
uint subband5gver {
revs 256-2047 { u8 0x01A5 (&0x7) }
revs >= 2048 { u16 0x00D6 }
}
uint cckPwrOffset {
revs 1024-2047 { u16 0x01B4 }
}
uint swctrlmap_2g[] {
revs 1024-2047 {
u32 0x01B8,
u32 0x01BC,
u32 0x01C0,
u32 0x01C4,
u16 0x01C8
}
}
uint boardflags3 {
revs >= 2048 { u32 0x008C }
}
uint agbg0 {
revs >= 2048 { u8 0x00A2 (&0xFF00, >>8) }
}
uint agbg1 {
revs >= 2048 { u8 0x00A3 }
}
uint agbg2 {
revs >= 2048 { u8 0x00A4 (&0xFF00, >>8) }
}
uint aga0 {
revs >= 2048 { u8 0x00A5 }
}
uint aga1 {
revs >= 2048 { u8 0x00A6 (&0xFF00, >>8) }
}
uint aga2 {
revs >= 2048 { u8 0x00A7 }
}
uint tssiposslope2g {
revs >= 2048 { u8 0x00AB (&0x1) }
}
uint epagain2g {
revs >= 2048 { u8 0x00AB (&0xE, >>1) }
}
uint pdgain2g {
revs >= 2048 { u16 0x00AA (&0x1F0, >>4) }
}
uint tworangetssi2g {
revs >= 2048 { u8 0x00AA (&0x200, >>9) }
}
uint papdcap2g {
revs >= 2048 { u8 0x00AA (&0x400, >>10) }
}
uint femctrl {
revs >= 2048 { u8 0x00AA (&0xF800, >>11) }
}
uint tssiposslope5g {
revs >= 2048 { u8 0x00AD (&0x1) }
}
uint epagain5g {
revs >= 2048 { u8 0x00AD (&0xE, >>1) }
}
uint pdgain5g {
revs >= 2048 { u16 0x00AC (&0x1F0, >>4) }
}
uint tworangetssi5g {
revs >= 2048 { u8 0x00AC (&0x200, >>9) }
}
uint papdcap5g {
revs >= 2048 { u8 0x00AC (&0x400, >>10) }
}
uint gainctrlsph {
revs >= 2048 { u8 0x00AC (&0xF800, >>11) }
}
uint xtalfreq {
revs >= 2048 { u16 0x00B4 }
}
uint pa5gbw4080a1[] {
revs >= 2048 {
u16 0x00B6,
u16 0x00BC,
u16 0x00CE,
u16 0x00D4,
u16 0x0128,
u16 0x012A,
u16 0x012C,
u16 0x012E,
u16 0x0130,
u16 0x0132,
u16 0x0134,
u16 0x0136
}
}
uint tssifloor2g {
revs >= 2048 { u16 0x00BE (&0x3FF) }
}
uint tssifloor5g[] {
revs >= 2048 {
u16 0x00C0 (&0x3FF),
u16 0x00C2 (&0x3FF),
u16 0x00C4 (&0x3FF),
u16 0x00C6 (&0x3FF)
}
}
uint pdoffset2g40ma0 {
revs >= 2048 { u8 0x00C9 (&0xF) }
}
uint pdoffset2g40ma1 {
revs >= 2048 { u8 0x00C9 (&0xF0, >>4) }
}
uint pdoffset2g40ma2 {
revs >= 2048 { u8 0x00C8 (&0xF00, >>8) }
}
uint pdoffset2g40mvalid {
revs >= 2048 { u8 0x00C8 (&0x8000, >>15) }
}
uint pdoffset40ma0 {
revs >= 2048 { u16 0x00CA }
}
uint pdoffset40ma1 {
revs >= 2048 { u16 0x00CC }
}
uint pdoffset40ma2 {
revs >= 2048 { u16 0x00CE }
}
uint pdoffset80ma0 {
revs >= 2048 { u16 0x00D0 }
}
uint pdoffset80ma1 {
revs >= 2048 { u16 0x00D2 }
}
uint pdoffset80ma2 {
revs >= 2048 { u16 0x00D4 }
}
uint paparambwver {
revs >= 2048 { u8 0x0190 (&0xF000, >>12) }
}
uint pa5gbw4080a0[] {
revs >= 2048 {
u16 0x0138,
u16 0x013A,
u16 0x013C,
u16 0x013E,
u16 0x0140,
u16 0x0142,
u16 0x0144,
u16 0x0146,
u16 0x0148,
u16 0x014A,
u16 0x014C,
u16 0x014E
}
}
uint pa5gbw40a0[] {
revs >= 2048 {
u16 0x0110,
u16 0x0112,
u16 0x0114,
u16 0x0116,
u16 0x0118,
u16 0x011A,
u16 0x011C,
u16 0x011E,
u16 0x0120,
u16 0x0122,
u16 0x0124,
u16 0x0126
}
}
uint pa5gbw80a0[] {
revs >= 2048 {
u16 0x0138,
u16 0x013A,
u16 0x013C,
u16 0x013E,
u16 0x0140,
u16 0x0142,
u16 0x0144,
u16 0x0146,
u16 0x0148,
u16 0x014A,
u16 0x014C,
u16 0x014E
}
}
uint pa2gccka0[] {
revs >= 2048 {
u16 0x0102,
u16 0x0104,
u16 0x0106
}
}
uint dot11agofdmhrbw202gpo {
revs >= 2048 { u16 0x015C }
}
uint ofdmlrbw202gpo {
revs >= 2048 { u16 0x015E }
}
uint mcsbw805glpo {
revs >= 2048 { u32 0x0168 }
}
uint mcsbw805gmpo {
revs >= 2048 { u32 0x0178 }
}
uint mcsbw805ghpo {
revs >= 2048 { u32 0x0188 }
}
uint mcslr5glpo {
revs >= 2048 { u16 0x0190 (&0xFFF) }
}
uint mcslr5gmpo {
revs >= 2048 { u16 0x0192 }
}
uint mcslr5ghpo {
revs >= 2048 { u16 0x0194 }
}
uint sb20in40hrpo {
revs >= 2048 { u16 0x0196 }
}
uint sb20in80and160hr5glpo {
revs >= 2048 { u16 0x0198 }
}
uint sb40and80hr5glpo {
revs >= 2048 { u16 0x019A }
}
uint sb20in80and160hr5gmpo {
revs >= 2048 { u16 0x019C }
}
uint sb40and80hr5gmpo {
revs >= 2048 { u16 0x019E }
}
uint sb20in80and160hr5ghpo {
revs >= 2048 { u16 0x01A0 }
}
uint sb40and80hr5ghpo {
revs >= 2048 { u16 0x01A2 }
}
uint sb20in40lrpo {
revs >= 2048 { u16 0x01A4 }
}
uint sb20in80and160lr5glpo {
revs >= 2048 { u16 0x01A6 }
}
uint sb40and80lr5glpo {
revs >= 2048 { u16 0x01A8 }
}
uint sb20in80and160lr5gmpo {
revs >= 2048 { u16 0x01AA }
}
uint sb40and80lr5gmpo {
revs >= 2048 { u16 0x01AC }
}
uint sb20in80and160lr5ghpo {
revs >= 2048 { u16 0x01AE }
}
uint sb40and80lr5ghpo {
revs >= 2048 { u16 0x01B0 }
}
uint dot11agduphrpo {
revs >= 2048 { u16 0x01B2 }
}
uint dot11agduplrpo {
revs >= 2048 { u16 0x01B4 }
}
uint noiselvl5ga0[] {
revs >= 2048 {
u8 0x01BF (&0x1F),
u8 0x01C1 (&0x1F),
u8 0x01C3 (&0x1F),
u8 0x01C5 (&0x1F)
}
}
uint noiselvl5ga1[] {
revs >= 2048 {
u16 0x01BE (&0x3E0, >>5),
u16 0x01C0 (&0x3E0, >>5),
u16 0x01C2 (&0x3E0, >>5),
u16 0x01C4 (&0x3E0, >>5)
}
}
uint noiselvl5ga2[] {
revs >= 2048 {
u8 0x01BE (&0x7C00, >>10),
u8 0x01C0 (&0x7C00, >>10),
u8 0x01C2 (&0x7C00, >>10),
u8 0x01C4 (&0x7C00, >>10)
}
}
uint rxgainerr5ga0[] {
revs >= 2048 {
u8 0x01C9 (&0x3F),
u8 0x01CB (&0x3F),
u8 0x01CD (&0x3F),
u8 0x01CF (&0x3F)
}
}
uint rxgainerr5ga1[] {
revs >= 2048 {
u16 0x01C8 (&0x7C0, >>6),
u16 0x01CA (&0x7C0, >>6),
u16 0x01CC (&0x7C0, >>6),
u16 0x01CE (&0x7C0, >>6)
}
}
uint rxgainerr5ga2[] {
revs >= 2048 {
u8 0x01C8 (&0xF800, >>11),
u8 0x01CA (&0xF800, >>11),
u8 0x01CC (&0xF800, >>11),
u8 0x01CE (&0xF800, >>11)
}
}
uint rpcal2g {
revs >= 2048 { u16 0x016C }
}
uint rpcal5gb0 {
revs >= 2048 { u16 0x016E }
}
uint rpcal5gb1 {
revs >= 2048 { u16 0x017C }
}
uint rpcal5gb2 {
revs >= 2048 { u16 0x017E }
}
uint rpcal5gb3 {
revs >= 2048 { u16 0x018C }
}
uint txidxcap2g {
revs >= 2048 { u16 0x01A8 (&0xFF0, >>4) }
}
uint txidxcap5g {
revs >= 2048 { u16 0x01AC (&0xFF0, >>4) }
}
uint pdoffsetcckma0 {
revs >= 2048 { u8 0x018F (&0xF) }
}
uint pdoffsetcckma1 {
revs >= 2048 { u8 0x018F (&0xF0, >>4) }
}
uint pdoffsetcckma2 {
revs >= 2048 { u8 0x018E (&0xF00, >>8) }
}
#
# Any variables defined within a `struct` block will be interpreted relative to
# the provided array of SPROM base addresses; this is used to define
# a common layout defined at the given base addresses.
#
# To produce SPROM variable names matching those used in the Broadcom HND
# ASCII 'key=value\0' NVRAM, the index number of the variable's
# struct instance will be appended (e.g., given a variable of noiselvl5ga, the
# generated variable instances will be named noiselvl5ga0, noiselvl5ga1,
# noiselvl5ga2, noiselvl5ga3 ...)
#
struct pathvars[] {
revs 4-7 [0x0080, 0x00AE, 0x00DC, 0x010A]
revs 8-10 [0x00C0, 0x00E0, 0x0100, 0x0120]
revs >= 11 [0x00D8, 0x0100, 0x0128]
uint maxp2ga {
revs 16-255 { u8 0x0001 }
revs 256-2047 { u8 0x0001 }
revs >= 2048 { u8 0x0001 }
}
uint itt2ga {
revs 16-255 { u8 0x0000 (&0xFF00, >>8) }
revs 256-2047 { u8 0x0000 (&0xFF00, >>8) }
}
uint itt5ga {
revs 16-255 { u8 0x000A (&0xFF00, >>8) }
revs 256-2047 { u8 0x0008 (&0xFF00, >>8) }
}
uint pa2gw0a {
revs 16-255 { u16 0x0002 }
revs 256-2047 { u16 0x0002 }
}
uint pa2gw1a {
revs 16-255 { u16 0x0004 }
revs 256-2047 { u16 0x0004 }
}
uint pa2gw2a {
revs 16-255 { u16 0x0006 }
revs 256-2047 { u16 0x0006 }
}
uint pa2gw3a {
revs 16-255 { u16 0x0008 }
}
uint maxp5ga[] {
revs 16-255 { u8 0x000B }
revs 256-2047 { u8 0x0009 }
revs >= 2048 {
u8 0x000D,
u8 0x000C (&0xFF00, >>8),
u8 0x000F,
u8 0x000E (&0xFF00, >>8)
}
}
uint maxp5gha {
revs 16-255 { u8 0x000D }
revs 256-2047 { u8 0x000B }
}
uint maxp5gla {
revs 16-255 { u8 0x000C (&0xFF00, >>8) }
revs 256-2047 { u8 0x000A (&0xFF00, >>8) }
}
uint pa5gw0a {
revs 16-255 { u16 0x000E }
revs 256-2047 { u16 0x000C }
}
uint pa5gw1a {
revs 16-255 { u16 0x0010 }
revs 256-2047 { u16 0x000E }
}
uint pa5gw2a {
revs 16-255 { u16 0x0012 }
revs 256-2047 { u16 0x0010 }
}
uint pa5gw3a {
revs 16-255 { u16 0x0014 }
}
uint pa5glw0a {
revs 16-255 { u16 0x0016 }
revs 256-2047 { u16 0x0012 }
}
uint pa5glw1a {
revs 16-255 { u16 0x0018 }
revs 256-2047 { u16 0x0014 }
}
uint pa5glw2a {
revs 16-255 { u16 0x001A }
revs 256-2047 { u16 0x0016 }
}
uint pa5glw3a {
revs 16-255 { u16 0x001C }
}
uint pa5ghw0a {
revs 16-255 { u16 0x001E }
revs 256-2047 { u16 0x0018 }
}
uint pa5ghw1a {
revs 16-255 { u16 0x0020 }
revs 256-2047 { u16 0x001A }
}
uint pa5ghw2a {
revs 16-255 { u16 0x0022 }
revs 256-2047 { u16 0x001C }
}
uint pa5ghw3a {
revs 16-255 { u16 0x0024 }
}
uint pa2ga[] {
revs >= 2048 {
u16 0x0002,
u16 0x0004,
u16 0x0006
}
}
uint rxgains5gmelnagaina {
revs >= 2048 { u8 0x0009 (&0x7) }
}
uint rxgains5gmtrisoa {
revs >= 2048 { u8 0x0009 (&0x78, >>3) }
}
uint rxgains5gmtrelnabypa {
revs >= 2048 { u8 0x0009 (&0x80, >>7) }
}
uint rxgains5ghelnagaina {
revs >= 2048 { u8 0x0008 (&0x700, >>8) }
}
uint rxgains5ghtrisoa {
revs >= 2048 { u8 0x0008 (&0x7800, >>11) }
}
uint rxgains5ghtrelnabypa {
revs >= 2048 { u8 0x0008 (&0x8000, >>15) }
}
uint rxgains2gelnagaina {
revs >= 2048 { u8 0x000B (&0x7) }
}
uint rxgains2gtrisoa {
revs >= 2048 { u8 0x000B (&0x78, >>3) }
}
uint rxgains2gtrelnabypa {
revs >= 2048 { u8 0x000B (&0x80, >>7) }
}
uint rxgains5gelnagaina {
revs >= 2048 { u8 0x000A (&0x700, >>8) }
}
uint rxgains5gtrisoa {
revs >= 2048 { u8 0x000A (&0x7800, >>11) }
}
uint rxgains5gtrelnabypa {
revs >= 2048 { u8 0x000A (&0x8000, >>15) }
}
uint pa5ga[] {
revs >= 2048 {
u16 0x0010,
u16 0x0012,
u16 0x0014,
u16 0x0016,
u16 0x0018,
u16 0x001A,
u16 0x001C,
u16 0x001E,
u16 0x0020,
u16 0x0022,
u16 0x0024,
u16 0x0026
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment