b43: change selecting ucode for newer cores
authorRafał Miłecki <zajec5@gmail.com>
Wed, 6 Jul 2011 15:41:55 +0000 (17:41 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 8 Jul 2011 15:11:21 +0000 (11:11 -0400)
Older cores had unique PHY. This is not true anymore for newer ones.
For example core rev 16 can be LP, SSLPN or N (PHY).

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 f0b9dd14ea2b1bbf3f23c5107c708f37e6bd8d59..cddc5a87df7cfa2fbce9644b710007c02d422491 100644 (file)
@@ -2160,20 +2160,28 @@ static int b43_try_request_fw(struct b43_request_fw_context *ctx)
        int err;
 
        /* Get microcode */
-       if ((rev >= 5) && (rev <= 10))
+       if ((rev >= 5) && (rev <= 10)) {
                filename = "ucode5";
-       else if ((rev >= 11) && (rev <= 12))
+       } else if ((rev >= 11) && (rev <= 12)) {
                filename = "ucode11";
-       else if (rev == 13)
+       } else if (rev == 13) {
                filename = "ucode13";
-       else if (rev == 14)
+       } else if (rev == 14) {
                filename = "ucode14";
-       else if (rev == 15)
+       } else if (rev == 15) {
                filename = "ucode15";
-       else if ((rev >= 16) && (rev <= 20))
-               filename = "ucode16_mimo";
-       else
-               goto err_no_ucode;
+       } else {
+               switch (dev->phy.type) {
+               case B43_PHYTYPE_N:
+                       if (rev >= 16)
+                               filename = "ucode16_mimo";
+                       else
+                               goto err_no_ucode;
+                       break;
+               default:
+                       goto err_no_ucode;
+               }
+       }
        err = b43_do_request_fw(ctx, filename, &fw->ucode);
        if (err)
                goto err_load;