diff options
Diffstat (limited to 'drivers/misc/iwmc3200top')
-rw-r--r-- | drivers/misc/iwmc3200top/debugfs.c | 3 | ||||
-rw-r--r-- | drivers/misc/iwmc3200top/iwmc3200top.h | 4 | ||||
-rw-r--r-- | drivers/misc/iwmc3200top/main.c | 16 |
3 files changed, 10 insertions, 13 deletions
diff --git a/drivers/misc/iwmc3200top/debugfs.c b/drivers/misc/iwmc3200top/debugfs.c index e9eda471f6e0..62fbaec48207 100644 --- a/drivers/misc/iwmc3200top/debugfs.c +++ b/drivers/misc/iwmc3200top/debugfs.c | |||
@@ -71,6 +71,7 @@ ssize_t iwmct_dbgfs_##name##_write(struct file *file, \ | |||
71 | static const struct file_operations iwmct_dbgfs_##name##_ops = { \ | 71 | static const struct file_operations iwmct_dbgfs_##name##_ops = { \ |
72 | .read = iwmct_dbgfs_##name##_read, \ | 72 | .read = iwmct_dbgfs_##name##_read, \ |
73 | .open = iwmct_dbgfs_open_file_generic, \ | 73 | .open = iwmct_dbgfs_open_file_generic, \ |
74 | .llseek = generic_file_llseek, \ | ||
74 | }; | 75 | }; |
75 | 76 | ||
76 | #define DEBUGFS_WRITE_FILE_OPS(name) \ | 77 | #define DEBUGFS_WRITE_FILE_OPS(name) \ |
@@ -78,6 +79,7 @@ ssize_t iwmct_dbgfs_##name##_write(struct file *file, \ | |||
78 | static const struct file_operations iwmct_dbgfs_##name##_ops = { \ | 79 | static const struct file_operations iwmct_dbgfs_##name##_ops = { \ |
79 | .write = iwmct_dbgfs_##name##_write, \ | 80 | .write = iwmct_dbgfs_##name##_write, \ |
80 | .open = iwmct_dbgfs_open_file_generic, \ | 81 | .open = iwmct_dbgfs_open_file_generic, \ |
82 | .llseek = generic_file_llseek, \ | ||
81 | }; | 83 | }; |
82 | 84 | ||
83 | #define DEBUGFS_READ_WRITE_FILE_OPS(name) \ | 85 | #define DEBUGFS_READ_WRITE_FILE_OPS(name) \ |
@@ -87,6 +89,7 @@ ssize_t iwmct_dbgfs_##name##_write(struct file *file, \ | |||
87 | .write = iwmct_dbgfs_##name##_write, \ | 89 | .write = iwmct_dbgfs_##name##_write, \ |
88 | .read = iwmct_dbgfs_##name##_read, \ | 90 | .read = iwmct_dbgfs_##name##_read, \ |
89 | .open = iwmct_dbgfs_open_file_generic, \ | 91 | .open = iwmct_dbgfs_open_file_generic, \ |
92 | .llseek = generic_file_llseek, \ | ||
90 | }; | 93 | }; |
91 | 94 | ||
92 | 95 | ||
diff --git a/drivers/misc/iwmc3200top/iwmc3200top.h b/drivers/misc/iwmc3200top/iwmc3200top.h index 740ff0738ea8..620973ed8bf9 100644 --- a/drivers/misc/iwmc3200top/iwmc3200top.h +++ b/drivers/misc/iwmc3200top/iwmc3200top.h | |||
@@ -183,9 +183,7 @@ struct iwmct_priv { | |||
183 | u32 barker; | 183 | u32 barker; |
184 | struct iwmct_dbg dbg; | 184 | struct iwmct_dbg dbg; |
185 | 185 | ||
186 | /* drivers work queue */ | 186 | /* drivers work items */ |
187 | struct workqueue_struct *wq; | ||
188 | struct workqueue_struct *bus_rescan_wq; | ||
189 | struct work_struct bus_rescan_worker; | 187 | struct work_struct bus_rescan_worker; |
190 | struct work_struct isr_worker; | 188 | struct work_struct isr_worker; |
191 | 189 | ||
diff --git a/drivers/misc/iwmc3200top/main.c b/drivers/misc/iwmc3200top/main.c index c73cef2c3c5e..b1f4563be9ae 100644 --- 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) | |||
89 | switch (msg->hdr.opcode) { | 89 | switch (msg->hdr.opcode) { |
90 | case OP_OPR_ALIVE: | 90 | case OP_OPR_ALIVE: |
91 | LOG_INFO(priv, FW_MSG, "Got ALIVE from device, wake rescan\n"); | 91 | LOG_INFO(priv, FW_MSG, "Got ALIVE from device, wake rescan\n"); |
92 | queue_work(priv->bus_rescan_wq, &priv->bus_rescan_worker); | 92 | schedule_work(&priv->bus_rescan_worker); |
93 | break; | 93 | break; |
94 | default: | 94 | default: |
95 | LOG_INFO(priv, FW_MSG, "Received msg opcode 0x%X\n", | 95 | 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) | |||
268 | LOG_INFO(priv, IRQ, "ACK barker arrived " | 268 | LOG_INFO(priv, IRQ, "ACK barker arrived " |
269 | "- starting FW download\n"); | 269 | "- starting FW download\n"); |
270 | } else { /* REBOOT barker */ | 270 | } else { /* REBOOT barker */ |
271 | LOG_INFO(priv, IRQ, "Recieved reboot barker: %x\n", barker); | 271 | LOG_INFO(priv, IRQ, "Received reboot barker: %x\n", barker); |
272 | priv->barker = barker; | 272 | priv->barker = barker; |
273 | 273 | ||
274 | if (barker & BARKER_DNLOAD_SYNC_MSK) { | 274 | if (barker & BARKER_DNLOAD_SYNC_MSK) { |
@@ -360,7 +360,7 @@ static void iwmct_irq(struct sdio_func *func) | |||
360 | /* clear the function's interrupt request bit (write 1 to clear) */ | 360 | /* clear the function's interrupt request bit (write 1 to clear) */ |
361 | sdio_writeb(func, 1, IWMC_SDIO_INTR_CLEAR_ADDR, &ret); | 361 | sdio_writeb(func, 1, IWMC_SDIO_INTR_CLEAR_ADDR, &ret); |
362 | 362 | ||
363 | queue_work(priv->wq, &priv->isr_worker); | 363 | schedule_work(&priv->isr_worker); |
364 | 364 | ||
365 | LOG_TRACE(priv, IRQ, "exit iwmct_irq\n"); | 365 | LOG_TRACE(priv, IRQ, "exit iwmct_irq\n"); |
366 | 366 | ||
@@ -506,10 +506,6 @@ static int iwmct_probe(struct sdio_func *func, | |||
506 | priv->func = func; | 506 | priv->func = func; |
507 | sdio_set_drvdata(func, priv); | 507 | sdio_set_drvdata(func, priv); |
508 | 508 | ||
509 | |||
510 | /* create drivers work queue */ | ||
511 | priv->wq = create_workqueue(DRV_NAME "_wq"); | ||
512 | priv->bus_rescan_wq = create_workqueue(DRV_NAME "_rescan_wq"); | ||
513 | INIT_WORK(&priv->bus_rescan_worker, iwmct_rescan_worker); | 509 | INIT_WORK(&priv->bus_rescan_worker, iwmct_rescan_worker); |
514 | INIT_WORK(&priv->isr_worker, iwmct_irq_read_worker); | 510 | INIT_WORK(&priv->isr_worker, iwmct_irq_read_worker); |
515 | 511 | ||
@@ -604,9 +600,9 @@ static void iwmct_remove(struct sdio_func *func) | |||
604 | sdio_release_irq(func); | 600 | sdio_release_irq(func); |
605 | sdio_release_host(func); | 601 | sdio_release_host(func); |
606 | 602 | ||
607 | /* Safely destroy osc workqueue */ | 603 | /* Make sure works are finished */ |
608 | destroy_workqueue(priv->bus_rescan_wq); | 604 | flush_work_sync(&priv->bus_rescan_worker); |
609 | destroy_workqueue(priv->wq); | 605 | flush_work_sync(&priv->isr_worker); |
610 | 606 | ||
611 | sdio_claim_host(func); | 607 | sdio_claim_host(func); |
612 | sdio_disable_func(func); | 608 | sdio_disable_func(func); |