diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 32 | 
1 files changed, 24 insertions, 8 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c index fe23e09eec98..7aa7e52ca784 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c @@ -29,6 +29,7 @@  #include "amdgpu.h"  #include <drm/amdgpu_drm.h>  #include <drm/drm_drv.h> +#include <drm/drm_fb_helper.h>  #include "amdgpu_uvd.h"  #include "amdgpu_vce.h"  #include "atom.h" @@ -337,11 +338,17 @@ static int amdgpu_firmware_info(struct drm_amdgpu_info_firmware *fw_info,  		fw_info->feature = adev->psp.cap_feature_version;  		break;  	case AMDGPU_INFO_FW_MES_KIQ: -		fw_info->ver = adev->mes.ucode_fw_version[0]; -		fw_info->feature = 0; +		fw_info->ver = adev->mes.kiq_version & AMDGPU_MES_VERSION_MASK; +		fw_info->feature = (adev->mes.kiq_version & AMDGPU_MES_FEAT_VERSION_MASK) +					>> AMDGPU_MES_FEAT_VERSION_SHIFT;  		break;  	case AMDGPU_INFO_FW_MES: -		fw_info->ver = adev->mes.ucode_fw_version[1]; +		fw_info->ver = adev->mes.sched_version & AMDGPU_MES_VERSION_MASK; +		fw_info->feature = (adev->mes.sched_version & AMDGPU_MES_FEAT_VERSION_MASK) +					>> AMDGPU_MES_FEAT_VERSION_SHIFT; +		break; +	case AMDGPU_INFO_FW_IMU: +		fw_info->ver = adev->gfx.imu_fw_version;  		fw_info->feature = 0;  		break;  	default: @@ -424,7 +431,7 @@ static int amdgpu_hw_ip_info(struct amdgpu_device *adev,  	case AMDGPU_HW_IP_VCN_DEC:  		type = AMD_IP_BLOCK_TYPE_VCN;  		for (i = 0; i < adev->vcn.num_vcn_inst; i++) { -			if (adev->uvd.harvest_config & (1 << i)) +			if (adev->vcn.harvest_config & (1 << i))  				continue;  			if (adev->vcn.inst[i].ring_dec.sched.ready) @@ -436,7 +443,7 @@ static int amdgpu_hw_ip_info(struct amdgpu_device *adev,  	case AMDGPU_HW_IP_VCN_ENC:  		type = AMD_IP_BLOCK_TYPE_VCN;  		for (i = 0; i < adev->vcn.num_vcn_inst; i++) { -			if (adev->uvd.harvest_config & (1 << i)) +			if (adev->vcn.harvest_config & (1 << i))  				continue;  			for (j = 0; j < adev->vcn.num_enc_rings; j++) @@ -790,7 +797,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)  		dev_info->ids_flags = 0;  		if (adev->flags & AMD_IS_APU)  			dev_info->ids_flags |= AMDGPU_IDS_FLAGS_FUSION; -		if (amdgpu_mcbp || amdgpu_sriov_vf(adev)) +		if (amdgpu_mcbp)  			dev_info->ids_flags |= AMDGPU_IDS_FLAGS_PREEMPTION;  		if (amdgpu_is_tmz(adev))  			dev_info->ids_flags |= AMDGPU_IDS_FLAGS_TMZ; @@ -1166,7 +1173,7 @@ int amdgpu_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv)  		goto error_vm;  	} -	if (amdgpu_mcbp || amdgpu_sriov_vf(adev)) { +	if (amdgpu_mcbp) {  		uint64_t csa_addr = amdgpu_csa_vaddr(adev) & AMDGPU_GMC_HOLE_MASK;  		r = amdgpu_map_static_csa(adev, &fpriv->vm, adev->virt.csa_obj, @@ -1230,7 +1237,7 @@ void amdgpu_driver_postclose_kms(struct drm_device *dev,  	if (amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_VCE) != NULL)  		amdgpu_vce_free_handles(adev, file_priv); -	if (amdgpu_mcbp || amdgpu_sriov_vf(adev)) { +	if (amdgpu_mcbp) {  		/* TODO: how to handle reserve failure */  		BUG_ON(amdgpu_bo_reserve(adev->virt.csa_obj, true));  		amdgpu_vm_bo_del(adev, fpriv->csa_va); @@ -1520,6 +1527,15 @@ static int amdgpu_debugfs_firmware_info_show(struct seq_file *m, void *unused)  			   fw_info.feature, fw_info.ver);  	} +	/* IMU */ +	query_fw.fw_type = AMDGPU_INFO_FW_IMU; +	query_fw.index = 0; +	ret = amdgpu_firmware_info(&fw_info, &query_fw, adev); +	if (ret) +		return ret; +	seq_printf(m, "IMU feature version: %u, firmware version: 0x%08x\n", +		   fw_info.feature, fw_info.ver); +  	/* PSP SOS */  	query_fw.fw_type = AMDGPU_INFO_FW_SOS;  	ret = amdgpu_firmware_info(&fw_info, &query_fw, adev);  |