On 11/2/2018 5:17 PM, Jani Nikula wrote:
From: Madhav Chauhan <madhav.chau...@intel.com>

This patch implements compute config for Gen11 DSI encoder which is
required at the time of modeset.

v2 by Jani:
  - drop the enable nop hook
  - fixed_mode is always true
  - HAS_GMCH_DISPLAY() is always false

v3 by Jani:
  - set encoder->compute_config dropped during rebase

Ok. :)

Regards,
Madhav


Signed-off-by: Madhav Chauhan <madhav.chau...@intel.com>
Signed-off-by: Jani Nikula <jani.nik...@intel.com>
---
  drivers/gpu/drm/i915/icl_dsi.c | 32 ++++++++++++++++++++++++++++++++
  1 file changed, 32 insertions(+)

diff --git a/drivers/gpu/drm/i915/icl_dsi.c b/drivers/gpu/drm/i915/icl_dsi.c
index 1881825432cb..8cdf736c2bbd 100644
--- a/drivers/gpu/drm/i915/icl_dsi.c
+++ b/drivers/gpu/drm/i915/icl_dsi.c
@@ -1068,6 +1068,37 @@ static void gen11_dsi_get_config(struct intel_encoder 
*encoder,
        pipe_config->port_clock = pixel_clk;
  }
+static bool gen11_dsi_compute_config(struct intel_encoder *encoder,
+                                    struct intel_crtc_state *pipe_config,
+                                    struct drm_connector_state *conn_state)
+{
+       struct intel_dsi *intel_dsi = container_of(encoder, struct intel_dsi,
+                                                  base);
+       struct intel_connector *intel_connector = intel_dsi->attached_connector;
+       struct intel_crtc *crtc = to_intel_crtc(pipe_config->base.crtc);
+       const struct drm_display_mode *fixed_mode =
+                                       intel_connector->panel.fixed_mode;
+       struct drm_display_mode *adjusted_mode =
+                                       &pipe_config->base.adjusted_mode;
+
+       intel_fixed_panel_mode(fixed_mode, adjusted_mode);
+       intel_pch_panel_fitting(crtc, pipe_config, conn_state->scaling_mode);
+
+       adjusted_mode->flags = 0;
+
+       /* Dual link goes to trancoder DSI'0' */
+       if (intel_dsi->ports == BIT(PORT_B))
+               pipe_config->cpu_transcoder = TRANSCODER_DSI_1;
+       else
+               pipe_config->cpu_transcoder = TRANSCODER_DSI_0;
+
+       pipe_config->clock_set = true;
+
+       //TODO: Add check if DSI PLL calculation is done
+
+       return true;
+}
+
  static u64 gen11_dsi_get_power_domains(struct intel_encoder *encoder,
                                       struct intel_crtc_state *crtc_state)
  {
@@ -1235,6 +1266,7 @@ void icl_dsi_init(struct drm_i915_private *dev_priv)
        encoder->disable = gen11_dsi_disable;
        encoder->port = port;
        encoder->get_config = gen11_dsi_get_config;
+       encoder->compute_config = gen11_dsi_compute_config;
        encoder->get_hw_state = gen11_dsi_get_hw_state;
        encoder->type = INTEL_OUTPUT_DSI;
        encoder->cloneable = 0;

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to