aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafał Miłecki <zajec5@gmail.com>2014-08-07 01:45:37 -0400
committerJohn W. Linville <linville@tuxdriver.com>2014-08-25 16:00:42 -0400
commit25c15566635fef86e87f762f73a19f24598e45fa (patch)
tree553e99060b077c95aa0096b1351e480219ccbfa5
parentd342b95dd735014a590f9051b1ba227eb54ca8f6 (diff)
b43: flush some writes on Broadcom MIPS SoCs
Access to PHY and radio registers is indirect on Broadcom hardware and it seems that addressing on some MIPS SoCs may require flushing. So far this problem was noticed on 0x4716 SoC only (marketing names: BCM4717, BCM4718). Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/b43/b43.h10
-rw-r--r--drivers/net/wireless/b43/bus.c10
-rw-r--r--drivers/net/wireless/b43/bus.h1
-rw-r--r--drivers/net/wireless/b43/main.c17
-rw-r--r--drivers/net/wireless/b43/phy_a.c4
-rw-r--r--drivers/net/wireless/b43/phy_common.c4
-rw-r--r--drivers/net/wireless/b43/phy_g.c8
-rw-r--r--drivers/net/wireless/b43/phy_ht.c6
-rw-r--r--drivers/net/wireless/b43/phy_lcn.c6
-rw-r--r--drivers/net/wireless/b43/phy_lp.c6
-rw-r--r--drivers/net/wireless/b43/phy_n.c6
11 files changed, 49 insertions, 29 deletions
diff --git a/drivers/net/wireless/b43/b43.h b/drivers/net/wireless/b43/b43.h
index 4113b6934764..9b2d0c9bfb8e 100644
--- a/drivers/net/wireless/b43/b43.h
+++ b/drivers/net/wireless/b43/b43.h
@@ -1012,6 +1012,16 @@ static inline void b43_write16(struct b43_wldev *dev, u16 offset, u16 value)
1012 dev->dev->write16(dev->dev, offset, value); 1012 dev->dev->write16(dev->dev, offset, value);
1013} 1013}
1014 1014
1015/* To optimize this check for flush_writes on BCM47XX_BCMA only. */
1016static inline void b43_write16f(struct b43_wldev *dev, u16 offset, u16 value)
1017{
1018 b43_write16(dev, offset, value);
1019#if defined(CONFIG_BCM47XX_BCMA)
1020 if (dev->dev->flush_writes)
1021 b43_read16(dev, offset);
1022#endif
1023}
1024
1015static inline void b43_maskset16(struct b43_wldev *dev, u16 offset, u16 mask, 1025static inline void b43_maskset16(struct b43_wldev *dev, u16 offset, u16 mask,
1016 u16 set) 1026 u16 set)
1017{ 1027{
diff --git a/drivers/net/wireless/b43/bus.c b/drivers/net/wireless/b43/bus.c
index 565fdbdd6915..17d16a391fe6 100644
--- a/drivers/net/wireless/b43/bus.c
+++ b/drivers/net/wireless/b43/bus.c
@@ -22,6 +22,10 @@
22 22
23*/ 23*/
24 24
25#ifdef CONFIG_BCM47XX_BCMA
26#include <asm/mach-bcm47xx/bcm47xx.h>
27#endif
28
25#include "b43.h" 29#include "b43.h"
26#include "bus.h" 30#include "bus.h"
27 31
@@ -102,6 +106,12 @@ struct b43_bus_dev *b43_bus_dev_bcma_init(struct bcma_device *core)
102 dev->write32 = b43_bus_bcma_write32; 106 dev->write32 = b43_bus_bcma_write32;
103 dev->block_read = b43_bus_bcma_block_read; 107 dev->block_read = b43_bus_bcma_block_read;
104 dev->block_write = b43_bus_bcma_block_write; 108 dev->block_write = b43_bus_bcma_block_write;
109#ifdef CONFIG_BCM47XX_BCMA
110 if (b43_bus_host_is_pci(dev) &&
111 bcm47xx_bus_type == BCM47XX_BUS_TYPE_BCMA &&
112 bcm47xx_bus.bcma.bus.chipinfo.id == BCMA_CHIP_ID_BCM4716)
113 dev->flush_writes = true;
114#endif
105 115
106 dev->dev = &core->dev; 116 dev->dev = &core->dev;
107 dev->dma_dev = core->dma_dev; 117 dev->dma_dev = core->dma_dev;
diff --git a/drivers/net/wireless/b43/bus.h b/drivers/net/wireless/b43/bus.h
index 460d9d90bdde..256c2c17939a 100644
--- a/drivers/net/wireless/b43/bus.h
+++ b/drivers/net/wireless/b43/bus.h
@@ -33,6 +33,7 @@ struct b43_bus_dev {
33 size_t count, u16 offset, u8 reg_width); 33 size_t count, u16 offset, u8 reg_width);
34 void (*block_write)(struct b43_bus_dev *dev, const void *buffer, 34 void (*block_write)(struct b43_bus_dev *dev, const void *buffer,
35 size_t count, u16 offset, u8 reg_width); 35 size_t count, u16 offset, u8 reg_width);
36 bool flush_writes;
36 37
37 struct device *dev; 38 struct device *dev;
38 struct device *dma_dev; 39 struct device *dma_dev;
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index 2af1ac396eb4..66ff718cc412 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -4466,10 +4466,10 @@ static int b43_phy_versioning(struct b43_wldev *dev)
4466 if (core_rev == 40 || core_rev == 42) { 4466 if (core_rev == 40 || core_rev == 42) {
4467 radio_manuf = 0x17F; 4467 radio_manuf = 0x17F;
4468 4468
4469 b43_write16(dev, B43_MMIO_RADIO24_CONTROL, 0); 4469 b43_write16f(dev, B43_MMIO_RADIO24_CONTROL, 0);
4470 radio_rev = b43_read16(dev, B43_MMIO_RADIO24_DATA); 4470 radio_rev = b43_read16(dev, B43_MMIO_RADIO24_DATA);
4471 4471
4472 b43_write16(dev, B43_MMIO_RADIO24_CONTROL, 1); 4472 b43_write16f(dev, B43_MMIO_RADIO24_CONTROL, 1);
4473 radio_id = b43_read16(dev, B43_MMIO_RADIO24_DATA); 4473 radio_id = b43_read16(dev, B43_MMIO_RADIO24_DATA);
4474 4474
4475 radio_ver = 0; /* Is there version somewhere? */ 4475 radio_ver = 0; /* Is there version somewhere? */
@@ -4477,7 +4477,7 @@ static int b43_phy_versioning(struct b43_wldev *dev)
4477 u16 radio24[3]; 4477 u16 radio24[3];
4478 4478
4479 for (tmp = 0; tmp < 3; tmp++) { 4479 for (tmp = 0; tmp < 3; tmp++) {
4480 b43_write16(dev, B43_MMIO_RADIO24_CONTROL, tmp); 4480 b43_write16f(dev, B43_MMIO_RADIO24_CONTROL, tmp);
4481 radio24[tmp] = b43_read16(dev, B43_MMIO_RADIO24_DATA); 4481 radio24[tmp] = b43_read16(dev, B43_MMIO_RADIO24_DATA);
4482 } 4482 }
4483 4483
@@ -4494,13 +4494,12 @@ static int b43_phy_versioning(struct b43_wldev *dev)
4494 else 4494 else
4495 tmp = 0x5205017F; 4495 tmp = 0x5205017F;
4496 } else { 4496 } else {
4497 b43_write16(dev, B43_MMIO_RADIO_CONTROL, 4497 b43_write16f(dev, B43_MMIO_RADIO_CONTROL,
4498 B43_RADIOCTL_ID); 4498 B43_RADIOCTL_ID);
4499 tmp = b43_read16(dev, B43_MMIO_RADIO_DATA_LOW); 4499 tmp = b43_read16(dev, B43_MMIO_RADIO_DATA_LOW);
4500 b43_write16(dev, B43_MMIO_RADIO_CONTROL, 4500 b43_write16f(dev, B43_MMIO_RADIO_CONTROL,
4501 B43_RADIOCTL_ID); 4501 B43_RADIOCTL_ID);
4502 tmp |= (u32)b43_read16(dev, B43_MMIO_RADIO_DATA_HIGH) 4502 tmp |= b43_read16(dev, B43_MMIO_RADIO_DATA_HIGH) << 16;
4503 << 16;
4504 } 4503 }
4505 radio_manuf = (tmp & 0x00000FFF); 4504 radio_manuf = (tmp & 0x00000FFF);
4506 radio_id = (tmp & 0x0FFFF000) >> 12; 4505 radio_id = (tmp & 0x0FFFF000) >> 12;
diff --git a/drivers/net/wireless/b43/phy_a.c b/drivers/net/wireless/b43/phy_a.c
index 25e40432d68b..99c036f5ecb7 100644
--- a/drivers/net/wireless/b43/phy_a.c
+++ b/drivers/net/wireless/b43/phy_a.c
@@ -444,14 +444,14 @@ static inline u16 adjust_phyreg(struct b43_wldev *dev, u16 offset)
444static u16 b43_aphy_op_read(struct b43_wldev *dev, u16 reg) 444static u16 b43_aphy_op_read(struct b43_wldev *dev, u16 reg)
445{ 445{
446 reg = adjust_phyreg(dev, reg); 446 reg = adjust_phyreg(dev, reg);
447 b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 447 b43_write16f(dev, B43_MMIO_PHY_CONTROL, reg);
448 return b43_read16(dev, B43_MMIO_PHY_DATA); 448 return b43_read16(dev, B43_MMIO_PHY_DATA);
449} 449}
450 450
451static void b43_aphy_op_write(struct b43_wldev *dev, u16 reg, u16 value) 451static void b43_aphy_op_write(struct b43_wldev *dev, u16 reg, u16 value)
452{ 452{
453 reg = adjust_phyreg(dev, reg); 453 reg = adjust_phyreg(dev, reg);
454 b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 454 b43_write16f(dev, B43_MMIO_PHY_CONTROL, reg);
455 b43_write16(dev, B43_MMIO_PHY_DATA, value); 455 b43_write16(dev, B43_MMIO_PHY_DATA, value);
456} 456}
457 457
diff --git a/drivers/net/wireless/b43/phy_common.c b/drivers/net/wireless/b43/phy_common.c
index 08ca524664e6..1dfc682a8055 100644
--- a/drivers/net/wireless/b43/phy_common.c
+++ b/drivers/net/wireless/b43/phy_common.c
@@ -278,7 +278,7 @@ u16 b43_phy_read(struct b43_wldev *dev, u16 reg)
278 if (dev->phy.ops->phy_read) 278 if (dev->phy.ops->phy_read)
279 return dev->phy.ops->phy_read(dev, reg); 279 return dev->phy.ops->phy_read(dev, reg);
280 280
281 b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 281 b43_write16f(dev, B43_MMIO_PHY_CONTROL, reg);
282 return b43_read16(dev, B43_MMIO_PHY_DATA); 282 return b43_read16(dev, B43_MMIO_PHY_DATA);
283} 283}
284 284
@@ -294,7 +294,7 @@ void b43_phy_write(struct b43_wldev *dev, u16 reg, u16 value)
294 if (dev->phy.ops->phy_write) 294 if (dev->phy.ops->phy_write)
295 return dev->phy.ops->phy_write(dev, reg, value); 295 return dev->phy.ops->phy_write(dev, reg, value);
296 296
297 b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 297 b43_write16f(dev, B43_MMIO_PHY_CONTROL, reg);
298 b43_write16(dev, B43_MMIO_PHY_DATA, value); 298 b43_write16(dev, B43_MMIO_PHY_DATA, value);
299} 299}
300 300
diff --git a/drivers/net/wireless/b43/phy_g.c b/drivers/net/wireless/b43/phy_g.c
index 8f5c14bc10e6..727ce6edb4b3 100644
--- a/drivers/net/wireless/b43/phy_g.c
+++ b/drivers/net/wireless/b43/phy_g.c
@@ -2555,13 +2555,13 @@ static void b43_gphy_op_exit(struct b43_wldev *dev)
2555 2555
2556static u16 b43_gphy_op_read(struct b43_wldev *dev, u16 reg) 2556static u16 b43_gphy_op_read(struct b43_wldev *dev, u16 reg)
2557{ 2557{
2558 b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 2558 b43_write16f(dev, B43_MMIO_PHY_CONTROL, reg);
2559 return b43_read16(dev, B43_MMIO_PHY_DATA); 2559 return b43_read16(dev, B43_MMIO_PHY_DATA);
2560} 2560}
2561 2561
2562static void b43_gphy_op_write(struct b43_wldev *dev, u16 reg, u16 value) 2562static void b43_gphy_op_write(struct b43_wldev *dev, u16 reg, u16 value)
2563{ 2563{
2564 b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 2564 b43_write16f(dev, B43_MMIO_PHY_CONTROL, reg);
2565 b43_write16(dev, B43_MMIO_PHY_DATA, value); 2565 b43_write16(dev, B43_MMIO_PHY_DATA, value);
2566} 2566}
2567 2567
@@ -2572,7 +2572,7 @@ static u16 b43_gphy_op_radio_read(struct b43_wldev *dev, u16 reg)
2572 /* G-PHY needs 0x80 for read access. */ 2572 /* G-PHY needs 0x80 for read access. */
2573 reg |= 0x80; 2573 reg |= 0x80;
2574 2574
2575 b43_write16(dev, B43_MMIO_RADIO_CONTROL, reg); 2575 b43_write16f(dev, B43_MMIO_RADIO_CONTROL, reg);
2576 return b43_read16(dev, B43_MMIO_RADIO_DATA_LOW); 2576 return b43_read16(dev, B43_MMIO_RADIO_DATA_LOW);
2577} 2577}
2578 2578
@@ -2581,7 +2581,7 @@ static void b43_gphy_op_radio_write(struct b43_wldev *dev, u16 reg, u16 value)
2581 /* Register 1 is a 32-bit register. */ 2581 /* Register 1 is a 32-bit register. */
2582 B43_WARN_ON(reg == 1); 2582 B43_WARN_ON(reg == 1);
2583 2583
2584 b43_write16(dev, B43_MMIO_RADIO_CONTROL, reg); 2584 b43_write16f(dev, B43_MMIO_RADIO_CONTROL, reg);
2585 b43_write16(dev, B43_MMIO_RADIO_DATA_LOW, value); 2585 b43_write16(dev, B43_MMIO_RADIO_DATA_LOW, value);
2586} 2586}
2587 2587
diff --git a/drivers/net/wireless/b43/phy_ht.c b/drivers/net/wireless/b43/phy_ht.c
index 8b0b4b6852fd..c4dc8b020f60 100644
--- a/drivers/net/wireless/b43/phy_ht.c
+++ b/drivers/net/wireless/b43/phy_ht.c
@@ -1074,7 +1074,7 @@ static unsigned int b43_phy_ht_op_get_default_chan(struct b43_wldev *dev)
1074static void b43_phy_ht_op_maskset(struct b43_wldev *dev, u16 reg, u16 mask, 1074static void b43_phy_ht_op_maskset(struct b43_wldev *dev, u16 reg, u16 mask,
1075 u16 set) 1075 u16 set)
1076{ 1076{
1077 b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 1077 b43_write16f(dev, B43_MMIO_PHY_CONTROL, reg);
1078 b43_write16(dev, B43_MMIO_PHY_DATA, 1078 b43_write16(dev, B43_MMIO_PHY_DATA,
1079 (b43_read16(dev, B43_MMIO_PHY_DATA) & mask) | set); 1079 (b43_read16(dev, B43_MMIO_PHY_DATA) & mask) | set);
1080} 1080}
@@ -1084,14 +1084,14 @@ static u16 b43_phy_ht_op_radio_read(struct b43_wldev *dev, u16 reg)
1084 /* HT-PHY needs 0x200 for read access */ 1084 /* HT-PHY needs 0x200 for read access */
1085 reg |= 0x200; 1085 reg |= 0x200;
1086 1086
1087 b43_write16(dev, B43_MMIO_RADIO24_CONTROL, reg); 1087 b43_write16f(dev, B43_MMIO_RADIO24_CONTROL, reg);
1088 return b43_read16(dev, B43_MMIO_RADIO24_DATA); 1088 return b43_read16(dev, B43_MMIO_RADIO24_DATA);
1089} 1089}
1090 1090
1091static void b43_phy_ht_op_radio_write(struct b43_wldev *dev, u16 reg, 1091static void b43_phy_ht_op_radio_write(struct b43_wldev *dev, u16 reg,
1092 u16 value) 1092 u16 value)
1093{ 1093{
1094 b43_write16(dev, B43_MMIO_RADIO24_CONTROL, reg); 1094 b43_write16f(dev, B43_MMIO_RADIO24_CONTROL, reg);
1095 b43_write16(dev, B43_MMIO_RADIO24_DATA, value); 1095 b43_write16(dev, B43_MMIO_RADIO24_DATA, value);
1096} 1096}
1097 1097
diff --git a/drivers/net/wireless/b43/phy_lcn.c b/drivers/net/wireless/b43/phy_lcn.c
index bf29c3eb0095..97461ccf3e1e 100644
--- a/drivers/net/wireless/b43/phy_lcn.c
+++ b/drivers/net/wireless/b43/phy_lcn.c
@@ -813,7 +813,7 @@ static void b43_phy_lcn_op_adjust_txpower(struct b43_wldev *dev)
813static void b43_phy_lcn_op_maskset(struct b43_wldev *dev, u16 reg, u16 mask, 813static void b43_phy_lcn_op_maskset(struct b43_wldev *dev, u16 reg, u16 mask,
814 u16 set) 814 u16 set)
815{ 815{
816 b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 816 b43_write16f(dev, B43_MMIO_PHY_CONTROL, reg);
817 b43_write16(dev, B43_MMIO_PHY_DATA, 817 b43_write16(dev, B43_MMIO_PHY_DATA,
818 (b43_read16(dev, B43_MMIO_PHY_DATA) & mask) | set); 818 (b43_read16(dev, B43_MMIO_PHY_DATA) & mask) | set);
819} 819}
@@ -823,14 +823,14 @@ static u16 b43_phy_lcn_op_radio_read(struct b43_wldev *dev, u16 reg)
823 /* LCN-PHY needs 0x200 for read access */ 823 /* LCN-PHY needs 0x200 for read access */
824 reg |= 0x200; 824 reg |= 0x200;
825 825
826 b43_write16(dev, B43_MMIO_RADIO24_CONTROL, reg); 826 b43_write16f(dev, B43_MMIO_RADIO24_CONTROL, reg);
827 return b43_read16(dev, B43_MMIO_RADIO24_DATA); 827 return b43_read16(dev, B43_MMIO_RADIO24_DATA);
828} 828}
829 829
830static void b43_phy_lcn_op_radio_write(struct b43_wldev *dev, u16 reg, 830static void b43_phy_lcn_op_radio_write(struct b43_wldev *dev, u16 reg,
831 u16 value) 831 u16 value)
832{ 832{
833 b43_write16(dev, B43_MMIO_RADIO24_CONTROL, reg); 833 b43_write16f(dev, B43_MMIO_RADIO24_CONTROL, reg);
834 b43_write16(dev, B43_MMIO_RADIO24_DATA, value); 834 b43_write16(dev, B43_MMIO_RADIO24_DATA, value);
835} 835}
836 836
diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c
index 1e9bae68b621..058a9f232050 100644
--- a/drivers/net/wireless/b43/phy_lp.c
+++ b/drivers/net/wireless/b43/phy_lp.c
@@ -1988,7 +1988,7 @@ static void lpphy_calibration(struct b43_wldev *dev)
1988static void b43_lpphy_op_maskset(struct b43_wldev *dev, u16 reg, u16 mask, 1988static void b43_lpphy_op_maskset(struct b43_wldev *dev, u16 reg, u16 mask,
1989 u16 set) 1989 u16 set)
1990{ 1990{
1991 b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 1991 b43_write16f(dev, B43_MMIO_PHY_CONTROL, reg);
1992 b43_write16(dev, B43_MMIO_PHY_DATA, 1992 b43_write16(dev, B43_MMIO_PHY_DATA,
1993 (b43_read16(dev, B43_MMIO_PHY_DATA) & mask) | set); 1993 (b43_read16(dev, B43_MMIO_PHY_DATA) & mask) | set);
1994} 1994}
@@ -2004,7 +2004,7 @@ static u16 b43_lpphy_op_radio_read(struct b43_wldev *dev, u16 reg)
2004 } else 2004 } else
2005 reg |= 0x200; 2005 reg |= 0x200;
2006 2006
2007 b43_write16(dev, B43_MMIO_RADIO_CONTROL, reg); 2007 b43_write16f(dev, B43_MMIO_RADIO_CONTROL, reg);
2008 return b43_read16(dev, B43_MMIO_RADIO_DATA_LOW); 2008 return b43_read16(dev, B43_MMIO_RADIO_DATA_LOW);
2009} 2009}
2010 2010
@@ -2013,7 +2013,7 @@ static void b43_lpphy_op_radio_write(struct b43_wldev *dev, u16 reg, u16 value)
2013 /* Register 1 is a 32-bit register. */ 2013 /* Register 1 is a 32-bit register. */
2014 B43_WARN_ON(reg == 1); 2014 B43_WARN_ON(reg == 1);
2015 2015
2016 b43_write16(dev, B43_MMIO_RADIO_CONTROL, reg); 2016 b43_write16f(dev, B43_MMIO_RADIO_CONTROL, reg);
2017 b43_write16(dev, B43_MMIO_RADIO_DATA_LOW, value); 2017 b43_write16(dev, B43_MMIO_RADIO_DATA_LOW, value);
2018} 2018}
2019 2019
diff --git a/drivers/net/wireless/b43/phy_n.c b/drivers/net/wireless/b43/phy_n.c
index 55653186b575..df640325aa15 100644
--- a/drivers/net/wireless/b43/phy_n.c
+++ b/drivers/net/wireless/b43/phy_n.c
@@ -6501,7 +6501,7 @@ static void b43_nphy_op_maskset(struct b43_wldev *dev, u16 reg, u16 mask,
6501 u16 set) 6501 u16 set)
6502{ 6502{
6503 check_phyreg(dev, reg); 6503 check_phyreg(dev, reg);
6504 b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); 6504 b43_write16f(dev, B43_MMIO_PHY_CONTROL, reg);
6505 b43_maskset16(dev, B43_MMIO_PHY_DATA, mask, set); 6505 b43_maskset16(dev, B43_MMIO_PHY_DATA, mask, set);
6506 dev->phy.writes_counter = 1; 6506 dev->phy.writes_counter = 1;
6507} 6507}
@@ -6516,7 +6516,7 @@ static u16 b43_nphy_op_radio_read(struct b43_wldev *dev, u16 reg)
6516 else 6516 else
6517 reg |= 0x100; 6517 reg |= 0x100;
6518 6518
6519 b43_write16(dev, B43_MMIO_RADIO_CONTROL, reg); 6519 b43_write16f(dev, B43_MMIO_RADIO_CONTROL, reg);
6520 return b43_read16(dev, B43_MMIO_RADIO_DATA_LOW); 6520 return b43_read16(dev, B43_MMIO_RADIO_DATA_LOW);
6521} 6521}
6522 6522
@@ -6525,7 +6525,7 @@ static void b43_nphy_op_radio_write(struct b43_wldev *dev, u16 reg, u16 value)
6525 /* Register 1 is a 32-bit register. */ 6525 /* Register 1 is a 32-bit register. */
6526 B43_WARN_ON(dev->phy.rev < 7 && reg == 1); 6526 B43_WARN_ON(dev->phy.rev < 7 && reg == 1);
6527 6527
6528 b43_write16(dev, B43_MMIO_RADIO_CONTROL, reg); 6528 b43_write16f(dev, B43_MMIO_RADIO_CONTROL, reg);
6529 b43_write16(dev, B43_MMIO_RADIO_DATA_LOW, value); 6529 b43_write16(dev, B43_MMIO_RADIO_DATA_LOW, value);
6530} 6530}
6531 6531