Looks good--thanks!

Acked-by: Luben Tuikov <luben.tui...@amd.com>

Regards,
Luben

On 2023-03-28 07:41, Tong Liu01 wrote:
> Add sysfs node pp_dpm_vclk1 for gc11.0.3
> 
> Signed-off-by: Tong Liu01 <tong.li...@amd.com>
> ---
>  .../gpu/drm/amd/include/kgd_pp_interface.h    |  1 +
>  drivers/gpu/drm/amd/pm/amdgpu_pm.c            | 22 +++++++++++++++++++
>  drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c     |  4 ++++
>  3 files changed, 27 insertions(+)
> 
> diff --git a/drivers/gpu/drm/amd/include/kgd_pp_interface.h 
> b/drivers/gpu/drm/amd/include/kgd_pp_interface.h
> index 86b6b0c9fb02..fe75497eeeab 100644
> --- a/drivers/gpu/drm/amd/include/kgd_pp_interface.h
> +++ b/drivers/gpu/drm/amd/include/kgd_pp_interface.h
> @@ -104,6 +104,7 @@ enum pp_clock_type {
>       PP_FCLK,
>       PP_DCEFCLK,
>       PP_VCLK,
> +     PP_VCLK1,
>       PP_DCLK,
>       OD_SCLK,
>       OD_MCLK,
> diff --git a/drivers/gpu/drm/amd/pm/amdgpu_pm.c 
> b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> index d75a67cfe523..1da6e9469450 100644
> --- a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> +++ b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> @@ -1180,6 +1180,21 @@ static ssize_t amdgpu_set_pp_dpm_vclk(struct device 
> *dev,
>       return amdgpu_set_pp_dpm_clock(dev, PP_VCLK, buf, count);
>  }
>  
> +static ssize_t amdgpu_get_pp_dpm_vclk1(struct device *dev,
> +             struct device_attribute *attr,
> +             char *buf)
> +{
> +     return amdgpu_get_pp_dpm_clock(dev, PP_VCLK1, buf);
> +}
> +
> +static ssize_t amdgpu_set_pp_dpm_vclk1(struct device *dev,
> +             struct device_attribute *attr,
> +             const char *buf,
> +             size_t count)
> +{
> +     return amdgpu_set_pp_dpm_clock(dev, PP_VCLK1, buf, count);
> +}
> +
>  static ssize_t amdgpu_get_pp_dpm_dclk(struct device *dev,
>               struct device_attribute *attr,
>               char *buf)
> @@ -2002,6 +2017,7 @@ static struct amdgpu_device_attr amdgpu_device_attrs[] 
> = {
>       AMDGPU_DEVICE_ATTR_RW(pp_dpm_socclk,                            
> ATTR_FLAG_BASIC|ATTR_FLAG_ONEVF),
>       AMDGPU_DEVICE_ATTR_RW(pp_dpm_fclk,                              
> ATTR_FLAG_BASIC|ATTR_FLAG_ONEVF),
>       AMDGPU_DEVICE_ATTR_RW(pp_dpm_vclk,                              
> ATTR_FLAG_BASIC|ATTR_FLAG_ONEVF),
> +     AMDGPU_DEVICE_ATTR_RW(pp_dpm_vclk1,                             
> ATTR_FLAG_BASIC|ATTR_FLAG_ONEVF),
>       AMDGPU_DEVICE_ATTR_RW(pp_dpm_dclk,                              
> ATTR_FLAG_BASIC|ATTR_FLAG_ONEVF),
>       AMDGPU_DEVICE_ATTR_RW(pp_dpm_dcefclk,                           
> ATTR_FLAG_BASIC|ATTR_FLAG_ONEVF),
>       AMDGPU_DEVICE_ATTR_RW(pp_dpm_pcie,                              
> ATTR_FLAG_BASIC|ATTR_FLAG_ONEVF),
> @@ -2091,6 +2107,12 @@ static int default_attr_update(struct amdgpu_device 
> *adev, struct amdgpu_device_
>                     gc_ver == IP_VERSION(11, 0, 2) ||
>                     gc_ver == IP_VERSION(11, 0, 3)))
>                       *states = ATTR_STATE_UNSUPPORTED;
> +     } else if (DEVICE_ATTR_IS(pp_dpm_vclk1)) {
> +             if (!((gc_ver == IP_VERSION(10, 3, 1) ||
> +                    gc_ver == IP_VERSION(10, 3, 0) ||
> +                        gc_ver == IP_VERSION(11, 0, 2) ||
> +                        gc_ver == IP_VERSION(11, 0, 3)) && 
> adev->vcn.num_vcn_inst >= 2))
> +                     *states = ATTR_STATE_UNSUPPORTED;
>       } else if (DEVICE_ATTR_IS(pp_dpm_dclk)) {
>               if (!(gc_ver == IP_VERSION(10, 3, 1) ||
>                     gc_ver == IP_VERSION(10, 3, 0) ||
> diff --git a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c 
> b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> index b5d64749990e..bffbef3f666d 100644
> --- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> +++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> @@ -2006,6 +2006,8 @@ static int smu_force_ppclk_levels(void *handle,
>               clk_type = SMU_DCEFCLK; break;
>       case PP_VCLK:
>               clk_type = SMU_VCLK; break;
> +     case PP_VCLK1:
> +             clk_type = SMU_VCLK1; break;
>       case PP_DCLK:
>               clk_type = SMU_DCLK; break;
>       case OD_SCLK:
> @@ -2393,6 +2395,8 @@ static enum smu_clk_type smu_convert_to_smuclk(enum 
> pp_clock_type type)
>               clk_type = SMU_DCEFCLK; break;
>       case PP_VCLK:
>               clk_type = SMU_VCLK; break;
> +     case PP_VCLK1:
> +             clk_type = SMU_VCLK1; break;
>       case PP_DCLK:
>               clk_type = SMU_DCLK; break;
>       case OD_SCLK:

Reply via email to