All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Hilman <khilman@ti.com>
To: Tarun Kanti DebBarma <tarun.kanti@ti.com>
Cc: linux-omap@vger.kernel.org, santosh.shilimkar@ti.com,
	tony@atomide.com, linux-arm-kernel@lists.infradead.org,
	Charulatha V <charu@ti.com>
Subject: Re: [PATCH 07/15] OMAP: GPIO: handle save/restore ctx in GPIO driver
Date: Wed, 25 May 2011 15:33:51 -0700	[thread overview]
Message-ID: <87ipsypfzk.fsf@ti.com> (raw)
In-Reply-To: <1306247094-25372-8-git-send-email-tarun.kanti@ti.com> (Tarun Kanti DebBarma's message of "Tue, 24 May 2011 19:54:46 +0530")

Tarun Kanti DebBarma <tarun.kanti@ti.com> writes:

> From: Charulatha V <charu@ti.com>
>
> Modify omap_gpio_prepare_for_idle() & omap_gpio_resume_after_idle()
> functions to handle save context & restore context respectively in the
> OMAP GPIO driver itself instead of calling these functions from pm specific
> files. For this, in gpio_prepare_for_idle(), use
> omap_device_get_context_loss_count() and in gpio_resume_after_idle()
> call it again. If the count is different, do restore context.
>
> context lost count is modified in omap_sram_idle() path when
> pwrdm_post_transition() is called. But pwrdm_post_transition() is called
> only after omap_gpio_resume_after_idle() is called. Hence correct this
> so that context lost count is modified before calling
> omap_gpio_resume_after_idle().

This change to modify where pwrdm_post_transition() is called should be
separated out into a dedicated patch. 

> omap_gpio_prepare_for_idle() & omap_gpio_resume_after_idle()
> do nothing if none of the GPIOs in a bank is being used.
>
> Also remove usage of cpu_is_* checks from the above mentioned
> functions and fix the multi-line comment style
>
> Signed-off-by: Charulatha V <charu@ti.com>
> ---
>  arch/arm/mach-omap2/pm34xx.c           |   22 +----
>  arch/arm/plat-omap/include/plat/gpio.h |    2 -
>  drivers/gpio/gpio_omap.c               |  138 +++++++++++++++++---------------
>  3 files changed, 78 insertions(+), 84 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
> index 0c5e3a4..682d147 100644
> --- a/arch/arm/mach-omap2/pm34xx.c
> +++ b/arch/arm/mach-omap2/pm34xx.c
> @@ -91,16 +91,6 @@ static struct powerdomain *mpu_pwrdm, *neon_pwrdm;
>  static struct powerdomain *core_pwrdm, *per_pwrdm;
>  static struct powerdomain *cam_pwrdm;
>  
> -static inline void omap3_per_save_context(void)
> -{
> -	omap_gpio_save_context();
> -}
> -
> -static inline void omap3_per_restore_context(void)
> -{
> -	omap_gpio_restore_context();
> -}
> -
>  static void omap3_enable_io_chain(void)
>  {
>  	int timeout = 0;
> @@ -395,8 +385,10 @@ void omap_sram_idle(void)
>  	if (!is_suspending())
>  		if (per_next_state < PWRDM_POWER_ON ||
>  		    core_next_state < PWRDM_POWER_ON)
> -			if (!console_trylock())
> +			if (!console_trylock()) {
> +				pwrdm_post_transition();
>  				goto console_still_active;
> +			}

Rather than having to add an extra post_transition call, I think i best
to move the pre_transition call down to just before the following 
/* PER */ block.

>  
>  	/* PER */
>  	if (per_next_state < PWRDM_POWER_ON) {
> @@ -404,8 +396,6 @@ void omap_sram_idle(void)
>  		omap_uart_prepare_idle(2);
>  		omap_uart_prepare_idle(3);
>  		omap2_gpio_prepare_for_idle(per_going_off);
> -		if (per_next_state == PWRDM_POWER_OFF)
> -				omap3_per_save_context();
>  	}
>  
>  	/* CORE */
> @@ -467,12 +457,12 @@ void omap_sram_idle(void)
>  	}
>  	omap3_intc_resume_idle();
>  
> +	pwrdm_post_transition();
> +
>  	/* PER */
>  	if (per_next_state < PWRDM_POWER_ON) {
>  		per_prev_state = pwrdm_read_prev_pwrst(per_pwrdm);
>  		omap2_gpio_resume_after_idle();
> -		if (per_prev_state == PWRDM_POWER_OFF)
> -			omap3_per_restore_context();
>  		omap_uart_resume_idle(2);
>  		omap_uart_resume_idle(3);
>  	}
> @@ -490,8 +480,6 @@ console_still_active:
>  		omap3_disable_io_chain();
>  	}
>  
> -	pwrdm_post_transition();
> -
>  	clkdm_allow_idle(mpu_pwrdm->pwrdm_clkdms[0]);
>  }
>  
> diff --git a/arch/arm/plat-omap/include/plat/gpio.h b/arch/arm/plat-omap/include/plat/gpio.h
> index 64b1ee7..5718a45 100644
> --- a/arch/arm/plat-omap/include/plat/gpio.h
> +++ b/arch/arm/plat-omap/include/plat/gpio.h
> @@ -209,8 +209,6 @@ extern void omap2_gpio_prepare_for_idle(int off_mode);
>  extern void omap2_gpio_resume_after_idle(void);
>  extern void omap_set_gpio_debounce(int gpio, int enable);
>  extern void omap_set_gpio_debounce_time(int gpio, int enable);
> -extern void omap_gpio_save_context(void);
> -extern void omap_gpio_restore_context(void);
>  /*-------------------------------------------------------------------------*/
>  
>  /* Wrappers for "new style" GPIO calls, using the new infrastructure
> diff --git a/drivers/gpio/gpio_omap.c b/drivers/gpio/gpio_omap.c
> index 9d55b7d..bc02ec5 100644
> --- a/drivers/gpio/gpio_omap.c
> +++ b/drivers/gpio/gpio_omap.c
> @@ -22,6 +22,8 @@
>  #include <linux/slab.h>
>  #include <linux/pm_runtime.h>
>  
> +#include <plat/omap_device.h>
> +

Should not be needed.  More on this below.

>  #include <mach/hardware.h>
>  #include <asm/irq.h>
>  #include <mach/irqs.h>
> @@ -72,6 +74,7 @@ struct gpio_bank {
>  	bool loses_context;
>  	int stride;
>  	u32 width;
> +	u32 ctx_lost_cnt_before;

Please call this ctx_loss_count.

>  	u16 id;
>  
>  	void (*set_dataout)(struct gpio_bank *bank, int gpio, int enable);
> @@ -1310,6 +1313,9 @@ static struct sys_device omap_gpio_device = {
>  
>  #ifdef CONFIG_ARCH_OMAP2PLUS
>  
> +static void omap_gpio_save_context(struct gpio_bank *bank);
> +static void omap_gpio_restore_context(struct gpio_bank *bank);
> +
>  static int workaround_enabled;
>  
>  void omap2_gpio_prepare_for_idle(int off_mode)
> @@ -1318,6 +1324,7 @@ void omap2_gpio_prepare_for_idle(int off_mode)
>  	struct gpio_bank *bank;
>  
>  	list_for_each_entry(bank, &omap_gpio_list, node) {
> +		struct platform_device *pdev;
>  		u32 l1 = 0, l2 = 0;
>  		int j;
>  
> @@ -1334,7 +1341,7 @@ void omap2_gpio_prepare_for_idle(int off_mode)
>  		 * non-wakeup GPIOs.  Otherwise spurious IRQs will be
>  		 * generated.  See OMAP2420 Errata item 1.101. */
>  		if (!(bank->enabled_non_wakeup_gpios))
> -			continue;
> +			goto save_gpio_ctx;
>  
>  		if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
>  			bank->saved_datain = __raw_readl(bank->base +
> @@ -1372,6 +1379,12 @@ void omap2_gpio_prepare_for_idle(int off_mode)
>  		}
>  
>  		c++;
> +
> +save_gpio_ctx:
> +		pdev = to_platform_device(bank->dev);
> +		bank->ctx_lost_cnt_before =
> +				omap_device_get_context_loss_count(pdev);

