All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Hilman <khilman@ti.com>
To: jean.pihet@newoldbits.com
Cc: linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org,
	Tony Lindgren <tony@atomide.com>, Jean Pihet <j-pihet@ti.com>
Subject: Re: [PATCH 4/5] OMAP3: cpuidle: code rework for improved readability
Date: Wed, 04 May 2011 08:32:51 -0700	[thread overview]
Message-ID: <87zkn2tra4.fsf@ti.com> (raw)
In-Reply-To: <1304069186-3086-5-git-send-email-j-pihet@ti.com> (jean pihet's message of "Fri, 29 Apr 2011 11:26:25 +0200")

jean.pihet@newoldbits.com writes:

> From: Jean Pihet <j-pihet@ti.com>

Please summarize changes here.

Kevin

> Signed-off-by: Jean Pihet <j-pihet@ti.com>
> ---
>  arch/arm/mach-omap2/cpuidle34xx.c |   52 +++++++++++++-----------------------
>  1 files changed, 19 insertions(+), 33 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/cpuidle34xx.c b/arch/arm/mach-omap2/cpuidle34xx.c
> index f84315c..4673cc6 100644
> --- a/arch/arm/mach-omap2/cpuidle34xx.c
> +++ b/arch/arm/mach-omap2/cpuidle34xx.c
> @@ -80,13 +80,6 @@ static struct cpuidle_params cpuidle_params_table[OMAP3_MAX_STATES] = {
>  	{10000 + 30000, 300000, 1},
>  };
>  
> -static int omap3_idle_bm_check(void)
> -{
> -	if (!omap3_can_sleep())
> -		return 1;
> -	return 0;
> -}
> -
>  static int _cpuidle_allow_idle(struct powerdomain *pwrdm,
>  				struct clockdomain *clkdm)
>  {
> @@ -166,9 +159,7 @@ static struct cpuidle_state *next_valid_state(struct cpuidle_device *dev,
>  					      struct cpuidle_state *curr)
>  {
>  	struct cpuidle_state *next = NULL;
> -	struct omap3_idle_statedata *cx;
> -
> -	cx = cpuidle_get_statedata(curr);
> +	struct omap3_idle_statedata *cx = cpuidle_get_statedata(curr);
>  
>  	/* Check if current state is valid */
>  	if (cx->valid) {
> @@ -176,9 +167,7 @@ static struct cpuidle_state *next_valid_state(struct cpuidle_device *dev,
>  	} else {
>  		u8 idx = OMAP3_STATE_MAX;
>  
> -		/*
> -		 * Reach the current state starting at highest C-state
> -		 */
> +		/* Reach the current state starting at highest C-state */
>  		for (; idx >= OMAP3_STATE_C1; idx--) {
>  			if (&dev->states[idx] == curr) {
>  				next = &dev->states[idx];
> @@ -186,9 +175,7 @@ static struct cpuidle_state *next_valid_state(struct cpuidle_device *dev,
>  			}
>  		}
>  
> -		/*
> -		 * Should never hit this condition.
> -		 */
> +		/* Should never hit this condition */
>  		WARN_ON(next == NULL);
>  
>  		/*
> @@ -223,29 +210,16 @@ static struct cpuidle_state *next_valid_state(struct cpuidle_device *dev,
>  static int omap3_enter_idle_bm(struct cpuidle_device *dev,
>  			       struct cpuidle_state *state)
>  {
> -	struct cpuidle_state *new_state = next_valid_state(dev, state);
> -	u32 core_next_state, per_next_state = 0, per_saved_state = 0;
> -	u32 cam_state;
> +	struct cpuidle_state *new_state;
> +	u32 core_next_state, per_next_state = 0, per_saved_state = 0, cam_state;
>  	struct omap3_idle_statedata *cx;
>  	int ret;
>  
> -	if (omap3_idle_bm_check()) {
> -		BUG_ON(!dev->safe_state);
> +	if (!omap3_can_sleep()) {
>  		new_state = dev->safe_state;
>  		goto select_state;
>  	}
>  
> -	cx = cpuidle_get_statedata(state);
> -	core_next_state = cx->core_state;
> -
> -	/*
> -	 * FIXME: we currently manage device-specific idle states
> -	 *        for PER and CORE in combination with CPU-specific
> -	 *        idle states.  This is wrong, and device-specific
> -	 *        idle management needs to be separated out into 
> -	 *        its own code.
> -	 */
> -
>  	/*
>  	 * Prevent idle completely if CAM is active.
>  	 * CAM does not have wakeup capability in OMAP3.
> @@ -257,9 +231,19 @@ static int omap3_enter_idle_bm(struct cpuidle_device *dev,
>  	}
>  
>  	/*
> +	 * FIXME: we currently manage device-specific idle states
> +	 *        for PER and CORE in combination with CPU-specific
> +	 *        idle states.  This is wrong, and device-specific
> +	 *        idle management needs to be separated out into
> +	 *        its own code.
> +	 */
> +
> +	/*
>  	 * Prevent PER off if CORE is not in retention or off as this
>  	 * would disable PER wakeups completely.
>  	 */
> +	cx = cpuidle_get_statedata(state);
> +	core_next_state = cx->core_state;
>  	per_next_state = per_saved_state = pwrdm_read_next_pwrst(per_pd);
>  	if ((per_next_state == PWRDM_POWER_OFF) &&
>  	    (core_next_state > PWRDM_POWER_RET))
> @@ -269,6 +253,8 @@ static int omap3_enter_idle_bm(struct cpuidle_device *dev,
>  	if (per_next_state != per_saved_state)
>  		pwrdm_set_next_pwrst(per_pd, per_next_state);
>  
> +	new_state = next_valid_state(dev, state);
> +
>  select_state:
>  	dev->last_state = new_state;
>  	ret = omap3_enter_idle(dev, new_state);
> @@ -329,7 +315,7 @@ struct cpuidle_driver omap3_idle_driver = {
>  	.owner = 	THIS_MODULE,
>  };
>  
> -/* Fill in the state data from the mach tables and register the driver_data */
> +/* Helper to fill the C-state common data and register the driver_data */
>  #define FILL_IN_STATE(idx, descr)					\
>  do {									\
>  	state				= &dev->states[count];		\

WARNING: multiple messages have this Message-ID (diff)
From: khilman@ti.com (Kevin Hilman)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4/5] OMAP3: cpuidle: code rework for improved readability
Date: Wed, 04 May 2011 08:32:51 -0700	[thread overview]
Message-ID: <87zkn2tra4.fsf@ti.com> (raw)
In-Reply-To: <1304069186-3086-5-git-send-email-j-pihet@ti.com> (jean pihet's message of "Fri, 29 Apr 2011 11:26:25 +0200")

jean.pihet at newoldbits.com writes:

> From: Jean Pihet <j-pihet@ti.com>

Please summarize changes here.

Kevin

> Signed-off-by: Jean Pihet <j-pihet@ti.com>
> ---
>  arch/arm/mach-omap2/cpuidle34xx.c |   52 +++++++++++++-----------------------
>  1 files changed, 19 insertions(+), 33 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/cpuidle34xx.c b/arch/arm/mach-omap2/cpuidle34xx.c
> index f84315c..4673cc6 100644
> --- a/arch/arm/mach-omap2/cpuidle34xx.c
> +++ b/arch/arm/mach-omap2/cpuidle34xx.c
> @@ -80,13 +80,6 @@ static struct cpuidle_params cpuidle_params_table[OMAP3_MAX_STATES] = {
>  	{10000 + 30000, 300000, 1},
>  };
>  
> -static int omap3_idle_bm_check(void)
> -{
> -	if (!omap3_can_sleep())
> -		return 1;
> -	return 0;
> -}
> -
>  static int _cpuidle_allow_idle(struct powerdomain *pwrdm,
>  				struct clockdomain *clkdm)
>  {
> @@ -166,9 +159,7 @@ static struct cpuidle_state *next_valid_state(struct cpuidle_device *dev,
>  					      struct cpuidle_state *curr)
>  {
>  	struct cpuidle_state *next = NULL;
> -	struct omap3_idle_statedata *cx;
> -
> -	cx = cpuidle_get_statedata(curr);
> +	struct omap3_idle_statedata *cx = cpuidle_get_statedata(curr);
>  
>  	/* Check if current state is valid */
>  	if (cx->valid) {
> @@ -176,9 +167,7 @@ static struct cpuidle_state *next_valid_state(struct cpuidle_device *dev,
>  	} else {
>  		u8 idx = OMAP3_STATE_MAX;
>  
> -		/*
> -		 * Reach the current state starting at highest C-state
> -		 */
> +		/* Reach the current state starting at highest C-state */
>  		for (; idx >= OMAP3_STATE_C1; idx--) {
>  			if (&dev->states[idx] == curr) {
>  				next = &dev->states[idx];
> @@ -186,9 +175,7 @@ static struct cpuidle_state *next_valid_state(struct cpuidle_device *dev,
>  			}
>  		}
>  
> -		/*
> -		 * Should never hit this condition.
> -		 */
> +		/* Should never hit this condition */
>  		WARN_ON(next == NULL);
>  
>  		/*
> @@ -223,29 +210,16 @@ static struct cpuidle_state *next_valid_state(struct cpuidle_device *dev,
>  static int omap3_enter_idle_bm(struct cpuidle_device *dev,
>  			       struct cpuidle_state *state)
>  {
> -	struct cpuidle_state *new_state = next_valid_state(dev, state);
> -	u32 core_next_state, per_next_state = 0, per_saved_state = 0;
> -	u32 cam_state;
> +	struct cpuidle_state *new_state;
> +	u32 core_next_state, per_next_state = 0, per_saved_state = 0, cam_state;
>  	struct omap3_idle_statedata *cx;
>  	int ret;
>  
> -	if (omap3_idle_bm_check()) {
> -		BUG_ON(!dev->safe_state);
> +	if (!omap3_can_sleep()) {
>  		new_state = dev->safe_state;
>  		goto select_state;
>  	}
>  
> -	cx = cpuidle_get_statedata(state);
> -	core_next_state = cx->core_state;
> -
> -	/*
> -	 * FIXME: we currently manage device-specific idle states
> -	 *        for PER and CORE in combination with CPU-specific
> -	 *        idle states.  This is wrong, and device-specific
> -	 *        idle management needs to be separated out into 
> -	 *        its own code.
> -	 */
> -
>  	/*
>  	 * Prevent idle completely if CAM is active.
>  	 * CAM does not have wakeup capability in OMAP3.
> @@ -257,9 +231,19 @@ static int omap3_enter_idle_bm(struct cpuidle_device *dev,
>  	}
>  
>  	/*
> +	 * FIXME: we currently manage device-specific idle states
> +	 *        for PER and CORE in combination with CPU-specific
> +	 *        idle states.  This is wrong, and device-specific
> +	 *        idle management needs to be separated out into
> +	 *        its own code.
> +	 */
> +
> +	/*
>  	 * Prevent PER off if CORE is not in retention or off as this
>  	 * would disable PER wakeups completely.
>  	 */
> +	cx = cpuidle_get_statedata(state);
> +	core_next_state = cx->core_state;
>  	per_next_state = per_saved_state = pwrdm_read_next_pwrst(per_pd);
>  	if ((per_next_state == PWRDM_POWER_OFF) &&
>  	    (core_next_state > PWRDM_POWER_RET))
> @@ -269,6 +253,8 @@ static int omap3_enter_idle_bm(struct cpuidle_device *dev,
>  	if (per_next_state != per_saved_state)
>  		pwrdm_set_next_pwrst(per_pd, per_next_state);
>  
> +	new_state = next_valid_state(dev, state);
> +
>  select_state:
>  	dev->last_state = new_state;
>  	ret = omap3_enter_idle(dev, new_state);
> @@ -329,7 +315,7 @@ struct cpuidle_driver omap3_idle_driver = {
>  	.owner = 	THIS_MODULE,
>  };
>  
> -/* Fill in the state data from the mach tables and register the driver_data */
> +/* Helper to fill the C-state common data and register the driver_data */
>  #define FILL_IN_STATE(idx, descr)					\
>  do {									\
>  	state				= &dev->states[count];		\

  reply	other threads:[~2011-05-04 15:32 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-29  9:26 [PATCH 0/5] OMAP: cpuidle code clean-up jean.pihet
2011-04-29  9:26 ` jean.pihet at newoldbits.com
2011-04-29  9:26 ` [PATCH 1/5] OMAP3 cpuidle: remove useless SDP specific timings jean.pihet
2011-04-29  9:26   ` jean.pihet at newoldbits.com
2011-04-29 11:14   ` Santosh Shilimkar
2011-04-29 11:14     ` Santosh Shilimkar
2011-05-04 14:40   ` Kevin Hilman
2011-05-04 14:40     ` Kevin Hilman
2011-04-29  9:26 ` [PATCH 2/5] OMAP3: clean-up mach specific cpuidle data structures jean.pihet
2011-04-29  9:26   ` jean.pihet at newoldbits.com
2011-05-04 20:09   ` Kevin Hilman
2011-05-04 20:09     ` Kevin Hilman
2011-04-29  9:26 ` [PATCH 3/5] OMAP3: cpuidle: re-organize the C-states data jean.pihet
2011-04-29  9:26   ` jean.pihet at newoldbits.com
2011-04-29 11:24   ` Santosh Shilimkar
2011-04-29 11:24     ` Santosh Shilimkar
2011-05-04 14:59   ` Kevin Hilman
2011-05-04 14:59     ` Kevin Hilman
2011-04-29  9:26 ` [PATCH 4/5] OMAP3: cpuidle: code rework for improved readability jean.pihet
2011-04-29  9:26   ` jean.pihet at newoldbits.com
2011-05-04 15:32   ` Kevin Hilman [this message]
2011-05-04 15:32     ` Kevin Hilman
2011-04-29  9:26 ` [PATCH 5/5] OMAP3: cpuidle: change the power domains modes determination logic jean.pihet
2011-04-29  9:26   ` jean.pihet at newoldbits.com
2011-04-29 11:29   ` Santosh Shilimkar
2011-04-29 11:29     ` Santosh Shilimkar
2011-04-29 14:00     ` Jean Pihet
2011-04-29 14:00       ` Jean Pihet

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=87zkn2tra4.fsf@ti.com \
    --to=khilman@ti.com \
    --cc=j-pihet@ti.com \
    --cc=jean.pihet@newoldbits.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --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.