drm/radeon/kms: add dpm support for cayman (v5)
This adds dpm support for cayman asics. This includes: - clockgating - dynamic engine clock scaling - dynamic memory clock scaling - dynamic voltage scaling - dynamic pcie gen1/gen2 switching (requires additional acpi support) - power containment - shader power scaling Set radeon.dpm=1 to enable. v2: fold in tdp fix v3: fix indentation v4: fix 64 bit div v5: attempt to fix state enable Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
This commit is contained in:
@@ -254,6 +254,26 @@ static const u8 caicos_smc_int_vectors[] =
|
||||
0x05, 0x0A, 0x05, 0x0A
|
||||
};
|
||||
|
||||
static const u8 cayman_smc_int_vectors[] =
|
||||
{
|
||||
0x12, 0x05, 0x12, 0x05,
|
||||
0x12, 0x05, 0x12, 0x05,
|
||||
0x12, 0x05, 0x12, 0x05,
|
||||
0x12, 0x05, 0x12, 0x05,
|
||||
0x12, 0x05, 0x12, 0x05,
|
||||
0x12, 0x05, 0x12, 0x05,
|
||||
0x12, 0x05, 0x12, 0x05,
|
||||
0x12, 0x05, 0x12, 0x05,
|
||||
0x12, 0x05, 0x12, 0x05,
|
||||
0x12, 0x05, 0x12, 0x05,
|
||||
0x12, 0x05, 0x12, 0x05,
|
||||
0x12, 0x05, 0x12, 0x05,
|
||||
0x12, 0x05, 0x18, 0xEA,
|
||||
0x12, 0x20, 0x1C, 0x34,
|
||||
0x1C, 0x34, 0x08, 0x72,
|
||||
0x08, 0x72, 0x08, 0x72
|
||||
};
|
||||
|
||||
int rv770_set_smc_sram_address(struct radeon_device *rdev,
|
||||
u16 smc_address, u16 limit)
|
||||
{
|
||||
@@ -544,6 +564,13 @@ int rv770_load_smc_ucode(struct radeon_device *rdev,
|
||||
int_vect_start_address = CAICOS_SMC_INT_VECTOR_START;
|
||||
int_vect_size = CAICOS_SMC_INT_VECTOR_SIZE;
|
||||
break;
|
||||
case CHIP_CAYMAN:
|
||||
ucode_start_address = CAYMAN_SMC_UCODE_START;
|
||||
ucode_size = CAYMAN_SMC_UCODE_SIZE;
|
||||
int_vect = (const u8 *)&cayman_smc_int_vectors;
|
||||
int_vect_start_address = CAYMAN_SMC_INT_VECTOR_START;
|
||||
int_vect_size = CAYMAN_SMC_INT_VECTOR_SIZE;
|
||||
break;
|
||||
default:
|
||||
DRM_ERROR("unknown asic in smc ucode loader\n");
|
||||
BUG();
|
||||
|
Reference in New Issue
Block a user