Drivers should not be directly calling omap_device APIs.  Instead,
drivers should use a pdata function pointer to call device specific
code for getting context loss.  See OMAP HSMMC driver for an example on
how this is done.

> +		omap_gpio_save_context(bank);
>  	}
>  	if (!c) {
>  		workaround_enabled = 0;
> @@ -1385,6 +1398,8 @@ void omap2_gpio_resume_after_idle(void)
>  	struct gpio_bank *bank;
>  
>  	list_for_each_entry(bank, &omap_gpio_list, node) {
> +		u32 ctx_lost_cnt_after;
> +		struct platform_device *pdev;
>  		u32 l = 0, gen, gen0, gen1;
>  		int j;
>  
> @@ -1394,11 +1409,17 @@ void omap2_gpio_resume_after_idle(void)
>  		for (j = 0; j < hweight_long(bank->dbck_enable_mask); j++)
>  			clk_enable(bank->dbck);
>  
> -		if (!workaround_enabled)
> +		pdev = to_platform_device(bank->dev);
> +		ctx_lost_cnt_after = omap_device_get_context_loss_count(pdev);
> +
> +		if (ctx_lost_cnt_after == bank->ctx_lost_cnt_before)
>  			continue;
>  
> +		if (!workaround_enabled)
> +			goto restore_gpio_ctx;

Now that these functions are all bank-specific, this
'workaround_enabled' flag should be made per-bank.

That being said, do we even need this flag?  I think that the
combination of enabled_non_wakeup_gpios and whether or not context has
been lost reflects the same condition.

>  		if (!(bank->enabled_non_wakeup_gpios))
> -			continue;
> +			goto restore_gpio_ctx;
>  
>  		if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
>  			__raw_writel(bank->saved_fallingdetect,
> @@ -1472,117 +1493,104 @@ void omap2_gpio_resume_after_idle(void)
>  						OMAP4_GPIO_LEVELDETECT1);
>  			}
>  		}
> +
> +restore_gpio_ctx:
> +		omap_gpio_restore_context(bank);

