diff options
author | Larry Finger <Larry.Finger@lwfinger.net> | 2007-11-26 11:29:47 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:05:01 -0500 |
commit | 013978b688d2a27af3ab55ca739e8c8ac7254870 (patch) | |
tree | 834924d02e2acff05104d3cd2cfc9a2af3d587a9 /drivers/net/wireless/b43/main.c | |
parent | 00e0b8cb74ed7c16b2bc41eb33a16eae5b6e2d5c (diff) |
b43: Changes to enable BCM4311 rev 02 with wireless core revision 13
The BCM94311MCG rev 02 chip has an 802.11 core with revision 13 and
has not been supported until now. The changes include the following:
(1) Add the 802.11 rev 13 device to the ssb_device_id table to load b43.
(2) Add PHY revision 9 to the supported list.
(3) Change the 2-bit routing code for address extensions to 0b10 rather
than the 0b01 used for the 32-bit case.
(4) Remove some magic numbers in the DMA setup.
The DMA implementation for this chip supports full 64-bit addressing with
one exception. Whenever the Descriptor Ring Buffer is in high memory, a
fatal DMA error occurs. This problem was not present in 2.6.24-rc2 due
to code to "Bias the placement of kernel pages at lower PFNs". When
commit 44048d70 reverted that code, the DMA error appeared. As a "fix",
use the GFP_DMA flag when allocating the buffer for 64-bit DMA. At present,
this problem is thought to arise from a hardware error.
This patch has been tested on my system and by Cédric Caumont
<icare40@hotmail.com>.
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Acked-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/b43/main.c')
-rw-r--r-- | drivers/net/wireless/b43/main.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index 084bbac01734..064cbe118882 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
@@ -93,6 +93,7 @@ static const struct ssb_device_id b43_ssb_tbl[] = { | |||
93 | SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 7), | 93 | SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 7), |
94 | SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 9), | 94 | SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 9), |
95 | SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 10), | 95 | SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 10), |
96 | SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 13), | ||
96 | SSB_DEVTABLE_END | 97 | SSB_DEVTABLE_END |
97 | }; | 98 | }; |
98 | 99 | ||
@@ -3078,7 +3079,7 @@ static int b43_phy_versioning(struct b43_wldev *dev) | |||
3078 | unsupported = 1; | 3079 | unsupported = 1; |
3079 | break; | 3080 | break; |
3080 | case B43_PHYTYPE_G: | 3081 | case B43_PHYTYPE_G: |
3081 | if (phy_rev > 8) | 3082 | if (phy_rev > 9) |
3082 | unsupported = 1; | 3083 | unsupported = 1; |
3083 | break; | 3084 | break; |
3084 | default: | 3085 | default: |