aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorRafał Miłecki <zajec5@gmail.com>2014-07-12 10:42:10 -0400
committerJohn W. Linville <linville@tuxdriver.com>2014-07-15 16:00:19 -0400
commit6daf43216fd5171f0f44504226efeb5563538f66 (patch)
tree78c98385aa4640e6359876c21c4a4e9576e366c3 /drivers
parent67d392c0e900bbf885ee08b8942c3204a2cab697 (diff)
ssb: extract antenna gains from SPROMs revs 4+ properly
They are encoded the same way as in older SPROMs. Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ssb/pci.c48
1 files changed, 32 insertions, 16 deletions
diff --git a/drivers/ssb/pci.c b/drivers/ssb/pci.c
index fc0bb4923ac3..6318364be590 100644
--- a/drivers/ssb/pci.c
+++ b/drivers/ssb/pci.c
@@ -526,14 +526,22 @@ static void sprom_extract_r45(struct ssb_sprom *out, const u16 *in)
526 } 526 }
527 527
528 /* Extract the antenna gain values. */ 528 /* Extract the antenna gain values. */
529 SPEX(antenna_gain.a0, SSB_SPROM4_AGAIN01, 529 out->antenna_gain.a0 = sprom_extract_antgain(out->revision, in,
530 SSB_SPROM4_AGAIN0, SSB_SPROM4_AGAIN0_SHIFT); 530 SSB_SPROM4_AGAIN01,
531 SPEX(antenna_gain.a1, SSB_SPROM4_AGAIN01, 531 SSB_SPROM4_AGAIN0,
532 SSB_SPROM4_AGAIN1, SSB_SPROM4_AGAIN1_SHIFT); 532 SSB_SPROM4_AGAIN0_SHIFT);
533 SPEX(antenna_gain.a2, SSB_SPROM4_AGAIN23, 533 out->antenna_gain.a1 = sprom_extract_antgain(out->revision, in,
534 SSB_SPROM4_AGAIN2, SSB_SPROM4_AGAIN2_SHIFT); 534 SSB_SPROM4_AGAIN01,
535 SPEX(antenna_gain.a3, SSB_SPROM4_AGAIN23, 535 SSB_SPROM4_AGAIN1,
536 SSB_SPROM4_AGAIN3, SSB_SPROM4_AGAIN3_SHIFT); 536 SSB_SPROM4_AGAIN1_SHIFT);
537 out->antenna_gain.a2 = sprom_extract_antgain(out->revision, in,
538 SSB_SPROM4_AGAIN23,
539 SSB_SPROM4_AGAIN2,
540 SSB_SPROM4_AGAIN2_SHIFT);
541 out->antenna_gain.a3 = sprom_extract_antgain(out->revision, in,
542 SSB_SPROM4_AGAIN23,
543 SSB_SPROM4_AGAIN3,
544 SSB_SPROM4_AGAIN3_SHIFT);
537 545
538 sprom_extract_r458(out, in); 546 sprom_extract_r458(out, in);
539 547
@@ -623,14 +631,22 @@ static void sprom_extract_r8(struct ssb_sprom *out, const u16 *in)
623 SPEX32(ofdm5ghpo, SSB_SPROM8_OFDM5GHPO, 0xFFFFFFFF, 0); 631 SPEX32(ofdm5ghpo, SSB_SPROM8_OFDM5GHPO, 0xFFFFFFFF, 0);
624 632
625 /* Extract the antenna gain values. */ 633 /* Extract the antenna gain values. */
626 SPEX(antenna_gain.a0, SSB_SPROM8_AGAIN01, 634 out->antenna_gain.a0 = sprom_extract_antgain(out->revision, in,
627 SSB_SPROM8_AGAIN0, SSB_SPROM8_AGAIN0_SHIFT); 635 SSB_SPROM8_AGAIN01,
628 SPEX(antenna_gain.a1, SSB_SPROM8_AGAIN01, 636 SSB_SPROM8_AGAIN0,
629 SSB_SPROM8_AGAIN1, SSB_SPROM8_AGAIN1_SHIFT); 637 SSB_SPROM8_AGAIN0_SHIFT);
630 SPEX(antenna_gain.a2, SSB_SPROM8_AGAIN23, 638 out->antenna_gain.a1 = sprom_extract_antgain(out->revision, in,
631 SSB_SPROM8_AGAIN2, SSB_SPROM8_AGAIN2_SHIFT); 639 SSB_SPROM8_AGAIN01,
632 SPEX(antenna_gain.a3, SSB_SPROM8_AGAIN23, 640 SSB_SPROM8_AGAIN1,
633 SSB_SPROM8_AGAIN3, SSB_SPROM8_AGAIN3_SHIFT); 641 SSB_SPROM8_AGAIN1_SHIFT);
642 out->antenna_gain.a2 = sprom_extract_antgain(out->revision, in,
643 SSB_SPROM8_AGAIN23,
644 SSB_SPROM8_AGAIN2,
645 SSB_SPROM8_AGAIN2_SHIFT);
646 out->antenna_gain.a3 = sprom_extract_antgain(out->revision, in,
647 SSB_SPROM8_AGAIN23,
648 SSB_SPROM8_AGAIN3,
649 SSB_SPROM8_AGAIN3_SHIFT);
634 650
635 /* Extract cores power info info */ 651 /* Extract cores power info info */
636 for (i = 0; i < ARRAY_SIZE(pwr_info_offset); i++) { 652 for (i = 0; i < ARRAY_SIZE(pwr_info_offset); i++) {