|
@@ -303,3 +303,72 @@ static struct omap_mbox2_priv omap2_mbox_1_priv = {
|
|
|
.rx_fifo = {
|
|
|
.msg = MAILBOX_MESSAGE(1),
|
|
|
.msg_stat = MAILBOX_MSGSTATUS(1),
|
|
|
+ },
|
|
|
+ .irqenable = OMAP4_MAILBOX_IRQENABLE(0),
|
|
|
+ .irqstatus = OMAP4_MAILBOX_IRQSTATUS(0),
|
|
|
+ .notfull_bit = MAILBOX_IRQ_NOTFULL(0),
|
|
|
+ .newmsg_bit = MAILBOX_IRQ_NEWMSG(1),
|
|
|
+ .irqdisable = OMAP4_MAILBOX_IRQENABLE_CLR(0),
|
|
|
+};
|
|
|
+
|
|
|
+struct omap_mbox mbox_1_info = {
|
|
|
+ .name = "mailbox-1",
|
|
|
+ .ops = &omap2_mbox_ops,
|
|
|
+ .priv = &omap2_mbox_1_priv,
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_mbox2_priv omap2_mbox_2_priv = {
|
|
|
+ .tx_fifo = {
|
|
|
+ .msg = MAILBOX_MESSAGE(3),
|
|
|
+ .fifo_stat = MAILBOX_FIFOSTATUS(3),
|
|
|
+ },
|
|
|
+ .rx_fifo = {
|
|
|
+ .msg = MAILBOX_MESSAGE(2),
|
|
|
+ .msg_stat = MAILBOX_MSGSTATUS(2),
|
|
|
+ },
|
|
|
+ .irqenable = OMAP4_MAILBOX_IRQENABLE(0),
|
|
|
+ .irqstatus = OMAP4_MAILBOX_IRQSTATUS(0),
|
|
|
+ .notfull_bit = MAILBOX_IRQ_NOTFULL(3),
|
|
|
+ .newmsg_bit = MAILBOX_IRQ_NEWMSG(2),
|
|
|
+ .irqdisable = OMAP4_MAILBOX_IRQENABLE_CLR(0),
|
|
|
+};
|
|
|
+
|
|
|
+struct omap_mbox mbox_2_info = {
|
|
|
+ .name = "mailbox-2",
|
|
|
+ .ops = &omap2_mbox_ops,
|
|
|
+ .priv = &omap2_mbox_2_priv,
|
|
|
+};
|
|
|
+
|
|
|
+struct omap_mbox *omap4_mboxes[] = { &mbox_1_info, &mbox_2_info, NULL };
|
|
|
+#endif
|
|
|
+
|
|
|
+static int omap2_mbox_probe(struct platform_device *pdev)
|
|
|
+{
|
|
|
+ struct resource *mem;
|
|
|
+ int ret;
|
|
|
+ struct omap_mbox **list;
|
|
|
+
|
|
|
+ if (false)
|
|
|
+ ;
|
|
|
+#if defined(CONFIG_ARCH_OMAP3)
|
|
|
+ else if (cpu_is_omap34xx()) {
|
|
|
+ list = omap3_mboxes;
|
|
|
+
|
|
|
+ list[0]->irq = platform_get_irq(pdev, 0);
|
|
|
+ }
|
|
|
+#endif
|
|
|
+#if defined(CONFIG_ARCH_OMAP2)
|
|
|
+ else if (cpu_is_omap2430()) {
|
|
|
+ list = omap2_mboxes;
|
|
|
+
|
|
|
+ list[0]->irq = platform_get_irq(pdev, 0);
|
|
|
+ } else if (cpu_is_omap2420()) {
|
|
|
+ list = omap2_mboxes;
|
|
|
+
|
|
|
+ list[0]->irq = platform_get_irq_byname(pdev, "dsp");
|
|
|
+ list[1]->irq = platform_get_irq_byname(pdev, "iva");
|
|
|
+ }
|
|
|
+#endif
|
|
|
+#if defined(CONFIG_ARCH_OMAP4)
|
|
|
+ else if (cpu_is_omap44xx()) {
|
|
|
+ list = omap4_mboxes;
|