Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/i915/icl: Calculate DPLL params for DSI

This patch calculates various DPLL dividers and
parameters for DSI encoder and adjust AFE clock
for DSI. For DSI, 8x clock is AFE clock.

v2: Extend haswell_crtc_compute_clock() for Gen11 DSI

v3: Rebase

v4: use port clock instead of bitrate.

v5: Reabse and remove divide by 5

v6 by Jani:
- Fix indent (Madhav)
- Fix dpll state calc for EDP and DP MST

Co-developed-by: Vandita Kulkarni <vandita.kulkarni@intel.com>
Signed-off-by: Madhav Chauhan <madhav.chauhan@intel.com>
Signed-off-by: Vandita Kulkarni <vandita.kulkarni@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/525d41d0d893dcdc8874d2ce70afa226227ea3f4.1543500285.git.jani.nikula@intel.com

authored by

Madhav Chauhan and committed by
Jani Nikula
70a057b7 1dd07e56

+5 -2
+3 -1
drivers/gpu/drm/i915/intel_display.c
··· 9333 9333 static int haswell_crtc_compute_clock(struct intel_crtc *crtc, 9334 9334 struct intel_crtc_state *crtc_state) 9335 9335 { 9336 + struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); 9336 9337 struct intel_atomic_state *state = 9337 9338 to_intel_atomic_state(crtc_state->base.state); 9338 9339 9339 - if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DSI)) { 9340 + if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DSI) || 9341 + IS_ICELAKE(dev_priv)) { 9340 9342 struct intel_encoder *encoder = 9341 9343 intel_get_crtc_new_encoder(state, crtc_state); 9342 9344
+2 -1
drivers/gpu/drm/i915/intel_dpll_mgr.c
··· 2523 2523 2524 2524 if (intel_port_is_tc(dev_priv, encoder->port)) 2525 2525 ret = icl_calc_tbt_pll(dev_priv, clock, &pll_params); 2526 - else if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) 2526 + else if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI) || 2527 + intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DSI)) 2527 2528 ret = cnl_ddi_calculate_wrpll(clock, dev_priv, &pll_params); 2528 2529 else 2529 2530 ret = icl_calc_dp_combo_pll(dev_priv, clock, &pll_params);