Re: [PATCH V3 13/19] OMAP3+: SR: Reuse sr_[start|stop]_vddautocomp functions

2011-03-17 Thread Kevin Hilman
Nishanth Menon n...@ti.com writes:

 From: Jarkko Nikula jhnik...@gmail.com

 sr_start_vddautocomp and sr_stop_autocomp functions can be reused from
 omap_sr_enable, omap_sr_disable and omap_sr_disable_reset_volt and by
 adding one additional argument sr_stop_autocomp. This allows us to have
 a single point where SR enable and disable operations are controlled from.

 [n...@ti.com: synced it up with class start/stop as well. autocomp flag
  should only be disabled when SR is disabled for that domain]
 Signed-off-by: Nishanth Menon n...@ti.com
 Signed-off-by: Jarkko Nikula jhnik...@gmail.com
 ---
 Side note: Jarkko has'nt seen this rev as I just finished the rebase and 
 tested
 but adding his signed-off anyways as he is primary contributor to the idea
 and the patch.

This one looks fine, but will wait to apply it since it depends on the
previous one which needs some minor fixups.

Kevin

  arch/arm/mach-omap2/smartreflex.c |   66 
 +
  1 files changed, 23 insertions(+), 43 deletions(-)

 diff --git a/arch/arm/mach-omap2/smartreflex.c 
 b/arch/arm/mach-omap2/smartreflex.c
 index 592e9a0..d839fa6 100644
 --- a/arch/arm/mach-omap2/smartreflex.c
 +++ b/arch/arm/mach-omap2/smartreflex.c
 @@ -211,8 +211,12 @@ static void sr_set_regfields(struct omap_sr *sr)
   }
  }
  
 -static void sr_start_vddautocomp(struct omap_sr *sr)
 +static void sr_start_vddautocomp(struct omap_sr *sr, bool class_start)
  {
 + int r;
 + if (sr-autocomp_active)
 + return;
 +
   if (!sr_class || !(sr_class-enable) || !(sr_class-configure)) {
   dev_warn(sr-pdev-dev,
   %s: smartreflex class driver not registered\n,
 @@ -220,19 +224,24 @@ static void sr_start_vddautocomp(struct omap_sr *sr)
   return;
   }
  
 - if (sr_class-start 
 + if (class_start  sr_class-start 
   sr_class-start(sr-voltdm, sr_class-class_priv_data)) {
   dev_err(sr-pdev-dev,
   %s: SRClass initialization failed\n, __func__);
   return;
   }
  
 - if (!sr_class-enable(sr-voltdm))
 + r = sr_class-enable(sr-voltdm);
 + if (!r  class_start)
   sr-autocomp_active = true;
  }
  
 -static void sr_stop_vddautocomp(struct omap_sr *sr)
 +static void sr_stop_vddautocomp(struct omap_sr *sr, bool class_stop,
 + int is_volt_reset)
  {
 + if (!sr-autocomp_active)
 + return;
 +
   if (!sr_class || !(sr_class-disable)) {
   dev_warn(sr-pdev-dev,
   %s: smartreflex class driver not registered\n,
 @@ -240,15 +249,13 @@ static void sr_stop_vddautocomp(struct omap_sr *sr)
   return;
   }
  
 - if (sr-autocomp_active) {
 - sr_class-disable(sr-voltdm, 1);
 + sr_class-disable(sr-voltdm, is_volt_reset);
 + if (class_stop) {
   if (sr_class-stop 
 - sr_class-stop(sr-voltdm,
 - sr_class-class_priv_data)) {
 + sr_class-stop(sr-voltdm, sr_class-class_priv_data))
   dev_err(sr-pdev-dev,
   %s: SR[%d]Class deinitialization failed\n,
   __func__, sr-srid);
 - }
   sr-autocomp_active = false;
   }
  }
 @@ -285,7 +292,7 @@ static int sr_late_init(struct omap_sr *sr_info)
   }
  
   if (pdata  pdata-enable_on_init)
 - sr_start_vddautocomp(sr_info);
 + sr_start_vddautocomp(sr_info, true);
  
   return ret;
  
 @@ -693,16 +700,7 @@ void omap_sr_enable(struct voltagedomain *voltdm)
   return;
   }
  
 - if (!sr-autocomp_active)
 - return;
 -
 - if (!sr_class || !(sr_class-enable) || !(sr_class-configure)) {
 - dev_warn(sr-pdev-dev, %s: smartreflex class driver not
 - registered\n, __func__);
 - return;
 - }
 -
 - sr_class-enable(voltdm);
 + sr_start_vddautocomp(sr, false);
  }
  
  /**
 @@ -726,16 +724,7 @@ void omap_sr_disable(struct voltagedomain *voltdm)
   return;
   }
  
 - if (!sr-autocomp_active)
 - return;
 -
 - if (!sr_class || !(sr_class-disable)) {
 - dev_warn(sr-pdev-dev, %s: smartreflex class driver not
 - registered\n, __func__);
 - return;
 - }
 -
 - sr_class-disable(voltdm, 0);
 + sr_stop_vddautocomp(sr, false, 0);
  }
  
  /**
 @@ -759,16 +748,7 @@ void omap_sr_disable_reset_volt(struct voltagedomain 
 *voltdm)
   return;
   }
  
 - if (!sr-autocomp_active)
 - return;
 -
 - if (!sr_class || !(sr_class-disable)) {
 - dev_warn(sr-pdev-dev, %s: smartreflex class driver not
 - registered\n, __func__);
 - return;
 - }
 -
 - sr_class-disable(voltdm, 1);
 + sr_stop_vddautocomp(sr, false, 1);
  }
  
  /**
 @@ -823,9 

Re: [PATCH V3 13/19] OMAP3+: SR: Reuse sr_[start|stop]_vddautocomp functions

2011-03-07 Thread Jarkko Nikula
On Sat,  5 Mar 2011 20:59:16 +0530
Nishanth Menon n...@ti.com wrote:

 From: Jarkko Nikula jhnik...@gmail.com
 
 sr_start_vddautocomp and sr_stop_autocomp functions can be reused from
 omap_sr_enable, omap_sr_disable and omap_sr_disable_reset_volt and by
 adding one additional argument sr_stop_autocomp. This allows us to have
 a single point where SR enable and disable operations are controlled from.
 
 [n...@ti.com: synced it up with class start/stop as well. autocomp flag
  should only be disabled when SR is disabled for that domain]
 Signed-off-by: Nishanth Menon n...@ti.com
 Signed-off-by: Jarkko Nikula jhnik...@gmail.com
 ---
 Side note: Jarkko has'nt seen this rev as I just finished the rebase and 
 tested
 but adding his signed-off anyways as he is primary contributor to the idea
 and the patch.
 
This version looks good to me. We agreed with Nishant that squashing my
trivial patches with Nishant's set makes the most sense.

-- 
Jarkko
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html