[Intel-gfx] [PATCH] drm/i915: Avoid PPS HW/SW state mismatch due to rounding
Ville Syrjälä
ville.syrjala at linux.intel.com
Wed Nov 29 18:04:31 UTC 2017
On Wed, Nov 29, 2017 at 07:51:37PM +0200, Imre Deak wrote:
> We store a SW state of the t11_t12 timing in 100usec units but have to
> program it in 100msec as required by HW. The rounding used during
> programming means there will be a mismatch between the SW and HW states
> of this value triggering a "PPS state mismatch" error. Avoid this by
> storing the already rounded-up value in the SW state.
>
> Note that we still calculate panel_power_cycle_delay with the finer
> 100usec granularity to avoid any needless waits using that version of
> the delay.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103903
> Cc: joks <joks at linux.pl>
> Signed-off-by: Imre Deak <imre.deak at intel.com>
> ---
> drivers/gpu/drm/i915/intel_dp.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 957735c0b4c6..27d2529a3416 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -5355,6 +5355,12 @@ intel_dp_init_panel_power_sequencer(struct intel_dp *intel_dp)
> */
> final->t8 = 1;
> final->t9 = 1;
> +
> + /*
> + * HW has only a 100msec granularity for t11_t12 so round it up
> + * accordingly.
> + */
> + final->t11_t12 = roundup(final->t11_t12, 100 * 10);
Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
As a micro-optimization I guess we might want to move the division here
as well. But maybe that would cause more confusion since all the other
timings are in 100usec units. Dunno.
> }
>
> static void
> --
> 2.13.2
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Ville Syrjälä
Intel OTC
More information about the Intel-gfx
mailing list