All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Hilman <khilman@deeprootsystems.com>
To: Thara Gopinath <thara@ti.com>
Cc: linux-omap@vger.kernel.org
Subject: Re: [PATCH 5/8] OMAP3 PM: Adding conditional core powerdomain context save and restore
Date: Fri, 22 Jan 2010 16:15:07 -0800	[thread overview]
Message-ID: <87zl45zng4.fsf@deeprootsystems.com> (raw)
In-Reply-To: <1264001442-20078-6-git-send-email-thara@ti.com> (Thara Gopinath's message of "Wed\, 20 Jan 2010 21\:00\:39 +0530")

Thara Gopinath <thara@ti.com> writes:

> This patch adds a parameter core_state , depicting the power state
> which the core domain will attempt to enter, to omap3_core_save_context
> and omap3_core_restore_context. This is so as to distinguish between
> the context save and restore required when core domain is attempting
> OSWR and OFF. Core OSWR does not require interrupt controller,
> system control module and dma controller context save and retore
> where as Core OFF reuires these.
>
> Signed-off-by: Thara Gopinath <thara@ti.com>

Looks good, pulling this into PM branch after one minor fixup below...

> ---
>  arch/arm/mach-omap2/pm34xx.c |   71 +++++++++++++++++++++++++-----------------
>  1 files changed, 42 insertions(+), 29 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
> index 895e9ef..e4db1ea 100644
> --- a/arch/arm/mach-omap2/pm34xx.c
> +++ b/arch/arm/mach-omap2/pm34xx.c
> @@ -150,44 +150,57 @@ static void omap3_disable_io_chain(void)
>  		prm_clear_mod_reg_bits(OMAP3430_EN_IO_CHAIN, WKUP_MOD, PM_WKEN);
>  }
>  
> -static void omap3_core_save_context(void)
> +static void omap3_core_save_context(int core_state)
>  {
> -	u32 control_padconf_off;
> +	if (core_state == PWRDM_POWER_OFF) {
> +		u32 control_padconf_off;
> +
> +		/* Save the padconf registers */
> +		control_padconf_off = omap_ctrl_readl(
> +				OMAP343X_CONTROL_PADCONF_OFF);
> +		control_padconf_off |= START_PADCONF_SAVE;
> +		omap_ctrl_writel(control_padconf_off,
> +				OMAP343X_CONTROL_PADCONF_OFF);
> +		/* wait for the save to complete */
> +		while (!(omap_ctrl_readl(
> +				OMAP343X_CONTROL_GENERAL_PURPOSE_STATUS) &
> +				PADCONF_SAVE_DONE))
> +			udelay(1);
>  
> -	/* Save the padconf registers */
> -	control_padconf_off = omap_ctrl_readl(OMAP343X_CONTROL_PADCONF_OFF);
> -	control_padconf_off |= START_PADCONF_SAVE;
> -	omap_ctrl_writel(control_padconf_off, OMAP343X_CONTROL_PADCONF_OFF);
> -	/* wait for the save to complete */
> -	while (!(omap_ctrl_readl(OMAP343X_CONTROL_GENERAL_PURPOSE_STATUS)
> -			& PADCONF_SAVE_DONE))
> -		udelay(1);
> +		/*
> +		 * Force write last pad into memory, as this can fail in some
> +		 * cases according to erratas 1.157, 1.185
> +		 */
> +		omap_ctrl_writel(omap_ctrl_readl(OMAP343X_PADCONF_ETK_D14),
> +				OMAP343X_CONTROL_MEM_WKUP + 0x2a0);
>  
> -	/*
> -	 * Force write last pad into memory, as this can fail in some
> -	 * cases according to erratas 1.157, 1.185
> -	 */
> -	omap_ctrl_writel(omap_ctrl_readl(OMAP343X_PADCONF_ETK_D14),
> -		OMAP343X_CONTROL_MEM_WKUP + 0x2a0);
> +		/* Save the Interrupt controller context */
> +		omap_intc_save_context();
> +
> +		/* Save the system control module context,
> +		 * padconf already save above
> +		 */
> +		omap3_control_save_context();
> +		omap_dma_global_context_save();
> +	}
>  
> -	/* Save the Interrupt controller context */
> -	omap_intc_save_context();
>  	/* Save the GPMC context */
>  	omap3_gpmc_save_context();
> -	/* Save the system control module context, padconf already save above*/
> -	omap3_control_save_context();
> -	omap_dma_global_context_save();
>  }
>  
> -static void omap3_core_restore_context(void)
> +static void omap3_core_restore_context(int core_state)
>  {
> -	/* Restore the control module context, padconf restored by h/w */
> -	omap3_control_restore_context();
> +	if (core_state == PWRDM_POWER_OFF) {
> +		/* Restore the control module context,
> +		 * padconf restored by h/w
> +		 */

changing this to proper multi-line comment.

Kevin

> +		omap3_control_restore_context();
> +		/* Restore the interrupt controller context */
> +		omap_intc_restore_context();
> +		omap_dma_global_context_restore();
> +	}
>  	/* Restore the GPMC context */
>  	omap3_gpmc_restore_context();
> -	/* Restore the interrupt controller context */
> -	omap_intc_restore_context();
> -	omap_dma_global_context_restore();
>  }
>  
>  /*
> @@ -445,7 +458,7 @@ void omap_sram_idle(void)
>  			prm_set_mod_reg_bits(voltctrl,
>  					     OMAP3430_GR_MOD,
>  					     OMAP3_PRM_VOLTCTRL_OFFSET);
> -			omap3_core_save_context();
> +			omap3_core_save_context(PWRDM_POWER_OFF);
>  			omap3_prcm_save_context();
>  		} else if (core_next_state == PWRDM_POWER_RET) {
>  			prm_set_mod_reg_bits(OMAP3430_AUTO_RET,
> @@ -497,7 +510,7 @@ void omap_sram_idle(void)
>  	if (core_next_state < PWRDM_POWER_ON) {
>  		core_prev_state = pwrdm_read_prev_pwrst(core_pwrdm);
>  		if (core_prev_state == PWRDM_POWER_OFF) {
> -			omap3_core_restore_context();
> +			omap3_core_restore_context(core_prev_state);
>  			omap3_prcm_restore_context();
>  			omap3_sram_restore_context();
>  			omap2_sms_restore_context();
> -- 
> 1.5.6.3
>
> --
> 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

  parent reply	other threads:[~2010-01-23  0:15 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-20 15:30 [PATCH 0/8] OMAP3: PM: Open Switch Retention support in the cpuidle thread Thara Gopinath
2010-01-20 15:30 ` [PATCH 1/8] PM: Increase the cpu idle max state Thara Gopinath
2010-01-20 15:30   ` [PATCH 2/8] OMAP3 PM: Conditional UART context save restore Thara Gopinath
2010-01-20 15:30     ` [PATCH 3/8] OMAP2/3 PM: Adding powerdomain APIs for reading the next logic and mem state Thara Gopinath
2010-01-20 15:30       ` [PATCH 4/8] OMAP3 PM: Defining .pwrsts_logic_ret field for core power domain structure Thara Gopinath
2010-01-20 15:30         ` [PATCH 5/8] OMAP3 PM: Adding conditional core powerdomain context save and restore Thara Gopinath
2010-01-20 15:30           ` [PATCH 6/8] OMAP3 PM: Enable DPLL4 autoidle after system off Thara Gopinath
2010-01-20 15:30             ` [PATCH 7/8] OMAP3 PM: Support for Open Switch Retention for Core and MPU power domains in cpuidle path Thara Gopinath
2010-01-20 15:30               ` [PATCH 8/8] OMAP3 PM: Support to enable disable OSWR feature from pm debug fs Thara Gopinath
2010-01-23  0:42                 ` Kevin Hilman
2010-01-24  4:12                   ` Gopinath, Thara
2010-01-25 19:55                     ` Kevin Hilman
2010-01-21  5:59               ` [PATCH 7/8] OMAP3 PM: Support for Open Switch Retention for Core and MPU power domains in cpuidle path Paul Walmsley
2010-01-23  0:35               ` Kevin Hilman
2010-01-20 17:34             ` [PATCH 6/8] OMAP3 PM: Enable DPLL4 autoidle after system off Paul Walmsley
2010-01-21  5:33               ` Gopinath, Thara
2010-01-21  5:58                 ` Paul Walmsley
2010-01-21  7:01                   ` Gopinath, Thara
2010-01-21  7:12                     ` Paul Walmsley
2010-01-23  0:15           ` Kevin Hilman [this message]
2010-01-21  6:25         ` [PATCH 4/8] OMAP3 PM: Defining .pwrsts_logic_ret field for core power domain structure Paul Walmsley
2010-01-21  6:12       ` [PATCH 3/8] OMAP2/3 PM: Adding powerdomain APIs for reading the next logic and mem state Paul Walmsley
2010-01-21  7:02         ` Gopinath, Thara
2010-01-22 23:44     ` [PATCH 2/8] OMAP3 PM: Conditional UART context save restore Kevin Hilman
2010-01-21  6:23 ` [PATCH 0/8] OMAP3: PM: Open Switch Retention support in the cpuidle thread Paul Walmsley
2010-01-21  7:08   ` Gopinath, Thara
2010-01-21  7:18     ` Paul Walmsley

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=87zl45zng4.fsf@deeprootsystems.com \
    --to=khilman@deeprootsystems.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=thara@ti.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.