[Intel-gfx] [PATCH] drm/i915: use crtc_htotal in watermark calculations to match fastboot v2
Ville Syrjälä
ville.syrjala at linux.intel.com
Wed Nov 27 20:12:52 CET 2013
On Wed, Nov 27, 2013 at 11:10:26AM -0800, Jesse Barnes wrote:
> This value is more correct, and matches what we read out in the fastboot
> code. Without this, the watermark code will panic after the first mode
> setting activity after a fastboot.
>
> v2: fix up HSW ->clock usage too (Ville)
>
> Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> drivers/gpu/drm/i915/intel_pm.c | 15 ++++++++-------
> 1 file changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 69cad60..9180562 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -1182,7 +1182,7 @@ static bool g4x_compute_wm0(struct drm_device *dev,
>
> adjusted_mode = &to_intel_crtc(crtc)->config.adjusted_mode;
> clock = adjusted_mode->crtc_clock;
> - htotal = adjusted_mode->htotal;
> + htotal = adjusted_mode->crtc_htotal;
> hdisplay = to_intel_crtc(crtc)->config.pipe_src_w;
> pixel_size = crtc->fb->bits_per_pixel / 8;
>
> @@ -1269,7 +1269,7 @@ static bool g4x_compute_srwm(struct drm_device *dev,
> crtc = intel_get_crtc_for_plane(dev, plane);
> adjusted_mode = &to_intel_crtc(crtc)->config.adjusted_mode;
> clock = adjusted_mode->crtc_clock;
> - htotal = adjusted_mode->htotal;
> + htotal = adjusted_mode->crtc_htotal;
> hdisplay = to_intel_crtc(crtc)->config.pipe_src_w;
> pixel_size = crtc->fb->bits_per_pixel / 8;
>
> @@ -1500,7 +1500,7 @@ static void i965_update_wm(struct drm_crtc *unused_crtc)
> const struct drm_display_mode *adjusted_mode =
> &to_intel_crtc(crtc)->config.adjusted_mode;
> int clock = adjusted_mode->crtc_clock;
> - int htotal = adjusted_mode->htotal;
> + int htotal = adjusted_mode->crtc_htotal;
> int hdisplay = to_intel_crtc(crtc)->config.pipe_src_w;
> int pixel_size = crtc->fb->bits_per_pixel / 8;
> unsigned long line_time_us;
> @@ -1626,7 +1626,7 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc)
> const struct drm_display_mode *adjusted_mode =
> &to_intel_crtc(enabled)->config.adjusted_mode;
> int clock = adjusted_mode->crtc_clock;
> - int htotal = adjusted_mode->htotal;
> + int htotal = adjusted_mode->crtc_htotal;
> int hdisplay = to_intel_crtc(enabled)->config.pipe_src_w;
> int pixel_size = enabled->fb->bits_per_pixel / 8;
> unsigned long line_time_us;
> @@ -1778,7 +1778,7 @@ static bool ironlake_compute_srwm(struct drm_device *dev, int level, int plane,
> crtc = intel_get_crtc_for_plane(dev, plane);
> adjusted_mode = &to_intel_crtc(crtc)->config.adjusted_mode;
> clock = adjusted_mode->crtc_clock;
> - htotal = adjusted_mode->htotal;
> + htotal = adjusted_mode->crtc_htotal;
> hdisplay = to_intel_crtc(crtc)->config.pipe_src_w;
> pixel_size = crtc->fb->bits_per_pixel / 8;
>
> @@ -2471,8 +2471,9 @@ hsw_compute_linetime_wm(struct drm_device *dev, struct drm_crtc *crtc)
> /* The WM are computed with base on how long it takes to fill a single
> * row at the given clock rate, multiplied by 8.
> * */
> - linetime = DIV_ROUND_CLOSEST(mode->htotal * 1000 * 8, mode->clock);
> - ips_linetime = DIV_ROUND_CLOSEST(mode->htotal * 1000 * 8,
> + linetime = DIV_ROUND_CLOSEST(mode->crtc_htotal * 1000 * 8,
> + mode->crtc_clock);
> + ips_linetime = DIV_ROUND_CLOSEST(mode->crtc_htotal * 1000 * 8,
> intel_ddi_get_cdclk_freq(dev_priv));
>
> return PIPE_WM_LINETIME_IPS_LINETIME(ips_linetime) |
> --
> 1.8.4.2
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Ville Syrjälä
Intel OTC
More information about the Intel-gfx
mailing list