diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 18 | 
1 files changed, 17 insertions, 1 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c index 73401f0aeb34..dd7b2b796427 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c @@ -1033,7 +1033,9 @@ static uint8_t amdgpu_discovery_get_harvest_info(struct amdgpu_device *adev,  	/* Until a uniform way is figured, get mask based on hwid */  	switch (hw_id) {  	case VCN_HWID: -		harvest = ((1 << inst) & adev->vcn.inst_mask) == 0; +		/* VCN vs UVD+VCE */ +		if (!amdgpu_ip_version(adev, VCE_HWIP, 0)) +			harvest = ((1 << inst) & adev->vcn.inst_mask) == 0;  		break;  	case DMU_HWID:  		if (adev->harvest_ip_mask & AMD_HARVEST_IP_DMU_MASK) @@ -2565,7 +2567,9 @@ int amdgpu_discovery_set_ip_blocks(struct amdgpu_device *adev)  		amdgpu_discovery_init(adev);  		vega10_reg_base_init(adev);  		adev->sdma.num_instances = 2; +		adev->sdma.sdma_mask = 3;  		adev->gmc.num_umc = 4; +		adev->gfx.xcc_mask = 1;  		adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 0, 0);  		adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 0, 0);  		adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 0, 0); @@ -2592,7 +2596,9 @@ int amdgpu_discovery_set_ip_blocks(struct amdgpu_device *adev)  		amdgpu_discovery_init(adev);  		vega10_reg_base_init(adev);  		adev->sdma.num_instances = 2; +		adev->sdma.sdma_mask = 3;  		adev->gmc.num_umc = 4; +		adev->gfx.xcc_mask = 1;  		adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 3, 0);  		adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 3, 0);  		adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 0, 1); @@ -2619,8 +2625,10 @@ int amdgpu_discovery_set_ip_blocks(struct amdgpu_device *adev)  		amdgpu_discovery_init(adev);  		vega10_reg_base_init(adev);  		adev->sdma.num_instances = 1; +		adev->sdma.sdma_mask = 1;  		adev->vcn.num_vcn_inst = 1;  		adev->gmc.num_umc = 2; +		adev->gfx.xcc_mask = 1;  		if (adev->apu_flags & AMD_APU_IS_RAVEN2) {  			adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 2, 0);  			adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 2, 0); @@ -2665,7 +2673,9 @@ int amdgpu_discovery_set_ip_blocks(struct amdgpu_device *adev)  		amdgpu_discovery_init(adev);  		vega20_reg_base_init(adev);  		adev->sdma.num_instances = 2; +		adev->sdma.sdma_mask = 3;  		adev->gmc.num_umc = 8; +		adev->gfx.xcc_mask = 1;  		adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 4, 0);  		adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 4, 0);  		adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 2, 0); @@ -2693,8 +2703,10 @@ int amdgpu_discovery_set_ip_blocks(struct amdgpu_device *adev)  		amdgpu_discovery_init(adev);  		arct_reg_base_init(adev);  		adev->sdma.num_instances = 8; +		adev->sdma.sdma_mask = 0xff;  		adev->vcn.num_vcn_inst = 2;  		adev->gmc.num_umc = 8; +		adev->gfx.xcc_mask = 1;  		adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 4, 1);  		adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 4, 1);  		adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 2, 1); @@ -2726,8 +2738,10 @@ int amdgpu_discovery_set_ip_blocks(struct amdgpu_device *adev)  		amdgpu_discovery_init(adev);  		aldebaran_reg_base_init(adev);  		adev->sdma.num_instances = 5; +		adev->sdma.sdma_mask = 0x1f;  		adev->vcn.num_vcn_inst = 2;  		adev->gmc.num_umc = 4; +		adev->gfx.xcc_mask = 1;  		adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(9, 4, 2);  		adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(9, 4, 2);  		adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(4, 4, 0); @@ -2762,6 +2776,8 @@ int amdgpu_discovery_set_ip_blocks(struct amdgpu_device *adev)  		} else {  			cyan_skillfish_reg_base_init(adev);  			adev->sdma.num_instances = 2; +			adev->sdma.sdma_mask = 3; +			adev->gfx.xcc_mask = 1;  			adev->ip_versions[MMHUB_HWIP][0] = IP_VERSION(2, 0, 3);  			adev->ip_versions[ATHUB_HWIP][0] = IP_VERSION(2, 0, 3);  			adev->ip_versions[OSSSYS_HWIP][0] = IP_VERSION(5, 0, 1); | 
