Extract the code to update the sagv status based on the number of
QGV points into a separate function and use it.

v2: rebase

Signed-off-by: Vinod Govindapillai <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_bw.c | 38 ++++++++++++-------------
 1 file changed, 18 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bw.c 
b/drivers/gpu/drm/i915/display/intel_bw.c
index 6649220d81b4..0d89f64db848 100644
--- a/drivers/gpu/drm/i915/display/intel_bw.c
+++ b/drivers/gpu/drm/i915/display/intel_bw.c
@@ -521,6 +521,19 @@ static const struct intel_display_bw_params 
*get_display_bw_params(struct intel_
        return NULL;
 }
 
+static void update_sagv_status(struct intel_display *display, int qgv_points)
+{
+       /*
+        * In case if SAGV is disabled in BIOS, we always get 1
+        * SAGV point, but we can't send PCode commands to restrict it
+        * as it will fail and pointless anyway.
+        */
+       if (qgv_points == 1)
+               display->sagv.status = I915_SAGV_NOT_CONTROLLED;
+       else
+               display->sagv.status = I915_SAGV_ENABLED;
+}
+
 static int icl_get_bw_info(struct intel_display *display,
                           const struct dram_info *dram_info,
                           const struct intel_soc_bw_params *soc_bw_params,
@@ -579,15 +592,8 @@ static int icl_get_bw_info(struct intel_display *display,
                                    i, j, bi->num_planes, bi->deratedbw[j]);
                }
        }
-       /*
-        * In case if SAGV is disabled in BIOS, we always get 1
-        * SAGV point, but we can't send PCode commands to restrict it
-        * as it will fail and pointless anyway.
-        */
-       if (qi.num_qgv_points == 1)
-               display->sagv.status = I915_SAGV_NOT_CONTROLLED;
-       else
-               display->sagv.status = I915_SAGV_ENABLED;
+
+       update_sagv_status(display, display->bw.num_qgv_points);
 
        return 0;
 }
@@ -699,15 +705,7 @@ static int tgl_get_bw_info(struct intel_display *display,
                drm_dbg_kms(display->drm, "PSF GV %d: bw=%u\n", i, 
display->bw.psf_bw[i]);
        }
 
-       /*
-        * In case if SAGV is disabled in BIOS, we always get 1
-        * SAGV point, but we can't send PCode commands to restrict it
-        * as it will fail and pointless anyway.
-        */
-       if (qi.num_qgv_points == 1)
-               display->sagv.status = I915_SAGV_NOT_CONTROLLED;
-       else
-               display->sagv.status = I915_SAGV_ENABLED;
+       update_sagv_status(display, display->bw.num_qgv_points);
 
        return 0;
 }
@@ -729,7 +727,7 @@ static void dg2_get_bw_info(struct intel_display *display)
        for (i = 1; i < ARRAY_SIZE(display->bw.max); i++)
                display->bw.max[i] = display->bw.max[0];
 
-       display->sagv.status = I915_SAGV_NOT_CONTROLLED;
+       update_sagv_status(display, display->bw.num_qgv_points);
 }
 
 static int xe2_hpd_get_bw_info(struct intel_display *display,
@@ -777,7 +775,7 @@ static int xe2_hpd_get_bw_info(struct intel_display 
*display,
         * battery and plugged-in operation.
         */
        drm_WARN_ON(display->drm, qi.num_qgv_points != 2);
-       display->sagv.status = I915_SAGV_ENABLED;
+       update_sagv_status(display, display->bw.num_qgv_points);
 
        return 0;
 }
-- 
2.43.0

Reply via email to