[Intel-gfx] [PATCH v3 1/6] drm/i915/display/icl: Save Master transcoder in slave's crtc_state for Transcoder Port Sync
Lucas De Marchi
lucas.de.marchi at gmail.com
Mon Sep 30 18:37:41 UTC 2019
On Sun, Sep 22, 2019 at 10:08:02AM -0700, Manasi Navare wrote:
>In case of tiled displays when the two tiles are sent across two CRTCs
>over two separate DP SST connectors, we need a mechanism to synchronize
>the two CRTCs and their corresponding transcoders.
>So use the master-slave mode where there is one master corresponding
>to last horizontal and vertical tile that needs to be genlocked with
>all other slave tiles.
>This patch identifies saves the master transcoder in all the slave
>CRTC states. This is needed to select the master CRTC/transcoder
>while configuring transcoder port sync for the corresponding slaves.
>
>v4:
>* Rebase
>v3:
>* Use master_tramscoder instead of master_crtc for valid
>HW state readouts (Ville)
>v2:
>* Move this to intel_mode_set_pipe_config(Jani N, Ville)
>* Use slave_bitmask to save associated slaves in master crtc state (Ville)
>
>Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
>Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
>Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
>Cc: Matt Roper <matthew.d.roper at intel.com>
>Signed-off-by: Manasi Navare <manasi.d.navare at intel.com>
>Reviewed-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
>---
> drivers/gpu/drm/i915/display/intel_display.c | 123 ++++++++++++++++++
> drivers/gpu/drm/i915/display/intel_display.h | 3 +
> .../drm/i915/display/intel_display_types.h | 6 +
> 3 files changed, 132 insertions(+)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
>index c05ba6af6226..4ff375d5852d 100644
>--- a/drivers/gpu/drm/i915/display/intel_display.c
>+++ b/drivers/gpu/drm/i915/display/intel_display.c
>@@ -521,6 +521,24 @@ needs_modeset(const struct intel_crtc_state *state)
> return drm_atomic_crtc_needs_modeset(&state->base);
> }
>
>+bool
>+is_trans_port_sync_mode(struct drm_i915_private *dev_priv,
>+ const struct intel_crtc_state *state)
on TGL we now also need a master transcoder for DP-MST. I'm wondering if
we couldn't reuse the same mechanism so we would dissociate a little bit
the port_sync_mode from saving or searching for a master transcoder
in crtc_state.
>@@ -12369,6 +12478,15 @@ intel_modeset_pipe_config(struct intel_crtc_state *pipe_config)
> drm_mode_set_crtcinfo(&pipe_config->base.adjusted_mode,
> CRTC_STEREO_DOUBLE);
>
>+ /* Set the crtc_state defaults for trans_port_sync */
>+ pipe_config->master_transcoder = INVALID_TRANSCODER;
could we get away with the INVALID_TRANSCODER by simply making
pipe_config->master_transcoder = pipe_config->cpu_transcoder?
then we can always make sure it's assigned to something valid
and use it in the cases it makes sense (port sync mode and dp-mst).
Lucas De Marchi
More information about the Intel-gfx
mailing list