[AMD Official Use Only - General] Reviewed-by: Evan Quan <evan.quan@xxxxxxx> > -----Original Message----- > From: Guo, Shikai <Shikai.Guo@xxxxxxx> > Sent: Thursday, July 21, 2022 2:20 PM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Quan, Evan <Evan.Quan@xxxxxxx>; Deucher, Alexander > <Alexander.Deucher@xxxxxxx>; Liang, Prike <Prike.Liang@xxxxxxx>; Guo, > Shikai <Shikai.Guo@xxxxxxx>; Guo, Shikai <Shikai.Guo@xxxxxxx> > Subject: [PATCH] drm/admdgpu: Add get_gfx_off_status interface > > From: Shikai Guo <Shikai.Guo@xxxxxxx> > > add get_gfx_off_status interface to yellow_carp_ppt_funcs structure. > > Signed-off-by: Shikai Guo <shikai.guo@xxxxxxx> > --- > .../drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c | 30 > +++++++++++++++++++ > 1 file changed, 30 insertions(+) > > diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c > b/drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c > index 70cbc46341a3..cac48121d72b 100644 > --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c > +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c > @@ -31,6 +31,7 @@ > #include "smu_v13_0_1_ppsmc.h" > #include "smu_v13_0_1_pmfw.h" > #include "smu_cmn.h" > +#include "asic_reg/smuio/smuio_13_0_2_offset.h" > > /* > * DO NOT use these for err/warn/info/debug messages. > @@ -42,6 +43,9 @@ > #undef pr_info > #undef pr_debug > > +#define SMUIO_GFX_MISC_CNTL__PWR_GFXOFF_STATUS_MASK > 0x00000006L > +#define SMUIO_GFX_MISC_CNTL__PWR_GFXOFF_STATUS__SHIFT > 0x1 > + > #define FEATURE_MASK(feature) (1ULL << feature) > #define SMC_DPM_FEATURE ( \ > FEATURE_MASK(FEATURE_CCLK_DPM_BIT) | \ > @@ -587,6 +591,31 @@ static ssize_t yellow_carp_get_gpu_metrics(struct > smu_context *smu, > return sizeof(struct gpu_metrics_v2_1); > } > > +/** > + * yellow_carp_get_gfxoff_status - get gfxoff status > + * > + * @smu: amdgpu_device pointer > + * > + * This function will be used to get gfxoff status > + * > + * Returns 0=GFXOFF(default). > + * Returns 1=Transition out of GFX State. > + * Returns 2=Not in GFXOFF. > + * Returns 3=Transition into GFXOFF. > + */ > +static uint32_t yellow_carp_get_gfxoff_status(struct smu_context *smu) > +{ > + uint32_t reg; > + uint32_t gfxOff_Status = 0; > + struct amdgpu_device *adev = smu->adev; > + > + reg = RREG32_SOC15(SMUIO, 0, regSMUIO_GFX_MISC_CNTL); > + gfxOff_Status = (reg & > SMUIO_GFX_MISC_CNTL__PWR_GFXOFF_STATUS_MASK) > + >> > SMUIO_GFX_MISC_CNTL__PWR_GFXOFF_STATUS__SHIFT; > + > + return gfxOff_Status; > +} > + > static int yellow_carp_set_default_dpm_tables(struct smu_context *smu) > { > struct smu_table_context *smu_table = &smu->smu_table; > @@ -1186,6 +1215,7 @@ static const struct pptable_funcs > yellow_carp_ppt_funcs = { > .get_pp_feature_mask = smu_cmn_get_pp_feature_mask, > .set_driver_table_location = smu_v13_0_set_driver_table_location, > .gfx_off_control = smu_v13_0_gfx_off_control, > + .get_gfx_off_status = yellow_carp_get_gfxoff_status, > .post_init = yellow_carp_post_smu_init, > .mode2_reset = yellow_carp_mode2_reset, > .get_dpm_ultimate_freq = yellow_carp_get_dpm_ultimate_freq, > -- > 2.25.1