diff options
Diffstat (limited to 'arch/arm/plat-omap/mailbox.c')
-rw-r--r-- | arch/arm/plat-omap/mailbox.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/arch/arm/plat-omap/mailbox.c b/arch/arm/plat-omap/mailbox.c index ad32621aa52e..5e13c3884aa4 100644 --- a/arch/arm/plat-omap/mailbox.c +++ b/arch/arm/plat-omap/mailbox.c | |||
@@ -282,6 +282,8 @@ static int omap_mbox_startup(struct omap_mbox *mbox) | |||
282 | } | 282 | } |
283 | mbox->rxq = mq; | 283 | mbox->rxq = mq; |
284 | mq->mbox = mbox; | 284 | mq->mbox = mbox; |
285 | |||
286 | omap_mbox_enable_irq(mbox, IRQ_RX); | ||
285 | } | 287 | } |
286 | mutex_unlock(&mbox_configured_lock); | 288 | mutex_unlock(&mbox_configured_lock); |
287 | return 0; | 289 | return 0; |
@@ -305,6 +307,7 @@ static void omap_mbox_fini(struct omap_mbox *mbox) | |||
305 | mutex_lock(&mbox_configured_lock); | 307 | mutex_lock(&mbox_configured_lock); |
306 | 308 | ||
307 | if (!--mbox->use_count) { | 309 | if (!--mbox->use_count) { |
310 | omap_mbox_disable_irq(mbox, IRQ_RX); | ||
308 | free_irq(mbox->irq, mbox); | 311 | free_irq(mbox->irq, mbox); |
309 | tasklet_kill(&mbox->txq->tasklet); | 312 | tasklet_kill(&mbox->txq->tasklet); |
310 | flush_work_sync(&mbox->rxq->work); | 313 | flush_work_sync(&mbox->rxq->work); |
@@ -338,13 +341,15 @@ struct omap_mbox *omap_mbox_get(const char *name, struct notifier_block *nb) | |||
338 | if (!mbox) | 341 | if (!mbox) |
339 | return ERR_PTR(-ENOENT); | 342 | return ERR_PTR(-ENOENT); |
340 | 343 | ||
341 | ret = omap_mbox_startup(mbox); | ||
342 | if (ret) | ||
343 | return ERR_PTR(-ENODEV); | ||
344 | |||
345 | if (nb) | 344 | if (nb) |
346 | blocking_notifier_chain_register(&mbox->notifier, nb); | 345 | blocking_notifier_chain_register(&mbox->notifier, nb); |
347 | 346 | ||
347 | ret = omap_mbox_startup(mbox); | ||
348 | if (ret) { | ||
349 | blocking_notifier_chain_unregister(&mbox->notifier, nb); | ||
350 | return ERR_PTR(-ENODEV); | ||
351 | } | ||
352 | |||
348 | return mbox; | 353 | return mbox; |
349 | } | 354 | } |
350 | EXPORT_SYMBOL(omap_mbox_get); | 355 | EXPORT_SYMBOL(omap_mbox_get); |