RE: [PATCH 8/10 v2] omap mailbox: OMAP4-Mailbox - Adds code changes to support OMAP4 mailbox.
> -Original Message- > From: Hiroshi DOYU [mailto:hiroshi.d...@nokia.com] > Sent: Wednesday, November 18, 2009 2:01 PM > To: C.A, Subramaniam > Cc: t...@atomide.com; linux-omap@vger.kernel.org; Kanigeri, > Hari; Gupta, Ramesh > Subject: Re: [PATCH 8/10 v2] omap mailbox: OMAP4-Mailbox - > Adds code changes to support OMAP4 mailbox. > > Hi Subb, > > From: "ext C.A, Subramaniam" > Subject: RE: [PATCH 8/10 v2] omap mailbox: OMAP4-Mailbox - > Adds code changes to support OMAP4 mailbox. > Date: Wed, 18 Nov 2009 09:15:42 +0100 > > [...] > > > > > /* SYSCONFIG: register bit definition */ > > > > #define AUTOIDLE (1 << 0) > > > > @@ -39,7 +45,11 @@ > > > > #define RESETDONE (1 << 0) > > > > > > > > #define MBOX_REG_SIZE 0x120 > > > > + > > > > +#define OMAP4_MBOX_REG_SIZE0x130 > > > > + > > > > #define MBOX_NR_REGS (MBOX_REG_SIZE > > > / sizeof(u32)) > > > > +#define OMAP4_MBOX_NR_REGS (OMAP4_MBOX_REG_SIZE / > > > sizeof(u32)) > > > > > > Doesn't this modification break other OMAP arch support? > > > > > > We need to support OMAP2/3/4 mailbox with this file. > > > > > > > > > > > static void __iomem *mbox_base; > > > > > > > > @@ -56,7 +66,8 @@ struct omap_mbox2_priv { > > > > unsigned long irqstatus; > > > > u32 newmsg_bit; > > > > u32 notfull_bit; > > > > - u32 ctx[MBOX_NR_REGS]; > > > > + u32 ctx[OMAP4_MBOX_REG_SIZE]; > > > > This reserves the array size to be max of both the values . > However, > > while saving and restoring the context we decide on the > size based on > > the arch > > The max array reservation may work with other omap arch as > well, but at least, shoulnd't the above > "ctx[OMAP4_MBOX_REG_SIZE]" be "ctx[OMAP4_MBOX_NR_REG]"? Hi Hiroshi, Yes my bad. Thank you pointing that out. I will change and send the patch afresh. > > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 8/10 v2] omap mailbox: OMAP4-Mailbox - Adds code changes to support OMAP4 mailbox.
Hi Subb, From: "ext C.A, Subramaniam" Subject: RE: [PATCH 8/10 v2] omap mailbox: OMAP4-Mailbox - Adds code changes to support OMAP4 mailbox. Date: Wed, 18 Nov 2009 09:15:42 +0100 [...] > > > /* SYSCONFIG: register bit definition */ > > > #define AUTOIDLE (1 << 0) > > > @@ -39,7 +45,11 @@ > > > #define RESETDONE(1 << 0) > > > > > > #define MBOX_REG_SIZE0x120 > > > + > > > +#define OMAP4_MBOX_REG_SIZE 0x130 > > > + > > > #define MBOX_NR_REGS (MBOX_REG_SIZE > > / sizeof(u32)) > > > +#define OMAP4_MBOX_NR_REGS (OMAP4_MBOX_REG_SIZE / > > sizeof(u32)) > > > > Doesn't this modification break other OMAP arch support? > > > > We need to support OMAP2/3/4 mailbox with this file. > > > > > > > > static void __iomem *mbox_base; > > > > > > @@ -56,7 +66,8 @@ struct omap_mbox2_priv { > > > unsigned long irqstatus; > > > u32 newmsg_bit; > > > u32 notfull_bit; > > > - u32 ctx[MBOX_NR_REGS]; > > > + u32 ctx[OMAP4_MBOX_REG_SIZE]; > > This reserves the array size to be max of both the values . However, > while saving and restoring the context we decide on the size based > on the arch The max array reservation may work with other omap arch as well, but at least, shoulnd't the above "ctx[OMAP4_MBOX_REG_SIZE]" be "ctx[OMAP4_MBOX_NR_REG]"? -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [PATCH 8/10 v2] omap mailbox: OMAP4-Mailbox - Adds code changes to support OMAP4 mailbox.
> -Original Message- > From: Hiroshi DOYU [mailto:hiroshi.d...@nokia.com] > Sent: Wednesday, November 18, 2009 1:36 PM > To: C.A, Subramaniam > Cc: t...@atomide.com; linux-omap@vger.kernel.org; Kanigeri, > Hari; Gupta, Ramesh > Subject: Re: [PATCH 8/10 v2] omap mailbox: OMAP4-Mailbox - > Adds code changes to support OMAP4 mailbox. > > From: "ext C.A, Subramaniam" > Subject: [PATCH 8/10 v2] omap mailbox: OMAP4-Mailbox - Adds > code changes to support OMAP4 mailbox. > Date: Tue, 17 Nov 2009 15:51:14 +0100 > > > Hi Tony, > > Following is the version 2 of Patch 8/10 (removing all #fidefs) > > > > Regards > > Subbu > > > > From 775dde65217785f519efe2a202489a791460f861 Mon Sep 17 > 00:00:00 2001 > > From: C A Subramaniam > > Date: Fri, 13 Nov 2009 16:42:40 +0530 > > Subject: [PATCH 8/10 v2] omap mailbox: OMAP4-Mailbox - Adds > code changes to support OMAP4 mailbox. > > > > This patch adds code changes in the mailbox driver module to add > > support for OMAP4 mailbox. > > Removed #ifdef CONFIG_ARCH_OMAP4 > > > > Signed-off-by: Hari Kanigeri > > Signed-off-by: C A Subramaniam > > Signed-off-by: Ramesh Gupta G > > --- > > arch/arm/mach-omap2/mailbox.c | 140 > ++--- > > arch/arm/plat-omap/mailbox.c | 25 ++-- > > 2 files changed, 136 insertions(+), 29 deletions(-) > > > > diff --git a/arch/arm/mach-omap2/mailbox.c > > b/arch/arm/mach-omap2/mailbox.c index 5ba3aa6..d20550f 100644 > > --- a/arch/arm/mach-omap2/mailbox.c > > +++ b/arch/arm/mach-omap2/mailbox.c > > @@ -18,6 +18,8 @@ > > #include > > #include > > > > +#define DRV_NAME "omap2-mailbox" > > + > > #define MAILBOX_REVISION 0x000 > > #define MAILBOX_SYSCONFIG 0x010 > > #define MAILBOX_SYSSTATUS 0x014 > > @@ -27,8 +29,12 @@ > > #define MAILBOX_IRQSTATUS(u) (0x100 + 8 * (u)) > > #define MAILBOX_IRQENABLE(u) (0x104 + 8 * (u)) > > > > -#define MAILBOX_IRQ_NEWMSG(u) (1 << (2 * (u))) > > -#define MAILBOX_IRQ_NOTFULL(u) (1 << (2 * (u) + 1)) > > +#define OMAP4_MAILBOX_IRQSTATUS(u) (0x104 + 10 * (u)) > > +#define OMAP4_MAILBOX_IRQENABLE(u) (0x108 + 10 * (u)) > > +#define OMAP4_MAILBOX_IRQENABLE_CLR(u) (0x10c + 10 * (u)) > > + > > +#define MAILBOX_IRQ_NEWMSG(m) (1 << (2 * (m))) > > +#define MAILBOX_IRQ_NOTFULL(m) (1 << (2 * (m) + 1)) > > > > /* SYSCONFIG: register bit definition */ > > #define AUTOIDLE (1 << 0) > > @@ -39,7 +45,11 @@ > > #define RESETDONE (1 << 0) > > > > #define MBOX_REG_SIZE 0x120 > > + > > +#define OMAP4_MBOX_REG_SIZE0x130 > > + > > #define MBOX_NR_REGS (MBOX_REG_SIZE > / sizeof(u32)) > > +#define OMAP4_MBOX_NR_REGS (OMAP4_MBOX_REG_SIZE / > sizeof(u32)) > > Doesn't this modification break other OMAP arch support? > > We need to support OMAP2/3/4 mailbox with this file. > > > > > static void __iomem *mbox_base; > > > > @@ -56,7 +66,8 @@ struct omap_mbox2_priv { > > unsigned long irqstatus; > > u32 newmsg_bit; > > u32 notfull_bit; > > - u32 ctx[MBOX_NR_REGS]; > > + u32 ctx[OMAP4_MBOX_REG_SIZE]; This reserves the array size to be max of both the values . However, while saving and restoring the context we decide on the size based on the arch snip-- static void omap2_mbox_save_ctx(struct omap_mbox *mbox) { int i; struct omap_mbox2_priv *p = mbox->priv; int nr_regs; if (cpu_is_omap44xx()) nr_regs = OMAP4_MBOX_NR_REGS; else nr_regs = MBOX_NR_REGS; for (i = 0; i < nr_regs; i++) { p->ctx[i] = mbox_read_reg(i * sizeof(u32)); dev_dbg(mbox->dev, "%s: [%02x] %08x\n", __func__, i, p->ctx[i]); } } static void omap2_mbox_restore_ctx(struct omap_mbox *mbox) { int i; struct omap_mbox2_priv *p = mbox->priv; int nr_regs; if (cpu_is_omap44xx()) nr_regs = OMAP4_MBOX_NR_REGS; else nr_regs = MBOX_NR_REGS; for (i = 0; i < nr_regs; i++) { mbox_write_reg(p->ctx[i], i * sizeof(u32)); dev_dbg(mbox->dev, "%s: [%02x] %08x\n", __func__, i, p->ctx[i]); } } ---snip-- Please provide your commnets on the same. > > Is this only valid for OMAP4? > > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 8/10 v2] omap mailbox: OMAP4-Mailbox - Adds code changes to support OMAP4 mailbox.
From: "ext C.A, Subramaniam" Subject: [PATCH 8/10 v2] omap mailbox: OMAP4-Mailbox - Adds code changes to support OMAP4 mailbox. Date: Tue, 17 Nov 2009 15:51:14 +0100 > Hi Tony, > Following is the version 2 of Patch 8/10 (removing all #fidefs) > > Regards > Subbu > > From 775dde65217785f519efe2a202489a791460f861 Mon Sep 17 00:00:00 2001 > From: C A Subramaniam > Date: Fri, 13 Nov 2009 16:42:40 +0530 > Subject: [PATCH 8/10 v2] omap mailbox: OMAP4-Mailbox - Adds code changes to > support OMAP4 mailbox. > > This patch adds code changes in the mailbox driver module to > add support for OMAP4 mailbox. > Removed #ifdef CONFIG_ARCH_OMAP4 > > Signed-off-by: Hari Kanigeri > Signed-off-by: C A Subramaniam > Signed-off-by: Ramesh Gupta G > --- > arch/arm/mach-omap2/mailbox.c | 140 > ++--- > arch/arm/plat-omap/mailbox.c | 25 ++-- > 2 files changed, 136 insertions(+), 29 deletions(-) > > diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c > index 5ba3aa6..d20550f 100644 > --- a/arch/arm/mach-omap2/mailbox.c > +++ b/arch/arm/mach-omap2/mailbox.c > @@ -18,6 +18,8 @@ > #include > #include > > +#define DRV_NAME "omap2-mailbox" > + > #define MAILBOX_REVISION 0x000 > #define MAILBOX_SYSCONFIG0x010 > #define MAILBOX_SYSSTATUS0x014 > @@ -27,8 +29,12 @@ > #define MAILBOX_IRQSTATUS(u) (0x100 + 8 * (u)) > #define MAILBOX_IRQENABLE(u) (0x104 + 8 * (u)) > > -#define MAILBOX_IRQ_NEWMSG(u)(1 << (2 * (u))) > -#define MAILBOX_IRQ_NOTFULL(u) (1 << (2 * (u) + 1)) > +#define OMAP4_MAILBOX_IRQSTATUS(u) (0x104 + 10 * (u)) > +#define OMAP4_MAILBOX_IRQENABLE(u) (0x108 + 10 * (u)) > +#define OMAP4_MAILBOX_IRQENABLE_CLR(u) (0x10c + 10 * (u)) > + > +#define MAILBOX_IRQ_NEWMSG(m)(1 << (2 * (m))) > +#define MAILBOX_IRQ_NOTFULL(m) (1 << (2 * (m) + 1)) > > /* SYSCONFIG: register bit definition */ > #define AUTOIDLE (1 << 0) > @@ -39,7 +45,11 @@ > #define RESETDONE(1 << 0) > > #define MBOX_REG_SIZE0x120 > + > +#define OMAP4_MBOX_REG_SIZE 0x130 > + > #define MBOX_NR_REGS (MBOX_REG_SIZE / sizeof(u32)) > +#define OMAP4_MBOX_NR_REGS (OMAP4_MBOX_REG_SIZE / sizeof(u32)) Doesn't this modification break other OMAP arch support? We need to support OMAP2/3/4 mailbox with this file. > > static void __iomem *mbox_base; > > @@ -56,7 +66,8 @@ struct omap_mbox2_priv { > unsigned long irqstatus; > u32 newmsg_bit; > u32 notfull_bit; > - u32 ctx[MBOX_NR_REGS]; > + u32 ctx[OMAP4_MBOX_REG_SIZE]; Is this only valid for OMAP4? -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 8/10 v2] omap mailbox: OMAP4-Mailbox - Adds code changes to support OMAP4 mailbox.
* C.A, Subramaniam [091117 06:50]: > Hi Tony, > Following is the version 2 of Patch 8/10 (removing all #fidefs) Thanks, I have now them all in the for-next branch. > +/* OMAP4 specific data structure. Use the cpu_is_omap4xxx() > +to use this*/ I've updated the patch to have this comment is on one line now. Regards, Tony -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 8/10 v2] omap mailbox: OMAP4-Mailbox - Adds code changes to support OMAP4 mailbox.
Hi Tony, Following is the version 2 of Patch 8/10 (removing all #fidefs) Regards Subbu >From 775dde65217785f519efe2a202489a791460f861 Mon Sep 17 00:00:00 2001 From: C A Subramaniam Date: Fri, 13 Nov 2009 16:42:40 +0530 Subject: [PATCH 8/10 v2] omap mailbox: OMAP4-Mailbox - Adds code changes to support OMAP4 mailbox. This patch adds code changes in the mailbox driver module to add support for OMAP4 mailbox. Removed #ifdef CONFIG_ARCH_OMAP4 Signed-off-by: Hari Kanigeri Signed-off-by: C A Subramaniam Signed-off-by: Ramesh Gupta G --- arch/arm/mach-omap2/mailbox.c | 140 ++--- arch/arm/plat-omap/mailbox.c | 25 ++-- 2 files changed, 136 insertions(+), 29 deletions(-) diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c index 5ba3aa6..d20550f 100644 --- a/arch/arm/mach-omap2/mailbox.c +++ b/arch/arm/mach-omap2/mailbox.c @@ -18,6 +18,8 @@ #include #include +#define DRV_NAME "omap2-mailbox" + #define MAILBOX_REVISION 0x000 #define MAILBOX_SYSCONFIG 0x010 #define MAILBOX_SYSSTATUS 0x014 @@ -27,8 +29,12 @@ #define MAILBOX_IRQSTATUS(u) (0x100 + 8 * (u)) #define MAILBOX_IRQENABLE(u) (0x104 + 8 * (u)) -#define MAILBOX_IRQ_NEWMSG(u) (1 << (2 * (u))) -#define MAILBOX_IRQ_NOTFULL(u) (1 << (2 * (u) + 1)) +#define OMAP4_MAILBOX_IRQSTATUS(u) (0x104 + 10 * (u)) +#define OMAP4_MAILBOX_IRQENABLE(u) (0x108 + 10 * (u)) +#define OMAP4_MAILBOX_IRQENABLE_CLR(u) (0x10c + 10 * (u)) + +#define MAILBOX_IRQ_NEWMSG(m) (1 << (2 * (m))) +#define MAILBOX_IRQ_NOTFULL(m) (1 << (2 * (m) + 1)) /* SYSCONFIG: register bit definition */ #define AUTOIDLE (1 << 0) @@ -39,7 +45,11 @@ #define RESETDONE (1 << 0) #define MBOX_REG_SIZE 0x120 + +#define OMAP4_MBOX_REG_SIZE0x130 + #define MBOX_NR_REGS (MBOX_REG_SIZE / sizeof(u32)) +#define OMAP4_MBOX_NR_REGS (OMAP4_MBOX_REG_SIZE / sizeof(u32)) static void __iomem *mbox_base; @@ -56,7 +66,8 @@ struct omap_mbox2_priv { unsigned long irqstatus; u32 newmsg_bit; u32 notfull_bit; - u32 ctx[MBOX_NR_REGS]; + u32 ctx[OMAP4_MBOX_REG_SIZE]; + unsigned long irqdisable; }; static struct clk *mbox_ick_handle; @@ -82,8 +93,9 @@ static int omap2_mbox_startup(struct omap_mbox *mbox) mbox_ick_handle = clk_get(NULL, "mailboxes_ick"); if (IS_ERR(mbox_ick_handle)) { - pr_err("Can't get mailboxes_ick\n"); - return -ENODEV; + printk(KERN_ERR "Could not get mailboxes_ick: %d\n", + PTR_ERR(mbox_ick_handle)); + return PTR_ERR(mbox_ick_handle); } clk_enable(mbox_ick_handle); @@ -115,6 +127,7 @@ static void omap2_mbox_shutdown(struct omap_mbox *mbox) { clk_disable(mbox_ick_handle); clk_put(mbox_ick_handle); + mbox_ick_handle = NULL; } /* Mailbox FIFO handle functions */ @@ -143,7 +156,7 @@ static int omap2_mbox_fifo_full(struct omap_mbox *mbox) { struct omap_mbox2_fifo *fifo = &((struct omap_mbox2_priv *)mbox->priv)->tx_fifo; - return (mbox_read_reg(fifo->fifo_stat)); + return mbox_read_reg(fifo->fifo_stat); } /* Mailbox IRQ handle functions */ @@ -163,10 +176,9 @@ static void omap2_mbox_disable_irq(struct omap_mbox *mbox, { struct omap_mbox2_priv *p = (struct omap_mbox2_priv *)mbox->priv; u32 l, bit = (irq == IRQ_TX) ? p->notfull_bit : p->newmsg_bit; - - l = mbox_read_reg(p->irqenable); + l = mbox_read_reg(p->irqdisable); l &= ~bit; - mbox_write_reg(l, p->irqenable); + mbox_write_reg(l, p->irqdisable); } static void omap2_mbox_ack_irq(struct omap_mbox *mbox, @@ -189,15 +201,19 @@ static int omap2_mbox_is_irq(struct omap_mbox *mbox, u32 enable = mbox_read_reg(p->irqenable); u32 status = mbox_read_reg(p->irqstatus); - return (enable & status & bit); + return (int)(enable & status & bit); } static void omap2_mbox_save_ctx(struct omap_mbox *mbox) { int i; struct omap_mbox2_priv *p = mbox->priv; - - for (i = 0; i < MBOX_NR_REGS; i++) { + int nr_regs; + if (cpu_is_omap44xx()) + nr_regs = OMAP4_MBOX_NR_REGS; + else + nr_regs = MBOX_NR_REGS; + for (i = 0; i < nr_regs; i++) { p->ctx[i] = mbox_read_reg(i * sizeof(u32)); dev_dbg(mbox->dev, "%s: [%02x] %08x\n", __func__, @@ -209,8 +225,12 @@ static void omap2_mbox_restore_ctx(struct omap_mbox *mbox) { int i; struct omap_mbox2_priv *p = mbox->priv; - - for (i = 0; i < MBOX_NR_REGS; i++) { +