After considering the placement of the restore context here, I don't
think it's quite right.  It is equivalent to current behavior, but I'm
having a hard time understanding how current behavior is actually
working.

Consider the sequence

- prepare for idle
- remove triggering
  - save edge-detect registers, then modify them to "workaround" values
- save context (w/ "workaround" edge-detect register values
- WFI, off-mode hit
- wakeup, resume from idle
- write "saved" values to edge-detect registers
- restore context
  - here the "workaround" values from the saved context are restored !!!
    so the "saved" values are now lost.

For this to be symmetric with the save, I think the restore context
should come before handling the workaround/hack.

Kevin

WARNING: multiple messages have this Message-ID (diff)
From: khilman@ti.com (Kevin Hilman)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 07/15] OMAP: GPIO: handle save/restore ctx in GPIO driver
Date: Wed, 25 May 2011 15:33:51 -0700	[thread overview]
Message-ID: <87ipsypfzk.fsf@ti.com> (raw)
In-Reply-To: <1306247094-25372-8-git-send-email-tarun.kanti@ti.com> (Tarun Kanti DebBarma's message of "Tue, 24 May 2011 19:54:46 +0530")

Tarun Kanti DebBarma <tarun.kanti@ti.com> writes:

> From: Charulatha V <charu@ti.com>
>
> Modify omap_gpio_prepare_for_idle() & omap_gpio_resume_after_idle()
> functions to handle save context & restore context respectively in the
> OMAP GPIO driver itself instead of calling these functions from pm specific
> files. For this, in gpio_prepare_for_idle(), use
> omap_device_get_context_loss_count() and in gpio_resume_after_idle()
> call it again. If the count is different, do restore context.
>
> context lost count is modified in omap_sram_idle() path when
> pwrdm_post_transition() is called. But pwrdm_post_transition() is called
> only after omap_gpio_resume_after_idle() is called. Hence correct this
> so that context lost count is modified before calling
> omap_gpio_resume_after_idle().

This change to modify where pwrdm_post_transition() is called should be
separated out into a dedicated patch. 

> omap_gpio_prepare_for_idle() & omap_gpio_resume_after_idle()
> do nothing if none of the GPIOs in a bank is being used.
>
> Also remove usage of cpu_is_* checks from the above mentioned
> functions and fix the multi-line comment style
>
> Signed-off-by: Charulatha V <charu@ti.com>
> ---
>  arch/arm/mach-omap2/pm34xx.c           |   22 +----
>  arch/arm/plat-omap/include/plat/gpio.h |    2 -
>  drivers/gpio/gpio_omap.c               |  138 +++++++++++++++++---------------
>  3 files changed, 78 insertions(+), 84 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
> index 0c5e3a4..682d147 100644
> --- a/arch/arm/mach-omap2/pm34xx.c
> +++ b/arch/arm/mach-omap2/pm34xx.c
> @@ -91,16 +91,6 @@ static struct powerdomain *mpu_pwrdm, *neon_pwrdm;
>  static struct powerdomain *core_pwrdm, *per_pwrdm;
>  static struct powerdomain *cam_pwrdm;
>  
> -static inline void omap3_per_save_context(void)
> -{
> -	omap_gpio_save_context();
> -}
> -
> -static inline void omap3_per_restore_context(void)
> -{
> -	omap_gpio_restore_context();
> -}
> -
>  static void omap3_enable_io_chain(void)
>  {
>  	int timeout = 0;
> @@ -395,8 +385,10 @@ void omap_sram_idle(void)
>  	if (!is_suspending())
>  		if (per_next_state < PWRDM_POWER_ON ||
>  		    core_next_state < PWRDM_POWER_ON)
> -			if (!console_trylock())
> +			if (!console_trylock()) {
> +				pwrdm_post_transition();
>  				goto console_still_active;
> +			}

Rather than having to add an extra post_transition call, I think i best
to move the pre_transition call down to just before the following 
/* PER */ block.

>  
>  	/* PER */
>  	if (per_next_state < PWRDM_POWER_ON) {
> @@ -404,8 +396,6 @@ void omap_sram_idle(void)
>  		omap_uart_prepare_idle(2);
>  		omap_uart_prepare_idle(3);
>  		omap2_gpio_prepare_for_idle(per_going_off);
> -		if (per_next_state == PWRDM_POWER_OFF)
> -				omap3_per_save_context();
>  	}
>  
>  	/* CORE */
> @@ -467,12 +457,12 @@ void omap_sram_idle(void)
>  	}
>  	omap3_intc_resume_idle();
>  
> +	pwrdm_post_transition();
> +
>  	/* PER */
>  	if (per_next_state < PWRDM_POWER_ON) {
>  		per_prev_state = pwrdm_read_prev_pwrst(per_pwrdm);
>  		omap2_gpio_resume_after_idle();
> -		if (per_prev_state == PWRDM_POWER_OFF)
> -			omap3_per_restore_context();
>  		omap_uart_resume_idle(2);
>  		omap_uart_resume_idle(3);
>  	}
> @@ -490,8 +480,6 @@ console_still_active:
>  		omap3_disable_io_chain();
>  	}
>  
> -	pwrdm_post_transition();
> -
>  	clkdm_allow_idle(mpu_pwrdm->pwrdm_clkdms[0]);
>  }
>  
> diff --git a/arch/arm/plat-omap/include/plat/gpio.h b/arch/arm/plat-omap/include/plat/gpio.h
> index 64b1ee7..5718a45 100644
> --- a/arch/arm/plat-omap/include/plat/gpio.h
> +++ b/arch/arm/plat-omap/include/plat/gpio.h
> @@ -209,8 +209,6 @@ extern void omap2_gpio_prepare_for_idle(int off_mode);
>  extern void omap2_gpio_resume_after_idle(void);
>  extern void omap_set_gpio_debounce(int gpio, int enable);
>  extern void omap_set_gpio_debounce_time(int gpio, int enable);
> -extern void omap_gpio_save_context(void);
> -extern void omap_gpio_restore_context(void);
>  /*-------------------------------------------------------------------------*/
>  
>  /* Wrappers for "new style" GPIO calls, using the new infrastructure
> diff --git a/drivers/gpio/gpio_omap.c b/drivers/gpio/gpio_omap.c
> index 9d55b7d..bc02ec5 100644
> --- a/drivers/gpio/gpio_omap.c
> +++ b/drivers/gpio/gpio_omap.c
> @@ -22,6 +22,8 @@
>  #include <linux/slab.h>
>  #include <linux/pm_runtime.h>
>  
> +#include <plat/omap_device.h>
> +

Should not be needed.  More on this below.

>  #include <mach/hardware.h>
>  #include <asm/irq.h>
>  #include <mach/irqs.h>
> @@ -72,6 +74,7 @@ struct gpio_bank {
>  	bool loses_context;
>  	int stride;
>  	u32 width;
> +	u32 ctx_lost_cnt_before;

Please call this ctx_loss_count.

>  	u16 id;
>  
>  	void (*set_dataout)(struct gpio_bank *bank, int gpio, int enable);
> @@ -1310,6 +1313,9 @@ static struct sys_device omap_gpio_device = {
>  
>  #ifdef CONFIG_ARCH_OMAP2PLUS
>  
> +static void omap_gpio_save_context(struct gpio_bank *bank);
> +static void omap_gpio_restore_context(struct gpio_bank *bank);
> +
>  static int workaround_enabled;
>  
>  void omap2_gpio_prepare_for_idle(int off_mode)
> @@ -1318,6 +1324,7 @@ void omap2_gpio_prepare_for_idle(int off_mode)
>  	struct gpio_bank *bank;
>  
>  	list_for_each_entry(bank, &omap_gpio_list, node) {
> +		struct platform_device *pdev;
>  		u32 l1 = 0, l2 = 0;
>  		int j;
>  
> @@ -1334,7 +1341,7 @@ void omap2_gpio_prepare_for_idle(int off_mode)
>  		 * non-wakeup GPIOs.  Otherwise spurious IRQs will be
>  		 * generated.  See OMAP2420 Errata item 1.101. */
>  		if (!(bank->enabled_non_wakeup_gpios))
> -			continue;
> +			goto save_gpio_ctx;
>  
>  		if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
>  			bank->saved_datain = __raw_readl(bank->base +
> @@ -1372,6 +1379,12 @@ void omap2_gpio_prepare_for_idle(int off_mode)
>  		}
>  
>  		c++;
> +
> +save_gpio_ctx:
> +		pdev = to_platform_device(bank->dev);
> +		bank->ctx_lost_cnt_before =
> +				omap_device_get_context_loss_count(pdev);

