aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/vi.c
diff options
context:
space:
mode:
authorDavid Zhang <david1.zhang@amd.com>2015-07-07 13:05:16 -0400
committerAlex Deucher <alexander.deucher@amd.com>2015-08-17 16:50:23 -0400
commit48299f95f75b695329c53a33dd6673ccf1b5a03f (patch)
treec3a31d3a40fd716eae255eb13af7afcae5f49caf /drivers/gpu/drm/amd/amdgpu/vi.c
parent41548ef78bbf26994546ea5225ad4b4c1bf96d1f (diff)
drm/amdgpu: Add Fiji DID 0x7300 common support
Signed-off-by: David Zhang <david1.zhang@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/vi.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/vi.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c
index 2095f57c27e1..7d1ae2437309 100644
--- a/drivers/gpu/drm/amd/amdgpu/vi.c
+++ b/drivers/gpu/drm/amd/amdgpu/vi.c
@@ -203,6 +203,17 @@ static const u32 tonga_mgcg_cgcg_init[] =
203 mmHDP_XDP_CGTT_BLK_CTRL, 0xc0000fff, 0x00000104, 203 mmHDP_XDP_CGTT_BLK_CTRL, 0xc0000fff, 0x00000104,
204}; 204};
205 205
206static const u32 fiji_mgcg_cgcg_init[] =
207{
208 mmCGTT_DRM_CLK_CTRL0, 0xffffffff, 0x00600100,
209 mmPCIE_INDEX, 0xffffffff, 0x0140001c,
210 mmPCIE_DATA, 0x000f0000, 0x00000000,
211 mmSMC_IND_INDEX_4, 0xffffffff, 0xC060000C,
212 mmSMC_IND_DATA_4, 0xc0000fff, 0x00000100,
213 mmCGTT_DRM_CLK_CTRL0, 0xff000fff, 0x00000100,
214 mmHDP_XDP_CGTT_BLK_CTRL, 0xc0000fff, 0x00000104,
215};
216
206static const u32 iceland_mgcg_cgcg_init[] = 217static const u32 iceland_mgcg_cgcg_init[] =
207{ 218{
208 mmPCIE_INDEX, 0xffffffff, ixPCIE_CNTL2, 219 mmPCIE_INDEX, 0xffffffff, ixPCIE_CNTL2,
@@ -232,6 +243,11 @@ static void vi_init_golden_registers(struct amdgpu_device *adev)
232 iceland_mgcg_cgcg_init, 243 iceland_mgcg_cgcg_init,
233 (const u32)ARRAY_SIZE(iceland_mgcg_cgcg_init)); 244 (const u32)ARRAY_SIZE(iceland_mgcg_cgcg_init));
234 break; 245 break;
246 case CHIP_FIJI:
247 amdgpu_program_register_sequence(adev,
248 fiji_mgcg_cgcg_init,
249 (const u32)ARRAY_SIZE(fiji_mgcg_cgcg_init));
250 break;
235 case CHIP_TONGA: 251 case CHIP_TONGA:
236 amdgpu_program_register_sequence(adev, 252 amdgpu_program_register_sequence(adev,
237 tonga_mgcg_cgcg_init, 253 tonga_mgcg_cgcg_init,
@@ -469,6 +485,7 @@ static int vi_read_register(struct amdgpu_device *adev, u32 se_num,
469 asic_register_table = tonga_allowed_read_registers; 485 asic_register_table = tonga_allowed_read_registers;
470 size = ARRAY_SIZE(tonga_allowed_read_registers); 486 size = ARRAY_SIZE(tonga_allowed_read_registers);
471 break; 487 break;
488 case CHIP_FIJI:
472 case CHIP_TONGA: 489 case CHIP_TONGA:
473 case CHIP_CARRIZO: 490 case CHIP_CARRIZO:
474 asic_register_table = cz_allowed_read_registers; 491 asic_register_table = cz_allowed_read_registers;
@@ -1147,6 +1164,18 @@ static const struct amdgpu_ip_block_version tonga_ip_blocks[] =
1147 }, 1164 },
1148}; 1165};
1149 1166
1167static const struct amdgpu_ip_block_version fiji_ip_blocks[] =
1168{
1169 /* ORDER MATTERS! */
1170 {
1171 .type = AMD_IP_BLOCK_TYPE_COMMON,
1172 .major = 2,
1173 .minor = 0,
1174 .rev = 0,
1175 .funcs = &vi_common_ip_funcs,
1176 }
1177};
1178
1150static const struct amdgpu_ip_block_version cz_ip_blocks[] = 1179static const struct amdgpu_ip_block_version cz_ip_blocks[] =
1151{ 1180{
1152 /* ORDER MATTERS! */ 1181 /* ORDER MATTERS! */
@@ -1222,6 +1251,10 @@ int vi_set_ip_blocks(struct amdgpu_device *adev)
1222 adev->ip_blocks = topaz_ip_blocks; 1251 adev->ip_blocks = topaz_ip_blocks;
1223 adev->num_ip_blocks = ARRAY_SIZE(topaz_ip_blocks); 1252 adev->num_ip_blocks = ARRAY_SIZE(topaz_ip_blocks);
1224 break; 1253 break;
1254 case CHIP_FIJI:
1255 adev->ip_blocks = fiji_ip_blocks;
1256 adev->num_ip_blocks = ARRAY_SIZE(fiji_ip_blocks);
1257 break;
1225 case CHIP_TONGA: 1258 case CHIP_TONGA:
1226 adev->ip_blocks = tonga_ip_blocks; 1259 adev->ip_blocks = tonga_ip_blocks;
1227 adev->num_ip_blocks = ARRAY_SIZE(tonga_ip_blocks); 1260 adev->num_ip_blocks = ARRAY_SIZE(tonga_ip_blocks);
@@ -1299,6 +1332,7 @@ static int vi_common_early_init(void *handle)
1299 if (amdgpu_smc_load_fw && smc_enabled) 1332 if (amdgpu_smc_load_fw && smc_enabled)
1300 adev->firmware.smu_load = true; 1333 adev->firmware.smu_load = true;
1301 break; 1334 break;
1335 case CHIP_FIJI:
1302 case CHIP_TONGA: 1336 case CHIP_TONGA:
1303 adev->has_uvd = true; 1337 adev->has_uvd = true;
1304 adev->cg_flags = 0; 1338 adev->cg_flags = 0;