aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2013-09-16 10:38:29 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-09-20 17:48:45 -0400
commit2d66aef508fc47aa75ed196bc4638636e28d1b42 (patch)
treed16385237a2d28823af2eac5bb088787fb8ccb87
parent6765625e0b677a86dbd533f045ab4e52e2761d79 (diff)
drm/i915: Refactor power well refcount inc/dec operations
We increase/decrease the power well refcount in several places now, and all of those places need to do the same thing, so pull that code into a few small helper functions. v2: Rename the funcs to __intel_power_well_{get,put} Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c39
1 files changed, 21 insertions, 18 deletions
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index a0e198c8e141..5e810bb21d83 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -5345,6 +5345,19 @@ static void __intel_set_power_well(struct drm_device *dev, bool enable)
5345 } 5345 }
5346} 5346}
5347 5347
5348static void __intel_power_well_get(struct i915_power_well *power_well)
5349{
5350 if (!power_well->count++)
5351 __intel_set_power_well(power_well->device, true);
5352}
5353
5354static void __intel_power_well_put(struct i915_power_well *power_well)
5355{
5356 WARN_ON(!power_well->count);
5357 if (!--power_well->count)
5358 __intel_set_power_well(power_well->device, false);
5359}
5360
5348void intel_display_power_get(struct drm_device *dev, 5361void intel_display_power_get(struct drm_device *dev,
5349 enum intel_display_power_domain domain) 5362 enum intel_display_power_domain domain)
5350{ 5363{
@@ -5367,8 +5380,7 @@ void intel_display_power_get(struct drm_device *dev,
5367 case POWER_DOMAIN_TRANSCODER_B: 5380 case POWER_DOMAIN_TRANSCODER_B:
5368 case POWER_DOMAIN_TRANSCODER_C: 5381 case POWER_DOMAIN_TRANSCODER_C:
5369 spin_lock_irq(&power_well->lock); 5382 spin_lock_irq(&power_well->lock);
5370 if (!power_well->count++) 5383 __intel_power_well_get(power_well);
5371 __intel_set_power_well(power_well->device, true);
5372 spin_unlock_irq(&power_well->lock); 5384 spin_unlock_irq(&power_well->lock);
5373 return; 5385 return;
5374 default: 5386 default:
@@ -5398,9 +5410,7 @@ void intel_display_power_put(struct drm_device *dev,
5398 case POWER_DOMAIN_TRANSCODER_B: 5410 case POWER_DOMAIN_TRANSCODER_B:
5399 case POWER_DOMAIN_TRANSCODER_C: 5411 case POWER_DOMAIN_TRANSCODER_C:
5400 spin_lock_irq(&power_well->lock); 5412 spin_lock_irq(&power_well->lock);
5401 WARN_ON(!power_well->count); 5413 __intel_power_well_put(power_well);
5402 if (!--power_well->count)
5403 __intel_set_power_well(power_well->device, false);
5404 spin_unlock_irq(&power_well->lock); 5414 spin_unlock_irq(&power_well->lock);
5405 return; 5415 return;
5406 default: 5416 default:
@@ -5417,8 +5427,7 @@ void i915_request_power_well(void)
5417 return; 5427 return;
5418 5428
5419 spin_lock_irq(&hsw_pwr->lock); 5429 spin_lock_irq(&hsw_pwr->lock);
5420 if (!hsw_pwr->count++) 5430 __intel_power_well_get(hsw_pwr);
5421 __intel_set_power_well(hsw_pwr->device, true);
5422 spin_unlock_irq(&hsw_pwr->lock); 5431 spin_unlock_irq(&hsw_pwr->lock);
5423} 5432}
5424EXPORT_SYMBOL_GPL(i915_request_power_well); 5433EXPORT_SYMBOL_GPL(i915_request_power_well);
@@ -5430,9 +5439,7 @@ void i915_release_power_well(void)
5430 return; 5439 return;
5431 5440
5432 spin_lock_irq(&hsw_pwr->lock); 5441 spin_lock_irq(&hsw_pwr->lock);
5433 WARN_ON(!hsw_pwr->count); 5442 __intel_power_well_put(hsw_pwr);
5434 if (!--hsw_pwr->count)
5435 __intel_set_power_well(hsw_pwr->device, false);
5436 spin_unlock_irq(&hsw_pwr->lock); 5443 spin_unlock_irq(&hsw_pwr->lock);
5437} 5444}
5438EXPORT_SYMBOL_GPL(i915_release_power_well); 5445EXPORT_SYMBOL_GPL(i915_release_power_well);
@@ -5479,14 +5486,10 @@ void intel_set_power_well(struct drm_device *dev, bool enable)
5479 5486
5480 power_well->i915_request = enable; 5487 power_well->i915_request = enable;
5481 5488
5482 if (enable) { 5489 if (enable)
5483 if (!power_well->count++) 5490 __intel_power_well_get(power_well);
5484 __intel_set_power_well(dev, true); 5491 else
5485 } else { 5492 __intel_power_well_put(power_well);
5486 WARN_ON(!power_well->count);
5487 if (!--power_well->count)
5488 __intel_set_power_well(dev, false);
5489 }
5490 5493
5491 out: 5494 out:
5492 spin_unlock_irq(&power_well->lock); 5495 spin_unlock_irq(&power_well->lock);