|
@@ -858,734 +858,6 @@ static void vi_enable_doorbell_aperture(struct amdgpu_device *adev,
|
|
|
WREG32(mmBIF_DOORBELL_APER_EN, tmp);
|
|
|
}
|
|
|
|
|
|
-/* topaz has no DCE, UVD, VCE */
|
|
|
-static const struct amdgpu_ip_block_version topaz_ip_blocks[] =
|
|
|
-{
|
|
|
- /* ORDER MATTERS! */
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_COMMON,
|
|
|
- .major = 2,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vi_common_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GMC,
|
|
|
- .major = 7,
|
|
|
- .minor = 4,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gmc_v7_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_IH,
|
|
|
- .major = 2,
|
|
|
- .minor = 4,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &iceland_ih_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SMC,
|
|
|
- .major = 7,
|
|
|
- .minor = 1,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &amdgpu_pp_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GFX,
|
|
|
- .major = 8,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gfx_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SDMA,
|
|
|
- .major = 2,
|
|
|
- .minor = 4,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &sdma_v2_4_ip_funcs,
|
|
|
- },
|
|
|
-};
|
|
|
-
|
|
|
-static const struct amdgpu_ip_block_version topaz_ip_blocks_vd[] =
|
|
|
-{
|
|
|
- /* ORDER MATTERS! */
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_COMMON,
|
|
|
- .major = 2,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vi_common_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GMC,
|
|
|
- .major = 7,
|
|
|
- .minor = 4,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gmc_v7_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_IH,
|
|
|
- .major = 2,
|
|
|
- .minor = 4,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &iceland_ih_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SMC,
|
|
|
- .major = 7,
|
|
|
- .minor = 1,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &amdgpu_pp_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_DCE,
|
|
|
- .major = 1,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &dce_virtual_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GFX,
|
|
|
- .major = 8,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gfx_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SDMA,
|
|
|
- .major = 2,
|
|
|
- .minor = 4,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &sdma_v2_4_ip_funcs,
|
|
|
- },
|
|
|
-};
|
|
|
-
|
|
|
-static const struct amdgpu_ip_block_version tonga_ip_blocks[] =
|
|
|
-{
|
|
|
- /* ORDER MATTERS! */
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_COMMON,
|
|
|
- .major = 2,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vi_common_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GMC,
|
|
|
- .major = 8,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gmc_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_IH,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &tonga_ih_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SMC,
|
|
|
- .major = 7,
|
|
|
- .minor = 1,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &amdgpu_pp_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_DCE,
|
|
|
- .major = 10,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &dce_v10_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GFX,
|
|
|
- .major = 8,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gfx_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SDMA,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &sdma_v3_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_UVD,
|
|
|
- .major = 5,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &uvd_v5_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_VCE,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vce_v3_0_ip_funcs,
|
|
|
- },
|
|
|
-};
|
|
|
-
|
|
|
-static const struct amdgpu_ip_block_version tonga_ip_blocks_vd[] =
|
|
|
-{
|
|
|
- /* ORDER MATTERS! */
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_COMMON,
|
|
|
- .major = 2,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vi_common_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GMC,
|
|
|
- .major = 8,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gmc_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_IH,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &tonga_ih_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SMC,
|
|
|
- .major = 7,
|
|
|
- .minor = 1,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &amdgpu_pp_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_DCE,
|
|
|
- .major = 10,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &dce_virtual_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GFX,
|
|
|
- .major = 8,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gfx_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SDMA,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &sdma_v3_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_UVD,
|
|
|
- .major = 5,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &uvd_v5_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_VCE,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vce_v3_0_ip_funcs,
|
|
|
- },
|
|
|
-};
|
|
|
-
|
|
|
-static const struct amdgpu_ip_block_version fiji_ip_blocks[] =
|
|
|
-{
|
|
|
- /* ORDER MATTERS! */
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_COMMON,
|
|
|
- .major = 2,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vi_common_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GMC,
|
|
|
- .major = 8,
|
|
|
- .minor = 5,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gmc_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_IH,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &tonga_ih_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SMC,
|
|
|
- .major = 7,
|
|
|
- .minor = 1,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &amdgpu_pp_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_DCE,
|
|
|
- .major = 10,
|
|
|
- .minor = 1,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &dce_v10_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GFX,
|
|
|
- .major = 8,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gfx_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SDMA,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &sdma_v3_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_UVD,
|
|
|
- .major = 6,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &uvd_v6_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_VCE,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vce_v3_0_ip_funcs,
|
|
|
- },
|
|
|
-};
|
|
|
-
|
|
|
-static const struct amdgpu_ip_block_version fiji_ip_blocks_vd[] =
|
|
|
-{
|
|
|
- /* ORDER MATTERS! */
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_COMMON,
|
|
|
- .major = 2,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vi_common_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GMC,
|
|
|
- .major = 8,
|
|
|
- .minor = 5,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gmc_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_IH,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &tonga_ih_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SMC,
|
|
|
- .major = 7,
|
|
|
- .minor = 1,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &amdgpu_pp_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_DCE,
|
|
|
- .major = 10,
|
|
|
- .minor = 1,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &dce_virtual_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GFX,
|
|
|
- .major = 8,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gfx_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SDMA,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &sdma_v3_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_UVD,
|
|
|
- .major = 6,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &uvd_v6_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_VCE,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vce_v3_0_ip_funcs,
|
|
|
- },
|
|
|
-};
|
|
|
-
|
|
|
-static const struct amdgpu_ip_block_version polaris11_ip_blocks[] =
|
|
|
-{
|
|
|
- /* ORDER MATTERS! */
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_COMMON,
|
|
|
- .major = 2,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vi_common_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GMC,
|
|
|
- .major = 8,
|
|
|
- .minor = 1,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gmc_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_IH,
|
|
|
- .major = 3,
|
|
|
- .minor = 1,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &tonga_ih_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SMC,
|
|
|
- .major = 7,
|
|
|
- .minor = 2,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &amdgpu_pp_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_DCE,
|
|
|
- .major = 11,
|
|
|
- .minor = 2,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &dce_v11_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GFX,
|
|
|
- .major = 8,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gfx_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SDMA,
|
|
|
- .major = 3,
|
|
|
- .minor = 1,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &sdma_v3_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_UVD,
|
|
|
- .major = 6,
|
|
|
- .minor = 3,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &uvd_v6_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_VCE,
|
|
|
- .major = 3,
|
|
|
- .minor = 4,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vce_v3_0_ip_funcs,
|
|
|
- },
|
|
|
-};
|
|
|
-
|
|
|
-static const struct amdgpu_ip_block_version polaris11_ip_blocks_vd[] =
|
|
|
-{
|
|
|
- /* ORDER MATTERS! */
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_COMMON,
|
|
|
- .major = 2,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vi_common_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GMC,
|
|
|
- .major = 8,
|
|
|
- .minor = 1,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gmc_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_IH,
|
|
|
- .major = 3,
|
|
|
- .minor = 1,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &tonga_ih_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SMC,
|
|
|
- .major = 7,
|
|
|
- .minor = 2,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &amdgpu_pp_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_DCE,
|
|
|
- .major = 11,
|
|
|
- .minor = 2,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &dce_virtual_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GFX,
|
|
|
- .major = 8,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gfx_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SDMA,
|
|
|
- .major = 3,
|
|
|
- .minor = 1,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &sdma_v3_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_UVD,
|
|
|
- .major = 6,
|
|
|
- .minor = 3,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &uvd_v6_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_VCE,
|
|
|
- .major = 3,
|
|
|
- .minor = 4,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vce_v3_0_ip_funcs,
|
|
|
- },
|
|
|
-};
|
|
|
-
|
|
|
-static const struct amdgpu_ip_block_version cz_ip_blocks[] =
|
|
|
-{
|
|
|
- /* ORDER MATTERS! */
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_COMMON,
|
|
|
- .major = 2,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vi_common_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GMC,
|
|
|
- .major = 8,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gmc_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_IH,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &cz_ih_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SMC,
|
|
|
- .major = 8,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &amdgpu_pp_ip_funcs
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_DCE,
|
|
|
- .major = 11,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &dce_v11_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GFX,
|
|
|
- .major = 8,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gfx_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SDMA,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &sdma_v3_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_UVD,
|
|
|
- .major = 6,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &uvd_v6_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_VCE,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vce_v3_0_ip_funcs,
|
|
|
- },
|
|
|
-#if defined(CONFIG_DRM_AMD_ACP)
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_ACP,
|
|
|
- .major = 2,
|
|
|
- .minor = 2,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &acp_ip_funcs,
|
|
|
- },
|
|
|
-#endif
|
|
|
-};
|
|
|
-
|
|
|
-static const struct amdgpu_ip_block_version cz_ip_blocks_vd[] =
|
|
|
-{
|
|
|
- /* ORDER MATTERS! */
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_COMMON,
|
|
|
- .major = 2,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vi_common_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GMC,
|
|
|
- .major = 8,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gmc_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_IH,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &cz_ih_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SMC,
|
|
|
- .major = 8,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &amdgpu_pp_ip_funcs
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_DCE,
|
|
|
- .major = 11,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &dce_virtual_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_GFX,
|
|
|
- .major = 8,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &gfx_v8_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_SDMA,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &sdma_v3_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_UVD,
|
|
|
- .major = 6,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &uvd_v6_0_ip_funcs,
|
|
|
- },
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_VCE,
|
|
|
- .major = 3,
|
|
|
- .minor = 0,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &vce_v3_0_ip_funcs,
|
|
|
- },
|
|
|
-#if defined(CONFIG_DRM_AMD_ACP)
|
|
|
- {
|
|
|
- .type = AMD_IP_BLOCK_TYPE_ACP,
|
|
|
- .major = 2,
|
|
|
- .minor = 2,
|
|
|
- .rev = 0,
|
|
|
- .funcs = &acp_ip_funcs,
|
|
|
- },
|
|
|
-#endif
|
|
|
-};
|
|
|
-
|
|
|
-int vi_set_ip_blocks(struct amdgpu_device *adev)
|
|
|
-{
|
|
|
- if (adev->enable_virtual_display) {
|
|
|
- switch (adev->asic_type) {
|
|
|
- case CHIP_TOPAZ:
|
|
|
- adev->ip_blocks = topaz_ip_blocks_vd;
|
|
|
- adev->num_ip_blocks = ARRAY_SIZE(topaz_ip_blocks_vd);
|
|
|
- break;
|
|
|
- case CHIP_FIJI:
|
|
|
- adev->ip_blocks = fiji_ip_blocks_vd;
|
|
|
- adev->num_ip_blocks = ARRAY_SIZE(fiji_ip_blocks_vd);
|
|
|
- break;
|
|
|
- case CHIP_TONGA:
|
|
|
- adev->ip_blocks = tonga_ip_blocks_vd;
|
|
|
- adev->num_ip_blocks = ARRAY_SIZE(tonga_ip_blocks_vd);
|
|
|
- break;
|
|
|
- case CHIP_POLARIS11:
|
|
|
- case CHIP_POLARIS10:
|
|
|
- adev->ip_blocks = polaris11_ip_blocks_vd;
|
|
|
- adev->num_ip_blocks = ARRAY_SIZE(polaris11_ip_blocks_vd);
|
|
|
- break;
|
|
|
-
|
|
|
- case CHIP_CARRIZO:
|
|
|
- case CHIP_STONEY:
|
|
|
- adev->ip_blocks = cz_ip_blocks_vd;
|
|
|
- adev->num_ip_blocks = ARRAY_SIZE(cz_ip_blocks_vd);
|
|
|
- break;
|
|
|
- default:
|
|
|
- /* FIXME: not supported yet */
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
- } else {
|
|
|
- switch (adev->asic_type) {
|
|
|
- case CHIP_TOPAZ:
|
|
|
- adev->ip_blocks = topaz_ip_blocks;
|
|
|
- adev->num_ip_blocks = ARRAY_SIZE(topaz_ip_blocks);
|
|
|
- break;
|
|
|
- case CHIP_FIJI:
|
|
|
- adev->ip_blocks = fiji_ip_blocks;
|
|
|
- adev->num_ip_blocks = ARRAY_SIZE(fiji_ip_blocks);
|
|
|
- break;
|
|
|
- case CHIP_TONGA:
|
|
|
- adev->ip_blocks = tonga_ip_blocks;
|
|
|
- adev->num_ip_blocks = ARRAY_SIZE(tonga_ip_blocks);
|
|
|
- break;
|
|
|
- case CHIP_POLARIS11:
|
|
|
- case CHIP_POLARIS10:
|
|
|
- adev->ip_blocks = polaris11_ip_blocks;
|
|
|
- adev->num_ip_blocks = ARRAY_SIZE(polaris11_ip_blocks);
|
|
|
- break;
|
|
|
- case CHIP_CARRIZO:
|
|
|
- case CHIP_STONEY:
|
|
|
- adev->ip_blocks = cz_ip_blocks;
|
|
|
- adev->num_ip_blocks = ARRAY_SIZE(cz_ip_blocks);
|
|
|
- break;
|
|
|
- default:
|
|
|
- /* FIXME: not supported yet */
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
#define ATI_REV_ID_FUSE_MACRO__ADDRESS 0xC0014044
|
|
|
#define ATI_REV_ID_FUSE_MACRO__SHIFT 9
|
|
|
#define ATI_REV_ID_FUSE_MACRO__MASK 0x00001E00
|
|
@@ -1985,7 +1257,7 @@ static int vi_common_set_powergating_state(void *handle,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-const struct amd_ip_funcs vi_common_ip_funcs = {
|
|
|
+static const struct amd_ip_funcs vi_common_ip_funcs = {
|
|
|
.name = "vi_common",
|
|
|
.early_init = vi_common_early_init,
|
|
|
.late_init = NULL,
|
|
@@ -2002,3 +1274,110 @@ const struct amd_ip_funcs vi_common_ip_funcs = {
|
|
|
.set_powergating_state = vi_common_set_powergating_state,
|
|
|
};
|
|
|
|
|
|
+static const struct amdgpu_ip_block_version vi_common_ip_block =
|
|
|
+{
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_COMMON,
|
|
|
+ .major = 1,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &vi_common_ip_funcs,
|
|
|
+};
|
|
|
+
|
|
|
+int vi_set_ip_blocks(struct amdgpu_device *adev)
|
|
|
+{
|
|
|
+ switch (adev->asic_type) {
|
|
|
+ case CHIP_TOPAZ:
|
|
|
+ /* topaz has no DCE, UVD, VCE */
|
|
|
+ amdgpu_ip_block_add(adev, &vi_common_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &gmc_v7_4_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &iceland_ih_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &amdgpu_pp_ip_block);
|
|
|
+ if (adev->enable_virtual_display)
|
|
|
+ amdgpu_ip_block_add(adev, &dce_virtual_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &gfx_v8_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &sdma_v2_4_ip_block);
|
|
|
+ break;
|
|
|
+ case CHIP_FIJI:
|
|
|
+ amdgpu_ip_block_add(adev, &vi_common_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &gmc_v8_5_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &tonga_ih_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &amdgpu_pp_ip_block);
|
|
|
+ if (adev->enable_virtual_display)
|
|
|
+ amdgpu_ip_block_add(adev, &dce_virtual_ip_block);
|
|
|
+ else
|
|
|
+ amdgpu_ip_block_add(adev, &dce_v10_1_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &gfx_v8_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &sdma_v3_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &uvd_v6_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &vce_v3_0_ip_block);
|
|
|
+ break;
|
|
|
+ case CHIP_TONGA:
|
|
|
+ amdgpu_ip_block_add(adev, &vi_common_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &gmc_v8_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &tonga_ih_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &amdgpu_pp_ip_block);
|
|
|
+ if (adev->enable_virtual_display)
|
|
|
+ amdgpu_ip_block_add(adev, &dce_virtual_ip_block);
|
|
|
+ else
|
|
|
+ amdgpu_ip_block_add(adev, &dce_v10_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &gfx_v8_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &sdma_v3_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &uvd_v5_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &vce_v3_0_ip_block);
|
|
|
+ break;
|
|
|
+ case CHIP_POLARIS11:
|
|
|
+ case CHIP_POLARIS10:
|
|
|
+ amdgpu_ip_block_add(adev, &vi_common_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &gmc_v8_1_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &tonga_ih_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &amdgpu_pp_ip_block);
|
|
|
+ if (adev->enable_virtual_display)
|
|
|
+ amdgpu_ip_block_add(adev, &dce_virtual_ip_block);
|
|
|
+ else
|
|
|
+ amdgpu_ip_block_add(adev, &dce_v11_2_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &gfx_v8_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &sdma_v3_1_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &uvd_v6_3_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &vce_v3_4_ip_block);
|
|
|
+ break;
|
|
|
+ case CHIP_CARRIZO:
|
|
|
+ amdgpu_ip_block_add(adev, &vi_common_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &gmc_v8_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &cz_ih_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &amdgpu_pp_ip_block);
|
|
|
+ if (adev->enable_virtual_display)
|
|
|
+ amdgpu_ip_block_add(adev, &dce_virtual_ip_block);
|
|
|
+ else
|
|
|
+ amdgpu_ip_block_add(adev, &dce_v11_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &gfx_v8_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &sdma_v3_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &uvd_v6_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &vce_v3_1_ip_block);
|
|
|
+#if defined(CONFIG_DRM_AMD_ACP)
|
|
|
+ amdgpu_ip_block_add(adev, &acp_ip_block);
|
|
|
+#endif
|
|
|
+ break;
|
|
|
+ case CHIP_STONEY:
|
|
|
+ amdgpu_ip_block_add(adev, &vi_common_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &gmc_v8_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &cz_ih_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &amdgpu_pp_ip_block);
|
|
|
+ if (adev->enable_virtual_display)
|
|
|
+ amdgpu_ip_block_add(adev, &dce_virtual_ip_block);
|
|
|
+ else
|
|
|
+ amdgpu_ip_block_add(adev, &dce_v11_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &gfx_v8_1_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &sdma_v3_0_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &uvd_v6_2_ip_block);
|
|
|
+ amdgpu_ip_block_add(adev, &vce_v3_4_ip_block);
|
|
|
+#if defined(CONFIG_DRM_AMD_ACP)
|
|
|
+ amdgpu_ip_block_add(adev, &acp_ip_block);
|
|
|
+#endif
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ /* FIXME: not supported yet */
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|