|
@@ -28,6 +28,7 @@
|
|
|
|
|
|
#include <plat/mailbox.h>
|
|
|
|
|
|
+static struct workqueue_struct *mboxd;
|
|
|
static struct omap_mbox *mboxes;
|
|
|
static DEFINE_RWLOCK(mboxes_lock);
|
|
|
|
|
@@ -188,7 +189,7 @@ static void __mbox_rx_interrupt(struct omap_mbox *mbox)
|
|
|
/* no more messages in the fifo. clear IRQ source. */
|
|
|
ack_mbox_irq(mbox, IRQ_RX);
|
|
|
nomem:
|
|
|
- schedule_work(&mbox->rxq->work);
|
|
|
+ queue_work(mboxd, &mbox->rxq->work);
|
|
|
}
|
|
|
|
|
|
static irqreturn_t mbox_interrupt(int irq, void *p)
|
|
@@ -401,12 +402,17 @@ EXPORT_SYMBOL(omap_mbox_unregister);
|
|
|
|
|
|
static int __init omap_mbox_init(void)
|
|
|
{
|
|
|
+ mboxd = create_workqueue("mboxd");
|
|
|
+ if (!mboxd)
|
|
|
+ return -ENOMEM;
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
module_init(omap_mbox_init);
|
|
|
|
|
|
static void __exit omap_mbox_exit(void)
|
|
|
{
|
|
|
+ destroy_workqueue(mboxd);
|
|
|
}
|
|
|
module_exit(omap_mbox_exit);
|
|
|
|