Эх сурвалжийг харах

drm/amd/pp: Get and save Rv smu version

The smu firmware is loaded by the sbios on APUs, so query it
from the smu and save the smu fw version info that is reported
to userspace.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Rex Zhu 7 жил өмнө
parent
commit
f49e9bac19

+ 3 - 0
drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c

@@ -801,6 +801,9 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
 				else
 				else
 					strcpy(fw_name, "amdgpu/vega10_smc.bin");
 					strcpy(fw_name, "amdgpu/vega10_smc.bin");
 				break;
 				break;
+			case CHIP_RAVEN:
+				adev->pm.fw_version = info->version;
+				return 0;
 			default:
 			default:
 				DRM_ERROR("SMC firmware not supported\n");
 				DRM_ERROR("SMC firmware not supported\n");
 				return -EINVAL;
 				return -EINVAL;

+ 8 - 0
drivers/gpu/drm/amd/powerplay/smumgr/rv_smumgr.c

@@ -305,6 +305,14 @@ static int rv_smu_fini(struct pp_hwmgr *hwmgr)
 
 
 static int rv_start_smu(struct pp_hwmgr *hwmgr)
 static int rv_start_smu(struct pp_hwmgr *hwmgr)
 {
 {
+	struct cgs_firmware_info info = {0};
+
+	smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetSmuVersion);
+	rv_read_arg_from_smc(hwmgr, &hwmgr->smu_version);
+	info.version = hwmgr->smu_version >> 8;
+
+	cgs_get_firmware_info(hwmgr->device, CGS_UCODE_ID_SMU, &info);
+
 	if (rv_verify_smc_interface(hwmgr))
 	if (rv_verify_smc_interface(hwmgr))
 		return -EINVAL;
 		return -EINVAL;
 	if (rv_smc_enable_sdma(hwmgr))
 	if (rv_smc_enable_sdma(hwmgr))