diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 58 | 
1 files changed, 29 insertions, 29 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 01341670738f..3282b0f4b134 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -3669,10 +3669,6 @@ static void intel_update_pipe_config(struct intel_crtc *crtc,  	/* drm_atomic_helper_update_legacy_modeset_state might not be called. */  	crtc->base.mode = crtc->base.state->mode; -	DRM_DEBUG_KMS("Updating pipe size %ix%i -> %ix%i\n", -		      old_crtc_state->pipe_src_w, old_crtc_state->pipe_src_h, -		      pipe_config->pipe_src_w, pipe_config->pipe_src_h); -  	/*  	 * Update pipe size and adjust fitter if needed: the reason for this is  	 * that in compute_mode_changes we check the native mode (not the pfit @@ -4796,23 +4792,17 @@ static void skylake_pfit_enable(struct intel_crtc *crtc)  	struct intel_crtc_scaler_state *scaler_state =  		&crtc->config->scaler_state; -	DRM_DEBUG_KMS("for crtc_state = %p\n", crtc->config); -  	if (crtc->config->pch_pfit.enabled) {  		int id; -		if (WARN_ON(crtc->config->scaler_state.scaler_id < 0)) { -			DRM_ERROR("Requesting pfit without getting a scaler first\n"); +		if (WARN_ON(crtc->config->scaler_state.scaler_id < 0))  			return; -		}  		id = scaler_state->scaler_id;  		I915_WRITE(SKL_PS_CTRL(pipe, id), PS_SCALER_EN |  			PS_FILTER_MEDIUM | scaler_state->scalers[id].mode);  		I915_WRITE(SKL_PS_WIN_POS(pipe, id), crtc->config->pch_pfit.pos);  		I915_WRITE(SKL_PS_WIN_SZ(pipe, id), crtc->config->pch_pfit.size); - -		DRM_DEBUG_KMS("for crtc_state = %p scaler_id = %d\n", crtc->config, id);  	}  } @@ -14379,6 +14369,24 @@ static void skl_update_crtcs(struct drm_atomic_state *state,  	} while (progress);  } +static void intel_atomic_helper_free_state(struct drm_i915_private *dev_priv) +{ +	struct intel_atomic_state *state, *next; +	struct llist_node *freed; + +	freed = llist_del_all(&dev_priv->atomic_helper.free_list); +	llist_for_each_entry_safe(state, next, freed, freed) +		drm_atomic_state_put(&state->base); +} + +static void intel_atomic_helper_free_state_worker(struct work_struct *work) +{ +	struct drm_i915_private *dev_priv = +		container_of(work, typeof(*dev_priv), atomic_helper.free_work); + +	intel_atomic_helper_free_state(dev_priv); +} +  static void intel_atomic_commit_tail(struct drm_atomic_state *state)  {  	struct drm_device *dev = state->dev; @@ -14545,6 +14553,8 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state)  	 * can happen also when the device is completely off.  	 */  	intel_uncore_arm_unclaimed_mmio_detection(dev_priv); + +	intel_atomic_helper_free_state(dev_priv);  }  static void intel_atomic_commit_work(struct work_struct *work) @@ -14946,17 +14956,19 @@ static void intel_begin_crtc_commit(struct drm_crtc *crtc,  		to_intel_atomic_state(old_crtc_state->state);  	bool modeset = needs_modeset(crtc->state); +	if (!modeset && +	    (intel_cstate->base.color_mgmt_changed || +	     intel_cstate->update_pipe)) { +		intel_color_set_csc(crtc->state); +		intel_color_load_luts(crtc->state); +	} +  	/* Perform vblank evasion around commit operation */  	intel_pipe_update_start(intel_crtc);  	if (modeset)  		goto out; -	if (crtc->state->color_mgmt_changed || to_intel_crtc_state(crtc->state)->update_pipe) { -		intel_color_set_csc(crtc->state); -		intel_color_load_luts(crtc->state); -	} -  	if (intel_cstate->update_pipe)  		intel_update_pipe_config(intel_crtc, old_intel_cstate);  	else if (INTEL_GEN(dev_priv) >= 9) @@ -16599,18 +16611,6 @@ fail:  	drm_modeset_acquire_fini(&ctx);  } -static void intel_atomic_helper_free_state(struct work_struct *work) -{ -	struct drm_i915_private *dev_priv = -		container_of(work, typeof(*dev_priv), atomic_helper.free_work); -	struct intel_atomic_state *state, *next; -	struct llist_node *freed; - -	freed = llist_del_all(&dev_priv->atomic_helper.free_list); -	llist_for_each_entry_safe(state, next, freed, freed) -		drm_atomic_state_put(&state->base); -} -  int intel_modeset_init(struct drm_device *dev)  {  	struct drm_i915_private *dev_priv = to_i915(dev); @@ -16631,7 +16631,7 @@ int intel_modeset_init(struct drm_device *dev)  	dev->mode_config.funcs = &intel_mode_funcs;  	INIT_WORK(&dev_priv->atomic_helper.free_work, -		  intel_atomic_helper_free_state); +		  intel_atomic_helper_free_state_worker);  	intel_init_quirks(dev);  | 
