1: a6088292acf9 = 1: 2dfd46178e4a bcma: core: clear only FORCEHT for BCMA_CLKMODE_DYNAMIC  2: 796f7c359d0a < -: ------------ bcma: pmu: init PLL and resources on BCM4352/BCM4360  3: b68912a53b32 < -: ------------ bcma: pcie2: request HT on BCM4352/BCM4360  -: ------------ > 2: d058e0deafdf bcma: pmu: init PLL and resources on BCM4352/BCM4360  -: ------------ > 3: 963cd369fcf6 bcma: pcie2: request HT on BCM4352/BCM4360  4: 1efec9261d87 = 4: e3c8a8ac0006 bcma: chipcommon: enable asynchronous GPIO interrupts  5: ace78e47aa23 ! 5: ede7efcb254d bcma: extract SPROM revision 11 @@ drivers/bcma/sprom.c: static void bcma_sprom_extract_r8(struct bcma_bus *bus, co  + SSB_SPROM8_TEMPDELTA_HYSTERESIS,  + SSB_SPROM8_TEMPDELTA_HYSTERESIS_SHIFT);  + -+ /* Whole dB in bits [5:0], sign-extended, quarter dB in bits [7:6]. */ -+ for (i = 0; i < 2; i++) { -+ u8 raw = i ? (sprom[SSB_SPROM11_AGBG2A0 / 2] >> 8) & 0xff -+ : sprom[SSB_SPROM11_AGBG10 / 2] & 0xff; -+ s8 gain = (s8)((raw & 0x3f) << 2) >> 2; -+ -+ bus->sprom.antenna_gain_qdb[i] = (s8)(4 * gain + (raw >> 6)); -+ } ++ bus->sprom.antenna_gain_qdb[0] = ++ ssb_sprom_antgain_qdb(sprom[SPOFF(SSB_SPROM11_AGBG10)] & 0xff); ++ bus->sprom.antenna_gain_qdb[1] = ++ ssb_sprom_antgain_qdb(sprom[SPOFF(SSB_SPROM11_AGBG2A0)] >> 8);  +}  + /* @@ include/linux/ssb/ssb.h: struct ssb_sprom {  + u16 tssifloor5g[4]; };  ++/* ++ * SROM rev 11 antenna gain byte, agbg0 or aga0, in quarter dB: whole dB in ++ * bits [5:0], signed, and quarter dB in bits [7:6]. ++ */ ++static inline s8 ssb_sprom_antgain_qdb(u8 raw) ++{ ++ s8 gain = (s8)((raw & 0x3f) << 2) >> 2; ++ ++ return 4 * gain + (raw >> 6); ++} ++ /* Information about the PCB the circuitry is soldered on. */ + struct ssb_boardinfo { + u16 vendor;  ## include/linux/ssb/ssb_regs.h ##  @@  -: ------------ > 6: 7a112defe8d8 firmware: bcm47xx_sprom: read the SPROM revision 11 fields from NVRAM  6: a03d620da9d5 ! 7: ae006a8496bc firmware: bcm47xx_sprom: read ledbh4..ledbh15 from NVRAM @@ Commit message firmware: bcm47xx_sprom: read ledbh4..ledbh15 from NVRAM  Add gpio_ext[] for the LED behaviours of GPIO 4-15 and fill it from - NVRAM ledbh4..ledbh15, both for a SPROM built from NVRAM and, through - the new bcm47xx_sprom_fill_bcma_nvram(), on top of a SPROM read from a - bcma device. The bcma prefix lookup moves into a helper shared by both - paths. + NVRAM ledbh4..ledbh15. + + bcm47xx_fill_sprom() is reached only through the SPROM fallback, so the + NVRAM of a bcma device with a SPROM of its own is never read. Add + bcm47xx_sprom_fill_bcma_nvram(), which bcma calls after extracting the + SPROM, to read the variables the SPROM has no word for on top of it. + The bcma prefix lookup moves into a helper shared by both paths.  Signed-off-by: Alessio Ferri    7: 62b3cd290824 < -: ------------ firmware: bcm47xx_sprom: read boardflags3 and AvVmid_c0..2 from NVRAM  8: 027005b86b3a < -: ------------ bcma: add the BCM4352 PCI ID  -: ------------ > 8: c60d50b9d702 firmware: bcm47xx_sprom: read boardflags3 from NVRAM over the SPROM  -: ------------ > 9: 7251c29830f0 bcma: add the single-band BCM4352/BCM4360 PCI IDs  -: ------------ > 10: 87e50b1c9f63 wifi: b43: add the 2.4 GHz BCM4352/BCM4360 to the supported bands