Skip to content

Commit

Permalink
drm/i915/dsi: Add check for periodic command mode
Browse files Browse the repository at this point in the history
If the GOP has programmed periodic command mode,
we need to disable that which would need a
deconfigure and configure sequence.

v2: Fix sparse error, pass only intel_dsi (Jani)
v3: Use intel_de_read

Signed-off-by: Vandita Kulkarni <vandita.kulkarni@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200312053841.2794-5-vandita.kulkarni@intel.com
  • Loading branch information
Vandita Kulkarni authored and Jani Nikula committed Mar 24, 2020
1 parent b683e6d commit cebb28a
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions drivers/gpu/drm/i915/display/icl_dsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -1423,6 +1423,22 @@ static void gen11_dsi_get_timings(struct intel_encoder *encoder,
adjusted_mode->crtc_vblank_end = adjusted_mode->crtc_vtotal;
}

static bool gen11_dsi_is_periodic_cmd_mode(struct intel_dsi *intel_dsi)
{
struct drm_device *dev = intel_dsi->base.base.dev;
struct drm_i915_private *dev_priv = to_i915(dev);
enum transcoder dsi_trans;
u32 val;

if (intel_dsi->ports == BIT(PORT_B))
dsi_trans = TRANSCODER_DSI_1;
else
dsi_trans = TRANSCODER_DSI_0;

val = intel_de_read(dev_priv, DSI_TRANS_FUNC_CONF(dsi_trans));
return (val & DSI_PERIODIC_FRAME_UPDATE_ENABLE);
}

static void gen11_dsi_get_config(struct intel_encoder *encoder,
struct intel_crtc_state *pipe_config)
{
Expand All @@ -1443,6 +1459,10 @@ static void gen11_dsi_get_config(struct intel_encoder *encoder,
gen11_dsi_get_timings(encoder, pipe_config);
pipe_config->output_types |= BIT(INTEL_OUTPUT_DSI);
pipe_config->pipe_bpp = bdw_get_pipemisc_bpp(crtc);

if (gen11_dsi_is_periodic_cmd_mode(intel_dsi))
pipe_config->hw.adjusted_mode.private_flags |=
I915_MODE_FLAG_DSI_PERIODIC_CMD_MODE;
}

static int gen11_dsi_dsc_compute_config(struct intel_encoder *encoder,
Expand Down Expand Up @@ -1526,6 +1546,10 @@ static int gen11_dsi_compute_config(struct intel_encoder *encoder,

pipe_config->port_clock = afe_clk(encoder, pipe_config) / 5;

/* We would not operate in periodic command mode */
pipe_config->hw.adjusted_mode.private_flags &=
~I915_MODE_FLAG_DSI_PERIODIC_CMD_MODE;

return 0;
}

Expand Down

0 comments on commit cebb28a

Please sign in to comment.