|
@@ -223,6 +223,10 @@ static struct bridge_drv_interface drv_interface_fxns = {
|
|
|
bridge_msg_set_queue_id,
|
|
|
};
|
|
|
|
|
|
+static struct notifier_block dsp_mbox_notifier = {
|
|
|
+ .notifier_call = io_mbox_msg,
|
|
|
+};
|
|
|
+
|
|
|
static inline void flush_all(struct bridge_dev_context *dev_context)
|
|
|
{
|
|
|
if (dev_context->dw_brd_state == BRD_DSP_HIBERNATION ||
|
|
@@ -553,7 +557,7 @@ static int bridge_brd_start(struct bridge_dev_context *dev_ctxt,
|
|
|
* Enable Mailbox events and also drain any pending
|
|
|
* stale messages.
|
|
|
*/
|
|
|
- dev_context->mbox = omap_mbox_get("dsp");
|
|
|
+ dev_context->mbox = omap_mbox_get("dsp", &dsp_mbox_notifier);
|
|
|
if (IS_ERR(dev_context->mbox)) {
|
|
|
dev_context->mbox = NULL;
|
|
|
pr_err("%s: Failed to get dsp mailbox handle\n",
|
|
@@ -563,8 +567,6 @@ static int bridge_brd_start(struct bridge_dev_context *dev_ctxt,
|
|
|
|
|
|
}
|
|
|
if (!status) {
|
|
|
- dev_context->mbox->rxq->callback = (int (*)(void *))io_mbox_msg;
|
|
|
-
|
|
|
/*PM_IVA2GRPSEL_PER = 0xC0;*/
|
|
|
temp = readl(resources->dw_per_pm_base + 0xA8);
|
|
|
temp = (temp & 0xFFFFFF30) | 0xC0;
|
|
@@ -685,7 +687,7 @@ static int bridge_brd_stop(struct bridge_dev_context *dev_ctxt)
|
|
|
/* Disable the mailbox interrupts */
|
|
|
if (dev_context->mbox) {
|
|
|
omap_mbox_disable_irq(dev_context->mbox, IRQ_RX);
|
|
|
- omap_mbox_put(dev_context->mbox);
|
|
|
+ omap_mbox_put(dev_context->mbox, &dsp_mbox_notifier);
|
|
|
dev_context->mbox = NULL;
|
|
|
}
|
|
|
/* Reset IVA2 clocks*/
|