git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge commit 'v2.6.39-rc3' into for-2.6.39
[pandora-kernel.git]
/
drivers
/
misc
/
iwmc3200top
/
main.c
diff --git
a/drivers/misc/iwmc3200top/main.c
b/drivers/misc/iwmc3200top/main.c
index
c73cef2
..
b1f4563
100644
(file)
--- a/
drivers/misc/iwmc3200top/main.c
+++ b/
drivers/misc/iwmc3200top/main.c
@@
-89,7
+89,7
@@
static void op_top_message(struct iwmct_priv *priv, struct top_msg *msg)
switch (msg->hdr.opcode) {
case OP_OPR_ALIVE:
LOG_INFO(priv, FW_MSG, "Got ALIVE from device, wake rescan\n");
switch (msg->hdr.opcode) {
case OP_OPR_ALIVE:
LOG_INFO(priv, FW_MSG, "Got ALIVE from device, wake rescan\n");
-
queue_work(priv->bus_rescan_wq,
&priv->bus_rescan_worker);
+
schedule_work(
&priv->bus_rescan_worker);
break;
default:
LOG_INFO(priv, FW_MSG, "Received msg opcode 0x%X\n",
break;
default:
LOG_INFO(priv, FW_MSG, "Received msg opcode 0x%X\n",
@@
-268,7
+268,7
@@
static void iwmct_irq_read_worker(struct work_struct *ws)
LOG_INFO(priv, IRQ, "ACK barker arrived "
"- starting FW download\n");
} else { /* REBOOT barker */
LOG_INFO(priv, IRQ, "ACK barker arrived "
"- starting FW download\n");
} else { /* REBOOT barker */
- LOG_INFO(priv, IRQ, "Rec
ie
ved reboot barker: %x\n", barker);
+ LOG_INFO(priv, IRQ, "Rec
ei
ved reboot barker: %x\n", barker);
priv->barker = barker;
if (barker & BARKER_DNLOAD_SYNC_MSK) {
priv->barker = barker;
if (barker & BARKER_DNLOAD_SYNC_MSK) {
@@
-360,7
+360,7
@@
static void iwmct_irq(struct sdio_func *func)
/* clear the function's interrupt request bit (write 1 to clear) */
sdio_writeb(func, 1, IWMC_SDIO_INTR_CLEAR_ADDR, &ret);
/* clear the function's interrupt request bit (write 1 to clear) */
sdio_writeb(func, 1, IWMC_SDIO_INTR_CLEAR_ADDR, &ret);
-
queue_work(priv->wq,
&priv->isr_worker);
+
schedule_work(
&priv->isr_worker);
LOG_TRACE(priv, IRQ, "exit iwmct_irq\n");
LOG_TRACE(priv, IRQ, "exit iwmct_irq\n");
@@
-506,10
+506,6
@@
static int iwmct_probe(struct sdio_func *func,
priv->func = func;
sdio_set_drvdata(func, priv);
priv->func = func;
sdio_set_drvdata(func, priv);
-
- /* create drivers work queue */
- priv->wq = create_workqueue(DRV_NAME "_wq");
- priv->bus_rescan_wq = create_workqueue(DRV_NAME "_rescan_wq");
INIT_WORK(&priv->bus_rescan_worker, iwmct_rescan_worker);
INIT_WORK(&priv->isr_worker, iwmct_irq_read_worker);
INIT_WORK(&priv->bus_rescan_worker, iwmct_rescan_worker);
INIT_WORK(&priv->isr_worker, iwmct_irq_read_worker);
@@
-604,9
+600,9
@@
static void iwmct_remove(struct sdio_func *func)
sdio_release_irq(func);
sdio_release_host(func);
sdio_release_irq(func);
sdio_release_host(func);
- /*
Safely destroy osc workqueue
*/
-
destroy_workqueue(priv->bus_rescan_wq
);
-
destroy_workqueue(priv->wq
);
+ /*
Make sure works are finished
*/
+
flush_work_sync(&priv->bus_rescan_worker
);
+
flush_work_sync(&priv->isr_worker
);
sdio_claim_host(func);
sdio_disable_func(func);
sdio_claim_host(func);
sdio_disable_func(func);