Skip to content

Commit a448c40

Browse files
Gangliang Xiealexdeucher
authored andcommitted
drm/amd/pm: check pmfw eeprom feature bit
get and check the pmfw eeprom feature bit to decide if pmfw eeprom is supported Signed-off-by: Gangliang Xie <ganglxie@amd.com> Reviewed-by: Tao Zhou <tao.zhou1@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent cd5b28a commit a448c40

5 files changed

Lines changed: 14 additions & 2 deletions

File tree

drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu_v13_0_12_pmfw.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ typedef enum {
8787
/*37*/ FEATURE_DVO = 37,
8888
/*38*/ FEATURE_XVMINORPSM_CLKSTOP_DS = 38,
8989
/*39*/ FEATURE_GLOBAL_DPM = 39,
90-
/*40*/ FEATURE_NODE_POWER_MANAGER = 40,
90+
/*40*/ FEATURE_HROM_EN = 40,
9191

9292
/*41*/ NUM_FEATURES = 41
9393
} FEATURE_LIST_e;

drivers/gpu/drm/amd/pm/swsmu/inc/smu_types.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,8 @@ enum smu_clk_type {
465465
__SMU_DUMMY_MAP(GFX_EDC_XVMIN), \
466466
__SMU_DUMMY_MAP(GFX_DIDT_XVMIN), \
467467
__SMU_DUMMY_MAP(FAN_ABNORMAL), \
468-
__SMU_DUMMY_MAP(PIT),
468+
__SMU_DUMMY_MAP(PIT), \
469+
__SMU_DUMMY_MAP(HROM_EN),
469470

470471
#undef __SMU_DUMMY_MAP
471472
#define __SMU_DUMMY_MAP(feature) SMU_FEATURE_##feature##_BIT

drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_12_ppt.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ const struct cmn2asic_mapping smu_v13_0_12_feature_mask_map[SMU_FEATURE_COUNT] =
8282
SMU_13_0_12_FEA_MAP(SMU_FEATURE_DS_MPIOCLK_BIT, FEATURE_DS_MPIOCLK),
8383
SMU_13_0_12_FEA_MAP(SMU_FEATURE_DS_MP0CLK_BIT, FEATURE_DS_MP0CLK),
8484
SMU_13_0_12_FEA_MAP(SMU_FEATURE_PIT_BIT, FEATURE_PIT),
85+
SMU_13_0_12_FEA_MAP(SMU_FEATURE_HROM_EN_BIT, FEATURE_HROM_EN),
8586
};
8687

8788
const struct cmn2asic_msg_mapping smu_v13_0_12_message_map[SMU_MSG_MAX_COUNT] = {
@@ -1044,10 +1045,16 @@ static const struct ras_eeprom_smu_funcs smu_v13_0_12_eeprom_smu_funcs = {
10441045

10451046
static void smu_v13_0_12_ras_smu_feature_flags(struct amdgpu_device *adev, uint64_t *flags)
10461047
{
1048+
struct smu_context *smu = adev->powerplay.pp_handle;
1049+
10471050
if (!flags)
10481051
return;
10491052

10501053
*flags = 0ULL;
1054+
1055+
if (smu_v13_0_6_cap_supported(smu, SMU_CAP(RAS_EEPROM)))
1056+
*flags |= RAS_SMU_FEATURE_BIT__RAS_EEPROM;
1057+
10511058
}
10521059

10531060
const struct ras_smu_drv smu_v13_0_12_ras_smu_drv = {

drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3913,6 +3913,9 @@ static int smu_v13_0_6_get_ras_smu_drv(struct smu_context *smu, const struct ras
39133913
if (amdgpu_sriov_vf(smu->adev))
39143914
return -EOPNOTSUPP;
39153915

3916+
if (smu_cmn_feature_is_enabled(smu, SMU_FEATURE_HROM_EN_BIT))
3917+
smu_v13_0_6_cap_set(smu, SMU_CAP(RAS_EEPROM));
3918+
39163919
switch (amdgpu_ip_version(smu->adev, MP1_HWIP, 0)) {
39173920
case IP_VERSION(13, 0, 12):
39183921
*ras_smu_drv = &smu_v13_0_12_ras_smu_drv;

drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ enum smu_v13_0_6_caps {
7272
SMU_CAP(PLDM_VERSION),
7373
SMU_CAP(TEMP_METRICS),
7474
SMU_CAP(NPM_METRICS),
75+
SMU_CAP(RAS_EEPROM),
7576
SMU_CAP(ALL),
7677
};
7778

0 commit comments

Comments
 (0)