|
@@ -67,6 +67,7 @@
|
|
|
|
|
|
#include "amdgpu_amdkfd.h"
|
|
|
#include "amdgpu_powerplay.h"
|
|
|
+#include "dce_virtual.h"
|
|
|
|
|
|
/*
|
|
|
* Indirect registers accessor
|
|
@@ -1708,6 +1709,74 @@ static const struct amdgpu_ip_block_version bonaire_ip_blocks[] =
|
|
|
},
|
|
|
};
|
|
|
|
|
|
+static const struct amdgpu_ip_block_version bonaire_ip_blocks_vd[] =
|
|
|
+{
|
|
|
+ /* ORDER MATTERS! */
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_COMMON,
|
|
|
+ .major = 1,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &cik_common_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_GMC,
|
|
|
+ .major = 7,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &gmc_v7_0_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_IH,
|
|
|
+ .major = 2,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &cik_ih_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_SMC,
|
|
|
+ .major = 7,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &amdgpu_pp_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_DCE,
|
|
|
+ .major = 8,
|
|
|
+ .minor = 2,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &dce_virtual_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_GFX,
|
|
|
+ .major = 7,
|
|
|
+ .minor = 2,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &gfx_v7_0_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_SDMA,
|
|
|
+ .major = 2,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &cik_sdma_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_UVD,
|
|
|
+ .major = 4,
|
|
|
+ .minor = 2,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &uvd_v4_2_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_VCE,
|
|
|
+ .major = 2,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &vce_v2_0_ip_funcs,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
static const struct amdgpu_ip_block_version hawaii_ip_blocks[] =
|
|
|
{
|
|
|
/* ORDER MATTERS! */
|
|
@@ -1776,6 +1845,74 @@ static const struct amdgpu_ip_block_version hawaii_ip_blocks[] =
|
|
|
},
|
|
|
};
|
|
|
|
|
|
+static const struct amdgpu_ip_block_version hawaii_ip_blocks_vd[] =
|
|
|
+{
|
|
|
+ /* ORDER MATTERS! */
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_COMMON,
|
|
|
+ .major = 1,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &cik_common_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_GMC,
|
|
|
+ .major = 7,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &gmc_v7_0_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_IH,
|
|
|
+ .major = 2,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &cik_ih_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_SMC,
|
|
|
+ .major = 7,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &amdgpu_pp_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_DCE,
|
|
|
+ .major = 8,
|
|
|
+ .minor = 5,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &dce_virtual_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_GFX,
|
|
|
+ .major = 7,
|
|
|
+ .minor = 3,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &gfx_v7_0_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_SDMA,
|
|
|
+ .major = 2,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &cik_sdma_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_UVD,
|
|
|
+ .major = 4,
|
|
|
+ .minor = 2,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &uvd_v4_2_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_VCE,
|
|
|
+ .major = 2,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &vce_v2_0_ip_funcs,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
static const struct amdgpu_ip_block_version kabini_ip_blocks[] =
|
|
|
{
|
|
|
/* ORDER MATTERS! */
|
|
@@ -1844,6 +1981,74 @@ static const struct amdgpu_ip_block_version kabini_ip_blocks[] =
|
|
|
},
|
|
|
};
|
|
|
|
|
|
+static const struct amdgpu_ip_block_version kabini_ip_blocks_vd[] =
|
|
|
+{
|
|
|
+ /* ORDER MATTERS! */
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_COMMON,
|
|
|
+ .major = 1,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &cik_common_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_GMC,
|
|
|
+ .major = 7,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &gmc_v7_0_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_IH,
|
|
|
+ .major = 2,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &cik_ih_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_SMC,
|
|
|
+ .major = 7,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &amdgpu_pp_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_DCE,
|
|
|
+ .major = 8,
|
|
|
+ .minor = 3,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &dce_virtual_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_GFX,
|
|
|
+ .major = 7,
|
|
|
+ .minor = 2,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &gfx_v7_0_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_SDMA,
|
|
|
+ .major = 2,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &cik_sdma_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_UVD,
|
|
|
+ .major = 4,
|
|
|
+ .minor = 2,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &uvd_v4_2_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_VCE,
|
|
|
+ .major = 2,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &vce_v2_0_ip_funcs,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
static const struct amdgpu_ip_block_version mullins_ip_blocks[] =
|
|
|
{
|
|
|
/* ORDER MATTERS! */
|
|
@@ -1912,6 +2117,74 @@ static const struct amdgpu_ip_block_version mullins_ip_blocks[] =
|
|
|
},
|
|
|
};
|
|
|
|
|
|
+static const struct amdgpu_ip_block_version mullins_ip_blocks_vd[] =
|
|
|
+{
|
|
|
+ /* ORDER MATTERS! */
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_COMMON,
|
|
|
+ .major = 1,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &cik_common_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_GMC,
|
|
|
+ .major = 7,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &gmc_v7_0_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_IH,
|
|
|
+ .major = 2,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &cik_ih_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_SMC,
|
|
|
+ .major = 7,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &amdgpu_pp_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_DCE,
|
|
|
+ .major = 8,
|
|
|
+ .minor = 3,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &dce_virtual_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_GFX,
|
|
|
+ .major = 7,
|
|
|
+ .minor = 2,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &gfx_v7_0_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_SDMA,
|
|
|
+ .major = 2,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &cik_sdma_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_UVD,
|
|
|
+ .major = 4,
|
|
|
+ .minor = 2,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &uvd_v4_2_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_VCE,
|
|
|
+ .major = 2,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &vce_v2_0_ip_funcs,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
static const struct amdgpu_ip_block_version kaveri_ip_blocks[] =
|
|
|
{
|
|
|
/* ORDER MATTERS! */
|
|
@@ -1980,6 +2253,74 @@ static const struct amdgpu_ip_block_version kaveri_ip_blocks[] =
|
|
|
},
|
|
|
};
|
|
|
|
|
|
+static const struct amdgpu_ip_block_version kaveri_ip_blocks_vd[] =
|
|
|
+{
|
|
|
+ /* ORDER MATTERS! */
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_COMMON,
|
|
|
+ .major = 1,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &cik_common_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_GMC,
|
|
|
+ .major = 7,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &gmc_v7_0_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_IH,
|
|
|
+ .major = 2,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &cik_ih_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_SMC,
|
|
|
+ .major = 7,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &amdgpu_pp_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_DCE,
|
|
|
+ .major = 8,
|
|
|
+ .minor = 1,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &dce_virtual_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_GFX,
|
|
|
+ .major = 7,
|
|
|
+ .minor = 1,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &gfx_v7_0_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_SDMA,
|
|
|
+ .major = 2,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &cik_sdma_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_UVD,
|
|
|
+ .major = 4,
|
|
|
+ .minor = 2,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &uvd_v4_2_ip_funcs,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = AMD_IP_BLOCK_TYPE_VCE,
|
|
|
+ .major = 2,
|
|
|
+ .minor = 0,
|
|
|
+ .rev = 0,
|
|
|
+ .funcs = &vce_v2_0_ip_funcs,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
int cik_set_ip_blocks(struct amdgpu_device *adev)
|
|
|
{
|
|
|
switch (adev->asic_type) {
|