aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/plat-omap/mailbox.c8
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
31static struct workqueue_struct *mboxd;
31static struct omap_mbox *mboxes; 32static struct omap_mbox *mboxes;
32static DEFINE_RWLOCK(mboxes_lock); 33static 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);
190nomem: 191nomem:
191 schedule_work(&mbox->rxq->work); 192 queue_work(mboxd, &mbox->rxq->work);
192} 193}
193 194
194static irqreturn_t mbox_interrupt(int irq, void *p) 195static irqreturn_t mbox_interrupt(int irq, void *p)
@@ -401,12 +402,17 @@ EXPORT_SYMBOL(omap_mbox_unregister);
401 402
402static int __init omap_mbox_init(void) 403static 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}
406module_init(omap_mbox_init); 411module_init(omap_mbox_init);
407 412
408static void __exit omap_mbox_exit(void) 413static void __exit omap_mbox_exit(void)
409{ 414{
415 destroy_workqueue(mboxd);
410} 416}
411module_exit(omap_mbox_exit); 417module_exit(omap_mbox_exit);
412 418