[PATCH 1/5] drm/amd/pp: Export notify_smu_enable_pwe to display

Alex Deucher alexdeucher at gmail.com
Tue Jul 3 16:27:50 UTC 2018


On Tue, Jul 3, 2018 at 5:46 AM, Rex Zhu <rex.zhu at amd.com> wrote:
> From: Rex Zhu <Rex.Zhu at amd.com>
>
> Display can notify smu to enable pwe after gpu suspend.
> It is used in case when display resumes from S3 and wants to start
> audio driver by enabling pwe
>
> Signed-off-by: Rex Zhu <Rex.Zhu at amd.com>

Acked-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/amd/include/kgd_pp_interface.h |  7 ++++---
>  drivers/gpu/drm/amd/powerplay/amd_powerplay.c  | 20 ++++++++++++++++++++
>  2 files changed, 24 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/include/kgd_pp_interface.h b/drivers/gpu/drm/amd/include/kgd_pp_interface.h
> index 99ee3ed..6a41b81 100644
> --- a/drivers/gpu/drm/amd/include/kgd_pp_interface.h
> +++ b/drivers/gpu/drm/amd/include/kgd_pp_interface.h
> @@ -241,6 +241,9 @@ struct amd_pm_funcs {
>         int (*set_clockgating_by_smu)(void *handle, uint32_t msg_id);
>         int (*set_power_limit)(void *handle, uint32_t n);
>         int (*get_power_limit)(void *handle, uint32_t *limit, bool default_limit);
> +       int (*get_power_profile_mode)(void *handle, char *buf);
> +       int (*set_power_profile_mode)(void *handle, long *input, uint32_t size);
> +       int (*odn_edit_dpm_table)(void *handle, uint32_t type, long *input, uint32_t size);
>  /* export to DC */
>         u32 (*get_sclk)(void *handle, bool low);
>         u32 (*get_mclk)(void *handle, bool low);
> @@ -265,9 +268,7 @@ struct amd_pm_funcs {
>                                 struct pp_display_clock_request *clock);
>         int (*get_display_mode_validation_clocks)(void *handle,
>                 struct amd_pp_simple_clock_info *clocks);
> -       int (*get_power_profile_mode)(void *handle, char *buf);
> -       int (*set_power_profile_mode)(void *handle, long *input, uint32_t size);
> -       int (*odn_edit_dpm_table)(void *handle, uint32_t type, long *input, uint32_t size);
> +       int (*notify_smu_enable_pwe)(void *handle);
>  };
>
>  #endif
> diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> index b72cc64..145e5c4 100644
> --- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> +++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> @@ -1201,6 +1201,25 @@ static int pp_set_powergating_by_smu(void *handle,
>         return ret;
>  }
>
> +static int pp_notify_smu_enable_pwe(void *handle)
> +{
> +       struct pp_hwmgr *hwmgr = handle;
> +
> +       if (!hwmgr || !hwmgr->pm_en)
> +               return -EINVAL;;
> +
> +       if (hwmgr->hwmgr_func->smus_notify_pwe == NULL) {
> +               pr_info("%s was not implemented.\n", __func__);
> +               return -EINVAL;;
> +       }
> +
> +       mutex_lock(&hwmgr->smu_lock);
> +       hwmgr->hwmgr_func->smus_notify_pwe(hwmgr);
> +       mutex_unlock(&hwmgr->smu_lock);
> +
> +       return 0;
> +}
> +
>  static const struct amd_pm_funcs pp_dpm_funcs = {
>         .load_firmware = pp_dpm_load_fw,
>         .wait_for_fw_loading_complete = pp_dpm_fw_loading_complete,
> @@ -1244,4 +1263,5 @@ static int pp_set_powergating_by_smu(void *handle,
>         .set_watermarks_for_clocks_ranges = pp_set_watermarks_for_clocks_ranges,
>         .display_clock_voltage_request = pp_display_clock_voltage_request,
>         .get_display_mode_validation_clocks = pp_get_display_mode_validation_clocks,
> +       .notify_smu_enable_pwe = pp_notify_smu_enable_pwe,
>  };
> --
> 1.9.1
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list