[PATCH] drm/amd/powerplay: add helper function to get smu firmware & if version
Huang, Ray
Ray.Huang at amd.com
Mon Apr 29 07:06:10 UTC 2019
> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
> Of Wang, Kevin(Yang)
> Sent: Monday, April 29, 2019 3:05 PM
> To: amd-gfx at lists.freedesktop.org
> Cc: Huang, Ray <Ray.Huang at amd.com>; Wang, Kevin(Yang)
> <Kevin1.Wang at amd.com>
> 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 at amd.com>
Reviewed-by: Huang Rui <ray.huang at amd.com>
> ---
> 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
More information about the amd-gfx
mailing list