diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2014-07-12 10:42:09 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-07-15 16:00:18 -0400 |
commit | 67d392c0e900bbf885ee08b8942c3204a2cab697 (patch) | |
tree | cde25b36c60a82830ae1af1a9970a23851c485a2 | |
parent | b3bbf842670def767ec8ebdd424f09358afeb5c6 (diff) |
ssb: make code for antenna gain extraction more generic
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/ssb/pci.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/ssb/pci.c b/drivers/ssb/pci.c index a8dc95ebf2d6..fc0bb4923ac3 100644 --- a/drivers/ssb/pci.c +++ b/drivers/ssb/pci.c | |||
@@ -326,13 +326,13 @@ err_ctlreg: | |||
326 | return err; | 326 | return err; |
327 | } | 327 | } |
328 | 328 | ||
329 | static s8 r123_extract_antgain(u8 sprom_revision, const u16 *in, | 329 | static s8 sprom_extract_antgain(u8 sprom_revision, const u16 *in, u16 offset, |
330 | u16 mask, u16 shift) | 330 | u16 mask, u16 shift) |
331 | { | 331 | { |
332 | u16 v; | 332 | u16 v; |
333 | u8 gain; | 333 | u8 gain; |
334 | 334 | ||
335 | v = in[SPOFF(SSB_SPROM1_AGAIN)]; | 335 | v = in[SPOFF(offset)]; |
336 | gain = (v & mask) >> shift; | 336 | gain = (v & mask) >> shift; |
337 | if (gain == 0xFF) | 337 | if (gain == 0xFF) |
338 | gain = 2; /* If unset use 2dBm */ | 338 | gain = 2; /* If unset use 2dBm */ |
@@ -416,12 +416,14 @@ static void sprom_extract_r123(struct ssb_sprom *out, const u16 *in) | |||
416 | SPEX(alpha2[1], SSB_SPROM1_CCODE, 0x00ff, 0); | 416 | SPEX(alpha2[1], SSB_SPROM1_CCODE, 0x00ff, 0); |
417 | 417 | ||
418 | /* Extract the antenna gain values. */ | 418 | /* Extract the antenna gain values. */ |
419 | out->antenna_gain.a0 = r123_extract_antgain(out->revision, in, | 419 | out->antenna_gain.a0 = sprom_extract_antgain(out->revision, in, |
420 | SSB_SPROM1_AGAIN_BG, | 420 | SSB_SPROM1_AGAIN, |
421 | SSB_SPROM1_AGAIN_BG_SHIFT); | 421 | SSB_SPROM1_AGAIN_BG, |
422 | out->antenna_gain.a1 = r123_extract_antgain(out->revision, in, | 422 | SSB_SPROM1_AGAIN_BG_SHIFT); |
423 | SSB_SPROM1_AGAIN_A, | 423 | out->antenna_gain.a1 = sprom_extract_antgain(out->revision, in, |
424 | SSB_SPROM1_AGAIN_A_SHIFT); | 424 | SSB_SPROM1_AGAIN, |
425 | SSB_SPROM1_AGAIN_A, | ||
426 | SSB_SPROM1_AGAIN_A_SHIFT); | ||
425 | if (out->revision >= 2) | 427 | if (out->revision >= 2) |
426 | sprom_extract_r23(out, in); | 428 | sprom_extract_r23(out, in); |
427 | } | 429 | } |