From: Flora Cui <flora....@amd.com>

Signed-off-by: Flora Cui <Flora.Cui at amd.com>
Reviewed-by: Jammy Zhou <Jammy.Zhou at amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |  2 +
 drivers/gpu/drm/amd/amdgpu/vi.c            | 87 ++++++++++++++++++++++++++++++
 2 files changed, 89 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index e0c2e99..79a3e32 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -1152,6 +1152,8 @@ static int amdgpu_early_init(struct amdgpu_device *adev)
        case CHIP_TOPAZ:
        case CHIP_TONGA:
        case CHIP_FIJI:
+       case CHIP_BAFFIN:
+       case CHIP_ELLESMERE:
        case CHIP_CARRIZO:
        case CHIP_STONEY:
                if (adev->asic_type == CHIP_CARRIZO || adev->asic_type == 
CHIP_STONEY)
diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c
index 328707c..f554c7f 100644
--- a/drivers/gpu/drm/amd/amdgpu/vi.c
+++ b/drivers/gpu/drm/amd/amdgpu/vi.c
@@ -277,6 +277,8 @@ static void vi_init_golden_registers(struct amdgpu_device 
*adev)
                                                 stoney_mgcg_cgcg_init,
                                                 (const 
u32)ARRAY_SIZE(stoney_mgcg_cgcg_init));
                break;
+       case CHIP_BAFFIN:
+       case CHIP_ELLESMERE:
        default:
                break;
        }
@@ -538,6 +540,8 @@ static int vi_read_register(struct amdgpu_device *adev, u32 
se_num,
                break;
        case CHIP_FIJI:
        case CHIP_TONGA:
+       case CHIP_BAFFIN:
+       case CHIP_ELLESMERE:
        case CHIP_CARRIZO:
        case CHIP_STONEY:
                asic_register_table = cz_allowed_read_registers;
@@ -908,6 +912,74 @@ static const struct amdgpu_ip_block_version 
fiji_ip_blocks[] =
        },
 };

+static const struct amdgpu_ip_block_version baffin_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 cz_ip_blocks[] =
 {
        /* ORDER MATTERS! */
@@ -1239,6 +1311,11 @@ int vi_set_ip_blocks(struct amdgpu_device *adev)
                adev->num_ip_blocks = ARRAY_SIZE(tonga_ip_blocks);
 #endif
                break;
+       case CHIP_BAFFIN:
+       case CHIP_ELLESMERE:
+               adev->ip_blocks = baffin_ip_blocks;
+               adev->num_ip_blocks = ARRAY_SIZE(baffin_ip_blocks);
+               break;
        case CHIP_CARRIZO:
        case CHIP_STONEY:
 #if defined(CONFIG_DRM_AMD_DAL)
@@ -1335,6 +1412,16 @@ static int vi_common_early_init(void *handle)
                adev->pg_flags = 0;
                adev->external_rev_id = adev->rev_id + 0x14;
                break;
+       case CHIP_BAFFIN:
+               adev->cg_flags = 0;
+               adev->pg_flags = 0;
+               adev->external_rev_id = adev->rev_id + 0x5A;
+               break;
+       case CHIP_ELLESMERE:
+               adev->cg_flags = 0;
+               adev->pg_flags = 0;
+               adev->external_rev_id = adev->rev_id + 0x50;
+               break;
        case CHIP_CARRIZO:
        case CHIP_STONEY:
                adev->cg_flags = 0;
-- 
2.5.0

Reply via email to