Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amd/amdgpu/sriov ip block setting of Arcturus

Add ip block setting for Arcturus SRIOV

1.PSP need to be initialized before IH.
2.SMU doesn't need to be initialized at kmd driver.
3.Arcturus doesn't support DCE hardware,it needs to skip
register access to DCE.

Signed-off-by: Jack Zhang <Jack.Zhang1@amd.com>
Reviewed-by: Le Ma <Le.Ma@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Jack Zhang and committed by
Alex Deucher
21889cec cf21e76a

+20 -8
+6 -4
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
··· 1215 1215 gmc_v9_0_init_golden_registers(adev); 1216 1216 1217 1217 if (adev->mode_info.num_crtc) { 1218 - /* Lockout access through VGA aperture*/ 1219 - WREG32_FIELD15(DCE, 0, VGA_HDP_CONTROL, VGA_MEMORY_DISABLE, 1); 1218 + if (adev->asic_type != CHIP_ARCTURUS) { 1219 + /* Lockout access through VGA aperture*/ 1220 + WREG32_FIELD15(DCE, 0, VGA_HDP_CONTROL, VGA_MEMORY_DISABLE, 1); 1220 1221 1221 - /* disable VGA render */ 1222 - WREG32_FIELD15(DCE, 0, VGA_RENDER_CONTROL, VGA_VSTATUS_CNTL, 0); 1222 + /* disable VGA render */ 1223 + WREG32_FIELD15(DCE, 0, VGA_RENDER_CONTROL, VGA_VSTATUS_CNTL, 0); 1224 + } 1223 1225 } 1224 1226 1225 1227 r = gmc_v9_0_gart_enable(adev);
+14 -4
drivers/gpu/drm/amd/amdgpu/soc15.c
··· 758 758 case CHIP_ARCTURUS: 759 759 amdgpu_device_ip_block_add(adev, &vega10_common_ip_block); 760 760 amdgpu_device_ip_block_add(adev, &gmc_v9_0_ip_block); 761 - amdgpu_device_ip_block_add(adev, &vega10_ih_ip_block); 762 - if (likely(adev->firmware.load_type == AMDGPU_FW_LOAD_PSP)) 763 - amdgpu_device_ip_block_add(adev, &psp_v11_0_ip_block); 761 + 762 + if (amdgpu_sriov_vf(adev)) { 763 + if (likely(adev->firmware.load_type == AMDGPU_FW_LOAD_PSP)) 764 + amdgpu_device_ip_block_add(adev, &psp_v11_0_ip_block); 765 + amdgpu_device_ip_block_add(adev, &vega10_ih_ip_block); 766 + } else { 767 + amdgpu_device_ip_block_add(adev, &vega10_ih_ip_block); 768 + if (likely(adev->firmware.load_type == AMDGPU_FW_LOAD_PSP)) 769 + amdgpu_device_ip_block_add(adev, &psp_v11_0_ip_block); 770 + } 771 + 764 772 if (adev->enable_virtual_display || amdgpu_sriov_vf(adev)) 765 773 amdgpu_device_ip_block_add(adev, &dce_virtual_ip_block); 766 774 amdgpu_device_ip_block_add(adev, &gfx_v9_0_ip_block); 767 775 amdgpu_device_ip_block_add(adev, &sdma_v4_0_ip_block); 768 - amdgpu_device_ip_block_add(adev, &smu_v11_0_ip_block); 776 + if (!amdgpu_sriov_vf(adev)) 777 + amdgpu_device_ip_block_add(adev, &smu_v11_0_ip_block); 778 + 769 779 if (unlikely(adev->firmware.load_type == AMDGPU_FW_LOAD_DIRECT)) 770 780 amdgpu_device_ip_block_add(adev, &vcn_v2_5_ip_block); 771 781 break;