]> Pileus Git - ~andy/linux/blobdiff - drivers/net/wireless/b43/phy_n.c
b43: N-PHY: use enum for INTC override function argument
[~andy/linux] / drivers / net / wireless / b43 / phy_n.c
index 3c35382ee6c23ebfbaed8d1dcfdf33e804faec96..68a6dff63d60d25d41e0ace0a45e8769ad2b6864 100644 (file)
@@ -69,14 +69,27 @@ enum b43_nphy_rf_sequence {
        B43_RFSEQ_UPDATE_GAINU,
 };
 
-enum b43_nphy_rssi_type {
-       B43_NPHY_RSSI_X = 0,
-       B43_NPHY_RSSI_Y,
-       B43_NPHY_RSSI_Z,
-       B43_NPHY_RSSI_PWRDET,
-       B43_NPHY_RSSI_TSSI_I,
-       B43_NPHY_RSSI_TSSI_Q,
-       B43_NPHY_RSSI_TBD,
+enum n_intc_override {
+       N_INTC_OVERRIDE_OFF = 0,
+       N_INTC_OVERRIDE_TRSW = 1,
+       N_INTC_OVERRIDE_PA = 2,
+       N_INTC_OVERRIDE_EXT_LNA_PU = 3,
+       N_INTC_OVERRIDE_EXT_LNA_GAIN = 4,
+};
+
+enum n_rssi_type {
+       N_RSSI_W1 = 0,
+       N_RSSI_W2,
+       N_RSSI_NB,
+       N_RSSI_IQ,
+       N_RSSI_TSSI_2G,
+       N_RSSI_TSSI_5G,
+       N_RSSI_TBD,
+};
+
+enum n_rail_type {
+       N_RAIL_I = 0,
+       N_RAIL_Q = 1,
 };
 
 static inline bool b43_nphy_ipa(struct b43_wldev *dev)
@@ -94,7 +107,7 @@ static u8 b43_nphy_get_rx_core_state(struct b43_wldev *dev)
 }
 
 /**************************************************
- * RF (just without b43_nphy_rf_control_intc_override)
+ * RF (just without b43_nphy_rf_ctl_intc_override)
  **************************************************/
 
 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/ForceRFSeq */
@@ -244,14 +257,14 @@ static void b43_nphy_rf_control_override(struct b43_wldev *dev, u16 field,
 }
 
 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/RFCtrlIntcOverride */
