diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_wakeref.c')
| -rw-r--r-- | drivers/gpu/drm/i915/intel_wakeref.c | 22 | 
1 files changed, 12 insertions, 10 deletions
diff --git a/drivers/gpu/drm/i915/intel_wakeref.c b/drivers/gpu/drm/i915/intel_wakeref.c index dfd87d082218..718f2f1b6174 100644 --- a/drivers/gpu/drm/i915/intel_wakeref.c +++ b/drivers/gpu/drm/i915/intel_wakeref.c @@ -8,17 +8,18 @@  #include "intel_runtime_pm.h"  #include "intel_wakeref.h" +#include "i915_drv.h"  static void rpm_get(struct intel_wakeref *wf)  { -	wf->wakeref = intel_runtime_pm_get(wf->rpm); +	wf->wakeref = intel_runtime_pm_get(&wf->i915->runtime_pm);  }  static void rpm_put(struct intel_wakeref *wf)  {  	intel_wakeref_t wakeref = fetch_and_zero(&wf->wakeref); -	intel_runtime_pm_put(wf->rpm, wakeref); +	intel_runtime_pm_put(&wf->i915->runtime_pm, wakeref);  	INTEL_WAKEREF_BUG_ON(!wakeref);  } @@ -74,7 +75,7 @@ void __intel_wakeref_put_last(struct intel_wakeref *wf, unsigned long flags)  	/* Assume we are not in process context and so cannot sleep. */  	if (flags & INTEL_WAKEREF_PUT_ASYNC || !mutex_trylock(&wf->mutex)) { -		mod_delayed_work(system_wq, &wf->work, +		mod_delayed_work(wf->i915->unordered_wq, &wf->work,  				 FIELD_GET(INTEL_WAKEREF_PUT_DELAY, flags));  		return;  	} @@ -94,11 +95,11 @@ static void __intel_wakeref_put_work(struct work_struct *wrk)  }  void __intel_wakeref_init(struct intel_wakeref *wf, -			  struct intel_runtime_pm *rpm, +			  struct drm_i915_private *i915,  			  const struct intel_wakeref_ops *ops,  			  struct intel_wakeref_lockclass *key)  { -	wf->rpm = rpm; +	wf->i915 = i915;  	wf->ops = ops;  	__mutex_init(&wf->mutex, "wakeref.mutex", &key->mutex); @@ -137,17 +138,17 @@ static void wakeref_auto_timeout(struct timer_list *t)  	wakeref = fetch_and_zero(&wf->wakeref);  	spin_unlock_irqrestore(&wf->lock, flags); -	intel_runtime_pm_put(wf->rpm, wakeref); +	intel_runtime_pm_put(&wf->i915->runtime_pm, wakeref);  }  void intel_wakeref_auto_init(struct intel_wakeref_auto *wf, -			     struct intel_runtime_pm *rpm) +			     struct drm_i915_private *i915)  {  	spin_lock_init(&wf->lock);  	timer_setup(&wf->timer, wakeref_auto_timeout, 0);  	refcount_set(&wf->count, 0);  	wf->wakeref = 0; -	wf->rpm = rpm; +	wf->i915 = i915;  }  void intel_wakeref_auto(struct intel_wakeref_auto *wf, unsigned long timeout) @@ -161,13 +162,14 @@ void intel_wakeref_auto(struct intel_wakeref_auto *wf, unsigned long timeout)  	}  	/* Our mission is that we only extend an already active wakeref */ -	assert_rpm_wakelock_held(wf->rpm); +	assert_rpm_wakelock_held(&wf->i915->runtime_pm);  	if (!refcount_inc_not_zero(&wf->count)) {  		spin_lock_irqsave(&wf->lock, flags);  		if (!refcount_inc_not_zero(&wf->count)) {  			INTEL_WAKEREF_BUG_ON(wf->wakeref); -			wf->wakeref = intel_runtime_pm_get_if_in_use(wf->rpm); +			wf->wakeref = +				intel_runtime_pm_get_if_in_use(&wf->i915->runtime_pm);  			refcount_set(&wf->count, 1);  		}  		spin_unlock_irqrestore(&wf->lock, flags);  |