libertas: add support for Marvell SD8688 chip
[pandora-kernel.git] / drivers / net / wireless / libertas / if_sdio.c
index 76f4c65..55864c1 100644 (file)
@@ -48,8 +48,11 @@ static char *lbs_fw_name = NULL;
 module_param_named(fw_name, lbs_fw_name, charp, 0644);
 
 static const struct sdio_device_id if_sdio_ids[] = {
-       { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, SDIO_DEVICE_ID_MARVELL_LIBERTAS) },
-       { /* end: all zeroes */                                         },
+       { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL,
+                       SDIO_DEVICE_ID_MARVELL_LIBERTAS) },
+       { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL,
+                       SDIO_DEVICE_ID_MARVELL_8688WLAN) },
+       { /* end: all zeroes */                         },
 };
 
 MODULE_DEVICE_TABLE(sdio, if_sdio_ids);
@@ -73,6 +76,12 @@ static struct if_sdio_model if_sdio_models[] = {
                .helper = "sd8686_helper.bin",
                .firmware = "sd8686.bin",
        },
+       {
+               /* 8688 */
+               .model = 0x10,
+               .helper = "sd8688_helper.bin",
+               .firmware = "sd8688.bin",
+       },
 };
 
 struct if_sdio_packet {
@@ -488,7 +497,7 @@ static int if_sdio_prog_helper(struct if_sdio_card *card)
        ret = 0;
 
 release:
-       sdio_set_block_size(card->func, 0);
+       sdio_set_block_size(card->func, IF_SDIO_BLOCK_SIZE);
        sdio_release_host(card->func);
        kfree(chunk_buffer);
 release_fw:
@@ -624,7 +633,7 @@ static int if_sdio_prog_real(struct if_sdio_card *card)
        ret = 0;
 
 release:
-       sdio_set_block_size(card->func, 0);
+       sdio_set_block_size(card->func, IF_SDIO_BLOCK_SIZE);
        sdio_release_host(card->func);
        kfree(chunk_buffer);
 release_fw: