This patch converts code to use the new b43_phy_maskset() API.

The semantic patch that makes this change is as follows:

// <smpl>
@@
expression dev, addr, mask, set;
@@

-b43_phy_write(dev, addr, (b43_phy_read(dev, addr) & mask) | set);
+b43_phy_maskset(dev, addr, mask, set);
// </smpl>

Signed-off-by: Michael Buesch <[email protected]>

---

Index: wireless-testing/drivers/net/wireless/b43/phy_a.c
===================================================================
--- wireless-testing.orig/drivers/net/wireless/b43/phy_a.c      2009-02-20 
19:05:38.000000000 +0100
+++ wireless-testing/drivers/net/wireless/b43/phy_a.c   2009-02-20 
19:06:09.000000000 +0100
@@ -223,14 +223,13 @@ static void b43_phy_ww(struct b43_wldev 
 {
        u16 b, curr_s, best_s = 0xFFFF;
        int i;
 
        b43_phy_mask(dev, B43_PHY_CRS0, ~B43_PHY_CRS0_EN);
        b43_phy_set(dev, B43_PHY_OFDM(0x1B), 0x1000);
-       b43_phy_write(dev, B43_PHY_OFDM(0x82),
-               (b43_phy_read(dev, B43_PHY_OFDM(0x82)) & 0xF0FF) | 0x0300);
+       b43_phy_maskset(dev, B43_PHY_OFDM(0x82), 0xF0FF, 0x0300);
        b43_radio_write16(dev, 0x0009,
                b43_radio_read16(dev, 0x0009) | 0x0080);
        b43_radio_write16(dev, 0x0012,
                (b43_radio_read16(dev, 0x0012) & 0xFFFC) | 0x0002);
        b43_wa_initgains(dev);
        b43_phy_write(dev, B43_PHY_OFDM(0xBA), 0x3ED5);
@@ -256,20 +255,16 @@ static void b43_phy_ww(struct b43_wldev 
        b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1_R1, 0, 0xFFEC);
        b43_phy_write(dev, B43_PHY_OFDM(0xB7), 0x1E80);
        b43_phy_write(dev, B43_PHY_OFDM(0xB6), 0x1C00);
        b43_phy_write(dev, B43_PHY_OFDM(0xB5), 0x0EC0);
        b43_phy_write(dev, B43_PHY_OFDM(0xB2), 0x00C0);
        b43_phy_write(dev, B43_PHY_OFDM(0xB9), 0x1FFF);
-       b43_phy_write(dev, B43_PHY_OFDM(0xBB),
-               (b43_phy_read(dev, B43_PHY_OFDM(0xBB)) & 0xF000) | 0x0053);
-       b43_phy_write(dev, B43_PHY_OFDM61,
-               (b43_phy_read(dev, B43_PHY_OFDM61) & 0xFE1F) | 0x0120);
-       b43_phy_write(dev, B43_PHY_OFDM(0x13),
-               (b43_phy_read(dev, B43_PHY_OFDM(0x13)) & 0x0FFF) | 0x3000);
-       b43_phy_write(dev, B43_PHY_OFDM(0x14),
-               (b43_phy_read(dev, B43_PHY_OFDM(0x14)) & 0x0FFF) | 0x3000);
+       b43_phy_maskset(dev, B43_PHY_OFDM(0xBB), 0xF000, 0x0053);
+       b43_phy_maskset(dev, B43_PHY_OFDM61, 0xFE1F, 0x0120);
+       b43_phy_maskset(dev, B43_PHY_OFDM(0x13), 0x0FFF, 0x3000);
+       b43_phy_maskset(dev, B43_PHY_OFDM(0x14), 0x0FFF, 0x3000);
        b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1, 6, 0x0017);
        for (i = 0; i < 6; i++)
                b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1, i, 0x000F);
        b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1, 0x0D, 0x000E);
        b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1, 0x0E, 0x0011);
        b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1, 0x0F, 0x0013);
