[PATCH 2/3] drm/i915/dsi: Don't set/read the DSI C clock divider on GLK
Jani Nikula
jani.nikula at linux.intel.com
Fri Apr 4 13:21:03 UTC 2025
On Fri, 14 Mar 2025, Ville Syrjala <ville.syrjala at linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> GLK doesn't use the DSI C clock at all, no need to program
> the divider for it. Bspec even says: "Do not program this field".
>
> However looks like some firmware versions program this and
> some do not. In order to avoid bogus fastset mismatches
> we should also filter it out during readout.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/vlv_dsi_pll.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/vlv_dsi_pll.c b/drivers/gpu/drm/i915/display/vlv_dsi_pll.c
> index 2ed47e7d1051..0c88924bc2cd 100644
> --- a/drivers/gpu/drm/i915/display/vlv_dsi_pll.c
> +++ b/drivers/gpu/drm/i915/display/vlv_dsi_pll.c
> @@ -356,6 +356,8 @@ u32 bxt_dsi_get_pclk(struct intel_encoder *encoder,
> u32 pclk;
>
> config->dsi_pll.ctrl = intel_de_read(dev_priv, BXT_DSI_PLL_CTL);
> + if (IS_GEMINILAKE(dev_priv))
> + config->dsi_pll.ctrl &= ~BXT_DSIC_16X_BY2;
~BXT_DSIC_16X_MASK ?
Other than that,
Reviewed-by: Jani Nikula <jani.nikula at intel.com>
Also needs a rebase on struct intel_display changes...
>
> pclk = bxt_dsi_pclk(encoder, config);
>
> @@ -514,7 +516,9 @@ int bxt_dsi_pll_compute(struct intel_encoder *encoder,
> * Spec says both have to be programmed, even if one is not getting
> * used. Configure MIPI_CLOCK_CTL dividers in modeset
> */
> - config->dsi_pll.ctrl = dsi_ratio | BXT_DSIA_16X_BY2 | BXT_DSIC_16X_BY2;
> + config->dsi_pll.ctrl = dsi_ratio | BXT_DSIA_16X_BY2;
> + if (!IS_GEMINILAKE(dev_priv))
> + config->dsi_pll.ctrl |= BXT_DSIC_16X_BY2;
>
> /* As per recommendation from hardware team,
> * Prog PVD ratio =1 if dsi ratio <= 50
--
Jani Nikula, Intel
More information about the Intel-gfx
mailing list