drm/i915: Print a debug message when exceeding dotclock limit on pre-gen4
Currently there's no trace in dmesg when the gen2/3 dotclock checks reject the modeset. Add some to avoid further head scratching. While at it refactor the code a bit to look nicer. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1446241178-432-1-git-send-email-ville.syrjala@linux.intel.com Reviewed-by: Ander Conselvan de Oliveira <conselvan2@gmail.com>
This commit is contained in:
		
							parent
							
								
									44eb0cb962
								
							
						
					
					
						commit
						39acb4aa1a
					
				| @ -6552,6 +6552,15 @@ static void hsw_compute_ips_config(struct intel_crtc *crtc, | ||||
| 		pipe_config_supports_ips(dev_priv, pipe_config); | ||||
| } | ||||
| 
 | ||||
| static bool intel_crtc_supports_double_wide(const struct intel_crtc *crtc) | ||||
| { | ||||
| 	const struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); | ||||
| 
 | ||||
| 	/* GDG double wide on either pipe, otherwise pipe A only */ | ||||
| 	return INTEL_INFO(dev_priv)->gen < 4 && | ||||
| 		(crtc->pipe == PIPE_A || IS_I915G(dev_priv)); | ||||
| } | ||||
| 
 | ||||
| static int intel_crtc_compute_config(struct intel_crtc *crtc, | ||||
| 				     struct intel_crtc_state *pipe_config) | ||||
| { | ||||
| @ -6561,23 +6570,24 @@ static int intel_crtc_compute_config(struct intel_crtc *crtc, | ||||
| 
 | ||||
| 	/* FIXME should check pixel clock limits on all platforms */ | ||||
| 	if (INTEL_INFO(dev)->gen < 4) { | ||||
| 		int clock_limit = dev_priv->max_cdclk_freq; | ||||
| 		int clock_limit = dev_priv->max_cdclk_freq * 9 / 10; | ||||
| 
 | ||||
| 		/*
 | ||||
| 		 * Enable pixel doubling when the dot clock | ||||
| 		 * Enable double wide mode when the dot clock | ||||
| 		 * is > 90% of the (display) core speed. | ||||
| 		 * | ||||
| 		 * GDG double wide on either pipe, | ||||
| 		 * otherwise pipe A only. | ||||
| 		 */ | ||||
| 		if ((crtc->pipe == PIPE_A || IS_I915G(dev)) && | ||||
| 		    adjusted_mode->crtc_clock > clock_limit * 9 / 10) { | ||||
| 		if (intel_crtc_supports_double_wide(crtc) && | ||||
| 		    adjusted_mode->crtc_clock > clock_limit) { | ||||
| 			clock_limit *= 2; | ||||
| 			pipe_config->double_wide = true; | ||||
| 		} | ||||
| 
 | ||||
| 		if (adjusted_mode->crtc_clock > clock_limit * 9 / 10) | ||||
| 		if (adjusted_mode->crtc_clock > clock_limit) { | ||||
| 			DRM_DEBUG_KMS("requested pixel clock (%d kHz) too high (max: %d kHz, double wide: %s)\n", | ||||
| 				      adjusted_mode->crtc_clock, clock_limit, | ||||
| 				      yesno(pipe_config->double_wide)); | ||||
| 			return -EINVAL; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	/*
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user