diff options
Diffstat (limited to 'drivers/staging/ks7010')
-rw-r--r-- | drivers/staging/ks7010/ks7010_sdio.c | 70 | ||||
-rw-r--r-- | drivers/staging/ks7010/ks7010_sdio.h | 6 | ||||
-rw-r--r-- | drivers/staging/ks7010/ks_hostif.c | 6 | ||||
-rw-r--r-- | drivers/staging/ks7010/ks_wlan.h | 5 |
4 files changed, 34 insertions, 53 deletions
diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c index 2d73ebb71a2e..e3e298995164 100644 --- a/drivers/staging/ks7010/ks7010_sdio.c +++ b/drivers/staging/ks7010/ks7010_sdio.c @@ -54,7 +54,7 @@ static int ks7010_sdio_read(struct ks_wlan_private *priv, unsigned int address, struct ks_sdio_card *card; int ret; - card = priv->ks_wlan_hw.sdio_card; + card = priv->ks_sdio_card; if (length == 1) /* CMD52 */ *buffer = sdio_readb(card->func, address, &ret); @@ -75,7 +75,7 @@ static int ks7010_sdio_write(struct ks_wlan_private *priv, unsigned int address, struct ks_sdio_card *card; int ret; - card = priv->ks_wlan_hw.sdio_card; + card = priv->ks_sdio_card; if (length == 1) /* CMD52 */ sdio_writeb(card->func, *buffer, address, &ret); @@ -198,8 +198,7 @@ static void _ks_wlan_hw_power_save(struct ks_wlan_private *priv) if (atomic_read(&priv->psstatus.confirm_wait) || atomic_read(&priv->psstatus.snooze_guard) || cnt_txqbody(priv)) { - queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, - &priv->ks_wlan_hw.rw_wq, 0); + queue_delayed_work(priv->wq, &priv->rw_dwork, 0); return; } @@ -224,14 +223,12 @@ static void _ks_wlan_hw_power_save(struct ks_wlan_private *priv) return; queue_delayed_work: - queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, - &priv->ks_wlan_hw.rw_wq, 1); + queue_delayed_work(priv->wq, &priv->rw_dwork, 1); } int ks_wlan_hw_power_save(struct ks_wlan_private *priv) { - queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, - &priv->ks_wlan_hw.rw_wq, 1); + queue_delayed_work(priv->wq, &priv->rw_dwork, 1); return 0; } @@ -320,8 +317,7 @@ static void tx_device_task(struct ks_wlan_private *priv) ret = write_to_device(priv, sp->sendp, sp->size); if (ret) { DPRINTK(1, "write_to_device error !!(%d)\n", ret); - queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, - &priv->ks_wlan_hw.rw_wq, 1); + queue_delayed_work(priv->wq, &priv->rw_dwork, 1); return; } } @@ -330,10 +326,8 @@ static void tx_device_task(struct ks_wlan_private *priv) (*sp->complete_handler)(priv, sp->skb); inc_txqhead(priv); - if (cnt_txqbody(priv) > 0) { - queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, - &priv->ks_wlan_hw.rw_wq, 0); - } + if (cnt_txqbody(priv) > 0) + queue_delayed_work(priv->wq, &priv->rw_dwork, 0); } int ks_wlan_hw_tx(struct ks_wlan_private *priv, void *p, unsigned long size, @@ -360,10 +354,9 @@ int ks_wlan_hw_tx(struct ks_wlan_private *priv, void *p, unsigned long size, result = enqueue_txdev(priv, p, size, complete_handler, skb); spin_unlock(&priv->tx_dev.tx_dev_lock); - if (cnt_txqbody(priv) > 0) { - queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, - &priv->ks_wlan_hw.rw_wq, 0); - } + if (cnt_txqbody(priv) > 0) + queue_delayed_work(priv->wq, &priv->rw_dwork, 0); + return result; } @@ -452,42 +445,38 @@ static void ks_wlan_hw_rx(struct ks_wlan_private *priv, uint16_t size) static void ks7010_rw_function(struct work_struct *work) { - struct hw_info_t *hw; struct ks_wlan_private *priv; unsigned char rw_data; int ret; - hw = container_of(work, struct hw_info_t, rw_wq.work); - priv = container_of(hw, struct ks_wlan_private, ks_wlan_hw); + priv = container_of(work, struct ks_wlan_private, rw_dwork.work); DPRINTK(4, "\n"); /* wiat after DOZE */ if (time_after(priv->last_doze + ((30 * HZ) / 1000), jiffies)) { DPRINTK(4, "wait after DOZE\n"); - queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, - &priv->ks_wlan_hw.rw_wq, 1); + queue_delayed_work(priv->wq, &priv->rw_dwork, 1); return; } /* wiat after WAKEUP */ while (time_after(priv->last_wakeup + ((30 * HZ) / 1000), jiffies)) { DPRINTK(4, "wait after WAKEUP\n"); - dev_info(&priv->ks_wlan_hw.sdio_card->func->dev, + dev_info(&priv->ks_sdio_card->func->dev, "wake: %lu %lu\n", priv->last_wakeup + (30 * HZ) / 1000, jiffies); msleep(30); } - sdio_claim_host(priv->ks_wlan_hw.sdio_card->func); + sdio_claim_host(priv->ks_sdio_card->func); /* power save wakeup */ if (atomic_read(&priv->psstatus.status) == PS_SNOOZE) { if (cnt_txqbody(priv) > 0) { ks_wlan_hw_wakeup_request(priv); - queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, - &priv->ks_wlan_hw.rw_wq, 1); + queue_delayed_work(priv->wq, &priv->rw_dwork, 1); } goto err_release_host; } @@ -521,7 +510,7 @@ static void ks7010_rw_function(struct work_struct *work) _ks_wlan_hw_power_save(priv); err_release_host: - sdio_release_host(priv->ks_wlan_hw.sdio_card->func); + sdio_release_host(priv->ks_sdio_card->func); } static void ks_sdio_interrupt(struct sdio_func *func) @@ -584,8 +573,7 @@ static void ks_sdio_interrupt(struct sdio_func *func) if (atomic_read(&priv->psstatus.status) == PS_SNOOZE) { if (cnt_txqbody(priv)) { ks_wlan_hw_wakeup_request(priv); - queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, - &priv->ks_wlan_hw.rw_wq, 1); + queue_delayed_work(priv->wq, &priv->rw_dwork, 1); return; } } else { @@ -595,8 +583,7 @@ static void ks_sdio_interrupt(struct sdio_func *func) } while (rsize); queue_delayed_work: - queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, - &priv->ks_wlan_hw.rw_wq, 0); + queue_delayed_work(priv->wq, &priv->rw_dwork, 0); } static int trx_device_init(struct ks_wlan_private *priv) @@ -714,7 +701,7 @@ static int ks7010_upload_firmware(struct ks_sdio_card *card) } ret = request_firmware(&fw_entry, ROM_FILE, - &priv->ks_wlan_hw.sdio_card->func->dev); + &priv->ks_sdio_card->func->dev); if (ret) goto release_host_and_free; @@ -949,7 +936,7 @@ static int ks7010_sdio_probe(struct sdio_func *func, SET_NETDEV_DEV(netdev, &card->func->dev); /* for create sysfs symlinks */ /* private memory initialize */ - priv->ks_wlan_hw.sdio_card = card; + priv->ks_sdio_card = card; priv->dev_state = DEVICE_STATE_PREBOOT; priv->net_dev = netdev; @@ -1001,13 +988,13 @@ static int ks7010_sdio_probe(struct sdio_func *func, DPRINTK(4, " enable Interrupt : INT_ENABLE=%02X\n", rw_data); priv->dev_state = DEVICE_STATE_BOOT; - priv->ks_wlan_hw.ks7010sdio_wq = create_workqueue("ks7010sdio_wq"); - if (!priv->ks_wlan_hw.ks7010sdio_wq) { + priv->wq = create_workqueue("wq"); + if (!priv->wq) { DPRINTK(1, "create_workqueue failed !!\n"); goto err_free_netdev; } - INIT_DELAYED_WORK(&priv->ks_wlan_hw.rw_wq, ks7010_rw_function); + INIT_DELAYED_WORK(&priv->rw_dwork, ks7010_rw_function); ks7010_card_init(priv); ret = register_netdev(priv->net_dev); @@ -1095,12 +1082,11 @@ static void ks7010_sdio_remove(struct sdio_func *func) DPRINTK(1, "STOP Req\n"); - if (priv->ks_wlan_hw.ks7010sdio_wq) { - flush_workqueue(priv->ks_wlan_hw.ks7010sdio_wq); - destroy_workqueue(priv->ks_wlan_hw.ks7010sdio_wq); + if (priv->wq) { + flush_workqueue(priv->wq); + destroy_workqueue(priv->wq); } - DPRINTK(1, - "destroy_workqueue(priv->ks_wlan_hw.ks7010sdio_wq);\n"); + DPRINTK(1, "destroy_workqueue(priv->wq);\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 76c6b10205fe..22c7ba798104 100644 --- a/drivers/staging/ks7010/ks7010_sdio.h +++ b/drivers/staging/ks7010/ks7010_sdio.h @@ -85,12 +85,6 @@ enum gen_com_reg_b { #define KS7010_IRAM_ADDRESS 0x06000000 -struct hw_info_t { - struct ks_sdio_card *sdio_card; - struct workqueue_struct *ks7010sdio_wq; - struct delayed_work rw_wq; -}; - struct ks_sdio_card { struct sdio_func *func; struct ks_wlan_private *priv; diff --git a/drivers/staging/ks7010/ks_hostif.c b/drivers/staging/ks7010/ks_hostif.c index 2a54b4cb59b4..7151f16e2f9c 100644 --- a/drivers/staging/ks7010/ks_hostif.c +++ b/drivers/staging/ks7010/ks_hostif.c @@ -743,8 +743,7 @@ void hostif_sleep_confirm(struct ks_wlan_private *priv) DPRINTK(3, "\n"); atomic_set(&priv->sleepstatus.doze_request, 1); - queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, - &priv->ks_wlan_hw.rw_wq, 1); + queue_delayed_work(priv->wq, &priv->rw_dwork, 1); } static @@ -1745,8 +1744,7 @@ void hostif_sleep_request(struct ks_wlan_private *priv, unsigned long mode) NULL); } else if (mode == SLP_ACTIVE) { atomic_set(&priv->sleepstatus.wakeup_request, 1); - queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, - &priv->ks_wlan_hw.rw_wq, 1); + queue_delayed_work(priv->wq, &priv->rw_dwork, 1); } else { DPRINTK(3, "invalid mode %ld\n", mode); return; diff --git a/drivers/staging/ks7010/ks_wlan.h b/drivers/staging/ks7010/ks_wlan.h index b0bc7a8d850c..eb15db90733b 100644 --- a/drivers/staging/ks7010/ks_wlan.h +++ b/drivers/staging/ks7010/ks_wlan.h @@ -413,7 +413,10 @@ struct wps_status_t { #endif /* WPS */ struct ks_wlan_private { - struct hw_info_t ks_wlan_hw; /* hardware information */ + /* hardware information */ + struct ks_sdio_card *ks_sdio_card; + struct workqueue_struct *wq; + struct delayed_work rw_dwork; struct tasklet_struct rx_bh_task; struct net_device *net_dev; |