linux-omap.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tony Lindgren <tony@atomide.com>
To: Kevin Hilman <khilman@deeprootsystems.com>
Cc: linux-omap@vger.kernel.org, Chunqiu Wang <cqwang@motorola.com>
Subject: Re: [PATCH 2/6] OMAP3: GPIO: Only enable WAKEUPEN for edge detection GPIOs
Date: Mon, 10 May 2010 14:11:05 -0700	[thread overview]
Message-ID: <20100510211105.GI16460@atomide.com> (raw)
In-Reply-To: <1272929177-22685-3-git-send-email-khilman@deeprootsystems.com>

* Kevin Hilman <khilman@deeprootsystems.com> [100503 16:28]:
> From: Chunqiu Wang <cqwang@motorola.com>
> 
> According to the GPIO 'Wakeup and Interrupt' section of the TRM[1],
> wake-up requests can only be generated on edge transitions.
> 
> Also for OMAP3, only edge GPIOs may lose interrupts when PER enters
> RET/OFF state, this is addressed by gpio prepare|resume idle functions

There's a generic solution to this problem. The solution is to temporarily
set the level GPIO pins into edge for the duration of idle. Then
they need to be set back to level after the system is woken up.

Regards,

Tony

 
> [1] Section 25.5.3.1 OMAP34xx_ES3.1_TRM_V_Q
> 
> Signed-off-by: Chunqiu Wang <cqwang@motorola.com>
> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
> ---
>  arch/arm/plat-omap/gpio.c |   14 ++++++++++++--
>  1 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c
> index 678fd08..4d43cda 100644
> --- a/arch/arm/plat-omap/gpio.c
> +++ b/arch/arm/plat-omap/gpio.c
> @@ -724,7 +724,11 @@ static inline void set_24xx_gpio_triggering(struct gpio_bank *bank, int gpio,
>  							 OMAP4_GPIO_IRQWAKEN0);
>  			}
>  		} else {
> -			if (trigger != 0)
> +			/*
> +			 * 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
> @@ -734,7 +738,13 @@ static inline void set_24xx_gpio_triggering(struct gpio_bank *bank, int gpio,
>  	}
>  	/* This part needs to be executed always for OMAP34xx */
>  	if (cpu_is_omap34xx() || (bank->non_wakeup_gpios & gpio_bit)) {
> -		if (trigger != 0)
> +		/*
> +		 * Log the edge gpio and manually trigger the IRQ
> +		 * after resume if the input level changes
> +		 * to avoid irq lost during PER RET/OFF mode
> +		 * Applies for omap2 non-wakeup gpio and all omap3 gpios
> +		 */
> +		if (trigger & IRQ_TYPE_EDGE_BOTH)
>  			bank->enabled_non_wakeup_gpios |= gpio_bit;
>  		else
>  			bank->enabled_non_wakeup_gpios &= ~gpio_bit;
> -- 
> 1.7.0.2
> 
> --
> 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

  reply	other threads:[~2010-05-10 21:11 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-03 23:26 [PATCH 0/6] OMAP GPIO updates for 2.6.35 Kevin Hilman
2010-05-03 23:26 ` [PATCH 1/6] OMAP3: GPIO fixes for off-mode Kevin Hilman
2010-05-03 23:26 ` [PATCH 2/6] OMAP3: GPIO: Only enable WAKEUPEN for edge detection GPIOs Kevin Hilman
2010-05-10 21:11   ` Tony Lindgren [this message]
2010-05-11 14:27     ` Kevin Hilman
2010-05-11 22:57       ` Tony Lindgren
2010-05-11 23:27         ` Kevin Hilman
2010-05-11 23:53           ` Tony Lindgren
2010-05-03 23:26 ` [PATCH 3/6] OMAP2/3: GPIO: generalize prepare for idle Kevin Hilman
2010-05-03 23:26 ` [PATCH 4/6] OMAP3: GPIO: disable GPIO debounce clocks on idle Kevin Hilman
2010-05-03 23:26 ` [PATCH 5/6] OMAP3: GPIO: Removed a couple of unneeded registers from context save/restore Kevin Hilman
2010-05-03 23:26 ` [PATCH 6/6] OMAP: GPIO: remove duplicate debugfs interface Kevin Hilman
  -- strict thread matches above, loose matches on Subject: below --
2010-05-11 23:30 [PATCH 0/6] OMAP GPIO updates for 2.6.35 Kevin Hilman
2010-05-11 23:30 ` [PATCH 2/6] OMAP3: GPIO: Only enable WAKEUPEN for edge detection GPIOs 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=20100510211105.GI16460@atomide.com \
    --to=tony@atomide.com \
    --cc=cqwang@motorola.com \
    --cc=khilman@deeprootsystems.com \
    --cc=linux-omap@vger.kernel.org \
    /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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).