drm/i915/display: extract code to prepare qgv points mask
authorVinod Govindapillai <vinod.govindapillai@intel.com>
Fri, 5 Apr 2024 11:35:30 +0000 (14:35 +0300)
committerVinod Govindapillai <vinod.govindapillai@intel.com>
Fri, 19 Apr 2024 13:11:31 +0000 (16:11 +0300)
Extract the code to prepare the QGV points mask as per the
format expected by the pcode as this could be utlized from
multiple points.

Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240405113533.338553-4-vinod.govindapillai@intel.com
drivers/gpu/drm/i915/display/intel_bw.c

index 963c9e57a5d5ad648051194a589dcb4a133fc204..ea294b9ed733d18d3d0eb1fd5ba98f68436390dd 100644 (file)
@@ -851,6 +851,14 @@ static unsigned int icl_max_bw_qgv_point_mask(struct drm_i915_private *i915,
        return max_bw_point;
 }
 
+static u16 icl_prepare_qgv_points_mask(struct drm_i915_private *i915,
+                                      unsigned int qgv_points,
+                                      unsigned int psf_points)
+{
+       return ~(ICL_PCODE_REQ_QGV_PT(qgv_points) |
+                ADLS_PCODE_REQ_PSF_PT(psf_points)) & icl_qgv_points_mask(i915);
+}
+
 static int mtl_find_qgv_points(struct drm_i915_private *i915,
                               unsigned int data_rate,
                               unsigned int num_active_planes,
@@ -994,11 +1002,9 @@ static int icl_find_qgv_points(struct drm_i915_private *i915,
         * We store the ones which need to be masked as that is what PCode
         * actually accepts as a parameter.
         */
-       new_bw_state->qgv_points_mask =
-               ~(ICL_PCODE_REQ_QGV_PT(qgv_points) |
-                 ADLS_PCODE_REQ_PSF_PT(psf_points)) &
-               icl_qgv_points_mask(i915);
-
+       new_bw_state->qgv_points_mask = icl_prepare_qgv_points_mask(i915,
+                                                                   qgv_points,
+                                                                   psf_points);
        /*
         * If the actual mask had changed we need to make sure that
         * the commits are serialized(in case this is a nomodeset, nonblocking)