@@ -328,15 +323,13 @@ void b43_phy_inita(struct b43_wldev *dev
 
                //TODO: radar detection
        }
 
        if ((phy->type == B43_PHYTYPE_G) &&
            (dev->dev->bus->sprom.boardflags_lo & B43_BFL_PACTRL)) {
-               b43_phy_write(dev, B43_PHY_OFDM(0x6E),
-                                 (b43_phy_read(dev, B43_PHY_OFDM(0x6E))
-                                  & 0xE000) | 0x3CF);
+               b43_phy_maskset(dev, B43_PHY_OFDM(0x6E), 0xE000, 0x3CF);
        }
 }
 
 /* Initialise the TSSI->dBm lookup table */
 static int b43_aphy_init_tssi2dbm_table(struct b43_wldev *dev)
 {
Index: wireless-testing/drivers/net/wireless/b43/phy_g.c
===================================================================
--- wireless-testing.orig/drivers/net/wireless/b43/phy_g.c      2009-02-20 
19:05:38.000000000 +0100
+++ wireless-testing/drivers/net/wireless/b43/phy_g.c   2009-02-20 
19:06:09.000000000 +0100
@@ -201,19 +201,15 @@ void b43_gphy_set_baseband_attenuation(s
 
        if (phy->analog == 0) {
                b43_write16(dev, B43_MMIO_PHY0, (b43_read16(dev, B43_MMIO_PHY0)
                                                 & 0xFFF0) |
                            baseband_attenuation);
        } else if (phy->analog > 1) {
-               b43_phy_write(dev, B43_PHY_DACCTL,
-                             (b43_phy_read(dev, B43_PHY_DACCTL)
-                              & 0xFFC3) | (baseband_attenuation << 2));
+               b43_phy_maskset(dev, B43_PHY_DACCTL, 0xFFC3, 
(baseband_attenuation << 2));
        } else {
-               b43_phy_write(dev, B43_PHY_DACCTL,
-                             (b43_phy_read(dev, B43_PHY_DACCTL)
-                              & 0xFF87) | (baseband_attenuation << 3));
+               b43_phy_maskset(dev, B43_PHY_DACCTL, 0xFF87, 
(baseband_attenuation << 3));
        }
 }
 
 /* Adjust the transmission power output (G-PHY) */
 static void b43_set_txpower_g(struct b43_wldev *dev,
                              const struct b43_bbatt *bbatt,
@@ -334,18 +330,15 @@ static void b43_set_all_gains(struct b43
 
        for (i = start; i < end; i++)
                b43_ofdmtab_write16(dev, table, i, second);
 
        if (third != -1) {
                tmp = ((u16) third << 14) | ((u16) third << 6);
-               b43_phy_write(dev, 0x04A0,
-                             (b43_phy_read(dev, 0x04A0) & 0xBFBF) | tmp);
-               b43_phy_write(dev, 0x04A1,
-                             (b43_phy_read(dev, 0x04A1) & 0xBFBF) | tmp);
-               b43_phy_write(dev, 0x04A2,
-                             (b43_phy_read(dev, 0x04A2) & 0xBFBF) | tmp);
+               b43_phy_maskset(dev, 0x04A0, 0xBFBF, tmp);
+               b43_phy_maskset(dev, 0x04A1, 0xBFBF, tmp);
+               b43_phy_maskset(dev, 0x04A2, 0xBFBF, tmp);
        }
        b43_dummy_transmission(dev);
 }
 
 static void b43_set_original_gains(struct b43_wldev *dev)
 {
@@ -370,18 +363,15 @@ static void b43_set_original_gains(struc
                b43_ofdmtab_write16(dev, table, i, tmp);
        }
 
        for (i = start; i < end; i++)
                b43_ofdmtab_write16(dev, table, i, i - start);
 
-       b43_phy_write(dev, 0x04A0,
-                     (b43_phy_read(dev, 0x04A0) & 0xBFBF) | 0x4040);
-       b43_phy_write(dev, 0x04A1,
-                     (b43_phy_read(dev, 0x04A1) & 0xBFBF) | 0x4040);
-       b43_phy_write(dev, 0x04A2,
-                     (b43_phy_read(dev, 0x04A2) & 0xBFBF) | 0x4000);
+       b43_phy_maskset(dev, 0x04A0, 0xBFBF, 0x4040);
+       b43_phy_maskset(dev, 0x04A1, 0xBFBF, 0x4040);
+       b43_phy_maskset(dev, 0x04A2, 0xBFBF, 0x4000);
        b43_dummy_transmission(dev);
 }
 
 /* http://bcm-specs.sipsolutions.net/NRSSILookupTable */
 static void b43_nrssi_hw_write(struct b43_wldev *dev, u16 offset, s16 val)
 {
@@ -452,17 +442,15 @@ static void b43_calc_nrssi_offset(struct
        backup[8] = b43_phy_read(dev, 0x000A);
        backup[9] = b43_phy_read(dev, 0x0003);
        backup[10] = b43_radio_read16(dev, 0x007A);
        backup[11] = b43_radio_read16(dev, 0x0043);
 
        b43_phy_mask(dev, 0x0429, 0x7FFF);
-       b43_phy_write(dev, 0x0001,
-                     (b43_phy_read(dev, 0x0001) & 0x3FFF) | 0x4000);
+       b43_phy_maskset(dev, 0x0001, 0x3FFF, 0x4000);
        b43_phy_set(dev, 0x0811, 0x000C);
-       b43_phy_write(dev, 0x0812,
-                     (b43_phy_read(dev, 0x0812) & 0xFFF3) | 0x0004);
+       b43_phy_maskset(dev, 0x0812, 0xFFF3, 0x0004);
        b43_phy_mask(dev, 0x0802, ~(0x1 | 0x2));
        if (phy->rev >= 6) {
                backup[12] = b43_phy_read(dev, 0x002E);
                backup[13] = b43_phy_read(dev, 0x002F);
                backup[14] = b43_phy_read(dev, 0x080F);
                backup[15] = b43_phy_read(dev, 0x0810);
@@ -520,14 +508,13 @@ static void b43_calc_nrssi_offset(struct
                        b43_phy_set(dev, 0x000A, 0x2000);
                }
                if (phy->rev != 1) {    /* Not in specs, but needed to prevent 
PPC machine check */
                        b43_phy_set(dev, 0x0814, 0x0004);
                        b43_phy_mask(dev, 0x0815, 0xFFFB);
                }
-               b43_phy_write(dev, 0x0003, (b43_phy_read(dev, 0x0003) & 0xFF9F)
-                             | 0x0040);
+               b43_phy_maskset(dev, 0x0003, 0xFF9F, 0x0040);
                b43_radio_write16(dev, 0x007A,
                                  b43_radio_read16(dev, 0x007A) | 0x000F);
                b43_set_all_gains(dev, 3, 0, 1);
                b43_radio_write16(dev, 0x0043, (b43_radio_read16(dev, 0x0043)
                                                & 0x00F0) | 0x000F);
                udelay(30);
@@ -641,47 +628,38 @@ static void b43_calc_nrssi_slope(struct 
        b43_radio_write16(dev, 0x007A,
                          b43_radio_read16(dev, 0x007A) | 0x0070);
        b43_set_all_gains(dev, 0, 8, 0);
        b43_radio_write16(dev, 0x007A,
                          b43_radio_read16(dev, 0x007A) & 0x00F7);
        if (phy->rev >= 2) {
-               b43_phy_write(dev, 0x0811,
-                             (b43_phy_read(dev, 0x0811) & 0xFFCF) |
-                             0x0030);
-               b43_phy_write(dev, 0x0812,
-                             (b43_phy_read(dev, 0x0812) & 0xFFCF) |
-                             0x0010);
+               b43_phy_maskset(dev, 0x0811, 0xFFCF, 0x0030);
+               b43_phy_maskset(dev, 0x0812, 0xFFCF, 0x0010);
        }
        b43_radio_write16(dev, 0x007A,
                          b43_radio_read16(dev, 0x007A) | 0x0080);
        udelay(20);
 
        nrssi0 = (s16) ((b43_phy_read(dev, 0x047F) >> 8) & 0x003F);
        if (nrssi0 >= 0x0020)
                nrssi0 -= 0x0040;
 
        b43_radio_write16(dev, 0x007A,
                          b43_radio_read16(dev, 0x007A) & 0x007F);
        if (phy->rev >= 2) {
-               b43_phy_write(dev, 0x0003, (b43_phy_read(dev, 0x0003)
-                                           & 0xFF9F) | 0x0040);
+               b43_phy_maskset(dev, 0x0003, 0xFF9F, 0x0040);
        }
 
        b43_write16(dev, B43_MMIO_CHANNEL_EXT,
                    b43_read16(dev, B43_MMIO_CHANNEL_EXT)
                    | 0x2000);
        b43_radio_write16(dev, 0x007A,
                          b43_radio_read16(dev, 0x007A) | 0x000F);
        b43_phy_write(dev, 0x0015, 0xF330);
        if (phy->rev >= 2) {
-               b43_phy_write(dev, 0x0812,
-                             (b43_phy_read(dev, 0x0812) & 0xFFCF) |
-                             0x0020);
-               b43_phy_write(dev, 0x0811,
-                             (b43_phy_read(dev, 0x0811) & 0xFFCF) |
-                             0x0020);
+               b43_phy_maskset(dev, 0x0812, 0xFFCF, 0x0020);
+               b43_phy_maskset(dev, 0x0811, 0xFFCF, 0x0020);
        }
 
        b43_set_all_gains(dev, 3, 0, 1);
        if (phy->radio_rev == 8) {
                b43_radio_write16(dev, 0x0043, 0x001F);
        } else {
@@ -753,19 +731,15 @@ static void b43_calc_nrssi_threshold(str
        if (!phy->gmode ||
            !(dev->dev->bus->sprom.boardflags_lo & B43_BFL_RSSI)) {
                tmp16 = b43_nrssi_hw_read(dev, 0x20);
                if (tmp16 >= 0x20)
                        tmp16 -= 0x40;
                if (tmp16 < 3) {
-                       b43_phy_write(dev, 0x048A,
-                                     (b43_phy_read(dev, 0x048A)
-                                      & 0xF000) | 0x09EB);
+                       b43_phy_maskset(dev, 0x048A, 0xF000, 0x09EB);
                } else {
-                       b43_phy_write(dev, 0x048A,
-                                     (b43_phy_read(dev, 0x048A)
-                                      & 0xF000) | 0x0AED);
+                       b43_phy_maskset(dev, 0x048A, 0xF000, 0x0AED);
                }
        } else {
                if (gphy->interfmode == B43_INTERFMODE_NONWLAN) {
                        a = 0xE;
                        b = 0xA;
                } else if (!gphy->aci_wlan_automatic && gphy->aci_enable) {
@@ -904,26 +878,21 @@ b43_radio_interference_mitigation_enable
                b43_phy_write(dev, 0x0406, 0x7E28);
 
                b43_phy_set(dev, 0x042B, 0x0800);
                b43_phy_set(dev, B43_PHY_RADIO_BITFIELD, 0x1000);
 
                phy_stacksave(0x04A0);
-               b43_phy_write(dev, 0x04A0,
-                             (b43_phy_read(dev, 0x04A0) & 0xC0C0) | 0x0008);
+               b43_phy_maskset(dev, 0x04A0, 0xC0C0, 0x0008);
                phy_stacksave(0x04A1);
-               b43_phy_write(dev, 0x04A1,
-                             (b43_phy_read(dev, 0x04A1) & 0xC0C0) | 0x0605);
+               b43_phy_maskset(dev, 0x04A1, 0xC0C0, 0x0605);
                phy_stacksave(0x04A2);
-               b43_phy_write(dev, 0x04A2,
-                             (b43_phy_read(dev, 0x04A2) & 0xC0C0) | 0x0204);
+               b43_phy_maskset(dev, 0x04A2, 0xC0C0, 0x0204);
                phy_stacksave(0x04A8);
-               b43_phy_write(dev, 0x04A8,
-                             (b43_phy_read(dev, 0x04A8) & 0xC0C0) | 0x0803);
+               b43_phy_maskset(dev, 0x04A8, 0xC0C0, 0x0803);
                phy_stacksave(0x04AB);
-               b43_phy_write(dev, 0x04AB,
-                             (b43_phy_read(dev, 0x04AB) & 0xC0C0) | 0x0605);
+               b43_phy_maskset(dev, 0x04AB, 0xC0C0, 0x0605);
 
                phy_stacksave(0x04A7);
                b43_phy_write(dev, 0x04A7, 0x0002);
                phy_stacksave(0x04A3);
                b43_phy_write(dev, 0x04A3, 0x287A);
                phy_stacksave(0x04A9);
@@ -974,88 +943,65 @@ b43_radio_interference_mitigation_enable
                        ofdmtab_stacksave(0x1A00, 0x3);
                }
                phy_stacksave(0x042B);
                phy_stacksave(0x048C);
 
                b43_phy_mask(dev, B43_PHY_RADIO_BITFIELD, ~0x1000);
-               b43_phy_write(dev, B43_PHY_G_CRS,
-                             (b43_phy_read(dev, B43_PHY_G_CRS)
-                              & 0xFFFC) | 0x0002);
+               b43_phy_maskset(dev, B43_PHY_G_CRS, 0xFFFC, 0x0002);
 
                b43_phy_write(dev, 0x0033, 0x0800);
                b43_phy_write(dev, 0x04A3, 0x2027);
                b43_phy_write(dev, 0x04A9, 0x1CA8);
                b43_phy_write(dev, 0x0493, 0x287A);
                b43_phy_write(dev, 0x04AA, 0x1CA8);
                b43_phy_write(dev, 0x04AC, 0x287A);
 
-               b43_phy_write(dev, 0x04A0, (b43_phy_read(dev, 0x04A0)
-                                           & 0xFFC0) | 0x001A);
+               b43_phy_maskset(dev, 0x04A0, 0xFFC0, 0x001A);
                b43_phy_write(dev, 0x04A7, 0x000D);
 
                if (phy->rev < 2) {
                        b43_phy_write(dev, 0x0406, 0xFF0D);
                } else if (phy->rev == 2) {
                        b43_phy_write(dev, 0x04C0, 0xFFFF);
                        b43_phy_write(dev, 0x04C1, 0x00A9);
                } else {
                        b43_phy_write(dev, 0x04C0, 0x00C1);
                        b43_phy_write(dev, 0x04C1, 0x0059);
                }
 
-               b43_phy_write(dev, 0x04A1, (b43_phy_read(dev, 0x04A1)
-                                           & 0xC0FF) | 0x1800);
-               b43_phy_write(dev, 0x04A1, (b43_phy_read(dev, 0x04A1)
-                                           & 0xFFC0) | 0x0015);
-               b43_phy_write(dev, 0x04A8, (b43_phy_read(dev, 0x04A8)
-                                           & 0xCFFF) | 0x1000);
-               b43_phy_write(dev, 0x04A8, (b43_phy_read(dev, 0x04A8)
-                                           & 0xF0FF) | 0x0A00);
-               b43_phy_write(dev, 0x04AB, (b43_phy_read(dev, 0x04AB)
-                                           & 0xCFFF) | 0x1000);
-               b43_phy_write(dev, 0x04AB, (b43_phy_read(dev, 0x04AB)
-                                           & 0xF0FF) | 0x0800);
-               b43_phy_write(dev, 0x04AB, (b43_phy_read(dev, 0x04AB)
-                                           & 0xFFCF) | 0x0010);
-               b43_phy_write(dev, 0x04AB, (b43_phy_read(dev, 0x04AB)
-                                           & 0xFFF0) | 0x0005);
-               b43_phy_write(dev, 0x04A8, (b43_phy_read(dev, 0x04A8)
-                                           & 0xFFCF) | 0x0010);
-               b43_phy_write(dev, 0x04A8, (b43_phy_read(dev, 0x04A8)
-                                           & 0xFFF0) | 0x0006);
-               b43_phy_write(dev, 0x04A2, (b43_phy_read(dev, 0x04A2)
-                                           & 0xF0FF) | 0x0800);
-               b43_phy_write(dev, 0x04A0, (b43_phy_read(dev, 0x04A0)
-                                           & 0xF0FF) | 0x0500);
-               b43_phy_write(dev, 0x04A2, (b43_phy_read(dev, 0x04A2)
-                                           & 0xFFF0) | 0x000B);
+               b43_phy_maskset(dev, 0x04A1, 0xC0FF, 0x1800);
+               b43_phy_maskset(dev, 0x04A1, 0xFFC0, 0x0015);
+               b43_phy_maskset(dev, 0x04A8, 0xCFFF, 0x1000);
+               b43_phy_maskset(dev, 0x04A8, 0xF0FF, 0x0A00);
+               b43_phy_maskset(dev, 0x04AB, 0xCFFF, 0x1000);
+               b43_phy_maskset(dev, 0x04AB, 0xF0FF, 0x0800);
+               b43_phy_maskset(dev, 0x04AB, 0xFFCF, 0x0010);
+               b43_phy_maskset(dev, 0x04AB, 0xFFF0, 0x0005);
+               b43_phy_maskset(dev, 0x04A8, 0xFFCF, 0x0010);
+               b43_phy_maskset(dev, 0x04A8, 0xFFF0, 0x0006);
+               b43_phy_maskset(dev, 0x04A2, 0xF0FF, 0x0800);
+               b43_phy_maskset(dev, 0x04A0, 0xF0FF, 0x0500);
+               b43_phy_maskset(dev, 0x04A2, 0xFFF0, 0x000B);
 
                if (phy->rev >= 3) {
                        b43_phy_mask(dev, 0x048A, ~0x8000);
-                       b43_phy_write(dev, 0x0415, (b43_phy_read(dev, 0x0415)
-                                                   & 0x8000) | 0x36D8);
-                       b43_phy_write(dev, 0x0416, (b43_phy_read(dev, 0x0416)
-                                                   & 0x8000) | 0x36D8);
-                       b43_phy_write(dev, 0x0417, (b43_phy_read(dev, 0x0417)
-                                                   & 0xFE00) | 0x016D);
+                       b43_phy_maskset(dev, 0x0415, 0x8000, 0x36D8);
+                       b43_phy_maskset(dev, 0x0416, 0x8000, 0x36D8);
+                       b43_phy_maskset(dev, 0x0417, 0xFE00, 0x016D);
                } else {
                        b43_phy_set(dev, 0x048A, 0x1000);
-                       b43_phy_write(dev, 0x048A, (b43_phy_read(dev, 0x048A)
-                                                   & 0x9FFF) | 0x2000);
+                       b43_phy_maskset(dev, 0x048A, 0x9FFF, 0x2000);
                        b43_hf_write(dev, b43_hf_read(dev) | B43_HF_ACIW);
                }
                if (phy->rev >= 2) {
                        b43_phy_set(dev, 0x042B, 0x0800);
                }
-               b43_phy_write(dev, 0x048C, (b43_phy_read(dev, 0x048C)
-                                           & 0xF0FF) | 0x0200);
+               b43_phy_maskset(dev, 0x048C, 0xF0FF, 0x0200);
                if (phy->rev == 2) {
-                       b43_phy_write(dev, 0x04AE, (b43_phy_read(dev, 0x04AE)
-                                                   & 0xFF00) | 0x007F);
-                       b43_phy_write(dev, 0x04AD, (b43_phy_read(dev, 0x04AD)
-                                                   & 0x00FF) | 0x1300);
+                       b43_phy_maskset(dev, 0x04AE, 0xFF00, 0x007F);
+                       b43_phy_maskset(dev, 0x04AD, 0x00FF, 0x1300);
                } else if (phy->rev >= 6) {
                        b43_ofdmtab_write16(dev, 0x1A00, 0x3, 0x007F);
                        b43_ofdmtab_write16(dev, 0x1A00, 0x2, 0x007F);
                        b43_phy_mask(dev, 0x04AD, 0x00FF);
                }
                b43_calc_nrssi_slope(dev);
@@ -1383,15 +1329,13 @@ static u16 b43_radio_init2050(struct b43
        sav.reg_3F4 = b43_read16(dev, 0x3F4);
 
        if (phy->analog == 0) {
                b43_write16(dev, 0x03E6, 0x0122);
        } else {
                if (phy->analog >= 2) {
-                       b43_phy_write(dev, B43_PHY_CCK(0x03),
-                                     (b43_phy_read(dev, B43_PHY_CCK(0x03))
-                                      & 0xFFBF) | 0x40);
+                       b43_phy_maskset(dev, B43_PHY_CCK(0x03), 0xFFBF, 0x40);
                }
                b43_write16(dev, B43_MMIO_CHANNEL_EXT,
                            (b43_read16(dev, B43_MMIO_CHANNEL_EXT) | 0x2000));
        }
 
        rcc = b43_radio_core_calibration_value(dev);
@@ -1575,14 +1519,13 @@ static void b43_phy_initb5(struct b43_wl
                value = 0x2120;
                for (offset = 0x00A8; offset < 0x00C7; offset++) {
                        b43_phy_write(dev, offset, value);
                        value += 0x202;
                }
        }
-       b43_phy_write(dev, 0x0035, (b43_phy_read(dev, 0x0035) & 0xF0FF)
-                     | 0x0700);
+       b43_phy_maskset(dev, 0x0035, 0xF0FF, 0x0700);
        if (phy->radio_ver == 0x2050)
                b43_phy_write(dev, 0x0038, 0x0667);
 
        if (phy->gmode || phy->rev >= 2) {
                if (phy->radio_ver == 0x2050) {
                        b43_radio_write16(dev, 0x007A,
@@ -1596,18 +1539,15 @@ static void b43_phy_initb5(struct b43_wl
 
                b43_phy_set(dev, 0x0802, 0x0100);
                b43_phy_set(dev, 0x042B, 0x2000);
 
                b43_phy_write(dev, 0x001C, 0x186A);
 
-               b43_phy_write(dev, 0x0013,
-                             (b43_phy_read(dev, 0x0013) & 0x00FF) | 0x1900);
-               b43_phy_write(dev, 0x0035,
-                             (b43_phy_read(dev, 0x0035) & 0xFFC0) | 0x0064);
-               b43_phy_write(dev, 0x005D,
-                             (b43_phy_read(dev, 0x005D) & 0xFF80) | 0x000A);
+               b43_phy_maskset(dev, 0x0013, 0x00FF, 0x1900);
+               b43_phy_maskset(dev, 0x0035, 0xFFC0, 0x0064);
+               b43_phy_maskset(dev, 0x005D, 0xFF80, 0x000A);
        }
 
        if (dev->bad_frames_preempt) {
                b43_phy_set(dev, B43_PHY_RADIO_BITFIELD, (1 << 11));
        }
 
@@ -1766,24 +1706,22 @@ static void b43_phy_initb6(struct b43_wl
                b43_phy_write(dev, 0x2A, 0x88C2);
        else
                b43_phy_write(dev, 0x2A, 0x8AC0);
        b43_phy_write(dev, 0x0038, 0x0668);
        b43_set_txpower_g(dev, &gphy->bbatt, &gphy->rfatt, gphy->tx_control);
        if (phy->radio_rev <= 5) {
-               b43_phy_write(dev, 0x5D, (b43_phy_read(dev, 0x5D)
-                                         & 0xFF80) | 0x0003);
+               b43_phy_maskset(dev, 0x5D, 0xFF80, 0x0003);
        }
        if (phy->radio_rev <= 2)
                b43_radio_write16(dev, 0x005D, 0x000D);
 
        if (phy->analog == 4) {
                b43_write16(dev, 0x3E4, 9);
                b43_phy_mask(dev, 0x61, 0x0FFF);
        } else {
-               b43_phy_write(dev, 0x0002, (b43_phy_read(dev, 0x0002) & 0xFFC0)
-                             | 0x0004);
+               b43_phy_maskset(dev, 0x0002, 0xFFC0, 0x0004);
        }
        if (phy->type == B43_PHYTYPE_B)
                B43_WARN_ON(1);
        else if (phy->type == B43_PHYTYPE_G)
                b43_write16(dev, 0x03E6, 0x0);
 }
@@ -1834,28 +1772,24 @@ static void b43_calc_loopback_gain(struc
                b43_phy_set(dev, B43_PHY_ANALOGOVER, 0x0002);
                b43_phy_mask(dev, B43_PHY_ANALOGOVERVAL, 0xFFFD);
        }
        b43_phy_set(dev, B43_PHY_RFOVER, 0x000C);
        b43_phy_set(dev, B43_PHY_RFOVERVAL, 0x000C);
        b43_phy_set(dev, B43_PHY_RFOVER, 0x0030);
-       b43_phy_write(dev, B43_PHY_RFOVERVAL,
-                     (b43_phy_read(dev, B43_PHY_RFOVERVAL)
-                      & 0xFFCF) | 0x10);
+       b43_phy_maskset(dev, B43_PHY_RFOVERVAL, 0xFFCF, 0x10);
 
        b43_phy_write(dev, B43_PHY_CCK(0x5A), 0x0780);
        b43_phy_write(dev, B43_PHY_CCK(0x59), 0xC810);
        b43_phy_write(dev, B43_PHY_CCK(0x58), 0x000D);
 
        b43_phy_set(dev, B43_PHY_CCK(0x0A), 0x2000);
        if (phy->rev != 1) {    /* Not in specs, but needed to prevent PPC 
machine check */
                b43_phy_set(dev, B43_PHY_ANALOGOVER, 0x0004);
                b43_phy_mask(dev, B43_PHY_ANALOGOVERVAL, 0xFFFB);
        }
-       b43_phy_write(dev, B43_PHY_CCK(0x03),
-                     (b43_phy_read(dev, B43_PHY_CCK(0x03))
-                      & 0xFF9F) | 0x40);
+       b43_phy_maskset(dev, B43_PHY_CCK(0x03), 0xFF9F, 0x40);
 
        if (phy->radio_rev == 8) {
                b43_radio_write16(dev, 0x43, 0x000F);
        } else {
                b43_radio_write16(dev, 0x52, 0);
                b43_radio_write16(dev, 0x43, (b43_radio_read16(dev, 0x43)
@@ -1866,18 +1800,14 @@ static void b43_calc_loopback_gain(struc
        if (phy->rev >= 3)
                b43_phy_write(dev, B43_PHY_LO_MASK, 0xC020);
        else
                b43_phy_write(dev, B43_PHY_LO_MASK, 0x8020);
        b43_phy_write(dev, B43_PHY_LO_CTL, 0);
 
-       b43_phy_write(dev, B43_PHY_CCK(0x2B),
-                     (b43_phy_read(dev, B43_PHY_CCK(0x2B))
-                      & 0xFFC0) | 0x01);
-       b43_phy_write(dev, B43_PHY_CCK(0x2B),
-                     (b43_phy_read(dev, B43_PHY_CCK(0x2B))
-                      & 0xC0FF) | 0x800);
+       b43_phy_maskset(dev, B43_PHY_CCK(0x2B), 0xFFC0, 0x01);
+       b43_phy_maskset(dev, B43_PHY_CCK(0x2B), 0xC0FF, 0x800);
 
        b43_phy_set(dev, B43_PHY_RFOVER, 0x0100);
        b43_phy_mask(dev, B43_PHY_RFOVERVAL, 0xCFFF);
 
        if (dev->dev->bus->sprom.boardflags_lo & B43_BFL_EXTLNA) {
                if (phy->rev >= 7) {
@@ -1890,18 +1820,14 @@ static void b43_calc_loopback_gain(struc
 
        j = 0;
        loop_i_max = (phy->radio_rev == 8) ? 15 : 9;
        for (i = 0; i < loop_i_max; i++) {
                for (j = 0; j < 16; j++) {
                        b43_radio_write16(dev, 0x43, i);
-                       b43_phy_write(dev, B43_PHY_RFOVERVAL,
-                                     (b43_phy_read(dev, B43_PHY_RFOVERVAL)
-                                      & 0xF0FF) | (j << 8));
-                       b43_phy_write(dev, B43_PHY_PGACTL,
-                                     (b43_phy_read(dev, B43_PHY_PGACTL)
-                                      & 0x0FFF) | 0xA000);
+                       b43_phy_maskset(dev, B43_PHY_RFOVERVAL, 0xF0FF, (j << 
8));
+                       b43_phy_maskset(dev, B43_PHY_PGACTL, 0x0FFF, 0xA000);
                        b43_phy_set(dev, B43_PHY_PGACTL, 0xF000);
                        udelay(20);
                        if (b43_phy_read(dev, B43_PHY_LO_LEAKAGE) >= 0xDFC)
                                goto exit_loop1;
                }
        }
@@ -1909,18 +1835,14 @@ static void b43_calc_loopback_gain(struc
        loop1_outer_done = i;
        loop1_inner_done = j;
        if (j >= 8) {
                b43_phy_set(dev, B43_PHY_RFOVERVAL, 0x30);
                trsw_rx = 0x1B;
                for (j = j - 8; j < 16; j++) {
-                       b43_phy_write(dev, B43_PHY_RFOVERVAL,
-                                     (b43_phy_read(dev, B43_PHY_RFOVERVAL)
-                                      & 0xF0FF) | (j << 8));
-                       b43_phy_write(dev, B43_PHY_PGACTL,
-                                     (b43_phy_read(dev, B43_PHY_PGACTL)
-                                      & 0x0FFF) | 0xA000);
+                       b43_phy_maskset(dev, B43_PHY_RFOVERVAL, 0xF0FF, (j << 
8));
+                       b43_phy_maskset(dev, B43_PHY_PGACTL, 0x0FFF, 0xA000);
                        b43_phy_set(dev, B43_PHY_PGACTL, 0xF000);
                        udelay(20);
                        trsw_rx -= 3;
                        if (b43_phy_read(dev, B43_PHY_LO_LEAKAGE) >= 0xDFC)
                                goto exit_loop2;
                }
@@ -1971,29 +1893,25 @@ static void b43_hardware_pctl_early_init
 
        b43_phy_mask(dev, 0x0036, 0xFEFF);
        b43_phy_write(dev, 0x002F, 0x0202);
        b43_phy_set(dev, 0x047C, 0x0002);
        b43_phy_set(dev, 0x047A, 0xF000);
        if (phy->radio_ver == 0x2050 && phy->radio_rev == 8) {
-               b43_phy_write(dev, 0x047A, (b43_phy_read(dev, 0x047A)
-                                           & 0xFF0F) | 0x0010);
+               b43_phy_maskset(dev, 0x047A, 0xFF0F, 0x0010);
                b43_phy_set(dev, 0x005D, 0x8000);
-               b43_phy_write(dev, 0x004E, (b43_phy_read(dev, 0x004E)
-                                           & 0xFFC0) | 0x0010);
+               b43_phy_maskset(dev, 0x004E, 0xFFC0, 0x0010);
                b43_phy_write(dev, 0x002E, 0xC07F);
                b43_phy_set(dev, 0x0036, 0x0400);
        } else {
                b43_phy_set(dev, 0x0036, 0x0200);
                b43_phy_set(dev, 0x0036, 0x0400);
                b43_phy_mask(dev, 0x005D, 0x7FFF);
                b43_phy_mask(dev, 0x004F, 0xFFFE);
-               b43_phy_write(dev, 0x004E, (b43_phy_read(dev, 0x004E)
-                                           & 0xFFC0) | 0x0010);
+               b43_phy_maskset(dev, 0x004E, 0xFFC0, 0x0010);
                b43_phy_write(dev, 0x002E, 0xC07F);
-               b43_phy_write(dev, 0x047A, (b43_phy_read(dev, 0x047A)
-                                           & 0xFF0F) | 0x0010);
+               b43_phy_maskset(dev, 0x047A, 0xFF0F, 0x0010);
        }
 }
 
 /* Hardware power control for G-PHY */
 static void b43_hardware_pctl_init_gphy(struct b43_wldev *dev)
 {
@@ -2003,16 +1921,14 @@ static void b43_hardware_pctl_init_gphy(
        if (!b43_has_hardware_pctl(dev)) {
                /* No hardware power control */
                b43_hf_write(dev, b43_hf_read(dev) & ~B43_HF_HWPCTL);
                return;
        }
 
-       b43_phy_write(dev, 0x0036, (b43_phy_read(dev, 0x0036) & 0xFFC0)
-                     | (gphy->tgt_idle_tssi - gphy->cur_idle_tssi));
-       b43_phy_write(dev, 0x0478, (b43_phy_read(dev, 0x0478) & 0xFF00)
-                     | (gphy->tgt_idle_tssi - gphy->cur_idle_tssi));
+       b43_phy_maskset(dev, 0x0036, 0xFFC0, (gphy->tgt_idle_tssi - 
gphy->cur_idle_tssi));
+       b43_phy_maskset(dev, 0x0478, 0xFF00, (gphy->tgt_idle_tssi - 
gphy->cur_idle_tssi));
        b43_gphy_tssi_power_lt_init(dev);
        b43_gphy_gain_lt_init(dev);
        b43_phy_mask(dev, 0x0060, 0xFFBF);
        b43_phy_write(dev, 0x0014, 0x0000);
 
        B43_WARN_ON(phy->rev < 6);
@@ -2131,15 +2047,13 @@ static void b43_phy_initg(struct b43_wld
                tmp &= B43_PHYVER_VERSION;
                if (tmp == 3 || tmp == 5) {
                        b43_phy_write(dev, B43_PHY_OFDM(0xC2), 0x1816);
                        b43_phy_write(dev, B43_PHY_OFDM(0xC3), 0x8006);
                }
                if (tmp == 5) {
-                       b43_phy_write(dev, B43_PHY_OFDM(0xCC),
-                                     (b43_phy_read(dev, B43_PHY_OFDM(0xCC))
-                                      & 0x00FF) | 0x1F00);
+                       b43_phy_maskset(dev, B43_PHY_OFDM(0xCC), 0x00FF, 
0x1F00);
                }
        }
        if ((phy->rev <= 2 && phy->gmode) || phy->rev >= 2)
                b43_phy_write(dev, B43_PHY_OFDM(0x7E), 0x78);
        if (phy->radio_rev == 8) {
                b43_phy_set(dev, B43_PHY_EXTG(0x01), 0x80);
@@ -2163,16 +2077,13 @@ static void b43_phy_initg(struct b43_wld
        } else {
                b43_radio_write16(dev, 0x52,
                                  (b43_radio_read16(dev, 0x52) & 0xFFF0)
                                  | gphy->lo_control->tx_bias);
        }
        if (phy->rev >= 6) {
-               b43_phy_write(dev, B43_PHY_CCK(0x36),
-                             (b43_phy_read(dev, B43_PHY_CCK(0x36))
-                              & 0x0FFF) | (gphy->lo_control->
-                                           tx_bias << 12));
+               b43_phy_maskset(dev, B43_PHY_CCK(0x36), 0x0FFF, 
(gphy->lo_control->tx_bias << 12));
        }
        if (dev->dev->bus->sprom.boardflags_lo & B43_BFL_PACTRL)
                b43_phy_write(dev, B43_PHY_CCK(0x2E), 0x8075);
        else
                b43_phy_write(dev, B43_PHY_CCK(0x2E), 0x807F);
        if (phy->rev < 2)
@@ -2420,14 +2331,13 @@ static u8 b43_gphy_aci_scan(struct b43_w
 
        for (i = start; i <= end; i++) {
                if (abs(channel - i) > 2)
                        ret[i - 1] = b43_gphy_aci_detect(dev, i);
        }
        b43_switch_channel(dev, channel);
-       b43_phy_write(dev, 0x0802,
-                     (b43_phy_read(dev, 0x0802) & 0xFFFC) | 0x0003);
+       b43_phy_maskset(dev, 0x0802, 0xFFFC, 0x0003);
        b43_phy_mask(dev, 0x0403, 0xFFF8);
        b43_phy_set(dev, B43_PHY_G_CRS, 0x8000);
        b43_set_original_gains(dev);
        for (i = 0; i < 13; i++) {
                if (!ret[i])
                        continue;
Index: wireless-testing/drivers/net/wireless/b43/wa.c
===================================================================
--- wireless-testing.orig/drivers/net/wireless/b43/wa.c 2009-02-20 
19:06:00.000000000 +0100
+++ wireless-testing/drivers/net/wireless/b43/wa.c      2009-02-20 
19:06:39.000000000 +0100
@@ -69,17 +69,15 @@ void b43_wa_initgains(struct b43_wldev *
 
        b43_phy_write(dev, 0x0024, 0x4680);
        b43_phy_write(dev, 0x0020, 0x0003);
        b43_phy_write(dev, 0x001D, 0x0F40);
        b43_phy_write(dev, 0x001F, 0x1C00);
        if (phy->rev <= 3)
-               b43_phy_write(dev, 0x002A,
-                       (b43_phy_read(dev, 0x002A) & 0x00FF) | 0x0400);
+               b43_phy_maskset(dev, 0x002A, 0x00FF, 0x0400);
        else if (phy->rev == 5) {
-               b43_phy_write(dev, 0x002A,
-                       (b43_phy_read(dev, 0x002A) & 0x00FF) | 0x1A00);
+               b43_phy_maskset(dev, 0x002A, 0x00FF, 0x1A00);
                b43_phy_write(dev, 0x00CC, 0x2121);
        }
        if (phy->rev >= 3)
                b43_phy_write(dev, 0x00BA, 0x3ED5);
 }
 
@@ -268,14 +266,13 @@ static void b43_wa_2060txlna_gain(struct
        b43_hf_write(dev, b43_hf_read(dev) |
                         B43_HF_2060W);
 }
 
 static void b43_wa_lms(struct b43_wldev *dev)
 {
-       b43_phy_write(dev, 0x0055,
-               (b43_phy_read(dev, 0x0055) & 0xFFC0) | 0x0004);
+       b43_phy_maskset(dev, 0x0055, 0xFFC0, 0x0004);
 }
 
 static void b43_wa_mixedsignal(struct b43_wldev *dev)
 {
        b43_ofdmtab_write16(dev, B43_OFDMTAB_DAC, 1, 3);
 }
@@ -325,14 +322,13 @@ static void b43_wa_crs_ed(struct b43_wld
                b43_phy_set(dev, B43_PHY_ANTDWELL, 0x0800);
        }
 }
 
 static void b43_wa_crs_thr(struct b43_wldev *dev)
 {
-       b43_phy_write(dev, B43_PHY_CRS0,
-                       (b43_phy_read(dev, B43_PHY_CRS0) & ~0x03C0) | 0xD000);
+       b43_phy_maskset(dev, B43_PHY_CRS0, ~0x03C0, 0xD000);
 }
 
 static void b43_wa_crs_blank(struct b43_wldev *dev)
 {
        b43_phy_write(dev, B43_PHY_OFDM(0x2C), 0x005A);
 }
@@ -383,77 +379,52 @@ static void b43_wa_altagc(struct b43_wld
                b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1, 0, 254);
                b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1, 1, 13);
                b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1, 2, 19);
                b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1, 3, 25);
        }
 
-       b43_phy_write(dev, B43_PHY_CCKSHIFTBITS_WA,
-               (b43_phy_read(dev, B43_PHY_CCKSHIFTBITS_WA) & ~0xFF00) | 
0x5700);
-       b43_phy_write(dev, B43_PHY_OFDM(0x1A),
-               (b43_phy_read(dev, B43_PHY_OFDM(0x1A)) & ~0x007F) | 0x000F);
-       b43_phy_write(dev, B43_PHY_OFDM(0x1A),
-               (b43_phy_read(dev, B43_PHY_OFDM(0x1A)) & ~0x3F80) | 0x2B80);
-       b43_phy_write(dev, B43_PHY_ANTWRSETT,
-               (b43_phy_read(dev, B43_PHY_ANTWRSETT) & 0xF0FF) | 0x0300);
+       b43_phy_maskset(dev, B43_PHY_CCKSHIFTBITS_WA, ~0xFF00, 0x5700);
+       b43_phy_maskset(dev, B43_PHY_OFDM(0x1A), ~0x007F, 0x000F);
+       b43_phy_maskset(dev, B43_PHY_OFDM(0x1A), ~0x3F80, 0x2B80);
+       b43_phy_maskset(dev, B43_PHY_ANTWRSETT, 0xF0FF, 0x0300);
        b43_radio_write16(dev, 0x7A,
                b43_radio_read16(dev, 0x7A) | 0x0008);
-       b43_phy_write(dev, B43_PHY_N1P1GAIN,
-               (b43_phy_read(dev, B43_PHY_N1P1GAIN) & ~0x000F) | 0x0008);
-       b43_phy_write(dev, B43_PHY_P1P2GAIN,
-               (b43_phy_read(dev, B43_PHY_P1P2GAIN) & ~0x0F00) | 0x0600);
-       b43_phy_write(dev, B43_PHY_N1N2GAIN,
-               (b43_phy_read(dev, B43_PHY_N1N2GAIN) & ~0x0F00) | 0x0700);
-       b43_phy_write(dev, B43_PHY_N1P1GAIN,
-               (b43_phy_read(dev, B43_PHY_N1P1GAIN) & ~0x0F00) | 0x0100);
+       b43_phy_maskset(dev, B43_PHY_N1P1GAIN, ~0x000F, 0x0008);
+       b43_phy_maskset(dev, B43_PHY_P1P2GAIN, ~0x0F00, 0x0600);
+       b43_phy_maskset(dev, B43_PHY_N1N2GAIN, ~0x0F00, 0x0700);
+       b43_phy_maskset(dev, B43_PHY_N1P1GAIN, ~0x0F00, 0x0100);
        if (phy->rev == 1) {
-               b43_phy_write(dev, B43_PHY_N1N2GAIN,
-                                 (b43_phy_read(dev, B43_PHY_N1N2GAIN)
-                                  & ~0x000F) | 0x0007);
-       }
-       b43_phy_write(dev, B43_PHY_OFDM(0x88),
-               (b43_phy_read(dev, B43_PHY_OFDM(0x88)) & ~0x00FF) | 0x001C);
-       b43_phy_write(dev, B43_PHY_OFDM(0x88),
-               (b43_phy_read(dev, B43_PHY_OFDM(0x88)) & ~0x3F00) | 0x0200);
-       b43_phy_write(dev, B43_PHY_OFDM(0x96),
-               (b43_phy_read(dev, B43_PHY_OFDM(0x96)) & ~0x00FF) | 0x001C);
-       b43_phy_write(dev, B43_PHY_OFDM(0x89),
-               (b43_phy_read(dev, B43_PHY_OFDM(0x89)) & ~0x00FF) | 0x0020);
-       b43_phy_write(dev, B43_PHY_OFDM(0x89),
-               (b43_phy_read(dev, B43_PHY_OFDM(0x89)) & ~0x3F00) | 0x0200);
-       b43_phy_write(dev, B43_PHY_OFDM(0x82),
-               (b43_phy_read(dev, B43_PHY_OFDM(0x82)) & ~0x00FF) | 0x002E);
-       b43_phy_write(dev, B43_PHY_OFDM(0x96),
-               (b43_phy_read(dev, B43_PHY_OFDM(0x96)) & ~0xFF00) | 0x1A00);
-       b43_phy_write(dev, B43_PHY_OFDM(0x81),
-               (b43_phy_read(dev, B43_PHY_OFDM(0x81)) & ~0x00FF) | 0x0028);
-       b43_phy_write(dev, B43_PHY_OFDM(0x81),
-               (b43_phy_read(dev, B43_PHY_OFDM(0x81)) & ~0xFF00) | 0x2C00);
+               b43_phy_maskset(dev, B43_PHY_N1N2GAIN, ~0x000F, 0x0007);
+       }
+       b43_phy_maskset(dev, B43_PHY_OFDM(0x88), ~0x00FF, 0x001C);
+       b43_phy_maskset(dev, B43_PHY_OFDM(0x88), ~0x3F00, 0x0200);
+       b43_phy_maskset(dev, B43_PHY_OFDM(0x96), ~0x00FF, 0x001C);
+       b43_phy_maskset(dev, B43_PHY_OFDM(0x89), ~0x00FF, 0x0020);
+       b43_phy_maskset(dev, B43_PHY_OFDM(0x89), ~0x3F00, 0x0200);
+       b43_phy_maskset(dev, B43_PHY_OFDM(0x82), ~0x00FF, 0x002E);
+       b43_phy_maskset(dev, B43_PHY_OFDM(0x96), ~0xFF00, 0x1A00);
+       b43_phy_maskset(dev, B43_PHY_OFDM(0x81), ~0x00FF, 0x0028);
+       b43_phy_maskset(dev, B43_PHY_OFDM(0x81), ~0xFF00, 0x2C00);
        if (phy->rev == 1) {
                b43_phy_write(dev, B43_PHY_PEAK_COUNT, 0x092B);
-               b43_phy_write(dev, B43_PHY_OFDM(0x1B),
-                       (b43_phy_read(dev, B43_PHY_OFDM(0x1B)) & ~0x001E) | 
0x0002);
+               b43_phy_maskset(dev, B43_PHY_OFDM(0x1B), ~0x001E, 0x0002);
        } else {
                b43_phy_mask(dev, B43_PHY_OFDM(0x1B), ~0x001E);
                b43_phy_write(dev, B43_PHY_OFDM(0x1F), 0x287A);
-               b43_phy_write(dev, B43_PHY_LPFGAINCTL,
-                       (b43_phy_read(dev, B43_PHY_LPFGAINCTL) & ~0x000F) | 
0x0004);
+               b43_phy_maskset(dev, B43_PHY_LPFGAINCTL, ~0x000F, 0x0004);
                if (phy->rev >= 6) {
                        b43_phy_write(dev, B43_PHY_OFDM(0x22), 0x287A);
-                       b43_phy_write(dev, B43_PHY_LPFGAINCTL,
-                               (b43_phy_read(dev, B43_PHY_LPFGAINCTL) & 
~0xF000) | 0x3000);
+                       b43_phy_maskset(dev, B43_PHY_LPFGAINCTL, ~0xF000, 
0x3000);
                }
        }
-       b43_phy_write(dev, B43_PHY_DIVSRCHIDX,
-               (b43_phy_read(dev, B43_PHY_DIVSRCHIDX) & 0x8080) | 0x7874);
+       b43_phy_maskset(dev, B43_PHY_DIVSRCHIDX, 0x8080, 0x7874);
        b43_phy_write(dev, B43_PHY_OFDM(0x8E), 0x1C00);
        if (phy->rev == 1) {
-               b43_phy_write(dev, B43_PHY_DIVP1P2GAIN,
-                       (b43_phy_read(dev, B43_PHY_DIVP1P2GAIN) & ~0x0F00) | 
0x0600);
+               b43_phy_maskset(dev, B43_PHY_DIVP1P2GAIN, ~0x0F00, 0x0600);
                b43_phy_write(dev, B43_PHY_OFDM(0x8B), 0x005E);
-               b43_phy_write(dev, B43_PHY_ANTWRSETT,
-                       (b43_phy_read(dev, B43_PHY_ANTWRSETT) & ~0x00FF) | 
0x001E);
+               b43_phy_maskset(dev, B43_PHY_ANTWRSETT, ~0x00FF, 0x001E);
                b43_phy_write(dev, B43_PHY_OFDM(0x8D), 0x0002);
                b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC3_R1, 0, 0);
                b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC3_R1, 1, 7);
                b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC3_R1, 2, 16);
                b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC3_R1, 3, 28);
        } else {

-- 
Greetings, Michael.
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to