drm/i915/dsi: Read back pclk set by GOP and use that as pclk (v3)
authorHans de Goede <hdegoede@redhat.com>
Wed, 5 Jun 2019 18:17:35 +0000 (20:17 +0200)
committerHans de Goede <hdegoede@redhat.com>
Sat, 8 Jun 2019 13:35:14 +0000 (15:35 +0200)
commit6be306bee7dd80905329769292e21b5e2d166b8f
treeac16cb8c070ac565f6e751f9bbf2baff23efc60f
parent2def5ae7d7fb8578b53b0f8595d8ec90b8eb1aeb
drm/i915/dsi: Read back pclk set by GOP and use that as pclk (v3)

The GOP sometimes initializes the pclk at a (slightly) different frequency
then the pclk which we've calculated.

This commit makes the DSI code read-back the pclk set by the GOP and
if that is within a reasonable margin of the calculated pclk, uses
that instead.

This fixes the first modeset being a full modeset instead of a
fast modeset on systems where the GOP pclk is different.

Changes in v2:
-Use intel_encoder_current_mode() to get the pclk setup by the GOP

Changes in v3:
-Back to the readback approach, skipping the dsi_pll.ctrl / .dev checks
 in intel_pipe_config_compare() when adjust is set leads to:
 [drm:pipe_config_err [i915]] *ERROR* mismatch in dsi_pll.ctrl (...)
 [drm:pipe_config_err [i915]] *ERROR* mismatch in dsi_pll.div (...)
-Do the readback and pclk overriding from vlv_dsi_init(), rather then from
 intel_dsi_vbt_init() as the vbt code should not be touching the hw

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190605181735.7020-3-hdegoede@redhat.com
drivers/gpu/drm/i915/vlv_dsi.c