-static void b43_nphy_rf_control_intc_override(struct b43_wldev *dev, u8 field,
-                                               u16 value, u8 core)
+static void b43_nphy_rf_ctl_intc_override(struct b43_wldev *dev,
+                                         enum n_intc_override intc_override,
+                                         u16 value, u8 core)
 {
        u8 i, j;
        u16 reg, tmp, val;
 
        B43_WARN_ON(dev->phy.rev < 3);
-       B43_WARN_ON(field > 4);
 
        for (i = 0; i < 2; i++) {
                if ((core == 1 && i == 1) || (core == 2 && !i))
@@ -261,12 +274,12 @@ static void b43_nphy_rf_control_intc_override(struct b43_wldev *dev, u8 field,
                        B43_NPHY_RFCTL_INTC1 : B43_NPHY_RFCTL_INTC2;
                b43_phy_set(dev, reg, 0x400);
 
-               switch (field) {
-               case 0:
+               switch (intc_override) {
+               case N_INTC_OVERRIDE_OFF:
                        b43_phy_write(dev, reg, 0);
                        b43_nphy_force_rf_sequence(dev, B43_RFSEQ_RESET2RX);
                        break;
-               case 1:
+               case N_INTC_OVERRIDE_TRSW:
                        if (!i) {
                                b43_phy_maskset(dev, B43_NPHY_RFCTL_INTC1,
                                                0xFC3F, (value << 6));
@@ -307,7 +320,7 @@ static void b43_nphy_rf_control_intc_override(struct b43_wldev *dev, u8 field,
                                                0xFFFE);
                        }
                        break;
-               case 2:
+               case N_INTC_OVERRIDE_PA:
                        if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ) {
                                tmp = 0x0020;
                                val = value << 5;
@@ -317,7 +330,7 @@ static void b43_nphy_rf_control_intc_override(struct b43_wldev *dev, u8 field,
                        }
                        b43_phy_maskset(dev, reg, ~tmp, val);
                        break;
-               case 3:
+               case N_INTC_OVERRIDE_EXT_LNA_PU:
                        if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ) {
                                tmp = 0x0001;
                                val = value;
@@ -327,7 +340,7 @@ static void b43_nphy_rf_control_intc_override(struct b43_wldev *dev, u8 field,
                        }
                        b43_phy_maskset(dev, reg, ~tmp, val);
                        break;
-               case 4:
+               case N_INTC_OVERRIDE_EXT_LNA_GAIN:
                        if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ) {
                                tmp = 0x0002;
                                val = value << 1;
@@ -1011,7 +1024,7 @@ static void b43_radio_init2055_post(struct b43_wldev *dev)
 
        if (sprom->revision < 4)
                workaround = (dev->dev->board_vendor != PCI_VENDOR_ID_BROADCOM
-                             && dev->dev->board_type == 0x46D
+                             && dev->dev->board_type == SSB_BOARD_CB2_4321
                              && dev->dev->board_rev >= 0x41);
        else
                workaround =
@@ -1207,8 +1220,9 @@ static void b43_nphy_run_samples(struct b43_wldev *dev, u16 samps, u16 loops,
 
 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/ScaleOffsetRssi */
 static void b43_nphy_scale_offset_rssi(struct b43_wldev *dev, u16 scale,
-                                       s8 offset, u8 core, u8 rail,
-                                       enum b43_nphy_rssi_type type)
+                                       s8 offset, u8 core,
+                                       enum n_rail_type rail,
+                                       enum n_rssi_type rssi_type)
 {
        u16 tmp;
        bool core1or5 = (core == 1) || (core == 5);
@@ -1217,63 +1231,74 @@ static void b43_nphy_scale_offset_rssi(struct b43_wldev *dev, u16 scale,
        offset = clamp_val(offset, -32, 31);
        tmp = ((scale & 0x3F) << 8) | (offset & 0x3F);
 
-       if (core1or5 && (rail == 0) && (type == B43_NPHY_RSSI_Z))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_0I_RSSI_Z, tmp);
-       if (core1or5 && (rail == 1) && (type == B43_NPHY_RSSI_Z))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_0Q_RSSI_Z, tmp);
-       if (core2or5 && (rail == 0) && (type == B43_NPHY_RSSI_Z))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_1I_RSSI_Z, tmp);
-       if (core2or5 && (rail == 1) && (type == B43_NPHY_RSSI_Z))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_1Q_RSSI_Z, tmp);
-
-       if (core1or5 && (rail == 0) && (type == B43_NPHY_RSSI_X))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_0I_RSSI_X, tmp);
-       if (core1or5 && (rail == 1) && (type == B43_NPHY_RSSI_X))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_0Q_RSSI_X, tmp);
-       if (core2or5 && (rail == 0) && (type == B43_NPHY_RSSI_X))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_1I_RSSI_X, tmp);
-       if (core2or5 && (rail == 1) && (type == B43_NPHY_RSSI_X))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_1Q_RSSI_X, tmp);
-
-       if (core1or5 && (rail == 0) && (type == B43_NPHY_RSSI_Y))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_0I_RSSI_Y, tmp);
-       if (core1or5 && (rail == 1) && (type == B43_NPHY_RSSI_Y))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_0Q_RSSI_Y, tmp);
-       if (core2or5 && (rail == 0) && (type == B43_NPHY_RSSI_Y))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_1I_RSSI_Y, tmp);
-       if (core2or5 && (rail == 1) && (type == B43_NPHY_RSSI_Y))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_1Q_RSSI_Y, tmp);
-
-       if (core1or5 && (rail == 0) && (type == B43_NPHY_RSSI_TBD))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_0I_TBD, tmp);
-       if (core1or5 && (rail == 1) && (type == B43_NPHY_RSSI_TBD))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_0Q_TBD, tmp);
-       if (core2or5 && (rail == 0) && (type == B43_NPHY_RSSI_TBD))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_1I_TBD, tmp);
-       if (core2or5 && (rail == 1) && (type == B43_NPHY_RSSI_TBD))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_1Q_TBD, tmp);
-
-       if (core1or5 && (rail == 0) && (type == B43_NPHY_RSSI_PWRDET))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_0I_PWRDET, tmp);
-       if (core1or5 && (rail == 1) && (type == B43_NPHY_RSSI_PWRDET))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_0Q_PWRDET, tmp);
-       if (core2or5 && (rail == 0) && (type == B43_NPHY_RSSI_PWRDET))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_1I_PWRDET, tmp);
-       if (core2or5 && (rail == 1) && (type == B43_NPHY_RSSI_PWRDET))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_1Q_PWRDET, tmp);
-
-       if (core1or5 && (type == B43_NPHY_RSSI_TSSI_I))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_0I_TSSI, tmp);
-       if (core2or5 && (type == B43_NPHY_RSSI_TSSI_I))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_1I_TSSI, tmp);
-
-       if (core1or5 && (type == B43_NPHY_RSSI_TSSI_Q))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_0Q_TSSI, tmp);
-       if (core2or5 && (type == B43_NPHY_RSSI_TSSI_Q))
-               b43_phy_write(dev, B43_NPHY_RSSIMC_1Q_TSSI, tmp);
+       switch (rssi_type) {
+       case N_RSSI_NB:
+               if (core1or5 && rail == N_RAIL_I)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_0I_RSSI_Z, tmp);
+               if (core1or5 && rail == N_RAIL_Q)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_0Q_RSSI_Z, tmp);
+               if (core2or5 && rail == N_RAIL_I)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_1I_RSSI_Z, tmp);
+               if (core2or5 && rail == N_RAIL_Q)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_1Q_RSSI_Z, tmp);
+               break;
+       case N_RSSI_W1:
+               if (core1or5 && rail == N_RAIL_I)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_0I_RSSI_X, tmp);
+               if (core1or5 && rail == N_RAIL_Q)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_0Q_RSSI_X, tmp);
+               if (core2or5 && rail == N_RAIL_I)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_1I_RSSI_X, tmp);
+               if (core2or5 && rail == N_RAIL_Q)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_1Q_RSSI_X, tmp);
+               break;
+       case N_RSSI_W2:
+               if (core1or5 && rail == N_RAIL_I)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_0I_RSSI_Y, tmp);
+               if (core1or5 && rail == N_RAIL_Q)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_0Q_RSSI_Y, tmp);
+               if (core2or5 && rail == N_RAIL_I)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_1I_RSSI_Y, tmp);
+               if (core2or5 && rail == N_RAIL_Q)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_1Q_RSSI_Y, tmp);
+               break;
+       case N_RSSI_TBD:
+               if (core1or5 && rail == N_RAIL_I)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_0I_TBD, tmp);
+               if (core1or5 && rail == N_RAIL_Q)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_0Q_TBD, tmp);
+               if (core2or5 && rail == N_RAIL_I)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_1I_TBD, tmp);
+               if (core2or5 && rail == N_RAIL_Q)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_1Q_TBD, tmp);
+               break;
+       case N_RSSI_IQ:
+               if (core1or5 && rail == N_RAIL_I)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_0I_PWRDET, tmp);
+               if (core1or5 && rail == N_RAIL_Q)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_0Q_PWRDET, tmp);
+               if (core2or5 && rail == N_RAIL_I)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_1I_PWRDET, tmp);
+               if (core2or5 && rail == N_RAIL_Q)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_1Q_PWRDET, tmp);
+               break;
+       case N_RSSI_TSSI_2G:
+               if (core1or5)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_0I_TSSI, tmp);
+               if (core2or5)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_1I_TSSI, tmp);
+               break;
+       case N_RSSI_TSSI_5G:
+               if (core1or5)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_0Q_TSSI, tmp);
+               if (core2or5)
+                       b43_phy_write(dev, B43_NPHY_RSSIMC_1Q_TSSI, tmp);
+               break;
+       }
 }
 
