summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/ks7010/TODO1
-rw-r--r--drivers/staging/ks7010/ks7010_sdio.c28
-rw-r--r--drivers/staging/ks7010/ks7010_sdio.h2
3 files changed, 2 insertions, 29 deletions
diff --git a/drivers/staging/ks7010/TODO b/drivers/staging/ks7010/TODO
index 390e821efc0b..5cbb4ca99974 100644
--- a/drivers/staging/ks7010/TODO
+++ b/drivers/staging/ks7010/TODO
@@ -28,7 +28,6 @@ Now the TODOs:
should understand the change you submit.
- drop using a config file and use an upstream technique for configuration
- fix the 'card removal' event when card is inserted when booting
-- driver crashes when removing the card
- check what other upstream wireless mechanisms can be used instead of the
custom ones here
diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index 9300658c4aed..5b78522fad1e 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -817,14 +817,8 @@ static int ks79xx_upload_firmware(ks_wlan_private *priv, struct ks_sdio_card *ca
return rc;
}
-static void card_init_task(struct work_struct *work)
+static void ks7010_card_init(struct ks_wlan_private *priv)
{
- struct hw_info_t *hw;
- struct ks_wlan_private *priv;
-
- hw = container_of(work, struct hw_info_t, init_task);
- priv = container_of(hw, struct ks_wlan_private, ks_wlan_hw);
-
DPRINTK(5,"\ncard_init_task()\n");
/* init_waitqueue_head(&priv->confirm_wait); */
@@ -1052,23 +1046,11 @@ static int ks7910_sdio_probe(struct sdio_func *func, const struct sdio_device_id
goto error_free_read_buf;
}
- priv->ks_wlan_hw.ks7010sdio_init = create_singlethread_workqueue("ks7010sdio_init");
- if(!priv->ks_wlan_hw.ks7010sdio_init){
- DPRINTK(1, "create_workqueue failed !!\n");
- goto error_free_sdio_wq;
- }
-
- INIT_WORK(&priv->ks_wlan_hw.init_task, card_init_task);
INIT_DELAYED_WORK(&priv->ks_wlan_hw.rw_wq, ks7010_rw_function);
-
- queue_work(priv->ks_wlan_hw.ks7010sdio_init, &priv->ks_wlan_hw.init_task);
+ ks7010_card_init(priv);
return 0;
-error_free_sdio_wq:
- flush_workqueue(priv->ks_wlan_hw.ks7010sdio_wq);
- destroy_workqueue(priv->ks_wlan_hw.ks7010sdio_wq);
- priv->ks_wlan_hw.ks7010sdio_wq = NULL;
error_free_read_buf:
kfree(priv->ks_wlan_hw.read_buf);
priv->ks_wlan_hw.read_buf = NULL;
@@ -1139,12 +1121,6 @@ static void ks7910_sdio_remove(struct sdio_func *func)
}
DPRINTK(1, "destroy_workqueue(priv->ks_wlan_hw.ks7010sdio_wq);\n");
- if(priv->ks_wlan_hw.ks7010sdio_init){
- flush_workqueue(priv->ks_wlan_hw.ks7010sdio_init);
- destroy_workqueue(priv->ks_wlan_hw.ks7010sdio_init);
- }
- DPRINTK(1, "destroy_workqueue(priv->ks_wlan_hw.ks7010sdio_init);\n");
-
hostif_exit(priv);
DPRINTK(1, "hostif_exit\n");
diff --git a/drivers/staging/ks7010/ks7010_sdio.h b/drivers/staging/ks7010/ks7010_sdio.h
index 5bf01abbf2ab..93823837f19e 100644
--- a/drivers/staging/ks7010/ks7010_sdio.h
+++ b/drivers/staging/ks7010/ks7010_sdio.h
@@ -96,8 +96,6 @@ struct hw_info_t {
struct ks_sdio_card *sdio_card;
struct completion ks7010_sdio_wait;
struct workqueue_struct *ks7010sdio_wq;
- struct workqueue_struct *ks7010sdio_init;
- struct work_struct init_task;
struct delayed_work rw_wq;
unsigned char *read_buf;
struct tasklet_struct rx_bh_task;