Drivers should not be directly calling omap_device APIs.  Instead,
drivers should use a pdata function pointer to call device specific
code for getting context loss.  See OMAP HSMMC driver for an example on
how this is done.

> +		omap_gpio_save_context(bank);
>  	}
>  	if (!c) {
>  		workaround_enabled = 0;
> @@ -1385,6 +1398,8 @@ void omap2_gpio_resume_after_idle(void)
>  	struct gpio_bank *bank;
>  
>  	list_for_each_entry(bank, &omap_gpio_list, node) {
> +		u32 ctx_lost_cnt_after;
> +		struct platform_device *pdev;
>  		u32 l = 0, gen, gen0, gen1;
>  		int j;
>  
> @@ -1394,11 +1409,17 @@ void omap2_gpio_resume_after_idle(void)
>  		for (j = 0; j < hweight_long(bank->dbck_enable_mask); j++)
>  			clk_enable(bank->dbck);
>  
> -		if (!workaround_enabled)
> +		pdev = to_platform_device(bank->dev);
> +		ctx_lost_cnt_after = omap_device_get_context_loss_count(pdev);
> +
> +		if (ctx_lost_cnt_after == bank->ctx_lost_cnt_before)
>  			continue;
>  
> +		if (!workaround_enabled)
> +			goto restore_gpio_ctx;

Now that these functions are all bank-specific, this
'workaround_enabled' flag should be made per-bank.

That being said, do we even need this flag?  I think that the
combination of enabled_non_wakeup_gpios and whether or not context has
been lost reflects the same condition.

>  		if (!(bank->enabled_non_wakeup_gpios))
> -			continue;
> +			goto restore_gpio_ctx;
>  
>  		if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
>  			__raw_writel(bank->saved_fallingdetect,
> @@ -1472,117 +1493,104 @@ void omap2_gpio_resume_after_idle(void)
>  						OMAP4_GPIO_LEVELDETECT1);
>  			}
>  		}
> +
> +restore_gpio_ctx:
> +		omap_gpio_restore_context(bank);

After considering the placement of the restore context here, I don't
think it's quite right.  It is equivalent to current behavior, but I'm
having a hard time understanding how current behavior is actually
working.

Consider the sequence

- prepare for idle
- remove triggering
  - save edge-detect registers, then modify them to "workaround" values
- save context (w/ "workaround" edge-detect register values
- WFI, off-mode hit
- wakeup, resume from idle
- write "saved" values to edge-detect registers
- restore context
  - here the "workaround" values from the saved context are restored !!!
    so the "saved" values are now lost.

For this to be symmetric with the save, I think the restore context
should come before handling the workaround/hack.

Kevin

  reply	other threads:[~2011-05-25 22:33 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 [this message]
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
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=87ipsypfzk.fsf@ti.com \
    --to=khilman@ti.com \
    --cc=charu@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: link
Be 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.