Message ID | 20200623155907.22961-12-sean@poorly.run (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915: Add support for HDCP 1.4 over MST | expand |
> -----Original Message----- > From: Sean Paul <sean@poorly.run> > Sent: Tuesday, June 23, 2020 9:29 PM > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org > Cc: Li, Juston <juston.li@intel.com>; C, Ramalingam > <ramalingam.c@intel.com>; ville.syrjala@linux.intel.com; > jani.nikula@linux.intel.com; joonas.lahtinen@linux.intel.com; Vivi, Rodrigo > <rodrigo.vivi@intel.com>; daniel.vetter@ffwll.ch; Sean Paul > <seanpaul@chromium.org> > Subject: [PATCH v7 11/17] drm/i915: Use ddi_update_pipe in intel_dp_mst > > From: Sean Paul <seanpaul@chromium.org> > > In order to act upon content_protection property changes, we'll need to > implement the .update_pipe() hook. We can re-use intel_ddi_update_pipe for > this > > Signed-off-by: Sean Paul <seanpaul@chromium.org> Reviewed-by: Ramalingam C <ramalingam.c@intel.com> > Link: https://patchwork.freedesktop.org/patch/msgid/20191203173638.94919- > 10-sean@poorly.run #v1 > Link: > https://patchwork.freedesktop.org/patch/msgid/20191212190230.188505-11- > sean@poorly.run #v2 > Link: > https://patchwork.freedesktop.org/patch/msgid/20200117193103.156821-11- > sean@poorly.run #v3 > Link: > https://patchwork.freedesktop.org/patch/msgid/20200218220242.107265-11- > sean@poorly.run #v4 > Link: > https://patchwork.freedesktop.org/patch/msgid/20200305201236.152307-11- > sean@poorly.run #v5 > Link: https://patchwork.freedesktop.org/patch/msgid/20200429195502.39919- > 11-sean@poorly.run #v6 > > Changes in v2: > -None > Changes in v3: > -None > Changes in v4: > -None > Changes in v5: > -None > Changes in v6: > -None > Changes in v7: > -None > --- > drivers/gpu/drm/i915/display/intel_ddi.c | 11 ++++++----- > drivers/gpu/drm/i915/display/intel_dp.h | 6 ++++++ > drivers/gpu/drm/i915/display/intel_dp_mst.c | 1 + > 3 files changed, 13 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c > b/drivers/gpu/drm/i915/display/intel_ddi.c > index 536299f902b9..29f1f552e8d8 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.c > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c > @@ -3907,13 +3907,14 @@ static void intel_ddi_update_pipe_dp(struct > intel_atomic_state *state, > intel_panel_update_backlight(state, encoder, crtc_state, conn_state); } > > -static void intel_ddi_update_pipe(struct intel_atomic_state *state, > - struct intel_encoder *encoder, > - const struct intel_crtc_state *crtc_state, > - const struct drm_connector_state > *conn_state) > +void intel_ddi_update_pipe(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > + const struct intel_crtc_state *crtc_state, > + const struct drm_connector_state *conn_state) > { > > - if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) > + if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI) && > + !intel_encoder_is_mst(encoder)) > intel_ddi_update_pipe_dp(state, encoder, crtc_state, > conn_state); > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.h > b/drivers/gpu/drm/i915/display/intel_dp.h > index 0a8950f744f6..6352c7e97e3b 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp.h > +++ b/drivers/gpu/drm/i915/display/intel_dp.h > @@ -17,6 +17,7 @@ struct drm_encoder; > struct drm_i915_private; > struct drm_modeset_acquire_ctx; > struct drm_dp_vsc_sdp; > +struct intel_atomic_state; > struct intel_connector; > struct intel_crtc_state; > struct intel_digital_port; > @@ -128,4 +129,9 @@ static inline unsigned int intel_dp_unused_lane_mask(int > lane_count) > > u32 intel_dp_mode_to_fec_clock(u32 mode_clock); > > +void intel_ddi_update_pipe(struct intel_atomic_state *state, > + struct intel_encoder *encoder, > + const struct intel_crtc_state *crtc_state, > + const struct drm_connector_state *conn_state); > + > #endif /* __INTEL_DP_H__ */ > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c > b/drivers/gpu/drm/i915/display/intel_dp_mst.c > index 9308b5920780..0675825dcc20 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c > @@ -836,6 +836,7 @@ intel_dp_create_fake_mst_encoder(struct > intel_digital_port *intel_dig_port, enum > intel_encoder->compute_config_late = > intel_dp_mst_compute_config_late; > intel_encoder->disable = intel_mst_disable_dp; > intel_encoder->post_disable = intel_mst_post_disable_dp; > + intel_encoder->update_pipe = intel_ddi_update_pipe; > intel_encoder->pre_pll_enable = intel_mst_pre_pll_enable_dp; > intel_encoder->pre_enable = intel_mst_pre_enable_dp; > intel_encoder->enable = intel_mst_enable_dp; > -- > Sean Paul, Software Engineer, Google / Chromium OS
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c index 536299f902b9..29f1f552e8d8 100644 --- a/drivers/gpu/drm/i915/display/intel_ddi.c +++ b/drivers/gpu/drm/i915/display/intel_ddi.c @@ -3907,13 +3907,14 @@ static void intel_ddi_update_pipe_dp(struct intel_atomic_state *state, intel_panel_update_backlight(state, encoder, crtc_state, conn_state); } -static void intel_ddi_update_pipe(struct intel_atomic_state *state, - struct intel_encoder *encoder, - const struct intel_crtc_state *crtc_state, - const struct drm_connector_state *conn_state) +void intel_ddi_update_pipe(struct intel_atomic_state *state, + struct intel_encoder *encoder, + const struct intel_crtc_state *crtc_state, + const struct drm_connector_state *conn_state) { - if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) + if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI) && + !intel_encoder_is_mst(encoder)) intel_ddi_update_pipe_dp(state, encoder, crtc_state, conn_state); diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h index 0a8950f744f6..6352c7e97e3b 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.h +++ b/drivers/gpu/drm/i915/display/intel_dp.h @@ -17,6 +17,7 @@ struct drm_encoder; struct drm_i915_private; struct drm_modeset_acquire_ctx; struct drm_dp_vsc_sdp; +struct intel_atomic_state; struct intel_connector; struct intel_crtc_state; struct intel_digital_port; @@ -128,4 +129,9 @@ static inline unsigned int intel_dp_unused_lane_mask(int lane_count) u32 intel_dp_mode_to_fec_clock(u32 mode_clock); +void intel_ddi_update_pipe(struct intel_atomic_state *state, + struct intel_encoder *encoder, + const struct intel_crtc_state *crtc_state, + const struct drm_connector_state *conn_state); + #endif /* __INTEL_DP_H__ */ diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c index 9308b5920780..0675825dcc20 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -836,6 +836,7 @@ intel_dp_create_fake_mst_encoder(struct intel_digital_port *intel_dig_port, enum intel_encoder->compute_config_late = intel_dp_mst_compute_config_late; intel_encoder->disable = intel_mst_disable_dp; intel_encoder->post_disable = intel_mst_post_disable_dp; + intel_encoder->update_pipe = intel_ddi_update_pipe; intel_encoder->pre_pll_enable = intel_mst_pre_pll_enable_dp; intel_encoder->pre_enable = intel_mst_pre_enable_dp; intel_encoder->enable = intel_mst_enable_dp;