From: "Varadarajan, Charulatha" <charu@ti.com> To: Kevin Hilman <khilman@ti.com> Cc: Tarun Kanti DebBarma <tarun.kanti@ti.com>, linux-omap@vger.kernel.org, santosh.shilimkar@ti.com, tony@atomide.com, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 12/15] OMAP: GPIO: Fix: use wake set/clear regs Date: Thu, 26 May 2011 15:06:47 +0530 [thread overview] Message-ID: <BANLkTikbUDJ1MY+eGODZm2QM-_GM1v2X6Q@mail.gmail.com> (raw) In-Reply-To: <87zkmal6f5.fsf@ti.com> On Thu, May 26, 2011 at 04:44, Kevin Hilman <khilman@ti.com> wrote: > Tarun Kanti DebBarma <tarun.kanti@ti.com> writes: > >> From: Charulatha V <charu@ti.com> >> >> In set_24xx_gpio_triggering(), for OMAP4, GPIO wakeup request >> is set for all type of GPIO triggers whereas as per TRM the GPIO >> wakeup request can only be generated on edge transitions. Fix this. > > OK. Please make a dedicated patch for this part. Okay. > > Subject: GPIO: OMAP: IRQ triggering: use wake set/clear regs Okay. > >> In set_24xx_gpio_triggering(), OMAP4_GPIO_IRQWAKEN0 register >> is used for wakeup request and the GPIO set/clear wakeup registers >> are not used in OMAP4 but is handled without retaining it's old >> value. This would corrupt the contents of OMAP4_GPIO_IRQWAKEN0 >> register by writing the value of the last requested GPIO pin in >> a given bank. This can be avoided by making use of GPIO set/clear >> wakeup registers. > > And this should be a separate patch too, or probably folded into PATCH > 09/15 with an updated changelog of course. Okay. > > Kevin > >> Signed-off-by: Charulatha V <charu@ti.com> >> --- >> arch/arm/mach-omap2/gpio.c | 4 ++-- >> drivers/gpio/gpio_omap.c | 32 ++++++++++---------------------- >> 2 files changed, 12 insertions(+), 24 deletions(-) >> >> diff --git a/arch/arm/mach-omap2/gpio.c b/arch/arm/mach-omap2/gpio.c >> index 5c888dd..fbedbbb 100644 >> --- a/arch/arm/mach-omap2/gpio.c >> +++ b/arch/arm/mach-omap2/gpio.c >> @@ -142,8 +142,8 @@ static int omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused) >> pdata->regs->risingdetect = OMAP4_GPIO_RISINGDETECT; >> pdata->regs->fallingdetect = OMAP4_GPIO_FALLINGDETECT; >> pdata->regs->wkupstatus = OMAP4_GPIO_IRQWAKEN0; >> - pdata->regs->wkupclear = OMAP4_GPIO_IRQWAKEN0; >> - pdata->regs->wkupset = OMAP4_GPIO_IRQWAKEN0; >> + pdata->regs->wkupclear = OMAP4_GPIO_CLEARWKUENA; >> + pdata->regs->wkupset = OMAP4_GPIO_SETWKUENA; >> break; >> default: >> WARN(1, "Invalid gpio bank_type\n"); >> diff --git a/drivers/gpio/gpio_omap.c b/drivers/gpio/gpio_omap.c >> index 05c2857..762d73c 100644 >> --- a/drivers/gpio/gpio_omap.c >> +++ b/drivers/gpio/gpio_omap.c >> @@ -229,30 +229,18 @@ static inline void set_24xx_gpio_triggering(struct gpio_bank *bank, int gpio, >> MOD_REG_BIT(OMAP24XX_GPIO_FALLINGDETECT, gpio_bit, >> trigger & IRQ_TYPE_EDGE_FALLING); >> } >> + >> if (likely(!(bank->non_wakeup_gpios & gpio_bit))) { >> - if (cpu_is_omap44xx()) { >> - if (trigger != 0) >> - __raw_writel(1 << gpio, bank->base+ >> - OMAP4_GPIO_IRQWAKEN0); >> - else { >> - val = __raw_readl(bank->base + >> - OMAP4_GPIO_IRQWAKEN0); >> - __raw_writel(val & (~(1 << gpio)), bank->base + >> - OMAP4_GPIO_IRQWAKEN0); >> - } >> - } else { >> - /* >> - * GPIO wakeup request can only be generated on edge >> - * transitions >> - */ >> - if (trigger & IRQ_TYPE_EDGE_BOTH) >> - __raw_writel(1 << gpio, bank->base >> - + OMAP24XX_GPIO_SETWKUENA); >> - else >> - __raw_writel(1 << gpio, bank->base >> - + OMAP24XX_GPIO_CLEARWKUENA); >> - } >> + /* >> + * GPIO wakeup request can only be generated on edge >> + * transitions >> + */ >> + if (trigger & IRQ_TYPE_EDGE_BOTH) >> + __raw_writel(1 << gpio, bank->wake_set); >> + else >> + __raw_writel(1 << gpio, bank->wake_clear); >> } >> + >> /* This part needs to be executed always for OMAP34xx */ >> if (cpu_is_omap34xx() || (bank->non_wakeup_gpios & gpio_bit)) { >> /* > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: charu@ti.com (Varadarajan, Charulatha) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 12/15] OMAP: GPIO: Fix: use wake set/clear regs Date: Thu, 26 May 2011 15:06:47 +0530 [thread overview] Message-ID: <BANLkTikbUDJ1MY+eGODZm2QM-_GM1v2X6Q@mail.gmail.com> (raw) In-Reply-To: <87zkmal6f5.fsf@ti.com> On Thu, May 26, 2011 at 04:44, Kevin Hilman <khilman@ti.com> wrote: > Tarun Kanti DebBarma <tarun.kanti@ti.com> writes: > >> From: Charulatha V <charu@ti.com> >> >> In set_24xx_gpio_triggering(), for OMAP4, GPIO wakeup request >> is set for all type of GPIO triggers whereas as per TRM the GPIO >> wakeup request can only be generated on edge transitions. Fix this. > > OK. ?Please make a dedicated patch for this part. Okay. > > Subject: GPIO: OMAP: IRQ triggering: use wake set/clear regs Okay. > >> In set_24xx_gpio_triggering(), OMAP4_GPIO_IRQWAKEN0 register >> is used for wakeup request and the GPIO set/clear wakeup registers >> are not used in OMAP4 but is handled without retaining it's old >> value. This would corrupt the contents of OMAP4_GPIO_IRQWAKEN0 >> register by writing the value of the last requested GPIO pin in >> a given bank. This can be avoided by making use of GPIO set/clear >> wakeup registers. > > And this should be a separate patch too, or probably folded into PATCH > 09/15 with an updated changelog of course. Okay. > > Kevin > >> Signed-off-by: Charulatha V <charu@ti.com> >> --- >> ?arch/arm/mach-omap2/gpio.c | ? ?4 ++-- >> ?drivers/gpio/gpio_omap.c ? | ? 32 ++++++++++---------------------- >> ?2 files changed, 12 insertions(+), 24 deletions(-) >> >> diff --git a/arch/arm/mach-omap2/gpio.c b/arch/arm/mach-omap2/gpio.c >> index 5c888dd..fbedbbb 100644 >> --- a/arch/arm/mach-omap2/gpio.c >> +++ b/arch/arm/mach-omap2/gpio.c >> @@ -142,8 +142,8 @@ static int omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused) >> ? ? ? ? ? ? ? pdata->regs->risingdetect = OMAP4_GPIO_RISINGDETECT; >> ? ? ? ? ? ? ? pdata->regs->fallingdetect = OMAP4_GPIO_FALLINGDETECT; >> ? ? ? ? ? ? ? pdata->regs->wkupstatus = OMAP4_GPIO_IRQWAKEN0; >> - ? ? ? ? ? ? pdata->regs->wkupclear = OMAP4_GPIO_IRQWAKEN0; >> - ? ? ? ? ? ? pdata->regs->wkupset = OMAP4_GPIO_IRQWAKEN0; >> + ? ? ? ? ? ? pdata->regs->wkupclear = OMAP4_GPIO_CLEARWKUENA; >> + ? ? ? ? ? ? pdata->regs->wkupset = OMAP4_GPIO_SETWKUENA; >> ? ? ? ? ? ? ? break; >> ? ? ? default: >> ? ? ? ? ? ? ? WARN(1, "Invalid gpio bank_type\n"); >> diff --git a/drivers/gpio/gpio_omap.c b/drivers/gpio/gpio_omap.c >> index 05c2857..762d73c 100644 >> --- a/drivers/gpio/gpio_omap.c >> +++ b/drivers/gpio/gpio_omap.c >> @@ -229,30 +229,18 @@ static inline void set_24xx_gpio_triggering(struct gpio_bank *bank, int gpio, >> ? ? ? ? ? ? ? MOD_REG_BIT(OMAP24XX_GPIO_FALLINGDETECT, gpio_bit, >> ? ? ? ? ? ? ? ? ? ? ? trigger & IRQ_TYPE_EDGE_FALLING); >> ? ? ? } >> + >> ? ? ? if (likely(!(bank->non_wakeup_gpios & gpio_bit))) { >> - ? ? ? ? ? ? if (cpu_is_omap44xx()) { >> - ? ? ? ? ? ? ? ? ? ? if (trigger != 0) >> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? __raw_writel(1 << gpio, bank->base+ >> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? OMAP4_GPIO_IRQWAKEN0); >> - ? ? ? ? ? ? ? ? ? ? else { >> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? val = __raw_readl(bank->base + >> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? OMAP4_GPIO_IRQWAKEN0); >> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? __raw_writel(val & (~(1 << gpio)), bank->base + >> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?OMAP4_GPIO_IRQWAKEN0); >> - ? ? ? ? ? ? ? ? ? ? } >> - ? ? ? ? ? ? } else { >> - ? ? ? ? ? ? ? ? ? ? /* >> - ? ? ? ? ? ? ? ? ? ? ?* GPIO wakeup request can only be generated on edge >> - ? ? ? ? ? ? ? ? ? ? ?* transitions >> - ? ? ? ? ? ? ? ? ? ? ?*/ >> - ? ? ? ? ? ? ? ? ? ? if (trigger & IRQ_TYPE_EDGE_BOTH) >> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? __raw_writel(1 << gpio, bank->base >> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? + OMAP24XX_GPIO_SETWKUENA); >> - ? ? ? ? ? ? ? ? ? ? else >> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? __raw_writel(1 << gpio, bank->base >> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? + OMAP24XX_GPIO_CLEARWKUENA); >> - ? ? ? ? ? ? } >> + ? ? ? ? ? ? /* >> + ? ? ? ? ? ? ?* GPIO wakeup request can only be generated on edge >> + ? ? ? ? ? ? ?* transitions >> + ? ? ? ? ? ? ?*/ >> + ? ? ? ? ? ? if (trigger & IRQ_TYPE_EDGE_BOTH) >> + ? ? ? ? ? ? ? ? ? ? __raw_writel(1 << gpio, bank->wake_set); >> + ? ? ? ? ? ? else >> + ? ? ? ? ? ? ? ? ? ? __raw_writel(1 << gpio, bank->wake_clear); >> ? ? ? } >> + >> ? ? ? /* This part needs to be executed always for OMAP34xx */ >> ? ? ? if (cpu_is_omap34xx() || (bank->non_wakeup_gpios & gpio_bit)) { >> ? ? ? ? ? ? ? /* >
next prev parent reply other threads:[~2011-05-26 9:37 UTC|newest] Thread overview: 118+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-05-24 14:24 [PATCH 00/15] OMAP: GPIO: Cleanup OMAP GPIO driver Tarun Kanti DebBarma 2011-05-24 14:24 ` Tarun Kanti DebBarma 2011-05-24 14:24 ` [PATCH 01/15] OMAP: GPIO: Avoid cpu_is checks during module ena/disable Tarun Kanti DebBarma 2011-05-24 14:24 ` Tarun Kanti DebBarma 2011-05-25 21:19 ` Kevin Hilman 2011-05-25 21:19 ` Kevin Hilman 2011-05-26 9:38 ` Varadarajan, Charulatha 2011-05-26 9:38 ` Varadarajan, Charulatha 2011-05-24 14:24 ` [PATCH 02/15] OMAP2PLUS: GPIO: Fix non-wakeup GPIO and rev_ids Tarun Kanti DebBarma 2011-05-24 14:24 ` Tarun Kanti DebBarma 2011-05-25 21:34 ` Kevin Hilman 2011-05-25 21:34 ` Kevin Hilman 2011-05-26 9:38 ` Varadarajan, Charulatha 2011-05-26 9:38 ` Varadarajan, Charulatha 2011-05-26 17:15 ` Kevin Hilman 2011-05-26 17:15 ` Kevin Hilman 2011-05-26 17:39 ` Varadarajan, Charulatha 2011-05-26 17:39 ` Varadarajan, Charulatha 2011-05-26 18:32 ` Kevin Hilman 2011-05-26 18:32 ` Kevin Hilman 2011-05-26 9:23 ` Premi, Sanjeev 2011-05-26 9:23 ` Premi, Sanjeev 2011-05-26 9:43 ` Varadarajan, Charulatha 2011-05-26 9:43 ` Varadarajan, Charulatha 2011-05-26 10:11 ` Cousson, Benoit 2011-05-26 10:11 ` Cousson, Benoit 2011-05-26 11:47 ` Premi, Sanjeev 2011-05-26 11:47 ` Premi, Sanjeev 2011-05-26 12:11 ` Cousson, Benoit 2011-05-26 12:11 ` Cousson, Benoit 2011-05-26 12:38 ` Premi, Sanjeev 2011-05-26 12:38 ` Premi, Sanjeev 2011-05-26 12:46 ` Cousson, Benoit 2011-05-26 12:46 ` Cousson, Benoit 2011-05-26 13:19 ` Premi, Sanjeev 2011-05-26 13:19 ` Premi, Sanjeev 2011-05-26 13:38 ` B.J. Buchalter 2011-05-26 13:38 ` B.J. Buchalter 2011-05-26 14:12 ` Cousson, Benoit 2011-05-26 14:12 ` Cousson, Benoit 2011-05-24 14:24 ` [PATCH 03/15] OMAP: GPIO: Remove dependency on gpio_bank_count Tarun Kanti DebBarma 2011-05-24 14:24 ` Tarun Kanti DebBarma 2011-05-24 14:24 ` [PATCH 04/15] OMAP2PLUS: GPIO: Use flag to identify wkup dmn GPIO Tarun Kanti DebBarma 2011-05-24 14:24 ` Tarun Kanti DebBarma 2011-05-25 21:40 ` Kevin Hilman 2011-05-25 21:40 ` Kevin Hilman 2011-05-24 14:24 ` [PATCH 05/15] OMAP: GPIO: Make gpio_context part of gpio_bank structure Tarun Kanti DebBarma 2011-05-24 14:24 ` Tarun Kanti DebBarma 2011-05-25 21:41 ` Kevin Hilman 2011-05-25 21:41 ` Kevin Hilman 2011-05-26 9:58 ` Premi, Sanjeev 2011-05-26 9:58 ` Premi, Sanjeev 2011-05-26 10:07 ` Varadarajan, Charulatha 2011-05-26 10:07 ` Varadarajan, Charulatha 2011-05-26 9:59 ` Premi, Sanjeev 2011-05-26 9:59 ` Premi, Sanjeev 2011-05-24 14:24 ` [PATCH 06/15] OMAP4: GPIO: Save/restore context Tarun Kanti DebBarma 2011-05-24 14:24 ` Tarun Kanti DebBarma 2011-05-25 21:43 ` Kevin Hilman 2011-05-25 21:43 ` Kevin Hilman 2011-05-26 9:37 ` Varadarajan, Charulatha 2011-05-26 9:37 ` Varadarajan, Charulatha 2011-05-24 14:24 ` [PATCH 07/15] OMAP: GPIO: handle save/restore ctx in GPIO driver Tarun Kanti DebBarma 2011-05-24 14:24 ` Tarun Kanti DebBarma 2011-05-25 22:33 ` Kevin Hilman 2011-05-25 22:33 ` Kevin Hilman 2011-05-25 22:36 ` Kevin Hilman 2011-05-25 22:36 ` Kevin Hilman 2011-05-24 14:24 ` [PATCH 08/15] OMAP2+: GPIO: make workaround_enabled bank specific Tarun Kanti DebBarma 2011-05-24 14:24 ` Tarun Kanti DebBarma 2011-05-25 22:39 ` Kevin Hilman 2011-05-25 22:39 ` Kevin Hilman 2011-05-26 9:37 ` Varadarajan, Charulatha 2011-05-26 9:37 ` Varadarajan, Charulatha 2011-05-24 14:24 ` [PATCH 09/15] OMAP: GPIO: cleanup suspend and resume functions Tarun Kanti DebBarma 2011-05-24 14:24 ` Tarun Kanti DebBarma 2011-05-25 22:57 ` Kevin Hilman 2011-05-25 22:57 ` Kevin Hilman 2011-05-26 10:02 ` Varadarajan, Charulatha 2011-05-26 10:02 ` Varadarajan, Charulatha 2011-05-24 14:24 ` [PATCH 10/15] OMAP: GPIO: cleanup prepare/resume idle functions Tarun Kanti DebBarma 2011-05-24 14:24 ` Tarun Kanti DebBarma 2011-05-25 23:00 ` Kevin Hilman 2011-05-25 23:00 ` Kevin Hilman 2011-05-24 14:24 ` [PATCH 11/15] OMAP: GPIO: Remove hardcoded offsets in ctxt save/restore Tarun Kanti DebBarma 2011-05-24 14:24 ` Tarun Kanti DebBarma 2011-05-25 23:01 ` Kevin Hilman 2011-05-25 23:01 ` Kevin Hilman 2011-05-26 9:36 ` Varadarajan, Charulatha 2011-05-26 9:36 ` Varadarajan, Charulatha 2011-05-26 9:42 ` Premi, Sanjeev 2011-05-26 9:42 ` Premi, Sanjeev 2011-05-26 9:48 ` Varadarajan, Charulatha 2011-05-26 9:48 ` Varadarajan, Charulatha 2011-05-24 14:24 ` [PATCH 12/15] OMAP: GPIO: Fix: use wake set/clear regs Tarun Kanti DebBarma 2011-05-24 14:24 ` Tarun Kanti DebBarma 2011-05-25 23:14 ` Kevin Hilman 2011-05-25 23:14 ` Kevin Hilman 2011-05-26 9:36 ` Varadarajan, Charulatha [this message] 2011-05-26 9:36 ` Varadarajan, Charulatha 2011-05-24 14:24 ` [PATCH 13/15] OMAP: GPIO: clean set_gpio_triggering function Tarun Kanti DebBarma 2011-05-24 14:24 ` Tarun Kanti DebBarma 2011-05-25 23:27 ` Kevin Hilman 2011-05-25 23:27 ` Kevin Hilman 2011-05-26 9:55 ` Varadarajan, Charulatha 2011-05-26 9:55 ` Varadarajan, Charulatha 2011-05-24 14:24 ` [PATCH 14/15] OMAP: GPIO: Use memset for omap_gpio_reg_offs Tarun Kanti DebBarma 2011-05-24 14:24 ` Tarun Kanti DebBarma 2011-05-25 23:30 ` Kevin Hilman 2011-05-25 23:30 ` Kevin Hilman 2011-05-24 14:24 ` [PATCH 15/15] OMAP: GPIO: clean omap_gpio_mod_init function Tarun Kanti DebBarma 2011-05-24 14:24 ` Tarun Kanti DebBarma 2011-05-25 23:48 ` Kevin Hilman 2011-05-25 23:48 ` Kevin Hilman 2011-06-03 11:20 ` Varadarajan, Charulatha 2011-06-03 11:20 ` Varadarajan, Charulatha 2011-06-03 14:31 ` Kevin Hilman 2011-06-03 14:31 ` Kevin Hilman
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=BANLkTikbUDJ1MY+eGODZm2QM-_GM1v2X6Q@mail.gmail.com \ --to=charu@ti.com \ --cc=khilman@ti.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-omap@vger.kernel.org \ --cc=santosh.shilimkar@ti.com \ --cc=tarun.kanti@ti.com \ --cc=tony@atomide.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.