diff options
| -rw-r--r-- | arch/arm/plat-omap/mailbox.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/arm/plat-omap/mailbox.c b/arch/arm/plat-omap/mailbox.c index 8e90633e4cb9..4229cec53140 100644 --- a/arch/arm/plat-omap/mailbox.c +++ b/arch/arm/plat-omap/mailbox.c | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | 28 | ||
| 29 | #include <plat/mailbox.h> | 29 | #include <plat/mailbox.h> |
| 30 | 30 | ||
| 31 | static struct workqueue_struct *mboxd; | ||
| 31 | static struct omap_mbox *mboxes; | 32 | static struct omap_mbox *mboxes; |
| 32 | static DEFINE_RWLOCK(mboxes_lock); | 33 | static DEFINE_RWLOCK(mboxes_lock); |
| 33 | 34 | ||
| @@ -188,7 +189,7 @@ static void __mbox_rx_interrupt(struct omap_mbox *mbox) | |||
| 188 | /* no more messages in the fifo. clear IRQ source. */ | 189 | /* no more messages in the fifo. clear IRQ source. */ |
| 189 | ack_mbox_irq(mbox, IRQ_RX); | 190 | ack_mbox_irq(mbox, IRQ_RX); |
| 190 | nomem: | 191 | nomem: |
| 191 | schedule_work(&mbox->rxq->work); | 192 | queue_work(mboxd, &mbox->rxq->work); |
| 192 | } | 193 | } |
| 193 | 194 | ||
| 194 | static irqreturn_t mbox_interrupt(int irq, void *p) | 195 | static irqreturn_t mbox_interrupt(int irq, void *p) |
| @@ -401,12 +402,17 @@ EXPORT_SYMBOL(omap_mbox_unregister); | |||
| 401 | 402 | ||
| 402 | static int __init omap_mbox_init(void) | 403 | static int __init omap_mbox_init(void) |
| 403 | { | 404 | { |
| 405 | mboxd = create_workqueue("mboxd"); | ||
| 406 | if (!mboxd) | ||
| 407 | return -ENOMEM; | ||
| 408 | |||
| 404 | return 0; | 409 | return 0; |
| 405 | } | 410 | } |
| 406 | module_init(omap_mbox_init); | 411 | module_init(omap_mbox_init); |
| 407 | 412 | ||
| 408 | static void __exit omap_mbox_exit(void) | 413 | static void __exit omap_mbox_exit(void) |
| 409 | { | 414 | { |
| 415 | destroy_workqueue(mboxd); | ||
| 410 | } | 416 | } |
| 411 | module_exit(omap_mbox_exit); | 417 | module_exit(omap_mbox_exit); |
| 412 | 418 | ||
