ssb: make code for antenna gain extraction more generic
authorRafał Miłecki <zajec5@gmail.com>
Sat, 12 Jul 2014 14:42:09 +0000 (16:42 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 15 Jul 2014 20:00:18 +0000 (16:00 -0400)
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/ssb/pci.c

index a8dc95ebf2d605a8a774c6b05b9287dfaa3b7846..fc0bb4923ac32f4e497f65643b1eeb9f1c4224de 100644 (file)
@@ -326,13 +326,13 @@ err_ctlreg:
        return err;
 }
 
-static s8 r123_extract_antgain(u8 sprom_revision, const u16 *in,
-                              u16 mask, u16 shift)
+static s8 sprom_extract_antgain(u8 sprom_revision, const u16 *in, u16 offset,
+                               u16 mask, u16 shift)
 {
        u16 v;
        u8 gain;
 
-       v = in[SPOFF(SSB_SPROM1_AGAIN)];
+       v = in[SPOFF(offset)];
        gain = (v & mask) >> shift;
        if (gain == 0xFF)
                gain = 2; /* If unset use 2dBm */
@@ -416,12 +416,14 @@ static void sprom_extract_r123(struct ssb_sprom *out, const u16 *in)
        SPEX(alpha2[1], SSB_SPROM1_CCODE, 0x00ff, 0);
 
        /* Extract the antenna gain values. */
-       out->antenna_gain.a0 = r123_extract_antgain(out->revision, in,
-                                                   SSB_SPROM1_AGAIN_BG,
-                                                   SSB_SPROM1_AGAIN_BG_SHIFT);
-       out->antenna_gain.a1 = r123_extract_antgain(out->revision, in,
-                                                   SSB_SPROM1_AGAIN_A,
-                                                   SSB_SPROM1_AGAIN_A_SHIFT);
+       out->antenna_gain.a0 = sprom_extract_antgain(out->revision, in,
+                                                    SSB_SPROM1_AGAIN,
+                                                    SSB_SPROM1_AGAIN_BG,
+                                                    SSB_SPROM1_AGAIN_BG_SHIFT);
+       out->antenna_gain.a1 = sprom_extract_antgain(out->revision, in,
+                                                    SSB_SPROM1_AGAIN,
+                                                    SSB_SPROM1_AGAIN_A,
+                                                    SSB_SPROM1_AGAIN_A_SHIFT);
        if (out->revision >= 2)
                sprom_extract_r23(out, in);
 }