-static void b43_nphy_rev3_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
+static void b43_nphy_rev3_rssi_select(struct b43_wldev *dev, u8 code,
+                                     enum n_rssi_type rssi_type)
 {
        u8 i;
        u16 reg, val;
@@ -1296,7 +1321,9 @@ static void b43_nphy_rev3_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
                                B43_NPHY_AFECTL_OVER1 : B43_NPHY_AFECTL_OVER;
                        b43_phy_maskset(dev, reg, 0xFDFF, 0x0200);
 
-                       if (type < 3) {
+                       if (rssi_type == N_RSSI_W1 ||
+                           rssi_type == N_RSSI_W2 ||
+                           rssi_type == N_RSSI_NB) {
                                reg = (i == 0) ?
                                        B43_NPHY_AFECTL_C1 :
                                        B43_NPHY_AFECTL_C2;
@@ -1307,9 +1334,9 @@ static void b43_nphy_rev3_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
                                        B43_NPHY_RFCTL_LUT_TRSW_UP2;
                                b43_phy_maskset(dev, reg, 0xFFC3, 0);
 
-                               if (type == 0)
+                               if (rssi_type == N_RSSI_W1)
                                        val = (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ) ? 4 : 8;
-                               else if (type == 1)
+                               else if (rssi_type == N_RSSI_W2)
                                        val = 16;
                                else
                                        val = 32;
@@ -1320,9 +1347,9 @@ static void b43_nphy_rev3_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
                                        B43_NPHY_TXF_40CO_B32S1;
                                b43_phy_set(dev, reg, 0x0020);
                        } else {
-                               if (type == 6)
+                               if (rssi_type == N_RSSI_TBD)
                                        val = 0x0100;
-                               else if (type == 3)
+                               else if (rssi_type == N_RSSI_IQ)
                                        val = 0x0200;
                                else
                                        val = 0x0300;
@@ -1334,7 +1361,8 @@ static void b43_nphy_rev3_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
                                b43_phy_maskset(dev, reg, 0xFCFF, val);
                                b43_phy_maskset(dev, reg, 0xF3FF, val << 2);
 
-                               if (type != 3 && type != 6) {
+                               if (rssi_type != N_RSSI_IQ &&
+                                   rssi_type != N_RSSI_TBD) {
                                        enum ieee80211_band band =
                                                b43_current_band(dev->wl);
 
@@ -1356,33 +1384,43 @@ static void b43_nphy_rev3_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
        }
 }
 
-static void b43_nphy_rev2_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
+static void b43_nphy_rev2_rssi_select(struct b43_wldev *dev, u8 code,
+                                     enum n_rssi_type rssi_type)
 {
        u16 val;
+       bool rssi_w1_w2_nb = false;
 
-       if (type < 3)
+       switch (rssi_type) {
+       case N_RSSI_W1:
+       case N_RSSI_W2:
+       case N_RSSI_NB:
                val = 0;
-       else if (type == 6)
+               rssi_w1_w2_nb = true;
+               break;
+       case N_RSSI_TBD:
                val = 1;
-       else if (type == 3)
+               break;
+       case N_RSSI_IQ:
                val = 2;
-       else
+               break;
+       default:
                val = 3;
+       }
 
        val = (val << 12) | (val << 14);
        b43_phy_maskset(dev, B43_NPHY_AFECTL_C1, 0x0FFF, val);
        b43_phy_maskset(dev, B43_NPHY_AFECTL_C2, 0x0FFF, val);
 
-       if (type < 3) {
+       if (rssi_w1_w2_nb) {
                b43_phy_maskset(dev, B43_NPHY_RFCTL_RSSIO1, 0xFFCF,
-                               (type + 1) << 4);
+                               (rssi_type + 1) << 4);
                b43_phy_maskset(dev, B43_NPHY_RFCTL_RSSIO2, 0xFFCF,
-                               (type + 1) << 4);
+                               (rssi_type + 1) << 4);
        }
 
        if (code == 0) {
                b43_phy_mask(dev, B43_NPHY_AFECTL_OVER, ~0x3000);
-               if (type < 3) {
+               if (rssi_w1_w2_nb) {
                        b43_phy_mask(dev, B43_NPHY_RFCTL_CMD,
                                ~(B43_NPHY_RFCTL_CMD_RXEN |
                                  B43_NPHY_RFCTL_CMD_CORESEL));
@@ -1398,7 +1436,7 @@ static void b43_nphy_rev2_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
                }
        } else {
                b43_phy_set(dev, B43_NPHY_AFECTL_OVER, 0x3000);
-               if (type < 3) {
+               if (rssi_w1_w2_nb) {
                        b43_phy_maskset(dev, B43_NPHY_RFCTL_CMD,
                                ~(B43_NPHY_RFCTL_CMD_RXEN |
                                  B43_NPHY_RFCTL_CMD_CORESEL),
@@ -1418,7 +1456,8 @@ static void b43_nphy_rev2_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
 }
 
 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/RSSISel */
-static void b43_nphy_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
+static void b43_nphy_rssi_select(struct b43_wldev *dev, u8 code,
+                                enum n_rssi_type type)
 {
        if (dev->phy.rev >= 3)
                b43_nphy_rev3_rssi_select(dev, code, type);
@@ -1427,11 +1466,12 @@ static void b43_nphy_rssi_select(struct b43_wldev *dev, u8 code, u8 type)
 }
 
 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/SetRssi2055Vcm */
-static void b43_nphy_set_rssi_2055_vcm(struct b43_wldev *dev, u8 type, u8 *buf)
+static void b43_nphy_set_rssi_2055_vcm(struct b43_wldev *dev,
+                                      enum n_rssi_type rssi_type, u8 *buf)
 {
        int i;
        for (i = 0; i < 2; i++) {
-               if (type == 2) {
+               if (rssi_type == N_RSSI_NB) {
                        if (i == 0) {
                                b43_radio_maskset(dev, B2055_C1_B0NB_RSSIVCM,
                                                  0xFC, buf[0]);
@@ -1455,8 +1495,8 @@ static void b43_nphy_set_rssi_2055_vcm(struct b43_wldev *dev, u8 type, u8 *buf)
 }
 
 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/PollRssi */
-static int b43_nphy_poll_rssi(struct b43_wldev *dev, u8 type, s32 *buf,
-                               u8 nsamp)
+static int b43_nphy_poll_rssi(struct b43_wldev *dev, enum n_rssi_type rssi_type,
+                             s32 *buf, u8 nsamp)
 {
        int i;
        int out;
@@ -1487,7 +1527,7 @@ static int b43_nphy_poll_rssi(struct b43_wldev *dev, u8 type, s32 *buf,
                save_regs_phy[8] = 0;
        }
 
-       b43_nphy_rssi_select(dev, 5, type);
+       b43_nphy_rssi_select(dev, 5, rssi_type);
 
        if (dev->phy.rev < 2) {
                save_regs_phy[8] = b43_phy_read(dev, B43_NPHY_GPIO_SEL);
@@ -1564,7 +1604,7 @@ static void b43_nphy_rev3_rssi_cal(struct b43_wldev *dev)
        u16 clip_off[2] = { 0xFFFF, 0xFFFF };
 
        u8 vcm_final = 0;
-       s8 offset[4];
+       s32 offset[4];
        s32 results[8][4] = { };
        s32 results_min[4] = { };
        s32 poll_results[4] = { };
@@ -1574,7 +1614,7 @@ static void b43_nphy_rev3_rssi_cal(struct b43_wldev *dev)
 
        u16 r; /* routing */
        u8 rx_core_state;
-       u8 core, i, j;
+       int core, i, j, vcm;
 
        class = b43_nphy_classifier(dev, 0, 0);
        b43_nphy_classifier(dev, 7, 4);
@@ -1586,8 +1626,8 @@ static void b43_nphy_rev3_rssi_cal(struct b43_wldev *dev)
        for (i = 0; i < ARRAY_SIZE(regs_to_store); i++)
                saved_regs_phy[i] = b43_phy_read(dev, regs_to_store[i]);
 
-       b43_nphy_rf_control_intc_override(dev, 0, 0, 7);
-       b43_nphy_rf_control_intc_override(dev, 1, 1, 7);
+       b43_nphy_rf_ctl_intc_override(dev, N_INTC_OVERRIDE_OFF, 0, 7);
+       b43_nphy_rf_ctl_intc_override(dev, N_INTC_OVERRIDE_TRSW, 1, 7);
        b43_nphy_rf_control_override(dev, 0x1, 0, 0, false);
        b43_nphy_rf_control_override(dev, 0x2, 1, 0, false);
        b43_nphy_rf_control_override(dev, 0x80, 1, 0, false);
@@ -1606,35 +1646,44 @@ static void b43_nphy_rev3_rssi_cal(struct b43_wldev *dev)
                if (!(rx_core_state & (1 << core)))
                        continue;
                r = core ? B2056_RX1 : B2056_RX0;
-               b43_nphy_scale_offset_rssi(dev, 0, 0, core + 1, 0, 2);
-               b43_nphy_scale_offset_rssi(dev, 0, 0, core + 1, 1, 2);
-               for (i = 0; i < 8; i++) {
+               b43_nphy_scale_offset_rssi(dev, 0, 0, core + 1, N_RAIL_I,
+                                          N_RSSI_NB);
+               b43_nphy_scale_offset_rssi(dev, 0, 0, core + 1, N_RAIL_Q,
+                                          N_RSSI_NB);
+
+               /* Grab RSSI results for every possible VCM */
+               for (vcm = 0; vcm < 8; vcm++) {
                        b43_radio_maskset(dev, r | B2056_RX_RSSI_MISC, 0xE3,
-                                       i << 2);
-                       b43_nphy_poll_rssi(dev, 2, results[i], 8);
+                                       vcm << 2);
+                       b43_nphy_poll_rssi(dev, N_RSSI_NB, results[vcm], 8);
                }
+
+               /* Find out which VCM got the best results */
                for (i = 0; i < 4; i += 2) {
-                       s32 curr;
-                       s32 mind = 40;
+                       s32 currd;
+                       s32 mind = 0x100000;
                        s32 minpoll = 249;
                        u8 minvcm = 0;
                        if (2 * core != i)
                                continue;
-                       for (j = 0; j < 8; j++) {
-                               curr = results[j][i] * results[j][i] +
-                                       results[j][i + 1] * results[j][i];
-                               if (curr < mind) {
-                                       mind = curr;
-                                       minvcm = j;
+                       for (vcm = 0; vcm < 8; vcm++) {
+                               currd = results[vcm][i] * results[vcm][i] +
+                                       results[vcm][i + 1] * results[vcm][i];
+                               if (currd < mind) {
+                                       mind = currd;
+                                       minvcm = vcm;
                                }
-                               if (results[j][i] < minpoll)
-                                       minpoll = results[j][i];
+                               if (results[vcm][i] < minpoll)
+                                       minpoll = results[vcm][i];
                        }
                        vcm_final = minvcm;
                        results_min[i] = minpoll;
                }
+
+               /* Select the best VCM */
                b43_radio_maskset(dev, r | B2056_RX_RSSI_MISC, 0xE3,
                                  vcm_final << 2);
+
                for (i = 0; i < 4; i++) {
                        if (core != i / 2)
                                continue;
@@ -1647,16 +1696,19 @@ static void b43_nphy_rev3_rssi_cal(struct b43_wldev *dev)
                                offset[i] = -32;
                        b43_nphy_scale_offset_rssi(dev, 0, offset[i],
                                                   (i / 2 == 0) ? 1 : 2,
-                                                  (i % 2 == 0) ? 0 : 1,
-                                                  2);
+                                                  (i % 2 == 0) ? N_RAIL_I : N_RAIL_Q,
+                                                  N_RSSI_NB);
                }
        }
+
        for (core = 0; core < 2; core++) {
                if (!(rx_core_state & (1 << core)))
                        continue;
                for (i = 0; i < 2; i++) {
-                       b43_nphy_scale_offset_rssi(dev, 0, 0, core + 1, 0, i);
-                       b43_nphy_scale_offset_rssi(dev, 0, 0, core + 1, 1, i);
+                       b43_nphy_scale_offset_rssi(dev, 0, 0, core + 1,
+                                                  N_RAIL_I, i);
+                       b43_nphy_scale_offset_rssi(dev, 0, 0, core + 1,
+                                                  N_RAIL_Q, i);
                        b43_nphy_poll_rssi(dev, i, poll_results, 8);
                        for (j = 0; j < 4; j++) {
                                if (j / 2 == core) {
@@ -1723,16 +1775,16 @@ static void b43_nphy_rev3_rssi_cal(struct b43_wldev *dev)
 }
 
 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/RSSICal */
-static void b43_nphy_rev2_rssi_cal(struct b43_wldev *dev, u8 type)
+static void b43_nphy_rev2_rssi_cal(struct b43_wldev *dev, enum n_rssi_type type)
 {
-       int i, j;
+       int i, j, vcm;
        u8 state[4];
        u8 code, val;
        u16 class, override;
        u8 regs_save_radio[2];
        u16 regs_save_phy[2];
 
-       s8 offset[4];
+       s32 offset[4];
        u8 core;
        u8 rail;
 
@@ -1743,10 +1795,10 @@ static void b43_nphy_rev2_rssi_cal(struct b43_wldev *dev, u8 type)
        s32 results[4][4] = { };
        s32 miniq[4][2] = { };
 
-       if (type == 2) {
+       if (type == N_RSSI_NB) {
                code = 0;
                val = 6;
-       } else if (type 2) {
+       } else if (type == N_RSSI_W1 || type == N_RSSI_W2) {
                code = 25;
                val = 4;
        } else {
@@ -1782,46 +1834,46 @@ static void b43_nphy_rev2_rssi_cal(struct b43_wldev *dev, u8 type)
        state[3] = b43_radio_read16(dev, B2055_C2_SP_RSSI) & 0x07;
 
        b43_nphy_rssi_select(dev, 5, type);
-       b43_nphy_scale_offset_rssi(dev, 0, 0, 5, 0, type);
-       b43_nphy_scale_offset_rssi(dev, 0, 0, 5, 1, type);
+       b43_nphy_scale_offset_rssi(dev, 0, 0, 5, N_RAIL_I, type);
+       b43_nphy_scale_offset_rssi(dev, 0, 0, 5, N_RAIL_Q, type);
 
-       for (i = 0; i < 4; i++) {
+       for (vcm = 0; vcm < 4; vcm++) {
                u8 tmp[4];
                for (j = 0; j < 4; j++)
-                       tmp[j] = i;
-               if (type != 1)
+                       tmp[j] = vcm;
+               if (type != N_RSSI_W2)
                        b43_nphy_set_rssi_2055_vcm(dev, type, tmp);
-               b43_nphy_poll_rssi(dev, type, results[i], 8);
-               if (type 2)
+               b43_nphy_poll_rssi(dev, type, results[vcm], 8);
+               if (type == N_RSSI_W1 || type == N_RSSI_W2)
                        for (j = 0; j < 2; j++)
-                               miniq[i][j] = min(results[i][2 * j],
-                                               results[i][2 * j + 1]);
+                               miniq[vcm][j] = min(results[vcm][2 * j],
+                                                   results[vcm][2 * j + 1]);
        }
 
        for (i = 0; i < 4; i++) {
-               s32 mind = 40;
+               s32 mind = 0x100000;
                u8 minvcm = 0;
                s32 minpoll = 249;
-               s32 curr;
-               for (j = 0; j < 4; j++) {
-                       if (type == 2)
-                               curr = abs(results[j][i]);
+               s32 currd;
+               for (vcm = 0; vcm < 4; vcm++) {
+                       if (type == N_RSSI_NB)
+                               currd = abs(results[vcm][i] - code * 8);
                        else
-                               curr = abs(miniq[j][i / 2] - code * 8);
+                               currd = abs(miniq[vcm][i / 2] - code * 8);
 
-                       if (curr < mind) {
-                               mind = curr;
-                               minvcm = j;
+                       if (currd < mind) {
+                               mind = currd;
+                               minvcm = vcm;
                        }
 
-                       if (results[j][i] < minpoll)
-                               minpoll = results[j][i];
+                       if (results[vcm][i] < minpoll)
+                               minpoll = results[vcm][i];
                }
                results_min[i] = minpoll;
                vcm_final[i] = minvcm;
        }
 
-       if (type != 1)
+       if (type != N_RSSI_W2)
                b43_nphy_set_rssi_2055_vcm(dev, type, vcm_final);
 
        for (i = 0; i < 4; i++) {
@@ -1836,7 +1888,7 @@ static void b43_nphy_rev2_rssi_cal(struct b43_wldev *dev, u8 type)
                        offset[i] = code - 32;
 
                core = (i / 2) ? 2 : 1;
-               rail = (i % 2) ? 1 : 0;
+               rail = (i % 2) ? N_RAIL_Q : N_RAIL_I;
 
                b43_nphy_scale_offset_rssi(dev, 0, offset[i], core, rail,
                                                type);
@@ -1847,28 +1899,28 @@ static void b43_nphy_rev2_rssi_cal(struct b43_wldev *dev, u8 type)
 
        switch (state[2]) {
        case 1:
-               b43_nphy_rssi_select(dev, 1, 2);
+               b43_nphy_rssi_select(dev, 1, N_RSSI_NB);
                break;
        case 4:
-               b43_nphy_rssi_select(dev, 1, 0);
+               b43_nphy_rssi_select(dev, 1, N_RSSI_W1);
                break;
        case 2:
-               b43_nphy_rssi_select(dev, 1, 1);
+               b43_nphy_rssi_select(dev, 1, N_RSSI_W2);
                break;
        default:
-               b43_nphy_rssi_select(dev, 1, 1);
+               b43_nphy_rssi_select(dev, 1, N_RSSI_W2);
                break;
        }
 
        switch (state[3]) {
        case 1:
-               b43_nphy_rssi_select(dev, 2, 2);
+               b43_nphy_rssi_select(dev, 2, N_RSSI_NB);
                break;
        case 4:
-               b43_nphy_rssi_select(dev, 2, 0);
+               b43_nphy_rssi_select(dev, 2, N_RSSI_W1);
                break;
        default:
-               b43_nphy_rssi_select(dev, 2, 1);
+               b43_nphy_rssi_select(dev, 2, N_RSSI_W2);
                break;
        }
 
@@ -1895,9 +1947,9 @@ static void b43_nphy_rssi_cal(struct b43_wldev *dev)
        if (dev->phy.rev >= 3) {
                b43_nphy_rev3_rssi_cal(dev);
        } else {
-               b43_nphy_rev2_rssi_cal(dev, B43_NPHY_RSSI_Z);
-               b43_nphy_rev2_rssi_cal(dev, B43_NPHY_RSSI_X);
-               b43_nphy_rev2_rssi_cal(dev, B43_NPHY_RSSI_Y);
+               b43_nphy_rev2_rssi_cal(dev, N_RSSI_NB);
+               b43_nphy_rev2_rssi_cal(dev, N_RSSI_W1);
+               b43_nphy_rev2_rssi_cal(dev, N_RSSI_W2);
        }
 }
 
@@ -1930,10 +1982,8 @@ static void b43_nphy_gain_ctl_workarounds_rev3plus(struct b43_wldev *dev)
        b43_phy_set(dev, B43_NPHY_RXCTL, 0x0040);
 
        /* Set Clip 2 detect */
-       b43_phy_set(dev, B43_NPHY_C1_CGAINI,
-                       B43_NPHY_C1_CGAINI_CL2DETECT);
-       b43_phy_set(dev, B43_NPHY_C2_CGAINI,
-                       B43_NPHY_C2_CGAINI_CL2DETECT);
+       b43_phy_set(dev, B43_NPHY_C1_CGAINI, B43_NPHY_C1_CGAINI_CL2DETECT);
+       b43_phy_set(dev, B43_NPHY_C2_CGAINI, B43_NPHY_C2_CGAINI_CL2DETECT);
 
        b43_radio_write(dev, B2056_RX0 | B2056_RX_BIASPOLE_LNAG1_IDAC,
                        0x17);
@@ -1967,22 +2017,22 @@ static void b43_nphy_gain_ctl_workarounds_rev3plus(struct b43_wldev *dev)
        b43_ntab_write_bulk(dev, B43_NTAB8(2, 0x40), 6, lpf_bits);
        b43_ntab_write_bulk(dev, B43_NTAB8(3, 0x40), 6, lpf_bits);
 
-       b43_phy_write(dev, B43_NPHY_C1_INITGAIN, e->init_gain);
-       b43_phy_write(dev, 0x2A7, e->init_gain);
+       b43_phy_write(dev, B43_NPHY_REV3_C1_INITGAIN_A, e->init_gain);
+       b43_phy_write(dev, B43_NPHY_REV3_C2_INITGAIN_A, e->init_gain);
+
        b43_ntab_write_bulk(dev, B43_NTAB16(7, 0x106), 2,
                                e->rfseq_init);
 
-       /* TODO: check defines. Do not match variables names */
-       b43_phy_write(dev, B43_NPHY_C1_CLIP1_MEDGAIN, e->cliphi_gain);
-       b43_phy_write(dev, 0x2A9, e->cliphi_gain);
-       b43_phy_write(dev, B43_NPHY_C1_CLIP2_GAIN, e->clipmd_gain);
-       b43_phy_write(dev, 0x2AB, e->clipmd_gain);
-       b43_phy_write(dev, B43_NPHY_C2_CLIP1_HIGAIN, e->cliplo_gain);
-       b43_phy_write(dev, 0x2AD, e->cliplo_gain);
-
-       b43_phy_maskset(dev, 0x27D, 0xFF00, e->crsmin);
-       b43_phy_maskset(dev, 0x280, 0xFF00, e->crsminl);
-       b43_phy_maskset(dev, 0x283, 0xFF00, e->crsminu);
+       b43_phy_write(dev, B43_NPHY_REV3_C1_CLIP_HIGAIN_A, e->cliphi_gain);
+       b43_phy_write(dev, B43_NPHY_REV3_C2_CLIP_HIGAIN_A, e->cliphi_gain);
+       b43_phy_write(dev, B43_NPHY_REV3_C1_CLIP_MEDGAIN_A, e->clipmd_gain);
+       b43_phy_write(dev, B43_NPHY_REV3_C2_CLIP_MEDGAIN_A, e->clipmd_gain);
+       b43_phy_write(dev, B43_NPHY_REV3_C1_CLIP_LOGAIN_A, e->cliplo_gain);
+       b43_phy_write(dev, B43_NPHY_REV3_C2_CLIP_LOGAIN_A, e->cliplo_gain);
+
+       b43_phy_maskset(dev, B43_NPHY_CRSMINPOWER0, 0xFF00, e->crsmin);
+       b43_phy_maskset(dev, B43_NPHY_CRSMINPOWERL0, 0xFF00, e->crsminl);
+       b43_phy_maskset(dev, B43_NPHY_CRSMINPOWERU0, 0xFF00, e->crsminu);
        b43_phy_write(dev, B43_NPHY_C1_NBCLIPTHRES, e->nbclip);
        b43_phy_write(dev, B43_NPHY_C2_NBCLIPTHRES, e->nbclip);
        b43_phy_maskset(dev, B43_NPHY_C1_CLIPWBTHRES,
@@ -2164,8 +2214,8 @@ static void b43_nphy_workarounds_rev7plus(struct b43_wldev *dev)
                b43_phy_maskset(dev, B43_NPHY_FREQGAIN7, 0x80FF, 0x4000);
        }
        if (phy->rev <= 8) {
-               b43_phy_write(dev, 0x23F, 0x1B0);
-               b43_phy_write(dev, 0x240, 0x1B0);
+               b43_phy_write(dev, B43_NPHY_FORCEFRONT0, 0x1B0);
+               b43_phy_write(dev, B43_NPHY_FORCEFRONT1, 0x1B0);
        }
        if (phy->rev >= 8)
                b43_phy_maskset(dev, B43_NPHY_TXTAILCNT, ~0xFF, 0x72);
@@ -2182,8 +2232,8 @@ static void b43_nphy_workarounds_rev7plus(struct b43_wldev *dev)
                b43_nphy_set_rf_sequence(dev, 0, rx2tx_events_ipa,
                                rx2tx_delays_ipa, ARRAY_SIZE(rx2tx_events_ipa));
 
-       b43_phy_maskset(dev, 0x299, 0x3FFF, 0x4000);
-       b43_phy_maskset(dev, 0x29D, 0x3FFF, 0x4000);
+       b43_phy_maskset(dev, B43_NPHY_EPS_OVERRIDEI_0, 0x3FFF, 0x4000);
+       b43_phy_maskset(dev, B43_NPHY_EPS_OVERRIDEI_1, 0x3FFF, 0x4000);
 
        lpf_20 = b43_nphy_read_lpf_ctl(dev, 0x154);
        lpf_40 = b43_nphy_read_lpf_ctl(dev, 0x159);
@@ -2450,8 +2500,8 @@ static void b43_nphy_workarounds_rev3plus(struct b43_wldev *dev)
        u16 tmp16;
        u32 tmp32;
 
-       b43_phy_write(dev, 0x23f, 0x1f8);
-       b43_phy_write(dev, 0x240, 0x1f8);
+       b43_phy_write(dev, B43_NPHY_FORCEFRONT0, 0x1f8);
+       b43_phy_write(dev, B43_NPHY_FORCEFRONT1, 0x1f8);
 
        tmp32 = b43_ntab_read(dev, B43_NTAB32(30, 0));
        tmp32 &= 0xffffff;
@@ -2464,8 +2514,8 @@ static void b43_nphy_workarounds_rev3plus(struct b43_wldev *dev)
        b43_phy_write(dev, B43_NPHY_PHASETR_B1, 0x00CD);
        b43_phy_write(dev, B43_NPHY_PHASETR_B2, 0x0020);
 
-       b43_phy_write(dev, B43_NPHY_C2_CLIP1_MEDGAIN, 0x000C);
-       b43_phy_write(dev, 0x2AE, 0x000C);
+       b43_phy_write(dev, B43_NPHY_REV3_C1_CLIP_LOGAIN_B, 0x000C);
+       b43_phy_write(dev, B43_NPHY_REV3_C2_CLIP_LOGAIN_B, 0x000C);
 
        /* TX to RX */
        b43_nphy_set_rf_sequence(dev, 1, tx2rx_events, tx2rx_delays,
@@ -2490,7 +2540,7 @@ static void b43_nphy_workarounds_rev3plus(struct b43_wldev *dev)
                0x2 : 0x9C40;
        b43_phy_write(dev, B43_NPHY_ENDROP_TLEN, tmp16);
 
-       b43_phy_maskset(dev, 0x294, 0xF0FF, 0x0700);
+       b43_phy_maskset(dev, B43_NPHY_SGILTRNOFFSET, 0xF0FF, 0x0700);
 
        if (!dev->phy.is_40mhz) {
                b43_ntab_write(dev, B43_NTAB32(16, 3), 0x18D);
@@ -2542,18 +2592,18 @@ static void b43_nphy_workarounds_rev3plus(struct b43_wldev *dev)
        }
 
        /* Dropped probably-always-true condition */
-       b43_phy_write(dev, 0x224, 0x03eb);
-       b43_phy_write(dev, 0x225, 0x03eb);
-       b43_phy_write(dev, 0x226, 0x0341);
-       b43_phy_write(dev, 0x227, 0x0341);
-       b43_phy_write(dev, 0x228, 0x042b);
-       b43_phy_write(dev, 0x229, 0x042b);
-       b43_phy_write(dev, 0x22a, 0x0381);
-       b43_phy_write(dev, 0x22b, 0x0381);
-       b43_phy_write(dev, 0x22c, 0x042b);
-       b43_phy_write(dev, 0x22d, 0x042b);
-       b43_phy_write(dev, 0x22e, 0x0381);
-       b43_phy_write(dev, 0x22f, 0x0381);
+       b43_phy_write(dev, B43_NPHY_ED_CRS40ASSERTTHRESH0, 0x03eb);
+       b43_phy_write(dev, B43_NPHY_ED_CRS40ASSERTTHRESH1, 0x03eb);
+       b43_phy_write(dev, B43_NPHY_ED_CRS40DEASSERTTHRESH1, 0x0341);
+       b43_phy_write(dev, B43_NPHY_ED_CRS40DEASSERTTHRESH1, 0x0341);
+       b43_phy_write(dev, B43_NPHY_ED_CRS20LASSERTTHRESH0, 0x042b);
+       b43_phy_write(dev, B43_NPHY_ED_CRS20LASSERTTHRESH1, 0x042b);
+       b43_phy_write(dev, B43_NPHY_ED_CRS20LDEASSERTTHRESH0, 0x0381);
+       b43_phy_write(dev, B43_NPHY_ED_CRS20LDEASSERTTHRESH1, 0x0381);
+       b43_phy_write(dev, B43_NPHY_ED_CRS20UASSERTTHRESH0, 0x042b);
+       b43_phy_write(dev, B43_NPHY_ED_CRS20UASSERTTHRESH1, 0x042b);
+       b43_phy_write(dev, B43_NPHY_ED_CRS20UDEASSERTTHRESH0, 0x0381);
+       b43_phy_write(dev, B43_NPHY_ED_CRS20UDEASSERTTHRESH1, 0x0381);
 
        if (dev->phy.rev >= 6 && sprom->boardflags2_lo & B43_BFL2_SINGLEANT_CCK)
                ; /* TODO: 0x0080000000000000 HF */
@@ -2572,7 +2622,7 @@ static void b43_nphy_workarounds_rev1_2(struct b43_wldev *dev)
        u8 delays2[7] = { 0x8, 0x6, 0x2, 0x4, 0x4, 0x6, 0x1 };
 
        if (sprom->boardflags2_lo & B43_BFL2_SKWRKFEM_BRD ||
-           dev->dev->board_type == 0x8B) {
+           dev->dev->board_type == BCMA_BOARD_TYPE_BCM943224M93) {
                delays1[0] = 0x1;
                delays1[5] = 0x14;
        }
@@ -2789,10 +2839,6 @@ static void b43_nphy_iq_cal_gain_params(struct b43_wldev *dev, u16 core,
  * Tx and Rx
  **************************************************/
 
-void b43_nphy_set_rxantenna(struct b43_wldev *dev, int antenna)
-{//TODO
-}
-
 static void b43_nphy_op_adjust_txpower(struct b43_wldev *dev)
 {//TODO
 }
@@ -3131,9 +3177,9 @@ static void b43_nphy_tx_power_ctl_idle_tssi(struct b43_wldev *dev)
        b43_nphy_stop_playback(dev);
        b43_nphy_tx_tone(dev, 0xFA0, 0, false, false);
        udelay(20);
-       tmp = b43_nphy_poll_rssi(dev, 4, rssi, 1);
+       tmp = b43_nphy_poll_rssi(dev, N_RSSI_TSSI_2G, rssi, 1);
        b43_nphy_stop_playback(dev);
-       b43_nphy_rssi_select(dev, 0, 0);
+       b43_nphy_rssi_select(dev, 0, N_RSSI_W1);
 
        if (phy->rev >= 7)
                b43_nphy_rf_control_override_rev7(dev, 0x2000, 0, 3, true, 0);
@@ -3577,7 +3623,7 @@ static void b43_nphy_rx_cal_phy_setup(struct b43_wldev *dev, u8 core)
                b43_phy_set(dev, B43_NPHY_AFECTL_OVER, 0x0007);
        }
 
-       b43_nphy_rf_control_intc_override(dev, 2, 0, 3);
+       b43_nphy_rf_ctl_intc_override(dev, N_INTC_OVERRIDE_PA, 0, 3);
        b43_nphy_rf_control_override(dev, 8, 0, 3, false);
        b43_nphy_force_rf_sequence(dev, B43_RFSEQ_RX2TX);
 
@@ -3588,8 +3634,10 @@ static void b43_nphy_rx_cal_phy_setup(struct b43_wldev *dev, u8 core)
                rxval = 4;
                txval = 2;
        }
-       b43_nphy_rf_control_intc_override(dev, 1, rxval, (core + 1));
-       b43_nphy_rf_control_intc_override(dev, 1, txval, (2 - core));
+       b43_nphy_rf_ctl_intc_override(dev, N_INTC_OVERRIDE_TRSW, rxval,
+                                     core + 1);
+       b43_nphy_rf_ctl_intc_override(dev, N_INTC_OVERRIDE_TRSW, txval,
+                                     2 - core);
 }
 #endif
 
@@ -4148,9 +4196,9 @@ static void b43_nphy_tx_cal_phy_setup(struct b43_wldev *dev)
                regs[7] = b43_phy_read(dev, B43_NPHY_RFCTL_INTC1);
                regs[8] = b43_phy_read(dev, B43_NPHY_RFCTL_INTC2);
 
-               b43_nphy_rf_control_intc_override(dev, 2, 1, 3);
-               b43_nphy_rf_control_intc_override(dev, 1, 2, 1);
-               b43_nphy_rf_control_intc_override(dev, 1, 8, 2);
+               b43_nphy_rf_ctl_intc_override(dev, N_INTC_OVERRIDE_PA, 1, 3);
+               b43_nphy_rf_ctl_intc_override(dev, N_INTC_OVERRIDE_TRSW, 2, 1);
+               b43_nphy_rf_ctl_intc_override(dev, N_INTC_OVERRIDE_TRSW, 8, 2);
 
                regs[9] = b43_phy_read(dev, B43_NPHY_PAPD_EN0);
                regs[10] = b43_phy_read(dev, B43_NPHY_PAPD_EN1);
@@ -4892,7 +4940,7 @@ static void b43_nphy_superswitch_init(struct b43_wldev *dev, bool init)
 }
 
 /* http://bcm-v4.sipsolutions.net/802.11/PHY/Init/N */
-int b43_phy_initn(struct b43_wldev *dev)
+static int b43_phy_initn(struct b43_wldev *dev)
 {
        struct ssb_sprom *sprom = dev->dev->bus_sprom;
        struct b43_phy *phy = &dev->phy;
@@ -4962,7 +5010,7 @@ int b43_phy_initn(struct b43_wldev *dev)
 
        if (sprom->boardflags2_lo & B43_BFL2_SKWRKFEM_BRD ||
            (dev->dev->board_vendor == PCI_VENDOR_ID_APPLE &&
-            dev->dev->board_type == 0x8B))
+            dev->dev->board_type == BCMA_BOARD_TYPE_BCM943224M93))
                b43_phy_write(dev, B43_NPHY_TXREALFD, 0xA0);
        else
                b43_phy_write(dev, B43_NPHY_TXREALFD, 0xB8);
@@ -5104,63 +5152,11 @@ static void b43_chantab_phy_upload(struct b43_wldev *dev,
 /* http://bcm-v4.sipsolutions.net/802.11/PmuSpurAvoid */
 static void b43_nphy_pmu_spur_avoid(struct b43_wldev *dev, bool avoid)
 {
-       struct bcma_drv_cc __maybe_unused *cc;
-       u32 __maybe_unused pmu_ctl;
-
        switch (dev->dev->bus_type) {
 #ifdef CONFIG_B43_BCMA
        case B43_BUS_BCMA:
-               cc = &dev->dev->bdev->bus->drv_cc;
-               if (dev->dev->chip_id == 43224 || dev->dev->chip_id == 43225) {
-                       if (avoid) {
-                               bcma_chipco_pll_write(cc, 0x0, 0x11500010);
-                               bcma_chipco_pll_write(cc, 0x1, 0x000C0C06);
-                               bcma_chipco_pll_write(cc, 0x2, 0x0F600a08);
-                               bcma_chipco_pll_write(cc, 0x3, 0x00000000);
-                               bcma_chipco_pll_write(cc, 0x4, 0x2001E920);
-                               bcma_chipco_pll_write(cc, 0x5, 0x88888815);
-                       } else {
-                               bcma_chipco_pll_write(cc, 0x0, 0x11100010);
-                               bcma_chipco_pll_write(cc, 0x1, 0x000c0c06);
-                               bcma_chipco_pll_write(cc, 0x2, 0x03000a08);
-                               bcma_chipco_pll_write(cc, 0x3, 0x00000000);
-                               bcma_chipco_pll_write(cc, 0x4, 0x200005c0);
-                               bcma_chipco_pll_write(cc, 0x5, 0x88888815);
-                       }
-                       pmu_ctl = BCMA_CC_PMU_CTL_PLL_UPD;
-               } else if (dev->dev->chip_id == 0x4716) {
-                       if (avoid) {
-                               bcma_chipco_pll_write(cc, 0x0, 0x11500060);
-                               bcma_chipco_pll_write(cc, 0x1, 0x080C0C06);
-                               bcma_chipco_pll_write(cc, 0x2, 0x0F600000);
-                               bcma_chipco_pll_write(cc, 0x3, 0x00000000);
-                               bcma_chipco_pll_write(cc, 0x4, 0x2001E924);
-                               bcma_chipco_pll_write(cc, 0x5, 0x88888815);
-                       } else {
-                               bcma_chipco_pll_write(cc, 0x0, 0x11100060);
-                               bcma_chipco_pll_write(cc, 0x1, 0x080c0c06);
-                               bcma_chipco_pll_write(cc, 0x2, 0x03000000);
-                               bcma_chipco_pll_write(cc, 0x3, 0x00000000);
-                               bcma_chipco_pll_write(cc, 0x4, 0x200005c0);
-                               bcma_chipco_pll_write(cc, 0x5, 0x88888815);
-                       }
-                       pmu_ctl = BCMA_CC_PMU_CTL_PLL_UPD |
-                                 BCMA_CC_PMU_CTL_NOILPONW;
-               } else if (dev->dev->chip_id == 0x4322 ||
-                          dev->dev->chip_id == 0x4340 ||
-                          dev->dev->chip_id == 0x4341) {
-                       bcma_chipco_pll_write(cc, 0x0, 0x11100070);
-                       bcma_chipco_pll_write(cc, 0x1, 0x1014140a);
-                       bcma_chipco_pll_write(cc, 0x5, 0x88888854);
-                       if (avoid)
-                               bcma_chipco_pll_write(cc, 0x2, 0x05201828);
-                       else
-                               bcma_chipco_pll_write(cc, 0x2, 0x05001828);
-                       pmu_ctl = BCMA_CC_PMU_CTL_PLL_UPD;
-               } else {
-                       return;
-               }
-               bcma_cc_set32(cc, BCMA_CC_PMU_CTL, pmu_ctl);
+               bcma_pmu_spuravoid_pllupdate(&dev->dev->bdev->bus->drv_cc,
+                                            avoid);
                break;
 #endif
 #ifdef CONFIG_B43_SSB
@@ -5530,8 +5526,9 @@ static void b43_nphy_op_switch_analog(struct b43_wldev *dev, bool on)
 static int b43_nphy_op_switch_channel(struct b43_wldev *dev,
                                      unsigned int new_channel)
 {
-       struct ieee80211_channel *channel = dev->wl->hw->conf.channel;
-       enum nl80211_channel_type channel_type = dev->wl->hw->conf.channel_type;
+       struct ieee80211_channel *channel = dev->wl->hw->conf.chandef.chan;
+       enum nl80211_channel_type channel_type =
+               cfg80211_get_chandef_type(&dev->wl->hw->conf.chandef);
 
        if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) {
                if ((new_channel < 1) || (new_channel > 14))