On Fri, May 12, 2023 at 02:17:45AM +0300, Vinod Govindapillai wrote:
> In MTL onwards, pcode locks the GV point based on the peak BW
> of a QGV point. So store the peak BW of all the QGV points.
> 
> v2: use DIV_ROUND_CLOSEST() for the peakBW calculation
> 
> Bspec: 64636
> 
> Signed-off-by: Vinod Govindapillai <[email protected]>

Reviewed-by: Stanislav Lisovskiy <[email protected]>

> ---
>  drivers/gpu/drm/i915/display/intel_bw.c           | 8 ++++++--
>  drivers/gpu/drm/i915/display/intel_display_core.h | 2 ++
>  2 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_bw.c 
> b/drivers/gpu/drm/i915/display/intel_bw.c
> index c8075a37c3ab..db117638d23b 100644
> --- a/drivers/gpu/drm/i915/display/intel_bw.c
> +++ b/drivers/gpu/drm/i915/display/intel_bw.c
> @@ -534,10 +534,14 @@ static int tgl_get_bw_info(struct drm_i915_private 
> *dev_priv, const struct intel
>  
>                       bi->deratedbw[j] = min(maxdebw,
>                                              bw * (100 - sa->derating) / 100);
> +                     bi->peakbw[j] = DIV_ROUND_CLOSEST(sp->dclk *
> +                                                       num_channels *
> +                                                       qi.channel_width, 8);
>  
>                       drm_dbg_kms(&dev_priv->drm,
> -                                 "BW%d / QGV %d: num_planes=%d 
> deratedbw=%u\n",
> -                                 i, j, bi->num_planes, bi->deratedbw[j]);
> +                                 "BW%d / QGV %d: num_planes=%d deratedbw=%u 
> peakbw: %u\n",
> +                                 i, j, bi->num_planes, bi->deratedbw[j],
> +                                 bi->peakbw[j]);
>               }
>  
>               for (j = 0; j < qi.num_psf_points; j++) {
> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h 
> b/drivers/gpu/drm/i915/display/intel_display_core.h
> index e36f88a39b86..9f66d734edf6 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> @@ -314,6 +314,8 @@ struct intel_display {
>                       unsigned int deratedbw[I915_NUM_QGV_POINTS];
>                       /* for each PSF GV point */
>                       unsigned int psf_bw[I915_NUM_PSF_GV_POINTS];
> +                     /* Peak BW for each QGV point */
> +                     unsigned int peakbw[I915_NUM_QGV_POINTS];
>                       u8 num_qgv_points;
>                       u8 num_psf_gv_points;
>                       u8 num_planes;
> -- 
> 2.34.1
> 

Reply via email to