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

drm/amdgpu: update the core VI support for Stoney

Add core VI enablement for Stoney.

Signed-off-by: Samuel Li <samuel.li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Samuel Li and committed by
Alex Deucher
39bb0c92 cfaba566

+34 -7
+2 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
··· 1166 1166 case CHIP_TONGA: 1167 1167 case CHIP_FIJI: 1168 1168 case CHIP_CARRIZO: 1169 - if (adev->asic_type == CHIP_CARRIZO) 1169 + case CHIP_STONEY: 1170 + if (adev->asic_type == CHIP_CARRIZO || adev->asic_type == CHIP_STONEY) 1170 1171 adev->family = AMDGPU_FAMILY_CZ; 1171 1172 else 1172 1173 adev->family = AMDGPU_FAMILY_VI;
+31 -5
drivers/gpu/drm/amd/amdgpu/vi.c
··· 232 232 mmHDP_XDP_CGTT_BLK_CTRL, 0xc0000fff, 0x00000104, 233 233 }; 234 234 235 + static const u32 stoney_mgcg_cgcg_init[] = 236 + { 237 + mmCGTT_DRM_CLK_CTRL0, 0xffffffff, 0x00000100, 238 + mmHDP_XDP_CGTT_BLK_CTRL, 0xffffffff, 0x00000104, 239 + mmHDP_HOST_PATH_CNTL, 0xffffffff, 0x0f000027, 240 + }; 241 + 235 242 static void vi_init_golden_registers(struct amdgpu_device *adev) 236 243 { 237 244 /* Some of the registers might be dependent on GRBM_GFX_INDEX */ ··· 264 257 amdgpu_program_register_sequence(adev, 265 258 cz_mgcg_cgcg_init, 266 259 (const u32)ARRAY_SIZE(cz_mgcg_cgcg_init)); 260 + break; 261 + case CHIP_STONEY: 262 + amdgpu_program_register_sequence(adev, 263 + stoney_mgcg_cgcg_init, 264 + (const u32)ARRAY_SIZE(stoney_mgcg_cgcg_init)); 267 265 break; 268 266 default: 269 267 break; ··· 500 488 case CHIP_FIJI: 501 489 case CHIP_TONGA: 502 490 case CHIP_CARRIZO: 491 + case CHIP_STONEY: 503 492 asic_register_table = cz_allowed_read_registers; 504 493 size = ARRAY_SIZE(cz_allowed_read_registers); 505 494 break; ··· 556 543 RREG32(mmSRBM_STATUS2)); 557 544 dev_info(adev->dev, " SDMA0_STATUS_REG = 0x%08X\n", 558 545 RREG32(mmSDMA0_STATUS_REG + SDMA0_REGISTER_OFFSET)); 559 - dev_info(adev->dev, " SDMA1_STATUS_REG = 0x%08X\n", 560 - RREG32(mmSDMA0_STATUS_REG + SDMA1_REGISTER_OFFSET)); 546 + if (adev->sdma.num_instances > 1) { 547 + dev_info(adev->dev, " SDMA1_STATUS_REG = 0x%08X\n", 548 + RREG32(mmSDMA0_STATUS_REG + SDMA1_REGISTER_OFFSET)); 549 + } 561 550 dev_info(adev->dev, " CP_STAT = 0x%08x\n", RREG32(mmCP_STAT)); 562 551 dev_info(adev->dev, " CP_STALLED_STAT1 = 0x%08x\n", 563 552 RREG32(mmCP_STALLED_STAT1)); ··· 654 639 reset_mask |= AMDGPU_RESET_DMA; 655 640 656 641 /* SDMA1_STATUS_REG */ 657 - tmp = RREG32(mmSDMA0_STATUS_REG + SDMA1_REGISTER_OFFSET); 658 - if (!(tmp & SDMA0_STATUS_REG__IDLE_MASK)) 659 - reset_mask |= AMDGPU_RESET_DMA1; 642 + if (adev->sdma.num_instances > 1) { 643 + tmp = RREG32(mmSDMA0_STATUS_REG + SDMA1_REGISTER_OFFSET); 644 + if (!(tmp & SDMA0_STATUS_REG__IDLE_MASK)) 645 + reset_mask |= AMDGPU_RESET_DMA1; 646 + } 660 647 #if 0 661 648 /* VCE_STATUS */ 662 649 if (adev->asic_type != CHIP_TOPAZ) { ··· 1333 1316 adev->num_ip_blocks = ARRAY_SIZE(tonga_ip_blocks); 1334 1317 break; 1335 1318 case CHIP_CARRIZO: 1319 + case CHIP_STONEY: 1336 1320 adev->ip_blocks = cz_ip_blocks; 1337 1321 adev->num_ip_blocks = ARRAY_SIZE(cz_ip_blocks); 1338 1322 break; ··· 1345 1327 return 0; 1346 1328 } 1347 1329 1330 + #define ATI_REV_ID_FUSE_MACRO__ADDRESS 0xC0014044 1331 + #define ATI_REV_ID_FUSE_MACRO__SHIFT 9 1332 + #define ATI_REV_ID_FUSE_MACRO__MASK 0x00001E00 1333 + 1348 1334 static uint32_t vi_get_rev_id(struct amdgpu_device *adev) 1349 1335 { 1350 1336 if (adev->asic_type == CHIP_TOPAZ) 1351 1337 return (RREG32(mmPCIE_EFUSE4) & PCIE_EFUSE4__STRAP_BIF_ATI_REV_ID_MASK) 1352 1338 >> PCIE_EFUSE4__STRAP_BIF_ATI_REV_ID__SHIFT; 1339 + else if (adev->flags & AMD_IS_APU) 1340 + return (RREG32_SMC(ATI_REV_ID_FUSE_MACRO__ADDRESS) & ATI_REV_ID_FUSE_MACRO__MASK) 1341 + >> ATI_REV_ID_FUSE_MACRO__SHIFT; 1353 1342 else 1354 1343 return (RREG32(mmCC_DRM_ID_STRAPS) & CC_DRM_ID_STRAPS__ATI_REV_ID_MASK) 1355 1344 >> CC_DRM_ID_STRAPS__ATI_REV_ID__SHIFT; ··· 1423 1398 adev->firmware.smu_load = true; 1424 1399 break; 1425 1400 case CHIP_CARRIZO: 1401 + case CHIP_STONEY: 1426 1402 adev->has_uvd = true; 1427 1403 adev->cg_flags = 0; 1428 1404 /* Disable UVD pg */
+1 -1
include/uapi/drm/amdgpu_drm.h
··· 640 640 #define AMDGPU_FAMILY_CI 120 /* Bonaire, Hawaii */ 641 641 #define AMDGPU_FAMILY_KV 125 /* Kaveri, Kabini, Mullins */ 642 642 #define AMDGPU_FAMILY_VI 130 /* Iceland, Tonga */ 643 - #define AMDGPU_FAMILY_CZ 135 /* Carrizo */ 643 + #define AMDGPU_FAMILY_CZ 135 /* Carrizo, Stoney */ 644 644 645 645 #endif