提交 b409ca95 编写于 作者: I Imre Deak

drm/i915: Factor out intel_power_well_get/put

These helpers will be needed by the next patch, so factor them out.

No functional change.

v2:
- Move the refcount==0 WARN to the new put helper. (Ville)

CC: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: NImre Deak <imre.deak@intel.com>
Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
上级 e4c49e0f
...@@ -151,6 +151,23 @@ static void intel_power_well_disable(struct drm_i915_private *dev_priv, ...@@ -151,6 +151,23 @@ static void intel_power_well_disable(struct drm_i915_private *dev_priv,
power_well->ops->disable(dev_priv, power_well); power_well->ops->disable(dev_priv, power_well);
} }
static void intel_power_well_get(struct drm_i915_private *dev_priv,
struct i915_power_well *power_well)
{
if (!power_well->count++)
intel_power_well_enable(dev_priv, power_well);
}
static void intel_power_well_put(struct drm_i915_private *dev_priv,
struct i915_power_well *power_well)
{
WARN(!power_well->count, "Use count on power well %s is already zero",
power_well->name);
if (!--power_well->count)
intel_power_well_disable(dev_priv, power_well);
}
/* /*
* We should only use the power well if we explicitly asked the hardware to * We should only use the power well if we explicitly asked the hardware to
* enable it, so check if it's enabled and also check if we've requested it to * enable it, so check if it's enabled and also check if we've requested it to
...@@ -1518,10 +1535,8 @@ __intel_display_power_get_domain(struct drm_i915_private *dev_priv, ...@@ -1518,10 +1535,8 @@ __intel_display_power_get_domain(struct drm_i915_private *dev_priv,
struct i915_power_well *power_well; struct i915_power_well *power_well;
int i; int i;
for_each_power_well(i, power_well, BIT(domain), power_domains) { for_each_power_well(i, power_well, BIT(domain), power_domains)
if (!power_well->count++) intel_power_well_get(dev_priv, power_well);
intel_power_well_enable(dev_priv, power_well);
}
power_domains->domain_use_count[domain]++; power_domains->domain_use_count[domain]++;
} }
...@@ -1615,14 +1630,8 @@ void intel_display_power_put(struct drm_i915_private *dev_priv, ...@@ -1615,14 +1630,8 @@ void intel_display_power_put(struct drm_i915_private *dev_priv,
intel_display_power_domain_str(domain)); intel_display_power_domain_str(domain));
power_domains->domain_use_count[domain]--; power_domains->domain_use_count[domain]--;
for_each_power_well_rev(i, power_well, BIT(domain), power_domains) { for_each_power_well_rev(i, power_well, BIT(domain), power_domains)
WARN(!power_well->count, intel_power_well_put(dev_priv, power_well);
"Use count on power well %s is already zero",
power_well->name);
if (!--power_well->count)
intel_power_well_disable(dev_priv, power_well);
}
mutex_unlock(&power_domains->lock); mutex_unlock(&power_domains->lock);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册