Abstract ALPM DPCD initialization into its own function.

v2:
- Improve commit description. [Suraj, Jouni]
- Handle error value of intel_alpm_init_dpcd() with an early exit
  in intel_edp_init_dpcd(). [Jouni]
v3:
- Return int and propagate the original error instead of
  flattening it to bool. [Jani]

Cc: Jouni Högander <[email protected]>
Cc: Jani Nikula <[email protected]>
Reviewed-by: Jouni Högander <[email protected]>
Signed-off-by: Animesh Manna <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 14 ++++++++++++++
 drivers/gpu/drm/i915/display/intel_alpm.h |  1 +
 drivers/gpu/drm/i915/display/intel_dp.c   |  5 +----
 3 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c 
b/drivers/gpu/drm/i915/display/intel_alpm.c
index 8542bd9c9666..cb1d68fef198 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -43,6 +43,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));
 }
 
+int intel_alpm_init_dpcd(struct intel_dp *intel_dp)
+{
+       u8 dpcd;
+       int ret;
+
+       ret = drm_dp_dpcd_read_byte(&intel_dp->aux, DP_RECEIVER_ALPM_CAP, 
&dpcd);
+       if (ret < 0)
+               return ret;
+
+       intel_dp->alpm_dpcd = dpcd;
+
+       return 0;
+}
+
 void intel_alpm_init(struct intel_dp *intel_dp)
 {
        mutex_init(&intel_dp->alpm.lock);
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.h 
b/drivers/gpu/drm/i915/display/intel_alpm.h
index f8f605d94f96..1cb226bc342a 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.h
+++ b/drivers/gpu/drm/i915/display/intel_alpm.h
@@ -15,6 +15,7 @@ struct intel_connector;
 struct intel_atomic_state;
 struct intel_crtc;
 
+int intel_alpm_init_dpcd(struct intel_dp *intel_dp);
 void intel_alpm_init(struct intel_dp *intel_dp);
 bool intel_alpm_compute_params(struct intel_dp *intel_dp,
                               struct intel_crtc_state *crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index bf5e87a72108..816337efeb91 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5057,10 +5057,7 @@ intel_edp_init_dpcd(struct intel_dp *intel_dp, struct 
intel_connector *connector
         */
        intel_dp_init_source_oui(intel_dp);
 
-       /* Read the ALPM DPCD caps */
-       ret = drm_dp_dpcd_read_byte(&intel_dp->aux, DP_RECEIVER_ALPM_CAP,
-                                   &intel_dp->alpm_dpcd);
-       if (ret < 0)
+       if (intel_alpm_init_dpcd(intel_dp))
                return false;
 
        /*
-- 
2.43.0

Reply via email to