diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 18 | 
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index f17275519484..5c7828c52d12 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -10245,13 +10245,10 @@ struct drm_display_mode *intel_crtc_mode_get(struct drm_device *dev,  {  	struct drm_i915_private *dev_priv = to_i915(dev);  	struct intel_crtc *intel_crtc = to_intel_crtc(crtc); -	enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder; +	enum transcoder cpu_transcoder;  	struct drm_display_mode *mode;  	struct intel_crtc_state *pipe_config; -	int htot = I915_READ(HTOTAL(cpu_transcoder)); -	int hsync = I915_READ(HSYNC(cpu_transcoder)); -	int vtot = I915_READ(VTOTAL(cpu_transcoder)); -	int vsync = I915_READ(VSYNC(cpu_transcoder)); +	u32 htot, hsync, vtot, vsync;  	enum pipe pipe = intel_crtc->pipe;  	mode = kzalloc(sizeof(*mode), GFP_KERNEL); @@ -10279,6 +10276,13 @@ struct drm_display_mode *intel_crtc_mode_get(struct drm_device *dev,  	i9xx_crtc_clock_get(intel_crtc, pipe_config);  	mode->clock = pipe_config->port_clock / pipe_config->pixel_multiplier; + +	cpu_transcoder = pipe_config->cpu_transcoder; +	htot = I915_READ(HTOTAL(cpu_transcoder)); +	hsync = I915_READ(HSYNC(cpu_transcoder)); +	vtot = I915_READ(VTOTAL(cpu_transcoder)); +	vsync = I915_READ(VSYNC(cpu_transcoder)); +  	mode->hdisplay = (htot & 0xffff) + 1;  	mode->htotal = ((htot & 0xffff0000) >> 16) + 1;  	mode->hsync_start = (hsync & 0xffff) + 1; @@ -12359,7 +12363,6 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state)  	struct drm_crtc_state *old_crtc_state, *new_crtc_state;  	struct drm_crtc *crtc;  	struct intel_crtc_state *intel_cstate; -	bool hw_check = intel_state->modeset;  	u64 put_domains[I915_MAX_PIPES] = {};  	unsigned crtc_vblank_mask = 0;  	int i; @@ -12376,7 +12379,6 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state)  		if (needs_modeset(new_crtc_state) ||  		    to_intel_crtc_state(new_crtc_state)->update_pipe) { -			hw_check = true;  			put_domains[to_intel_crtc(crtc)->pipe] =  				modeset_get_crtc_power_domains(crtc, @@ -14030,7 +14032,7 @@ static int intel_framebuffer_init(struct intel_framebuffer *intel_fb,  		if (mode_cmd->handles[i] != mode_cmd->handles[0]) {  			DRM_DEBUG_KMS("bad plane %d handle\n", i); -			return -EINVAL; +			goto err;  		}  		stride_alignment = intel_fb_stride_alignment(fb, i);  |