b43: Fix radio ID register reading
PATCH 1/1 b43: Fix radio ID register reading
This fixes reading of the high 16 bits of the radio ID on new devices. 2055 radios want lo16 to be read first.
Signed-off-by Michael Buesch <[email protected]>
---
For 2.6.25
drivers/net/wireless/b43/main.c +3 -4
@@ -3136,16 +3136,15 @@ static int b43_phy_versioning(struct b43else if (dev->dev->bus->chip_rev ==1 ) tmp =0x4205017F ;else tmp =0x5205017F ; }else {b43_write16 (dev,B43_MMIO_RADIO_CONTROL ,B43_RADIOCTL_ID ); - tmp =b43_read16 (dev,B43_MMIO_RADIO_DATA_HIGH ); - tmp <<=16 ; + tmp =b43_read16 (dev,B43_MMIO_RADIO_DATA_LOW );b43_write16 (dev,B43_MMIO_RADIO_CONTROL ,B43_RADIOCTL_ID ); - tmp |=b43_read16 (dev,B43_MMIO_RADIO_DATA_LOW ); + tmp |= (u32 )b43_read16 (dev,B43_MMIO_RADIO_DATA_HIGH ) <<16 ; } radio_manuf = (tmp &0x00000FFF ); radio_ver = (tmp &0x0FFFF000 ) >>12 ; radio_rev = (tmp &0xF0000000 ) >>28 ;if (radio_manuf !=0x17F /* Broadcom */ ) unsupported =1 ;
@@ -3164,13 +3163,13 @@ static int b43_phy_versioning(struct b43break ;case B43_PHYTYPE_G :if (radio_ver !=0x2050 ) unsupported =1 ;break ;case B43_PHYTYPE_N : -if (radio_ver !=5 ) +if (radio_ver !=0x2055 ) unsupported =1 ;break ;default :B43_WARN_ON (1 ); }if (unsupported) {