> -----Original Message----- > From: amd-gfx [mailto:amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx] On Behalf > Of Wang, Kevin(Yang) > Sent: Monday, April 29, 2019 3:05 PM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Huang, Ray <Ray.Huang@xxxxxxx>; Wang, Kevin(Yang) > <Kevin1.Wang@xxxxxxx> > Subject: [PATCH] drm/amd/powerplay: add helper function to get smu > firmware & if version > > add this helper function to get smc version. > > Change-Id: I6b06470cefd10fafcf06df8a5e8cb03bf79622c0 > Signed-off-by: Kevin Wang <kevin1.wang@xxxxxxx> Reviewed-by: Huang Rui <ray.huang@xxxxxxx> > --- > drivers/gpu/drm/amd/powerplay/amdgpu_smu.c | 30 > +++++++++++++++++++ > .../gpu/drm/amd/powerplay/inc/amdgpu_smu.h | 1 + > drivers/gpu/drm/amd/powerplay/smu_v11_0.c | 23 +++++++++----- > 3 files changed, 46 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c > b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c > index 25d2ba2b9018..c021c05727e8 100644 > --- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c > +++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c > @@ -29,6 +29,36 @@ > #include "smu_v11_0.h" > #include "atom.h" > > +int smu_get_smc_version(struct smu_context *smu, uint32_t *if_version, > +uint32_t *smu_version) { > + int ret = 0; > + > + if (!if_version && !smu_version) > + return -EINVAL; > + > + if (if_version) { > + ret = smu_send_smc_msg(smu, > SMU_MSG_GetDriverIfVersion); > + if (ret) > + return ret; > + > + ret = smu_read_smc_arg(smu, if_version); > + if (ret) > + return ret; > + } > + > + if (smu_version) { > + ret = smu_send_smc_msg(smu, > SMU_MSG_GetSmuVersion); > + if (ret) > + return ret; > + > + ret = smu_read_smc_arg(smu, smu_version); > + if (ret) > + return ret; > + } > + > + return ret; > +} > + > int smu_set_soft_freq_range(struct smu_context *smu, enum > smu_clk_type clk_type, > uint32_t min, uint32_t max) > { > diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h > b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h > index e958d4cb5baf..435727c8ee21 100644 > --- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h > +++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h > @@ -931,4 +931,5 @@ int smu_set_soft_freq_range(struct smu_context > *smu, enum smu_clk_type clk_type, > uint32_t min, uint32_t max); > int smu_set_hard_freq_range(struct smu_context *smu, enum > smu_clk_type clk_type, > uint32_t min, uint32_t max); > +int smu_get_smc_version(struct smu_context *smu, uint32_t *if_version, > +uint32_t *smu_version); > #endif > diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c > b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c > index ab89c79b4358..c2fe00f51b2b 100644 > --- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c > +++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c > @@ -249,20 +249,27 @@ static int smu_v11_0_check_fw_status(struct > smu_context *smu) > > static int smu_v11_0_check_fw_version(struct smu_context *smu) { > - uint32_t smu_version = 0xff; > + uint32_t if_version = 0xff, smu_version = 0xff; > + uint16_t smu_major; > + uint8_t smu_minor, smu_debug; > int ret = 0; > > - ret = smu_send_smc_msg(smu, SMU_MSG_GetDriverIfVersion); > + ret = smu_get_smc_version(smu, &if_version, &smu_version); > if (ret) > - goto err; > + return ret; > > - ret = smu_read_smc_arg(smu, &smu_version); > - if (ret) > - goto err; > + smu_major = (smu_version >> 16) & 0xffff; > + smu_minor = (smu_version >> 8) & 0xff; > + smu_debug = (smu_version >> 0) & 0xff; > + > + pr_info("SMU Driver IF Version = 0x%08x, SMU FW Version = 0x%08x > (%d.%d.%d)\n", > + if_version, smu_version, smu_major, smu_minor, > smu_debug); > > - if (smu_version != smu->smc_if_version) > + if (if_version != smu->smc_if_version) { > + pr_err("SMU driver if version not matched\n"); > ret = -EINVAL; > -err: > + } > + > return ret; > } > > -- > 2.21.0 > > _______________________________________________ > amd-gfx mailing list > amd-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx