> Subject: [PATCH v3 02/10] drm/i915/alpm: alpm_init() for DP2.1 > > Initialize alpm for DP2.1 and separate out alpm mutex-init from alpm-init.
Keep acronyms capitalized wherever possible > > v1: Initial version. > v2: Separate out mutex-init. [Jani] > v3: Refactor further to avoid DISPLAY_VER check in multiple places. [Jani] You don’t need to mention v1: Initial version start from v2 With these fixed Reviewed-by: Suraj Kandpal <[email protected]> > > Cc: Jouni Högander <[email protected]> > Signed-off-by: Animesh Manna <[email protected]> > --- > drivers/gpu/drm/i915/display/intel_alpm.c | 16 ++++++++++++++-- > drivers/gpu/drm/i915/display/intel_alpm.h | 3 ++- > drivers/gpu/drm/i915/display/intel_dp.c | 8 +++++++- > 3 files changed, 23 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c > b/drivers/gpu/drm/i915/display/intel_alpm.c > index 6372f533f65b..14acd6717e59 100644 > --- a/drivers/gpu/drm/i915/display/intel_alpm.c > +++ b/drivers/gpu/drm/i915/display/intel_alpm.c > @@ -41,7 +41,20 @@ bool intel_alpm_is_alpm_aux_less(struct intel_dp > *intel_dp, > (crtc_state->has_lobf && > intel_alpm_aux_less_wake_supported(intel_dp)); > } > > -void intel_alpm_init(struct intel_dp *intel_dp) > +bool intel_alpm_source_supported(struct intel_connector *connector) { > + struct intel_display *display = to_intel_display(connector); > + > + if (!((connector->base.connector_type == > DRM_MODE_CONNECTOR_DisplayPort && > + DISPLAY_VER(display) >= 35) || > + (connector->base.connector_type == > DRM_MODE_CONNECTOR_eDP && > + DISPLAY_VER(display) >= 20))) > + return false; > + > + return true; > +} > + > +void intel_alpm_get_sink_capability(struct intel_dp *intel_dp) > { > u8 dpcd; > > @@ -49,7 +62,6 @@ void intel_alpm_init(struct intel_dp *intel_dp) > return; > > intel_dp->alpm_dpcd = dpcd; > - mutex_init(&intel_dp->alpm.lock); > } > > static int get_silence_period_symbols(const struct intel_crtc_state > *crtc_state) diff --git a/drivers/gpu/drm/i915/display/intel_alpm.h > b/drivers/gpu/drm/i915/display/intel_alpm.h > index 53599b464dea..bcc354a46a1d 100644 > --- a/drivers/gpu/drm/i915/display/intel_alpm.h > +++ b/drivers/gpu/drm/i915/display/intel_alpm.h > @@ -15,7 +15,8 @@ struct intel_connector; struct intel_atomic_state; > struct intel_crtc; > > -void intel_alpm_init(struct intel_dp *intel_dp); > +bool intel_alpm_source_supported(struct intel_connector *connector); > +void intel_alpm_get_sink_capability(struct intel_dp *intel_dp); > bool intel_alpm_compute_params(struct intel_dp *intel_dp, > struct intel_crtc_state *crtc_state); void > intel_alpm_lobf_compute_config(struct intel_dp *intel_dp, diff --git > a/drivers/gpu/drm/i915/display/intel_dp.c > b/drivers/gpu/drm/i915/display/intel_dp.c > index 0ec82fcbcf48..81dd5bf7e3c5 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp.c > +++ b/drivers/gpu/drm/i915/display/intel_dp.c > @@ -6074,6 +6074,9 @@ intel_dp_detect(struct drm_connector > *_connector, > if (ret == 1) > connector->base.epoch_counter++; > > + if (intel_alpm_source_supported(connector)) > + intel_alpm_get_sink_capability(intel_dp); > + > if (!intel_dp_is_edp(intel_dp)) > intel_psr_init_dpcd(intel_dp); > > @@ -6716,7 +6719,7 @@ static bool intel_edp_init_connector(struct > intel_dp *intel_dp, > */ > intel_hpd_enable_detection(encoder); > > - intel_alpm_init(intel_dp); > + intel_alpm_get_sink_capability(intel_dp); > > /* Cache DPCD and EDID for edp. */ > has_dpcd = intel_edp_init_dpcd(intel_dp, connector); @@ -6932,6 > +6935,9 @@ intel_dp_init_connector(struct intel_digital_port *dig_port, > > intel_psr_init(intel_dp); > > + if (intel_alpm_source_supported(connector)) > + mutex_init(&intel_dp->alpm.lock); > + > return true; > > fail: > -- > 2.29.0
