Add rsmi_dev_firmware_version_get()
Change-Id: Iba3e5f3eaa0eb031fc013fc168bded22bc249b5c
This commit is contained in:
@@ -1080,6 +1080,95 @@ rsmi_dev_gpu_clk_freq_get(uint32_t dv_ind, rsmi_clk_type_t clk_type,
|
||||
CATCH
|
||||
}
|
||||
|
||||
rsmi_status_t
|
||||
rsmi_dev_firmware_version_get(uint32_t dv_ind, rsmi_fw_block_t block,
|
||||
uint64_t *fw_version) {
|
||||
rsmi_status_t ret;
|
||||
|
||||
if (fw_version == nullptr) {
|
||||
return RSMI_STATUS_INVALID_ARGS;
|
||||
}
|
||||
|
||||
TRY
|
||||
GET_DEV_FROM_INDX
|
||||
|
||||
std::string val_str;
|
||||
amd::smi::DevInfoTypes dev_type;
|
||||
|
||||
switch (block) {
|
||||
case RSMI_FW_BLOCK_ASD:
|
||||
dev_type = amd::smi::kDevFwVersionAsd;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_CE:
|
||||
dev_type = amd::smi::kDevFwVersionCe;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_DMCU:
|
||||
dev_type = amd::smi::kDevFwVersionDmcu;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_MC:
|
||||
dev_type = amd::smi::kDevFwVersionMc;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_ME:
|
||||
dev_type = amd::smi::kDevFwVersionMe;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_MEC:
|
||||
dev_type = amd::smi::kDevFwVersionMec;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_MEC2:
|
||||
dev_type = amd::smi::kDevFwVersionMec2;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_PFP:
|
||||
dev_type = amd::smi::kDevFwVersionPfp;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_RLC:
|
||||
dev_type = amd::smi::kDevFwVersionRlc;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_RLC_SRLC:
|
||||
dev_type = amd::smi::kDevFwVersionRlcSrlc;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_RLC_SRLG:
|
||||
dev_type = amd::smi::kDevFwVersionRlcSrlg;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_RLC_SRLS:
|
||||
dev_type = amd::smi::kDevFwVersionRlcSrls;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_SDMA:
|
||||
dev_type = amd::smi::kDevFwVersionSdma;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_SDMA2:
|
||||
dev_type = amd::smi::kDevFwVersionSdma2;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_SMC:
|
||||
dev_type = amd::smi::kDevFwVersionSmc;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_SOS:
|
||||
dev_type = amd::smi::kDevFwVersionSos;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_TA_RAS:
|
||||
dev_type = amd::smi::kDevFwVersionTaRas;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_TA_XGMI:
|
||||
dev_type = amd::smi::kDevFwVersionTaXgmi;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_UVD:
|
||||
dev_type = amd::smi::kDevFwVersionUvd;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_VCE:
|
||||
dev_type = amd::smi::kDevFwVersionVce;
|
||||
break;
|
||||
case RSMI_FW_BLOCK_VCN:
|
||||
dev_type = amd::smi::kDevFwVersionVcn;
|
||||
break;
|
||||
}
|
||||
ret = get_dev_value_int(dev_type, dv_ind, fw_version);
|
||||
if (ret != 0) {
|
||||
return errno_to_rsmi_status(ret);
|
||||
}
|
||||
|
||||
return RSMI_STATUS_SUCCESS;
|
||||
CATCH
|
||||
}
|
||||
|
||||
static std::string bitfield_to_freq_string(uint64_t bitf,
|
||||
uint32_t num_supported) {
|
||||
std::string bf_str("");
|
||||
|
||||
@@ -114,6 +114,30 @@ static const char *kDevPerfLevelMinSClkStr = "profile_min_sclk";
|
||||
static const char *kDevPerfLevelPeakStr = "profile_peak";
|
||||
static const char *kDevPerfLevelUnknownStr = "unknown";
|
||||
|
||||
// Firmware version files
|
||||
static const char *kDevFwVersionAsdFName = "fw_version/asd_fw_version";
|
||||
static const char *kDevFwVersionCeFName = "fw_version/ce_fw_version";
|
||||
static const char *kDevFwVersionDmcuFName = "fw_version/dmcu_fw_version";
|
||||
static const char *kDevFwVersionMcFName = "fw_version/mc_fw_version";
|
||||
static const char *kDevFwVersionMeFName = "fw_version/me_fw_version";
|
||||
static const char *kDevFwVersionMecFName = "fw_version/mec_fw_version";
|
||||
static const char *kDevFwVersionMec2FName = "fw_version/mec2_fw_version";
|
||||
static const char *kDevFwVersionPfpFName = "fw_version/pfp_fw_version";
|
||||
static const char *kDevFwVersionRlcFName = "fw_version/rlc_fw_version";
|
||||
static const char *kDevFwVersionRlcSrlcFName = "fw_version/rlc_srlc_fw_version";
|
||||
static const char *kDevFwVersionRlcSrlgFName = "fw_version/rlc_srlg_fw_version";
|
||||
static const char *kDevFwVersionRlcSrlsFName = "fw_version/rlc_srls_fw_version";
|
||||
static const char *kDevFwVersionSdmaFName = "fw_version/sdma_fw_version";
|
||||
static const char *kDevFwVersionSdma2FName = "fw_version/sdma2_fw_version";
|
||||
static const char *kDevFwVersionSmcFName = "fw_version/smc_fw_version";
|
||||
static const char *kDevFwVersionSosFName = "fw_version/sos_fw_version";
|
||||
static const char *kDevFwVersionTaRasFName = "fw_version/ta_ras_fw_version";
|
||||
static const char *kDevFwVersionTaXgmiFName = "fw_version/ta_xgmi_fw_version";
|
||||
static const char *kDevFwVersionUvdFName = "fw_version/uvd_fw_version";
|
||||
static const char *kDevFwVersionVceFName = "fw_version/vce_fw_version";
|
||||
static const char *kDevFwVersionVcnFName = "fw_version/vcn_fw_version";
|
||||
|
||||
|
||||
static const std::map<DevInfoTypes, const char *> kDevAttribNameMap = {
|
||||
{kDevPerfLevel, kDevPerfLevelFName},
|
||||
{kDevOverDriveLevel, kDevOverDriveLevelFName},
|
||||
@@ -147,6 +171,27 @@ static const std::map<DevInfoTypes, const char *> kDevAttribNameMap = {
|
||||
{kDevUniqueId, kDevUniqueIdFName},
|
||||
{kDevDFCountersAvailable, kDevDFCountersAvailableFName},
|
||||
{kDevXGMIError, kDevXGMIErrorFName},
|
||||
{kDevFwVersionAsd, kDevFwVersionAsdFName},
|
||||
{kDevFwVersionCe, kDevFwVersionCeFName},
|
||||
{kDevFwVersionDmcu, kDevFwVersionDmcuFName},
|
||||
{kDevFwVersionMc, kDevFwVersionMcFName},
|
||||
{kDevFwVersionMe, kDevFwVersionMeFName},
|
||||
{kDevFwVersionMec, kDevFwVersionMecFName},
|
||||
{kDevFwVersionMec2, kDevFwVersionMec2FName},
|
||||
{kDevFwVersionPfp, kDevFwVersionPfpFName},
|
||||
{kDevFwVersionRlc, kDevFwVersionRlcFName},
|
||||
{kDevFwVersionRlcSrlc, kDevFwVersionRlcSrlcFName},
|
||||
{kDevFwVersionRlcSrlg, kDevFwVersionRlcSrlgFName},
|
||||
{kDevFwVersionRlcSrls, kDevFwVersionRlcSrlsFName},
|
||||
{kDevFwVersionSdma, kDevFwVersionSdmaFName},
|
||||
{kDevFwVersionSdma2, kDevFwVersionSdma2FName},
|
||||
{kDevFwVersionSmc, kDevFwVersionSmcFName},
|
||||
{kDevFwVersionSos, kDevFwVersionSosFName},
|
||||
{kDevFwVersionTaRas, kDevFwVersionTaRasFName},
|
||||
{kDevFwVersionTaXgmi, kDevFwVersionTaXgmiFName},
|
||||
{kDevFwVersionUvd, kDevFwVersionUvdFName},
|
||||
{kDevFwVersionVce, kDevFwVersionVceFName},
|
||||
{kDevFwVersionVcn, kDevFwVersionVcnFName},
|
||||
};
|
||||
|
||||
static const std::map<rsmi_dev_perf_level, const char *> kDevPerfLvlMap = {
|
||||
@@ -387,7 +432,29 @@ int Device::readDevInfo(DevInfoTypes type, uint64_t *val) {
|
||||
RET_IF_NONZERO(ret);
|
||||
*val = std::stoul(tempStr, 0);
|
||||
break;
|
||||
|
||||
case kDevUniqueId:
|
||||
case kDevFwVersionAsd:
|
||||
case kDevFwVersionCe:
|
||||
case kDevFwVersionDmcu:
|
||||
case kDevFwVersionMc:
|
||||
case kDevFwVersionMe:
|
||||
case kDevFwVersionMec:
|
||||
case kDevFwVersionMec2:
|
||||
case kDevFwVersionPfp:
|
||||
case kDevFwVersionRlc:
|
||||
case kDevFwVersionRlcSrlc:
|
||||
case kDevFwVersionRlcSrlg:
|
||||
case kDevFwVersionRlcSrls:
|
||||
case kDevFwVersionSdma:
|
||||
case kDevFwVersionSdma2:
|
||||
case kDevFwVersionSmc:
|
||||
case kDevFwVersionSos:
|
||||
case kDevFwVersionTaRas:
|
||||
case kDevFwVersionTaXgmi:
|
||||
case kDevFwVersionUvd:
|
||||
case kDevFwVersionVce:
|
||||
case kDevFwVersionVcn:
|
||||
ret = readDevInfoStr(type, &tempStr);
|
||||
RET_IF_NONZERO(ret);
|
||||
*val = std::stoul(tempStr, 0, 16);
|
||||
|
||||
مرجع در شماره جدید
Block a user