b43: read radio ID on new cores
authorRafał Miłecki <zajec5@gmail.com>
Wed, 6 Jul 2011 18:27:25 +0000 (20:27 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 8 Jul 2011 15:11:23 +0000 (11:11 -0400)
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/b43/main.c

index 074765a1e67165c419494535c7e3371619c1d6b2..bff08707c430f58937412a5780559561249565dd 100644 (file)
@@ -4219,7 +4219,19 @@ static int b43_phy_versioning(struct b43_wldev *dev)
 
        /* Get RADIO versioning */
        if (dev->dev->core_rev >= 24) {
-               /* TODO */
+               u16 radio24[3];
+
+               for (tmp = 0; tmp < 3; tmp++) {
+                       b43_write16(dev, B43_MMIO_RADIO24_CONTROL, tmp);
+                       radio24[tmp] = b43_read16(dev, B43_MMIO_RADIO24_DATA);
+               }
+
+               /* Broadcom uses "id" for our "ver" and has separated "ver" */
+               /* radio_ver = (radio24[0] & 0xF0) >> 4; */
+
+               radio_manuf = 0x17F;
+               radio_ver = (radio24[2] << 8) | radio24[1];
+               radio_rev = (radio24[0] & 0xF);
        } else {
                if (dev->dev->chip_id == 0x4317) {
                        if (dev->dev->chip_rev == 0)