|
@@ -261,13 +261,6 @@ static int omap_mbox_startup(struct omap_mbox *mbox)
|
|
|
}
|
|
|
|
|
|
if (!mbox->use_count++) {
|
|
|
- ret = request_irq(mbox->irq, mbox_interrupt, IRQF_SHARED,
|
|
|
- mbox->name, mbox);
|
|
|
- if (unlikely(ret)) {
|
|
|
- pr_err("failed to register mailbox interrupt:%d\n",
|
|
|
- ret);
|
|
|
- goto fail_request_irq;
|
|
|
- }
|
|
|
mq = mbox_queue_alloc(mbox, NULL, mbox_tx_tasklet);
|
|
|
if (!mq) {
|
|
|
ret = -ENOMEM;
|
|
@@ -282,17 +275,24 @@ static int omap_mbox_startup(struct omap_mbox *mbox)
|
|
|
}
|
|
|
mbox->rxq = mq;
|
|
|
mq->mbox = mbox;
|
|
|
+ ret = request_irq(mbox->irq, mbox_interrupt, IRQF_SHARED,
|
|
|
+ mbox->name, mbox);
|
|
|
+ if (unlikely(ret)) {
|
|
|
+ pr_err("failed to register mailbox interrupt:%d\n",
|
|
|
+ ret);
|
|
|
+ goto fail_request_irq;
|
|
|
+ }
|
|
|
|
|
|
omap_mbox_enable_irq(mbox, IRQ_RX);
|
|
|
}
|
|
|
mutex_unlock(&mbox_configured_lock);
|
|
|
return 0;
|
|
|
|
|
|
+fail_request_irq:
|
|
|
+ mbox_queue_free(mbox->rxq);
|
|
|
fail_alloc_rxq:
|
|
|
mbox_queue_free(mbox->txq);
|
|
|
fail_alloc_txq:
|
|
|
- free_irq(mbox->irq, mbox);
|
|
|
-fail_request_irq:
|
|
|
if (mbox->ops->shutdown)
|
|
|
mbox->ops->shutdown(mbox);
|
|
|
mbox->use_count--;
|