From patchwork Mon Dec 31 13:06:54 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vaibhav Bedia X-Patchwork-Id: 1921311 Return-Path: X-Original-To: patchwork-linux-omap@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 31A373FE37 for ; Mon, 31 Dec 2012 13:08:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751075Ab2LaNH6 (ORCPT ); Mon, 31 Dec 2012 08:07:58 -0500 Received: from devils.ext.ti.com ([198.47.26.153]:59803 "EHLO devils.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750935Ab2LaNH5 (ORCPT ); Mon, 31 Dec 2012 08:07:57 -0500 Received: from dlelxv30.itg.ti.com ([172.17.2.17]) by devils.ext.ti.com (8.13.7/8.13.7) with ESMTP id qBVD7rSG006352; Mon, 31 Dec 2012 07:07:53 -0600 Received: from DQHE73.ent.ti.com (dqhe73.ent.ti.com [172.16.34.100]) by dlelxv30.itg.ti.com (8.13.8/8.13.8) with ESMTP id qBVD7qZv031967; Mon, 31 Dec 2012 07:07:53 -0600 Received: from dbdp32.itg.ti.com (172.24.170.251) by DQHE73.ent.ti.com (172.16.34.100) with Microsoft SMTP Server id 14.1.323.3; Mon, 31 Dec 2012 21:07:51 +0800 Received: from localhost.localdomain (dbdp20.itg.ti.com [172.24.170.38]) by dbdp32.itg.ti.com (8.13.8/8.13.8) with ESMTP id qBVD7dBT030716; Mon, 31 Dec 2012 18:37:50 +0530 From: Vaibhav Bedia To: , , , CC: Vaibhav Bedia , Russ Dill , Santosh Shilimkar Subject: [RFC v2 01/18] mailbox: OMAP2+: Add support for AM33XX Date: Mon, 31 Dec 2012 18:36:54 +0530 Message-ID: <1356959231-17335-2-git-send-email-vaibhav.bedia@ti.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1356959231-17335-1-git-send-email-vaibhav.bedia@ti.com> References: <1356959231-17335-1-git-send-email-vaibhav.bedia@ti.com> MIME-Version: 1.0 Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org Mailbox IP on AM33XX is the same as that present in OMAP4. The single instance of Mailbox IP on AM33XX contains 8 sub-modules and facilitates communication between MPU, PRUs and WKUP_M3. The first mailbox sub-module is assigned for communication between MPU and WKUP-M3. Signed-off-by: Vaibhav Bedia Cc: Russ Dill Cc: Santosh Shilimkar --- v1->v2: Address the comment on operator usage from Russ Dill drivers/mailbox/mailbox-omap2.c | 35 ++++++++++++++++++++++++++++++++++- 1 files changed, 34 insertions(+), 1 deletions(-) diff --git a/drivers/mailbox/mailbox-omap2.c b/drivers/mailbox/mailbox-omap2.c index 7c26bed..6d61159 100644 --- a/drivers/mailbox/mailbox-omap2.c +++ b/drivers/mailbox/mailbox-omap2.c @@ -151,7 +151,7 @@ static void omap2_mbox_disable_irq(struct mailbox *mbox, struct omap_mbox2_priv *p = mbox->priv; u32 bit = (irq == IRQ_TX) ? p->notfull_bit : p->newmsg_bit; - if (!cpu_is_omap44xx()) + if (!cpu_is_omap44xx() && !soc_is_am33xx()) bit = mbox_read_reg(p->irqdisable) & ~bit; mbox_write_reg(bit, p->irqdisable); @@ -352,6 +352,32 @@ struct mailbox mbox_2_info = { struct mailbox *omap4_mboxes[] = { &mbox_1_info, &mbox_2_info, NULL }; #endif +#if defined(CONFIG_SOC_AM33XX) +static struct omap_mbox2_priv omap2_mbox_wkup_m3_priv = { + .tx_fifo = { + .msg = MAILBOX_MESSAGE(0), + .fifo_stat = MAILBOX_FIFOSTATUS(0), + .msg_stat = MAILBOX_MSGSTATUS(0), + }, + .rx_fifo = { + .msg = MAILBOX_MESSAGE(1), + .msg_stat = MAILBOX_MSGSTATUS(1), + }, + .irqenable = OMAP4_MAILBOX_IRQENABLE(3), + .irqstatus = OMAP4_MAILBOX_IRQSTATUS(3), + .irqdisable = OMAP4_MAILBOX_IRQENABLE_CLR(3), + .notfull_bit = MAILBOX_IRQ_NOTFULL(0), + .newmsg_bit = MAILBOX_IRQ_NEWMSG(0), +}; + +struct mailbox mbox_wkup_m3_info = { + .name = "wkup_m3", + .ops = &omap2_mbox_ops, + .priv = &omap2_mbox_wkup_m3_priv, +}; +struct mailbox *am33xx_mboxes[] = { &mbox_wkup_m3_info, NULL }; +#endif + static int __devinit omap2_mbox_probe(struct platform_device *pdev) { struct resource *mem; @@ -386,6 +412,13 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev) list[0]->irq = list[1]->irq = platform_get_irq(pdev, 0); } #endif +#if defined(CONFIG_SOC_AM33XX) + else if (soc_is_am33xx()) { + list = am33xx_mboxes; + + list[0]->irq = platform_get_irq(pdev, 0); + } +#endif else { pr_err("%s: platform not supported\n", __func__); return -ENODEV;