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

drm/i915/icl: Ungate DSI clocks

Ungate the clocks on the selected port.

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/2a01b3158feda624f98581b780854fe3df8c328d.1543500286.git.jani.nikula@intel.com

authored by

Madhav Chauhan and committed by
Jani Nikula
1026bea0 32250c8e

+19
+19
drivers/gpu/drm/i915/icl_dsi.c
··· 553 553 mutex_unlock(&dev_priv->dpll_lock); 554 554 } 555 555 556 + static void gen11_dsi_ungate_clocks(struct intel_encoder *encoder) 557 + { 558 + struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 559 + struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); 560 + u32 tmp; 561 + enum port port; 562 + 563 + mutex_lock(&dev_priv->dpll_lock); 564 + tmp = I915_READ(DPCLKA_CFGCR0_ICL); 565 + for_each_dsi_port(port, intel_dsi->ports) { 566 + tmp &= ~DPCLKA_CFGCR0_DDI_CLK_OFF(port); 567 + } 568 + 569 + I915_WRITE(DPCLKA_CFGCR0_ICL, tmp); 570 + mutex_unlock(&dev_priv->dpll_lock); 571 + } 572 + 556 573 static void 557 574 gen11_dsi_configure_transcoder(struct intel_encoder *encoder, 558 575 const struct intel_crtc_state *pipe_config) ··· 1078 1061 u32 tmp; 1079 1062 enum port port; 1080 1063 1064 + gen11_dsi_ungate_clocks(encoder); 1081 1065 for_each_dsi_port(port, intel_dsi->ports) { 1082 1066 tmp = I915_READ(DDI_BUF_CTL(port)); 1083 1067 tmp &= ~DDI_BUF_CTL_ENABLE; ··· 1090 1072 DRM_ERROR("DDI port:%c buffer not idle\n", 1091 1073 port_name(port)); 1092 1074 } 1075 + gen11_dsi_ungate_clocks(encoder); 1093 1076 } 1094 1077 1095 1078 static void gen11_dsi_disable_io_power(struct intel_encoder *encoder)