aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwmc3200wifi/sdio.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwmc3200wifi/sdio.c')
-rw-r--r--drivers/net/wireless/iwmc3200wifi/sdio.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/net/wireless/iwmc3200wifi/sdio.c b/drivers/net/wireless/iwmc3200wifi/sdio.c
index 8b1de84003ca..1eafd6dec3fd 100644
--- a/drivers/net/wireless/iwmc3200wifi/sdio.c
+++ b/drivers/net/wireless/iwmc3200wifi/sdio.c
@@ -63,6 +63,7 @@
63 */ 63 */
64 64
65#include <linux/kernel.h> 65#include <linux/kernel.h>
66#include <linux/slab.h>
66#include <linux/netdevice.h> 67#include <linux/netdevice.h>
67#include <linux/debugfs.h> 68#include <linux/debugfs.h>
68#include <linux/mmc/sdio_ids.h> 69#include <linux/mmc/sdio_ids.h>
@@ -224,8 +225,6 @@ static int if_sdio_disable(struct iwm_priv *iwm)
224 struct iwm_sdio_priv *hw = iwm_to_if_sdio(iwm); 225 struct iwm_sdio_priv *hw = iwm_to_if_sdio(iwm);
225 int ret; 226 int ret;
226 227
227 iwm_reset(iwm);
228
229 sdio_claim_host(hw->func); 228 sdio_claim_host(hw->func);
230 sdio_writeb(hw->func, 0, IWM_SDIO_INTR_ENABLE_ADDR, &ret); 229 sdio_writeb(hw->func, 0, IWM_SDIO_INTR_ENABLE_ADDR, &ret);
231 if (ret < 0) 230 if (ret < 0)
@@ -237,6 +236,8 @@ static int if_sdio_disable(struct iwm_priv *iwm)
237 236
238 iwm_sdio_rx_free(hw); 237 iwm_sdio_rx_free(hw);
239 238
239 iwm_reset(iwm);
240
240 IWM_DBG_SDIO(iwm, INFO, "IWM SDIO disable\n"); 241 IWM_DBG_SDIO(iwm, INFO, "IWM SDIO disable\n");
241 242
242 return 0; 243 return 0;
@@ -399,6 +400,9 @@ static struct iwm_if_ops if_sdio_ops = {
399 .calib_lmac_name = "iwmc3200wifi-calib-sdio.bin", 400 .calib_lmac_name = "iwmc3200wifi-calib-sdio.bin",
400 .lmac_name = "iwmc3200wifi-lmac-sdio.bin", 401 .lmac_name = "iwmc3200wifi-lmac-sdio.bin",
401}; 402};
403MODULE_FIRMWARE("iwmc3200wifi-umac-sdio.bin");
404MODULE_FIRMWARE("iwmc3200wifi-calib-sdio.bin");
405MODULE_FIRMWARE("iwmc3200wifi-lmac-sdio.bin");
402 406
403static int iwm_sdio_probe(struct sdio_func *func, 407static int iwm_sdio_probe(struct sdio_func *func,
404 const struct sdio_device_id *id) 408 const struct sdio_device_id *id)
@@ -493,8 +497,10 @@ static void iwm_sdio_remove(struct sdio_func *func)
493} 497}
494 498
495static const struct sdio_device_id iwm_sdio_ids[] = { 499static const struct sdio_device_id iwm_sdio_ids[] = {
496 { SDIO_DEVICE(SDIO_VENDOR_ID_INTEL, 500 /* Global/AGN SKU */
497 SDIO_DEVICE_ID_INTEL_IWMC3200WIFI) }, 501 { SDIO_DEVICE(SDIO_VENDOR_ID_INTEL, 0x1403) },
502 /* BGN SKU */
503 { SDIO_DEVICE(SDIO_VENDOR_ID_INTEL, 0x1408) },
498 { /* end: all zeroes */ }, 504 { /* end: all zeroes */ },
499}; 505};
500MODULE_DEVICE_TABLE(sdio, iwm_sdio_ids); 506MODULE_DEVICE_TABLE(sdio, iwm_sdio_ids);