Re: [PATCH 1/2] drm/amd/powerplay: correct Vega20 dpm level related settings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Acked-by: Alex Deucher <alexander.deucher@xxxxxxx>

From: Quan, Evan <Evan.Quan@xxxxxxx>
Sent: Thursday, August 22, 2019 6:21 AM
To: Quan, Evan <Evan.Quan@xxxxxxx>; amd-gfx@xxxxxxxxxxxxxxxxxxxxx <amd-gfx@xxxxxxxxxxxxxxxxxxxxx>
Cc: Deucher, Alexander <Alexander.Deucher@xxxxxxx>
Subject: RE: [PATCH 1/2] drm/amd/powerplay: correct Vega20 dpm level related settings
 
Ping..

> -----Original Message-----
> From: Evan Quan <evan.quan@xxxxxxx>
> Sent: Wednesday, August 21, 2019 4:42 PM
> To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx
> Cc: Quan, Evan <Evan.Quan@xxxxxxx>
> Subject: [PATCH 1/2] drm/amd/powerplay: correct Vega20 dpm level related
> settings
>
> Correct the settings for auto mode and skip the unnecessary settings for
> dcefclk and fclk.
>
> Change-Id: I7e6ca75ce86b4d5cd44920a9fbc71b6f36ea3c49
> Signed-off-by: Evan Quan <evan.quan@xxxxxxx>
> ---
>  .../drm/amd/powerplay/hwmgr/vega20_hwmgr.c    | 60
> +++++++++++++++++--
>  1 file changed, 54 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
> b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
> index 0516c294b377..cc52d5c8ccf9 100644
> --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
> +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
> @@ -2349,12 +2349,16 @@ static int vega20_force_dpm_highest(struct
> pp_hwmgr *hwmgr)
>                data->dpm_table.soc_table.dpm_state.soft_max_level =
>                data->dpm_table.soc_table.dpm_levels[soft_level].value;
>
> -     ret = vega20_upload_dpm_min_level(hwmgr, 0xFFFFFFFF);
> +     ret = vega20_upload_dpm_min_level(hwmgr,
> FEATURE_DPM_GFXCLK_MASK |
> +                                              FEATURE_DPM_UCLK_MASK
> |
> +
> FEATURE_DPM_SOCCLK_MASK);
>        PP_ASSERT_WITH_CODE(!ret,
>                        "Failed to upload boot level to highest!",
>                        return ret);
>
> -     ret = vega20_upload_dpm_max_level(hwmgr, 0xFFFFFFFF);
> +     ret = vega20_upload_dpm_max_level(hwmgr,
> FEATURE_DPM_GFXCLK_MASK |
> +                                              FEATURE_DPM_UCLK_MASK
> |
> +
> FEATURE_DPM_SOCCLK_MASK);
>        PP_ASSERT_WITH_CODE(!ret,
>                        "Failed to upload dpm max level to highest!",
>                        return ret);
> @@ -2387,12 +2391,16 @@ static int vega20_force_dpm_lowest(struct
> pp_hwmgr *hwmgr)
>                data->dpm_table.soc_table.dpm_state.soft_max_level =
>                data->dpm_table.soc_table.dpm_levels[soft_level].value;
>
> -     ret = vega20_upload_dpm_min_level(hwmgr, 0xFFFFFFFF);
> +     ret = vega20_upload_dpm_min_level(hwmgr,
> FEATURE_DPM_GFXCLK_MASK |
> +                                              FEATURE_DPM_UCLK_MASK
> |
> +
> FEATURE_DPM_SOCCLK_MASK);
>        PP_ASSERT_WITH_CODE(!ret,
>                        "Failed to upload boot level to highest!",
>                        return ret);
>
> -     ret = vega20_upload_dpm_max_level(hwmgr, 0xFFFFFFFF);
> +     ret = vega20_upload_dpm_max_level(hwmgr,
> FEATURE_DPM_GFXCLK_MASK |
> +                                              FEATURE_DPM_UCLK_MASK
> |
> +
> FEATURE_DPM_SOCCLK_MASK);
>        PP_ASSERT_WITH_CODE(!ret,
>                        "Failed to upload dpm max level to highest!",
>                        return ret);
> @@ -2403,14 +2411,54 @@ static int vega20_force_dpm_lowest(struct
> pp_hwmgr *hwmgr)
>
>  static int vega20_unforce_dpm_levels(struct pp_hwmgr *hwmgr)  {
> +     struct vega20_hwmgr *data =""> > +                     (struct vega20_hwmgr *)(hwmgr->backend);
> +     uint32_t soft_min_level, soft_max_level;
>        int ret = 0;
>
> -     ret = vega20_upload_dpm_min_level(hwmgr, 0xFFFFFFFF);
> +     /* gfxclk soft min/max settings */
> +     soft_min_level =
> +             vega20_find_lowest_dpm_level(&(data-
> >dpm_table.gfx_table));
> +     soft_max_level =
> +             vega20_find_highest_dpm_level(&(data-
> >dpm_table.gfx_table));
> +
> +     data->dpm_table.gfx_table.dpm_state.soft_min_level =
> +             data-
> >dpm_table.gfx_table.dpm_levels[soft_min_level].value;
> +     data->dpm_table.gfx_table.dpm_state.soft_max_level =
> +             data-
> >dpm_table.gfx_table.dpm_levels[soft_max_level].value;
> +
> +     /* uclk soft min/max settings */
> +     soft_min_level =
> +             vega20_find_lowest_dpm_level(&(data-
> >dpm_table.mem_table));
> +     soft_max_level =
> +             vega20_find_highest_dpm_level(&(data-
> >dpm_table.mem_table));
> +
> +     data->dpm_table.mem_table.dpm_state.soft_min_level =
> +             data-
> >dpm_table.mem_table.dpm_levels[soft_min_level].value;
> +     data->dpm_table.mem_table.dpm_state.soft_max_level =
> +             data-
> >dpm_table.mem_table.dpm_levels[soft_max_level].value;
> +
> +     /* socclk soft min/max settings */
> +     soft_min_level =
> +             vega20_find_lowest_dpm_level(&(data-
> >dpm_table.soc_table));
> +     soft_max_level =
> +             vega20_find_highest_dpm_level(&(data-
> >dpm_table.soc_table));
> +
> +     data->dpm_table.soc_table.dpm_state.soft_min_level =
> +             data-
> >dpm_table.soc_table.dpm_levels[soft_min_level].value;
> +     data->dpm_table.soc_table.dpm_state.soft_max_level =
> +             data-
> >dpm_table.soc_table.dpm_levels[soft_max_level].value;
> +
> +     ret = vega20_upload_dpm_min_level(hwmgr,
> FEATURE_DPM_GFXCLK_MASK |
> +                                              FEATURE_DPM_UCLK_MASK
> |
> +
> FEATURE_DPM_SOCCLK_MASK);
>        PP_ASSERT_WITH_CODE(!ret,
>                        "Failed to upload DPM Bootup Levels!",
>                        return ret);
>
> -     ret = vega20_upload_dpm_max_level(hwmgr, 0xFFFFFFFF);
> +     ret = vega20_upload_dpm_max_level(hwmgr,
> FEATURE_DPM_GFXCLK_MASK |
> +                                              FEATURE_DPM_UCLK_MASK
> |
> +
> FEATURE_DPM_SOCCLK_MASK);
>        PP_ASSERT_WITH_CODE(!ret,
>                        "Failed to upload DPM Max Levels!",
>                        return ret);
> --
> 2.23.0

_______________________________________________
amd-gfx mailing list
amd-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux