Commit e11c4fd5 authored by Huang Rui's avatar Huang Rui Committed by Alex Deucher

drm/amd/powerplay: add fw load checking interface

This patch adds fw load checking interface for smu.
Signed-off-by: default avatarHuang Rui <ray.huang@amd.com>
Acked-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 3d2f5200
...@@ -102,6 +102,12 @@ static int smu_hw_init(void *handle) ...@@ -102,6 +102,12 @@ static int smu_hw_init(void *handle)
return ret; return ret;
} }
ret = smu_check_fw_status(smu);
if (ret) {
pr_err("SMC firmware status is not correct\n");
return ret;
}
mutex_lock(&smu->mutex); mutex_lock(&smu->mutex);
/* TODO */ /* TODO */
......
...@@ -36,12 +36,15 @@ struct smu_funcs ...@@ -36,12 +36,15 @@ struct smu_funcs
{ {
int (*init_microcode)(struct smu_context *smu); int (*init_microcode)(struct smu_context *smu);
int (*load_microcode)(struct smu_context *smu); int (*load_microcode)(struct smu_context *smu);
int (*check_fw_status)(struct smu_context *smu);
}; };
#define smu_init_microcode(smu) \ #define smu_init_microcode(smu) \
((smu)->funcs->init_microcode ? (smu)->funcs->init_microcode((smu)) : 0) ((smu)->funcs->init_microcode ? (smu)->funcs->init_microcode((smu)) : 0)
#define smu_load_microcode(smu) \ #define smu_load_microcode(smu) \
((smu)->funcs->load_microcode ? (smu)->funcs->load_microcode((smu)) : 0) ((smu)->funcs->load_microcode ? (smu)->funcs->load_microcode((smu)) : 0)
#define smu_check_fw_status(smu) \
((smu)->funcs->check_fw_status ? (smu)->funcs->check_fw_status((smu)) : 0)
extern const struct amd_ip_funcs smu_ip_funcs; extern const struct amd_ip_funcs smu_ip_funcs;
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <linux/firmware.h> #include <linux/firmware.h>
#include "amdgpu.h" #include "amdgpu.h"
#include "amdgpu_smu.h" #include "amdgpu_smu.h"
#include "smu_v11_0.h"
static int smu_v11_0_init_microcode(struct smu_context *smu) static int smu_v11_0_init_microcode(struct smu_context *smu)
{ {
...@@ -37,9 +38,15 @@ static int smu_v11_0_load_microcode(struct smu_context *smu) ...@@ -37,9 +38,15 @@ static int smu_v11_0_load_microcode(struct smu_context *smu)
return 0; return 0;
} }
static int smu_v11_0_check_fw_status(struct smu_context *smu)
{
return 0;
}
static const struct smu_funcs smu_v11_0_funcs = { static const struct smu_funcs smu_v11_0_funcs = {
.init_microcode = smu_v11_0_init_microcode, .init_microcode = smu_v11_0_init_microcode,
.load_microcode = smu_v11_0_load_microcode, .load_microcode = smu_v11_0_load_microcode,
.check_fw_status = smu_v11_0_check_fw_status,
}; };
void smu_v11_0_set_smu_funcs(struct smu_context *smu) void smu_v11_0_set_smu_funcs(struct smu_context *smu)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment