drm/amdgpu: initialize PSP before IH under SR-IOV
In order to support new PSP feature that PSP may provide interface to program IH CNTL register, initialize PSP before IH under Vega10 SR-IOV VF Signed-off-by: Trigger Huang <Trigger.Huang@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
78d4811267
commit
2d11fd3f54
@@ -1580,6 +1580,7 @@ static int amdgpu_device_ip_hw_init_phase1(struct amdgpu_device *adev)
|
|||||||
if (adev->ip_blocks[i].status.hw)
|
if (adev->ip_blocks[i].status.hw)
|
||||||
continue;
|
continue;
|
||||||
if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_COMMON ||
|
if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_COMMON ||
|
||||||
|
(amdgpu_sriov_vf(adev) && (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_PSP)) ||
|
||||||
adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_IH) {
|
adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_IH) {
|
||||||
r = adev->ip_blocks[i].version->funcs->hw_init(adev);
|
r = adev->ip_blocks[i].version->funcs->hw_init(adev);
|
||||||
if (r) {
|
if (r) {
|
||||||
|
|||||||
@@ -608,12 +608,24 @@ int soc15_set_ip_blocks(struct amdgpu_device *adev)
|
|||||||
case CHIP_VEGA20:
|
case CHIP_VEGA20:
|
||||||
amdgpu_device_ip_block_add(adev, &vega10_common_ip_block);
|
amdgpu_device_ip_block_add(adev, &vega10_common_ip_block);
|
||||||
amdgpu_device_ip_block_add(adev, &gmc_v9_0_ip_block);
|
amdgpu_device_ip_block_add(adev, &gmc_v9_0_ip_block);
|
||||||
amdgpu_device_ip_block_add(adev, &vega10_ih_ip_block);
|
|
||||||
if (likely(adev->firmware.load_type == AMDGPU_FW_LOAD_PSP)) {
|
/* For Vega10 SR-IOV, PSP need to be initialized before IH */
|
||||||
if (adev->asic_type == CHIP_VEGA20)
|
if (amdgpu_sriov_vf(adev)) {
|
||||||
amdgpu_device_ip_block_add(adev, &psp_v11_0_ip_block);
|
if (likely(adev->firmware.load_type == AMDGPU_FW_LOAD_PSP)) {
|
||||||
else
|
if (adev->asic_type == CHIP_VEGA20)
|
||||||
amdgpu_device_ip_block_add(adev, &psp_v3_1_ip_block);
|
amdgpu_device_ip_block_add(adev, &psp_v11_0_ip_block);
|
||||||
|
else
|
||||||
|
amdgpu_device_ip_block_add(adev, &psp_v3_1_ip_block);
|
||||||
|
}
|
||||||
|
amdgpu_device_ip_block_add(adev, &vega10_ih_ip_block);
|
||||||
|
} else {
|
||||||
|
amdgpu_device_ip_block_add(adev, &vega10_ih_ip_block);
|
||||||
|
if (likely(adev->firmware.load_type == AMDGPU_FW_LOAD_PSP)) {
|
||||||
|
if (adev->asic_type == CHIP_VEGA20)
|
||||||
|
amdgpu_device_ip_block_add(adev, &psp_v11_0_ip_block);
|
||||||
|
else
|
||||||
|
amdgpu_device_ip_block_add(adev, &psp_v3_1_ip_block);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
amdgpu_device_ip_block_add(adev, &gfx_v9_0_ip_block);
|
amdgpu_device_ip_block_add(adev, &gfx_v9_0_ip_block);
|
||||||
amdgpu_device_ip_block_add(adev, &sdma_v4_0_ip_block);
|
amdgpu_device_ip_block_add(adev, &sdma_v4_0_ip_block);
|
||||||
|
|||||||
Reference in New Issue
Block a user