/* Mailbox H/W preparations */ static int omap2_mbox_startup(struct omap_mbox *mbox) { u32 l; unsigned long timeout; if (!cpu_is_omap44xx()) { mbox_ick_handle = clk_get(NULL, "mailboxes_ick"); if (IS_ERR(mbox_ick_handle)) { printk(KERN_ERR "Could not get mailboxes_ick: %ld\n", PTR_ERR(mbox_ick_handle)); return PTR_ERR(mbox_ick_handle); } clk_enable(mbox_ick_handle); } if (cpu_is_omap44xx()) { mbox_write_reg(OMAP4_SOFTRESET, MAILBOX_SYSCONFIG); timeout = jiffies + msecs_to_jiffies(20); do { l = mbox_read_reg(MAILBOX_SYSCONFIG); if (!(l & OMAP4_SOFTRESET)) break; } while (!time_after(jiffies, timeout)); if (l & OMAP4_SOFTRESET) { pr_err("Can't take mailbox out of reset\n"); return -ENODEV; } } else { mbox_write_reg(SOFTRESET, MAILBOX_SYSCONFIG); timeout = jiffies + msecs_to_jiffies(20); do { l = mbox_read_reg(MAILBOX_SYSSTATUS); if (l & RESETDONE) break; } while (!time_after(jiffies, timeout)); if (!(l & RESETDONE)) { pr_err("Can't take mailbox out of reset\n"); return -ENODEV; } } l = mbox_read_reg(MAILBOX_REVISION); pr_info("omap mailbox rev %d.%d\n", (l & 0xf0) >> 4, (l & 0x0f)); if (cpu_is_omap44xx()) l = OMAP4_SMARTIDLE; else l = SMARTIDLE | AUTOIDLE; mbox_write_reg(l, MAILBOX_SYSCONFIG); omap2_mbox_enable_irq(mbox, IRQ_RX); return 0; }
/* Mailbox H/W preparations */ static int omap2_mbox_startup(struct omap_mbox *mbox) { u32 l; pm_runtime_enable(mbox->dev->parent); pm_runtime_get_sync(mbox->dev->parent); l = mbox_read_reg(MAILBOX_REVISION); pr_debug("omap mailbox rev %d.%d\n", (l & 0xf0) >> 4, (l & 0x0f)); omap2_mbox_enable_irq(mbox, IRQ_RX); return 0; }
/* Mailbox H/W preparations */ static int omap2_mbox_startup(struct omap_mbox *mbox) { unsigned int l; mbox_ick_handle = clk_get(NULL, "mailboxes_ick"); if (IS_ERR(mbox_ick_handle)) { printk("Could not get mailboxes_ick\n"); return -ENODEV; } clk_enable(mbox_ick_handle); l = mbox_read_reg(MAILBOX_REVISION); pr_info("omap mailbox rev %d.%d\n", (l & 0xf0) >> 4, (l & 0x0f)); /* set smart-idle & autoidle */ l = mbox_read_reg(MAILBOX_SYSCONFIG); l |= 0x00000011; mbox_write_reg(l, MAILBOX_SYSCONFIG); omap2_mbox_enable_irq(mbox, IRQ_RX); return 0; }