diff options
24 files changed, 228 insertions, 38 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index 96ad79627dbb..e9af03113fc3 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h | |||
| @@ -1037,7 +1037,6 @@ struct amdgpu_uvd { | |||
| 1037 | bool use_ctx_buf; | 1037 | bool use_ctx_buf; |
| 1038 | struct amd_sched_entity entity; | 1038 | struct amd_sched_entity entity; |
| 1039 | uint32_t srbm_soft_reset; | 1039 | uint32_t srbm_soft_reset; |
| 1040 | bool is_powergated; | ||
| 1041 | }; | 1040 | }; |
| 1042 | 1041 | ||
| 1043 | /* | 1042 | /* |
| @@ -1066,7 +1065,6 @@ struct amdgpu_vce { | |||
| 1066 | struct amd_sched_entity entity; | 1065 | struct amd_sched_entity entity; |
| 1067 | uint32_t srbm_soft_reset; | 1066 | uint32_t srbm_soft_reset; |
| 1068 | unsigned num_rings; | 1067 | unsigned num_rings; |
| 1069 | bool is_powergated; | ||
| 1070 | }; | 1068 | }; |
| 1071 | 1069 | ||
| 1072 | /* | 1070 | /* |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c index fa34dcae392f..d9e5aa4a79ef 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | |||
| @@ -834,16 +834,18 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device, | |||
| 834 | case CHIP_TOPAZ: | 834 | case CHIP_TOPAZ: |
| 835 | if (((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x81)) || | 835 | if (((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x81)) || |
| 836 | ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x83)) || | 836 | ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x83)) || |
| 837 | ((adev->pdev->device == 0x6907) && (adev->pdev->revision == 0x87))) | 837 | ((adev->pdev->device == 0x6907) && (adev->pdev->revision == 0x87))) { |
| 838 | info->is_kicker = true; | ||
| 838 | strcpy(fw_name, "amdgpu/topaz_k_smc.bin"); | 839 | strcpy(fw_name, "amdgpu/topaz_k_smc.bin"); |
| 839 | else | 840 | } else |
| 840 | strcpy(fw_name, "amdgpu/topaz_smc.bin"); | 841 | strcpy(fw_name, "amdgpu/topaz_smc.bin"); |
| 841 | break; | 842 | break; |
| 842 | case CHIP_TONGA: | 843 | case CHIP_TONGA: |
| 843 | if (((adev->pdev->device == 0x6939) && (adev->pdev->revision == 0xf1)) || | 844 | if (((adev->pdev->device == 0x6939) && (adev->pdev->revision == 0xf1)) || |
| 844 | ((adev->pdev->device == 0x6938) && (adev->pdev->revision == 0xf1))) | 845 | ((adev->pdev->device == 0x6938) && (adev->pdev->revision == 0xf1))) { |
| 846 | info->is_kicker = true; | ||
| 845 | strcpy(fw_name, "amdgpu/tonga_k_smc.bin"); | 847 | strcpy(fw_name, "amdgpu/tonga_k_smc.bin"); |
| 846 | else | 848 | } else |
| 847 | strcpy(fw_name, "amdgpu/tonga_smc.bin"); | 849 | strcpy(fw_name, "amdgpu/tonga_smc.bin"); |
| 848 | break; | 850 | break; |
| 849 | case CHIP_FIJI: | 851 | case CHIP_FIJI: |
| @@ -858,9 +860,10 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device, | |||
| 858 | ((adev->pdev->device == 0x67ff) && | 860 | ((adev->pdev->device == 0x67ff) && |
| 859 | ((adev->pdev->revision == 0xcf) || | 861 | ((adev->pdev->revision == 0xcf) || |
| 860 | (adev->pdev->revision == 0xef) || | 862 | (adev->pdev->revision == 0xef) || |
| 861 | (adev->pdev->revision == 0xff)))) | 863 | (adev->pdev->revision == 0xff)))) { |
| 864 | info->is_kicker = true; | ||
| 862 | strcpy(fw_name, "amdgpu/polaris11_k_smc.bin"); | 865 | strcpy(fw_name, "amdgpu/polaris11_k_smc.bin"); |
| 863 | else | 866 | } else |
| 864 | strcpy(fw_name, "amdgpu/polaris11_smc.bin"); | 867 | strcpy(fw_name, "amdgpu/polaris11_smc.bin"); |
| 865 | } else if (type == CGS_UCODE_ID_SMU_SK) { | 868 | } else if (type == CGS_UCODE_ID_SMU_SK) { |
| 866 | strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin"); | 869 | strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin"); |
| @@ -874,9 +877,10 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device, | |||
| 874 | (adev->pdev->revision == 0xe4) || | 877 | (adev->pdev->revision == 0xe4) || |
| 875 | (adev->pdev->revision == 0xe5) || | 878 | (adev->pdev->revision == 0xe5) || |
| 876 | (adev->pdev->revision == 0xe7) || | 879 | (adev->pdev->revision == 0xe7) || |
| 877 | (adev->pdev->revision == 0xef))) | 880 | (adev->pdev->revision == 0xef))) { |
| 881 | info->is_kicker = true; | ||
| 878 | strcpy(fw_name, "amdgpu/polaris10_k_smc.bin"); | 882 | strcpy(fw_name, "amdgpu/polaris10_k_smc.bin"); |
| 879 | else | 883 | } else |
| 880 | strcpy(fw_name, "amdgpu/polaris10_smc.bin"); | 884 | strcpy(fw_name, "amdgpu/polaris10_smc.bin"); |
| 881 | } else if (type == CGS_UCODE_ID_SMU_SK) { | 885 | } else if (type == CGS_UCODE_ID_SMU_SK) { |
| 882 | strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin"); | 886 | strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin"); |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c index ec7037a48b6e..51d759463384 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | |||
| @@ -504,13 +504,7 @@ static void amdgpu_gem_va_update_vm(struct amdgpu_device *adev, | |||
| 504 | list_for_each_entry(entry, list, head) { | 504 | list_for_each_entry(entry, list, head) { |
| 505 | struct amdgpu_bo *bo = | 505 | struct amdgpu_bo *bo = |
| 506 | container_of(entry->bo, struct amdgpu_bo, tbo); | 506 | container_of(entry->bo, struct amdgpu_bo, tbo); |
| 507 | 507 | if (amdgpu_gem_va_check(NULL, bo)) | |
| 508 | /* if anything is swapped out don't swap it in here, | ||
| 509 | just abort and wait for the next CS */ | ||
| 510 | if (!amdgpu_bo_gpu_accessible(bo)) | ||
| 511 | goto error; | ||
| 512 | |||
| 513 | if (bo->shadow && !amdgpu_bo_gpu_accessible(bo->shadow)) | ||
| 514 | goto error; | 508 | goto error; |
| 515 | } | 509 | } |
| 516 | 510 | ||
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c index 95e026a4a2de..346e80a7119b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | |||
| @@ -1296,7 +1296,8 @@ void amdgpu_pm_compute_clocks(struct amdgpu_device *adev) | |||
| 1296 | if (!adev->pm.dpm_enabled) | 1296 | if (!adev->pm.dpm_enabled) |
| 1297 | return; | 1297 | return; |
| 1298 | 1298 | ||
| 1299 | amdgpu_display_bandwidth_update(adev); | 1299 | if (adev->mode_info.num_crtc) |
| 1300 | amdgpu_display_bandwidth_update(adev); | ||
| 1300 | 1301 | ||
| 1301 | for (i = 0; i < AMDGPU_MAX_RINGS; i++) { | 1302 | for (i = 0; i < AMDGPU_MAX_RINGS; i++) { |
| 1302 | struct amdgpu_ring *ring = adev->rings[i]; | 1303 | struct amdgpu_ring *ring = adev->rings[i]; |
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c index 1cf1d9d1aec1..5b24e89552ec 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | |||
| @@ -3737,9 +3737,15 @@ static void dce_v11_0_encoder_add(struct amdgpu_device *adev, | |||
| 3737 | default: | 3737 | default: |
| 3738 | encoder->possible_crtcs = 0x3; | 3738 | encoder->possible_crtcs = 0x3; |
| 3739 | break; | 3739 | break; |
| 3740 | case 3: | ||
| 3741 | encoder->possible_crtcs = 0x7; | ||
| 3742 | break; | ||
| 3740 | case 4: | 3743 | case 4: |
| 3741 | encoder->possible_crtcs = 0xf; | 3744 | encoder->possible_crtcs = 0xf; |
| 3742 | break; | 3745 | break; |
| 3746 | case 5: | ||
| 3747 | encoder->possible_crtcs = 0x1f; | ||
| 3748 | break; | ||
| 3743 | case 6: | 3749 | case 6: |
| 3744 | encoder->possible_crtcs = 0x3f; | 3750 | encoder->possible_crtcs = 0x3f; |
| 3745 | break; | 3751 | break; |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c index e3589b55a1e1..1f9354541f29 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | |||
| @@ -1983,6 +1983,14 @@ static void gfx_v7_0_gpu_init(struct amdgpu_device *adev) | |||
| 1983 | WREG32(mmPA_CL_ENHANCE, PA_CL_ENHANCE__CLIP_VTX_REORDER_ENA_MASK | | 1983 | WREG32(mmPA_CL_ENHANCE, PA_CL_ENHANCE__CLIP_VTX_REORDER_ENA_MASK | |
| 1984 | (3 << PA_CL_ENHANCE__NUM_CLIP_SEQ__SHIFT)); | 1984 | (3 << PA_CL_ENHANCE__NUM_CLIP_SEQ__SHIFT)); |
| 1985 | WREG32(mmPA_SC_ENHANCE, PA_SC_ENHANCE__ENABLE_PA_SC_OUT_OF_ORDER_MASK); | 1985 | WREG32(mmPA_SC_ENHANCE, PA_SC_ENHANCE__ENABLE_PA_SC_OUT_OF_ORDER_MASK); |
| 1986 | |||
| 1987 | tmp = RREG32(mmSPI_ARB_PRIORITY); | ||
| 1988 | tmp = REG_SET_FIELD(tmp, SPI_ARB_PRIORITY, PIPE_ORDER_TS0, 2); | ||
| 1989 | tmp = REG_SET_FIELD(tmp, SPI_ARB_PRIORITY, PIPE_ORDER_TS1, 2); | ||
| 1990 | tmp = REG_SET_FIELD(tmp, SPI_ARB_PRIORITY, PIPE_ORDER_TS2, 2); | ||
| 1991 | tmp = REG_SET_FIELD(tmp, SPI_ARB_PRIORITY, PIPE_ORDER_TS3, 2); | ||
| 1992 | WREG32(mmSPI_ARB_PRIORITY, tmp); | ||
| 1993 | |||
| 1986 | mutex_unlock(&adev->grbm_idx_mutex); | 1994 | mutex_unlock(&adev->grbm_idx_mutex); |
| 1987 | 1995 | ||
| 1988 | udelay(50); | 1996 | udelay(50); |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c index 35f9cd83b821..67afc901905c 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | |||
| @@ -3898,6 +3898,14 @@ static void gfx_v8_0_gpu_init(struct amdgpu_device *adev) | |||
| 3898 | PA_SC_FIFO_SIZE__SC_HIZ_TILE_FIFO_SIZE__SHIFT) | | 3898 | PA_SC_FIFO_SIZE__SC_HIZ_TILE_FIFO_SIZE__SHIFT) | |
| 3899 | (adev->gfx.config.sc_earlyz_tile_fifo_size << | 3899 | (adev->gfx.config.sc_earlyz_tile_fifo_size << |
| 3900 | PA_SC_FIFO_SIZE__SC_EARLYZ_TILE_FIFO_SIZE__SHIFT)); | 3900 | PA_SC_FIFO_SIZE__SC_EARLYZ_TILE_FIFO_SIZE__SHIFT)); |
| 3901 | |||
| 3902 | tmp = RREG32(mmSPI_ARB_PRIORITY); | ||
| 3903 | tmp = REG_SET_FIELD(tmp, SPI_ARB_PRIORITY, PIPE_ORDER_TS0, 2); | ||
| 3904 | tmp = REG_SET_FIELD(tmp, SPI_ARB_PRIORITY, PIPE_ORDER_TS1, 2); | ||
| 3905 | tmp = REG_SET_FIELD(tmp, SPI_ARB_PRIORITY, PIPE_ORDER_TS2, 2); | ||
| 3906 | tmp = REG_SET_FIELD(tmp, SPI_ARB_PRIORITY, PIPE_ORDER_TS3, 2); | ||
| 3907 | WREG32(mmSPI_ARB_PRIORITY, tmp); | ||
| 3908 | |||
| 3901 | mutex_unlock(&adev->grbm_idx_mutex); | 3909 | mutex_unlock(&adev->grbm_idx_mutex); |
| 3902 | 3910 | ||
| 3903 | } | 3911 | } |
| @@ -7260,7 +7268,7 @@ static void gfx_v8_0_ring_emit_ce_meta_init(struct amdgpu_ring *ring, uint64_t c | |||
| 7260 | static union { | 7268 | static union { |
| 7261 | struct amdgpu_ce_ib_state regular; | 7269 | struct amdgpu_ce_ib_state regular; |
| 7262 | struct amdgpu_ce_ib_state_chained_ib chained; | 7270 | struct amdgpu_ce_ib_state_chained_ib chained; |
| 7263 | } ce_payload = {0}; | 7271 | } ce_payload = {}; |
| 7264 | 7272 | ||
| 7265 | if (ring->adev->virt.chained_ib_support) { | 7273 | if (ring->adev->virt.chained_ib_support) { |
| 7266 | ce_payload_addr = csa_addr + offsetof(struct amdgpu_gfx_meta_data_chained_ib, ce_payload); | 7274 | ce_payload_addr = csa_addr + offsetof(struct amdgpu_gfx_meta_data_chained_ib, ce_payload); |
| @@ -7287,7 +7295,7 @@ static void gfx_v8_0_ring_emit_de_meta_init(struct amdgpu_ring *ring, uint64_t c | |||
| 7287 | static union { | 7295 | static union { |
| 7288 | struct amdgpu_de_ib_state regular; | 7296 | struct amdgpu_de_ib_state regular; |
| 7289 | struct amdgpu_de_ib_state_chained_ib chained; | 7297 | struct amdgpu_de_ib_state_chained_ib chained; |
| 7290 | } de_payload = {0}; | 7298 | } de_payload = {}; |
| 7291 | 7299 | ||
| 7292 | gds_addr = csa_addr + 4096; | 7300 | gds_addr = csa_addr + 4096; |
| 7293 | if (ring->adev->virt.chained_ib_support) { | 7301 | if (ring->adev->virt.chained_ib_support) { |
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c index f15df99f0a06..b34cefc7ebd5 100644 --- a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c | |||
| @@ -401,7 +401,8 @@ static void uvd_v4_2_stop(struct amdgpu_device *adev) | |||
| 401 | break; | 401 | break; |
| 402 | mdelay(1); | 402 | mdelay(1); |
| 403 | } | 403 | } |
| 404 | break; | 404 | if (status & 2) |
| 405 | break; | ||
| 405 | } | 406 | } |
| 406 | 407 | ||
| 407 | for (i = 0; i < 10; ++i) { | 408 | for (i = 0; i < 10; ++i) { |
| @@ -411,7 +412,8 @@ static void uvd_v4_2_stop(struct amdgpu_device *adev) | |||
| 411 | break; | 412 | break; |
| 412 | mdelay(1); | 413 | mdelay(1); |
| 413 | } | 414 | } |
| 414 | break; | 415 | if (status & 0xf) |
| 416 | break; | ||
| 415 | } | 417 | } |
| 416 | 418 | ||
| 417 | /* Stall UMC and register bus before resetting VCPU */ | 419 | /* Stall UMC and register bus before resetting VCPU */ |
| @@ -424,7 +426,8 @@ static void uvd_v4_2_stop(struct amdgpu_device *adev) | |||
| 424 | break; | 426 | break; |
| 425 | mdelay(1); | 427 | mdelay(1); |
| 426 | } | 428 | } |
| 427 | break; | 429 | if (status & 0x240) |
| 430 | break; | ||
| 428 | } | 431 | } |
| 429 | 432 | ||
| 430 | WREG32_P(0x3D49, 0, ~(1 << 2)); | 433 | WREG32_P(0x3D49, 0, ~(1 << 2)); |
| @@ -723,7 +726,8 @@ static int uvd_v4_2_set_powergating_state(void *handle, | |||
| 723 | if (state == AMD_PG_STATE_GATE) { | 726 | if (state == AMD_PG_STATE_GATE) { |
| 724 | uvd_v4_2_stop(adev); | 727 | uvd_v4_2_stop(adev); |
| 725 | if (adev->pg_flags & AMD_PG_SUPPORT_UVD && amdgpu_dpm == 0) { | 728 | if (adev->pg_flags & AMD_PG_SUPPORT_UVD && amdgpu_dpm == 0) { |
| 726 | if (!(RREG32_SMC(ixCURRENT_PG_STATUS) & 0x4)) { | 729 | if (!(RREG32_SMC(ixCURRENT_PG_STATUS) & |
| 730 | CURRENT_PG_STATUS__UVD_PG_STATUS_MASK)) { | ||
| 727 | WREG32(mmUVD_PGFSM_CONFIG, (UVD_PGFSM_CONFIG__UVD_PGFSM_FSM_ADDR_MASK | | 731 | WREG32(mmUVD_PGFSM_CONFIG, (UVD_PGFSM_CONFIG__UVD_PGFSM_FSM_ADDR_MASK | |
| 728 | UVD_PGFSM_CONFIG__UVD_PGFSM_POWER_DOWN_MASK | | 732 | UVD_PGFSM_CONFIG__UVD_PGFSM_POWER_DOWN_MASK | |
| 729 | UVD_PGFSM_CONFIG__UVD_PGFSM_P1_SELECT_MASK)); | 733 | UVD_PGFSM_CONFIG__UVD_PGFSM_P1_SELECT_MASK)); |
| @@ -733,7 +737,8 @@ static int uvd_v4_2_set_powergating_state(void *handle, | |||
| 733 | return 0; | 737 | return 0; |
| 734 | } else { | 738 | } else { |
| 735 | if (adev->pg_flags & AMD_PG_SUPPORT_UVD && amdgpu_dpm == 0) { | 739 | if (adev->pg_flags & AMD_PG_SUPPORT_UVD && amdgpu_dpm == 0) { |
| 736 | if (RREG32_SMC(ixCURRENT_PG_STATUS) & 0x4) { | 740 | if (RREG32_SMC(ixCURRENT_PG_STATUS) & |
| 741 | CURRENT_PG_STATUS__UVD_PG_STATUS_MASK) { | ||
| 737 | WREG32(mmUVD_PGFSM_CONFIG, (UVD_PGFSM_CONFIG__UVD_PGFSM_FSM_ADDR_MASK | | 742 | WREG32(mmUVD_PGFSM_CONFIG, (UVD_PGFSM_CONFIG__UVD_PGFSM_FSM_ADDR_MASK | |
| 738 | UVD_PGFSM_CONFIG__UVD_PGFSM_POWER_UP_MASK | | 743 | UVD_PGFSM_CONFIG__UVD_PGFSM_POWER_UP_MASK | |
| 739 | UVD_PGFSM_CONFIG__UVD_PGFSM_P1_SELECT_MASK)); | 744 | UVD_PGFSM_CONFIG__UVD_PGFSM_P1_SELECT_MASK)); |
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c index 46e715193924..ad8c02e423d4 100644 --- a/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c | |||
| @@ -825,12 +825,10 @@ static int uvd_v5_0_set_powergating_state(void *handle, | |||
| 825 | 825 | ||
| 826 | if (state == AMD_PG_STATE_GATE) { | 826 | if (state == AMD_PG_STATE_GATE) { |
| 827 | uvd_v5_0_stop(adev); | 827 | uvd_v5_0_stop(adev); |
| 828 | adev->uvd.is_powergated = true; | ||
| 829 | } else { | 828 | } else { |
| 830 | ret = uvd_v5_0_start(adev); | 829 | ret = uvd_v5_0_start(adev); |
| 831 | if (ret) | 830 | if (ret) |
| 832 | goto out; | 831 | goto out; |
| 833 | adev->uvd.is_powergated = false; | ||
| 834 | } | 832 | } |
| 835 | 833 | ||
| 836 | out: | 834 | out: |
| @@ -844,7 +842,8 @@ static void uvd_v5_0_get_clockgating_state(void *handle, u32 *flags) | |||
| 844 | 842 | ||
| 845 | mutex_lock(&adev->pm.mutex); | 843 | mutex_lock(&adev->pm.mutex); |
| 846 | 844 | ||
| 847 | if (adev->uvd.is_powergated) { | 845 | if (RREG32_SMC(ixCURRENT_PG_STATUS) & |
| 846 | CURRENT_PG_STATUS__UVD_PG_STATUS_MASK) { | ||
| 848 | DRM_INFO("Cannot get clockgating state when UVD is powergated.\n"); | 847 | DRM_INFO("Cannot get clockgating state when UVD is powergated.\n"); |
| 849 | goto out; | 848 | goto out; |
| 850 | } | 849 | } |
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c index af83ab8c1250..18a6de4e1512 100644 --- a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c | |||
| @@ -1051,12 +1051,10 @@ static int uvd_v6_0_set_powergating_state(void *handle, | |||
| 1051 | 1051 | ||
| 1052 | if (state == AMD_PG_STATE_GATE) { | 1052 | if (state == AMD_PG_STATE_GATE) { |
| 1053 | uvd_v6_0_stop(adev); | 1053 | uvd_v6_0_stop(adev); |
| 1054 | adev->uvd.is_powergated = true; | ||
| 1055 | } else { | 1054 | } else { |
| 1056 | ret = uvd_v6_0_start(adev); | 1055 | ret = uvd_v6_0_start(adev); |
| 1057 | if (ret) | 1056 | if (ret) |
| 1058 | goto out; | 1057 | goto out; |
| 1059 | adev->uvd.is_powergated = false; | ||
| 1060 | } | 1058 | } |
| 1061 | 1059 | ||
| 1062 | out: | 1060 | out: |
| @@ -1070,7 +1068,8 @@ static void uvd_v6_0_get_clockgating_state(void *handle, u32 *flags) | |||
| 1070 | 1068 | ||
| 1071 | mutex_lock(&adev->pm.mutex); | 1069 | mutex_lock(&adev->pm.mutex); |
| 1072 | 1070 | ||
| 1073 | if (adev->uvd.is_powergated) { | 1071 | if (RREG32_SMC(ixCURRENT_PG_STATUS) & |
| 1072 | CURRENT_PG_STATUS__UVD_PG_STATUS_MASK) { | ||
| 1074 | DRM_INFO("Cannot get clockgating state when UVD is powergated.\n"); | 1073 | DRM_INFO("Cannot get clockgating state when UVD is powergated.\n"); |
| 1075 | goto out; | 1074 | goto out; |
| 1076 | } | 1075 | } |
diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c index a8c40eebdd78..93ec8815bb13 100644 --- a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c +++ b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c | |||
| @@ -510,6 +510,8 @@ static void vce_v3_0_mc_resume(struct amdgpu_device *adev, int idx) | |||
| 510 | WREG32(mmVCE_LMI_SWAP_CNTL, 0); | 510 | WREG32(mmVCE_LMI_SWAP_CNTL, 0); |
| 511 | WREG32(mmVCE_LMI_SWAP_CNTL1, 0); | 511 | WREG32(mmVCE_LMI_SWAP_CNTL1, 0); |
| 512 | WREG32(mmVCE_LMI_VM_CTRL, 0); | 512 | WREG32(mmVCE_LMI_VM_CTRL, 0); |
| 513 | WREG32_OR(mmVCE_VCPU_CNTL, 0x00100000); | ||
| 514 | |||
| 513 | if (adev->asic_type >= CHIP_STONEY) { | 515 | if (adev->asic_type >= CHIP_STONEY) { |
| 514 | WREG32(mmVCE_LMI_VCPU_CACHE_40BIT_BAR0, (adev->vce.gpu_addr >> 8)); | 516 | WREG32(mmVCE_LMI_VCPU_CACHE_40BIT_BAR0, (adev->vce.gpu_addr >> 8)); |
| 515 | WREG32(mmVCE_LMI_VCPU_CACHE_40BIT_BAR1, (adev->vce.gpu_addr >> 8)); | 517 | WREG32(mmVCE_LMI_VCPU_CACHE_40BIT_BAR1, (adev->vce.gpu_addr >> 8)); |
| @@ -766,12 +768,10 @@ static int vce_v3_0_set_powergating_state(void *handle, | |||
| 766 | ret = vce_v3_0_stop(adev); | 768 | ret = vce_v3_0_stop(adev); |
| 767 | if (ret) | 769 | if (ret) |
| 768 | goto out; | 770 | goto out; |
| 769 | adev->vce.is_powergated = true; | ||
| 770 | } else { | 771 | } else { |
| 771 | ret = vce_v3_0_start(adev); | 772 | ret = vce_v3_0_start(adev); |
| 772 | if (ret) | 773 | if (ret) |
| 773 | goto out; | 774 | goto out; |
| 774 | adev->vce.is_powergated = false; | ||
| 775 | } | 775 | } |
| 776 | 776 | ||
| 777 | out: | 777 | out: |
| @@ -785,7 +785,8 @@ static void vce_v3_0_get_clockgating_state(void *handle, u32 *flags) | |||
| 785 | 785 | ||
| 786 | mutex_lock(&adev->pm.mutex); | 786 | mutex_lock(&adev->pm.mutex); |
| 787 | 787 | ||
| 788 | if (adev->vce.is_powergated) { | 788 | if (RREG32_SMC(ixCURRENT_PG_STATUS) & |
| 789 | CURRENT_PG_STATUS__VCE_PG_STATUS_MASK) { | ||
| 789 | DRM_INFO("Cannot get clockgating state when VCE is powergated.\n"); | 790 | DRM_INFO("Cannot get clockgating state when VCE is powergated.\n"); |
| 790 | goto out; | 791 | goto out; |
| 791 | } | 792 | } |
diff --git a/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_0_1_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_0_1_sh_mask.h index 25882a4dea5d..34c6ff52710e 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_0_1_sh_mask.h +++ b/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_0_1_sh_mask.h | |||
| @@ -5452,5 +5452,7 @@ | |||
| 5452 | #define ROM_SW_DATA_63__ROM_SW_DATA__SHIFT 0x0 | 5452 | #define ROM_SW_DATA_63__ROM_SW_DATA__SHIFT 0x0 |
| 5453 | #define ROM_SW_DATA_64__ROM_SW_DATA_MASK 0xffffffff | 5453 | #define ROM_SW_DATA_64__ROM_SW_DATA_MASK 0xffffffff |
| 5454 | #define ROM_SW_DATA_64__ROM_SW_DATA__SHIFT 0x0 | 5454 | #define ROM_SW_DATA_64__ROM_SW_DATA__SHIFT 0x0 |
| 5455 | #define CURRENT_PG_STATUS__VCE_PG_STATUS_MASK 0x00000002 | ||
| 5456 | #define CURRENT_PG_STATUS__UVD_PG_STATUS_MASK 0x00000004 | ||
| 5455 | 5457 | ||
| 5456 | #endif /* SMU_7_0_1_SH_MASK_H */ | 5458 | #endif /* SMU_7_0_1_SH_MASK_H */ |
diff --git a/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_1_d.h b/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_1_d.h index a9ef1562f43b..66597c64f525 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_1_d.h +++ b/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_1_d.h | |||
| @@ -1121,5 +1121,6 @@ | |||
| 1121 | #define ixROM_SW_DATA_62 0xc060011c | 1121 | #define ixROM_SW_DATA_62 0xc060011c |
| 1122 | #define ixROM_SW_DATA_63 0xc0600120 | 1122 | #define ixROM_SW_DATA_63 0xc0600120 |
| 1123 | #define ixROM_SW_DATA_64 0xc0600124 | 1123 | #define ixROM_SW_DATA_64 0xc0600124 |
| 1124 | #define ixCURRENT_PG_STATUS 0xc020029c | ||
| 1124 | 1125 | ||
| 1125 | #endif /* SMU_7_1_1_D_H */ | 1126 | #endif /* SMU_7_1_1_D_H */ |
diff --git a/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_1_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_1_sh_mask.h index 2c997f7b5d13..fb06f2e2f6e6 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_1_sh_mask.h +++ b/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_1_sh_mask.h | |||
| @@ -4860,5 +4860,7 @@ | |||
| 4860 | #define ROM_SW_DATA_63__ROM_SW_DATA__SHIFT 0x0 | 4860 | #define ROM_SW_DATA_63__ROM_SW_DATA__SHIFT 0x0 |
| 4861 | #define ROM_SW_DATA_64__ROM_SW_DATA_MASK 0xffffffff | 4861 | #define ROM_SW_DATA_64__ROM_SW_DATA_MASK 0xffffffff |
| 4862 | #define ROM_SW_DATA_64__ROM_SW_DATA__SHIFT 0x0 | 4862 | #define ROM_SW_DATA_64__ROM_SW_DATA__SHIFT 0x0 |
| 4863 | #define CURRENT_PG_STATUS__VCE_PG_STATUS_MASK 0x00000002 | ||
| 4864 | #define CURRENT_PG_STATUS__UVD_PG_STATUS_MASK 0x00000004 | ||
| 4863 | 4865 | ||
| 4864 | #endif /* SMU_7_1_1_SH_MASK_H */ | 4866 | #endif /* SMU_7_1_1_SH_MASK_H */ |
diff --git a/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_2_d.h b/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_2_d.h index 22dd4c2b7290..4446d43d2a8f 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_2_d.h +++ b/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_2_d.h | |||
| @@ -1271,5 +1271,6 @@ | |||
| 1271 | #define ixROM_SW_DATA_62 0xc060011c | 1271 | #define ixROM_SW_DATA_62 0xc060011c |
| 1272 | #define ixROM_SW_DATA_63 0xc0600120 | 1272 | #define ixROM_SW_DATA_63 0xc0600120 |
| 1273 | #define ixROM_SW_DATA_64 0xc0600124 | 1273 | #define ixROM_SW_DATA_64 0xc0600124 |
| 1274 | #define ixCURRENT_PG_STATUS 0xc020029c | ||
| 1274 | 1275 | ||
| 1275 | #endif /* SMU_7_1_2_D_H */ | 1276 | #endif /* SMU_7_1_2_D_H */ |
diff --git a/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_2_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_2_sh_mask.h index 518fd02e9d35..627906674fe8 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_2_sh_mask.h +++ b/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_2_sh_mask.h | |||
| @@ -5830,5 +5830,7 @@ | |||
| 5830 | #define ROM_SW_DATA_63__ROM_SW_DATA__SHIFT 0x0 | 5830 | #define ROM_SW_DATA_63__ROM_SW_DATA__SHIFT 0x0 |
| 5831 | #define ROM_SW_DATA_64__ROM_SW_DATA_MASK 0xffffffff | 5831 | #define ROM_SW_DATA_64__ROM_SW_DATA_MASK 0xffffffff |
| 5832 | #define ROM_SW_DATA_64__ROM_SW_DATA__SHIFT 0x0 | 5832 | #define ROM_SW_DATA_64__ROM_SW_DATA__SHIFT 0x0 |
| 5833 | #define CURRENT_PG_STATUS__VCE_PG_STATUS_MASK 0x00000002 | ||
| 5834 | #define CURRENT_PG_STATUS__UVD_PG_STATUS_MASK 0x00000004 | ||
| 5833 | 5835 | ||
| 5834 | #endif /* SMU_7_1_2_SH_MASK_H */ | 5836 | #endif /* SMU_7_1_2_SH_MASK_H */ |
diff --git a/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_3_d.h b/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_3_d.h index eca2b851f25f..0333d880bc9e 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_3_d.h +++ b/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_3_d.h | |||
| @@ -1244,5 +1244,5 @@ | |||
| 1244 | #define ixGC_CAC_ACC_CU14 0xc8 | 1244 | #define ixGC_CAC_ACC_CU14 0xc8 |
| 1245 | #define ixGC_CAC_ACC_CU15 0xc9 | 1245 | #define ixGC_CAC_ACC_CU15 0xc9 |
| 1246 | #define ixGC_CAC_OVRD_CU 0xe7 | 1246 | #define ixGC_CAC_OVRD_CU 0xe7 |
| 1247 | 1247 | #define ixCURRENT_PG_STATUS 0xc020029c | |
| 1248 | #endif /* SMU_7_1_3_D_H */ | 1248 | #endif /* SMU_7_1_3_D_H */ |
diff --git a/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_3_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_3_sh_mask.h index 1ede9e274714..654c1093d362 100644 --- a/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_3_sh_mask.h +++ b/drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_3_sh_mask.h | |||
| @@ -6076,5 +6076,8 @@ | |||
| 6076 | #define GC_CAC_OVRD_CU__OVRRD_SELECT__SHIFT 0x0 | 6076 | #define GC_CAC_OVRD_CU__OVRRD_SELECT__SHIFT 0x0 |
| 6077 | #define GC_CAC_OVRD_CU__OVRRD_VALUE_MASK 0xffff0000 | 6077 | #define GC_CAC_OVRD_CU__OVRRD_VALUE_MASK 0xffff0000 |
| 6078 | #define GC_CAC_OVRD_CU__OVRRD_VALUE__SHIFT 0x10 | 6078 | #define GC_CAC_OVRD_CU__OVRRD_VALUE__SHIFT 0x10 |
| 6079 | #define CURRENT_PG_STATUS__VCE_PG_STATUS_MASK 0x00000002 | ||
| 6080 | #define CURRENT_PG_STATUS__UVD_PG_STATUS_MASK 0x00000004 | ||
| 6081 | |||
| 6079 | 6082 | ||
| 6080 | #endif /* SMU_7_1_3_SH_MASK_H */ | 6083 | #endif /* SMU_7_1_3_SH_MASK_H */ |
diff --git a/drivers/gpu/drm/amd/include/cgs_common.h b/drivers/gpu/drm/amd/include/cgs_common.h index 1d26ae768147..17b9d41f3e87 100644 --- a/drivers/gpu/drm/amd/include/cgs_common.h +++ b/drivers/gpu/drm/amd/include/cgs_common.h | |||
| @@ -171,6 +171,7 @@ struct cgs_firmware_info { | |||
| 171 | uint32_t ucode_start_address; | 171 | uint32_t ucode_start_address; |
| 172 | 172 | ||
| 173 | void *kptr; | 173 | void *kptr; |
| 174 | bool is_kicker; | ||
| 174 | }; | 175 | }; |
| 175 | 176 | ||
| 176 | struct cgs_mode_info { | 177 | struct cgs_mode_info { |
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_powertune.c b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_powertune.c index 3341c0fbd069..1dc31aa72781 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_powertune.c +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_powertune.c | |||
| @@ -477,6 +477,151 @@ static const struct gpu_pt_config_reg DIDTConfig_Polaris12[] = { | |||
| 477 | { 0xFFFFFFFF } | 477 | { 0xFFFFFFFF } |
| 478 | }; | 478 | }; |
| 479 | 479 | ||
| 480 | static const struct gpu_pt_config_reg DIDTConfig_Polaris11_Kicker[] = | ||
| 481 | { | ||
| 482 | /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| 483 | * Offset Mask Shift Value Type | ||
| 484 | * --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
| 485 | */ | ||
| 486 | /* DIDT_SQ */ | ||
| 487 | { ixDIDT_SQ_WEIGHT0_3, DIDT_SQ_WEIGHT0_3__WEIGHT0_MASK, DIDT_SQ_WEIGHT0_3__WEIGHT0__SHIFT, 0x004c, GPU_CONFIGREG_DIDT_IND }, | ||
| 488 | { ixDIDT_SQ_WEIGHT0_3, DIDT_SQ_WEIGHT0_3__WEIGHT1_MASK, DIDT_SQ_WEIGHT0_3__WEIGHT1__SHIFT, 0x00d0, GPU_CONFIGREG_DIDT_IND }, | ||
| 489 | { ixDIDT_SQ_WEIGHT0_3, DIDT_SQ_WEIGHT0_3__WEIGHT2_MASK, DIDT_SQ_WEIGHT0_3__WEIGHT2__SHIFT, 0x0069, GPU_CONFIGREG_DIDT_IND }, | ||
| 490 | { ixDIDT_SQ_WEIGHT0_3, DIDT_SQ_WEIGHT0_3__WEIGHT3_MASK, DIDT_SQ_WEIGHT0_3__WEIGHT3__SHIFT, 0x0048, GPU_CONFIGREG_DIDT_IND }, | ||
| 491 | |||
| 492 | { ixDIDT_SQ_WEIGHT4_7, DIDT_SQ_WEIGHT4_7__WEIGHT4_MASK, DIDT_SQ_WEIGHT4_7__WEIGHT4__SHIFT, 0x005f, GPU_CONFIGREG_DIDT_IND }, | ||
| 493 | { ixDIDT_SQ_WEIGHT4_7, DIDT_SQ_WEIGHT4_7__WEIGHT5_MASK, DIDT_SQ_WEIGHT4_7__WEIGHT5__SHIFT, 0x007a, GPU_CONFIGREG_DIDT_IND }, | ||
| 494 | { ixDIDT_SQ_WEIGHT4_7, DIDT_SQ_WEIGHT4_7__WEIGHT6_MASK, DIDT_SQ_WEIGHT4_7__WEIGHT6__SHIFT, 0x001f, GPU_CONFIGREG_DIDT_IND }, | ||
| 495 | { ixDIDT_SQ_WEIGHT4_7, DIDT_SQ_WEIGHT4_7__WEIGHT7_MASK, DIDT_SQ_WEIGHT4_7__WEIGHT7__SHIFT, 0x002d, GPU_CONFIGREG_DIDT_IND }, | ||
| 496 | |||
| 497 | { ixDIDT_SQ_WEIGHT8_11, DIDT_SQ_WEIGHT8_11__WEIGHT8_MASK, DIDT_SQ_WEIGHT8_11__WEIGHT8__SHIFT, 0x0088, GPU_CONFIGREG_DIDT_IND }, | ||
| 498 | { ixDIDT_SQ_WEIGHT8_11, DIDT_SQ_WEIGHT8_11__WEIGHT9_MASK, DIDT_SQ_WEIGHT8_11__WEIGHT9__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 499 | { ixDIDT_SQ_WEIGHT8_11, DIDT_SQ_WEIGHT8_11__WEIGHT10_MASK, DIDT_SQ_WEIGHT8_11__WEIGHT10__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 500 | { ixDIDT_SQ_WEIGHT8_11, DIDT_SQ_WEIGHT8_11__WEIGHT11_MASK, DIDT_SQ_WEIGHT8_11__WEIGHT11__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 501 | |||
| 502 | { ixDIDT_SQ_CTRL1, DIDT_SQ_CTRL1__MIN_POWER_MASK, DIDT_SQ_CTRL1__MIN_POWER__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 503 | { ixDIDT_SQ_CTRL1, DIDT_SQ_CTRL1__MAX_POWER_MASK, DIDT_SQ_CTRL1__MAX_POWER__SHIFT, 0xffff, GPU_CONFIGREG_DIDT_IND }, | ||
| 504 | |||
| 505 | { ixDIDT_SQ_CTRL_OCP, DIDT_SQ_CTRL_OCP__UNUSED_0_MASK, DIDT_SQ_CTRL_OCP__UNUSED_0__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 506 | { ixDIDT_SQ_CTRL_OCP, DIDT_SQ_CTRL_OCP__OCP_MAX_POWER_MASK, DIDT_SQ_CTRL_OCP__OCP_MAX_POWER__SHIFT, 0x00ff, GPU_CONFIGREG_DIDT_IND }, | ||
| 507 | |||
| 508 | { ixDIDT_SQ_CTRL2, DIDT_SQ_CTRL2__MAX_POWER_DELTA_MASK, DIDT_SQ_CTRL2__MAX_POWER_DELTA__SHIFT, 0x3fff, GPU_CONFIGREG_DIDT_IND }, | ||
| 509 | { ixDIDT_SQ_CTRL2, DIDT_SQ_CTRL2__UNUSED_0_MASK, DIDT_SQ_CTRL2__UNUSED_0__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 510 | { ixDIDT_SQ_CTRL2, DIDT_SQ_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK, DIDT_SQ_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT, 0x000f, GPU_CONFIGREG_DIDT_IND }, | ||
| 511 | { ixDIDT_SQ_CTRL2, DIDT_SQ_CTRL2__UNUSED_1_MASK, DIDT_SQ_CTRL2__UNUSED_1__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 512 | { ixDIDT_SQ_CTRL2, DIDT_SQ_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK, DIDT_SQ_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 513 | { ixDIDT_SQ_CTRL2, DIDT_SQ_CTRL2__UNUSED_2_MASK, DIDT_SQ_CTRL2__UNUSED_2__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 514 | |||
| 515 | { ixDIDT_SQ_STALL_CTRL, DIDT_SQ_STALL_CTRL__DIDT_STALL_CTRL_ENABLE_MASK, DIDT_SQ_STALL_CTRL__DIDT_STALL_CTRL_ENABLE__SHIFT, 0x0001, GPU_CONFIGREG_DIDT_IND }, | ||
| 516 | { ixDIDT_SQ_STALL_CTRL, DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK, DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT, 0x0001, GPU_CONFIGREG_DIDT_IND }, | ||
| 517 | { ixDIDT_SQ_STALL_CTRL, DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK, DIDT_SQ_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT, 0x0001, GPU_CONFIGREG_DIDT_IND }, | ||
| 518 | { ixDIDT_SQ_STALL_CTRL, DIDT_SQ_STALL_CTRL__DIDT_HI_POWER_THRESHOLD_MASK, DIDT_SQ_STALL_CTRL__DIDT_HI_POWER_THRESHOLD__SHIFT, 0x01aa, GPU_CONFIGREG_DIDT_IND }, | ||
| 519 | { ixDIDT_SQ_STALL_CTRL, DIDT_SQ_STALL_CTRL__UNUSED_0_MASK, DIDT_SQ_STALL_CTRL__UNUSED_0__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 520 | |||
| 521 | { ixDIDT_SQ_TUNING_CTRL, DIDT_SQ_TUNING_CTRL__DIDT_TUNING_ENABLE_MASK, DIDT_SQ_TUNING_CTRL__DIDT_TUNING_ENABLE__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 522 | { ixDIDT_SQ_TUNING_CTRL, DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK, DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT, 0x0dde, GPU_CONFIGREG_DIDT_IND }, | ||
| 523 | { ixDIDT_SQ_TUNING_CTRL, DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK, DIDT_SQ_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT, 0x0dde, GPU_CONFIGREG_DIDT_IND }, | ||
| 524 | { ixDIDT_SQ_TUNING_CTRL, DIDT_SQ_TUNING_CTRL__UNUSED_0_MASK, DIDT_SQ_TUNING_CTRL__UNUSED_0__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 525 | |||
| 526 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__DIDT_CTRL_EN_MASK, DIDT_SQ_CTRL0__DIDT_CTRL_EN__SHIFT, 0x0001, GPU_CONFIGREG_DIDT_IND }, | ||
| 527 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__USE_REF_CLOCK_MASK, DIDT_SQ_CTRL0__USE_REF_CLOCK__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 528 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__PHASE_OFFSET_MASK, DIDT_SQ_CTRL0__PHASE_OFFSET__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 529 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__DIDT_CTRL_RST_MASK, DIDT_SQ_CTRL0__DIDT_CTRL_RST__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 530 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK, DIDT_SQ_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 531 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__DIDT_MAX_STALLS_ALLOWED_HI_MASK, DIDT_SQ_CTRL0__DIDT_MAX_STALLS_ALLOWED_HI__SHIFT, 0x0008, GPU_CONFIGREG_DIDT_IND }, | ||
| 532 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__DIDT_MAX_STALLS_ALLOWED_LO_MASK, DIDT_SQ_CTRL0__DIDT_MAX_STALLS_ALLOWED_LO__SHIFT, 0x0008, GPU_CONFIGREG_DIDT_IND }, | ||
| 533 | { ixDIDT_SQ_CTRL0, DIDT_SQ_CTRL0__UNUSED_0_MASK, DIDT_SQ_CTRL0__UNUSED_0__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 534 | |||
| 535 | /* DIDT_TD */ | ||
| 536 | { ixDIDT_TD_WEIGHT0_3, DIDT_TD_WEIGHT0_3__WEIGHT0_MASK, DIDT_TD_WEIGHT0_3__WEIGHT0__SHIFT, 0x000a, GPU_CONFIGREG_DIDT_IND }, | ||
| 537 | { ixDIDT_TD_WEIGHT0_3, DIDT_TD_WEIGHT0_3__WEIGHT1_MASK, DIDT_TD_WEIGHT0_3__WEIGHT1__SHIFT, 0x0010, GPU_CONFIGREG_DIDT_IND }, | ||
| 538 | { ixDIDT_TD_WEIGHT0_3, DIDT_TD_WEIGHT0_3__WEIGHT2_MASK, DIDT_TD_WEIGHT0_3__WEIGHT2__SHIFT, 0x0017, GPU_CONFIGREG_DIDT_IND }, | ||
| 539 | { ixDIDT_TD_WEIGHT0_3, DIDT_TD_WEIGHT0_3__WEIGHT3_MASK, DIDT_TD_WEIGHT0_3__WEIGHT3__SHIFT, 0x002f, GPU_CONFIGREG_DIDT_IND }, | ||
| 540 | |||
| 541 | { ixDIDT_TD_WEIGHT4_7, DIDT_TD_WEIGHT4_7__WEIGHT4_MASK, DIDT_TD_WEIGHT4_7__WEIGHT4__SHIFT, 0x0046, GPU_CONFIGREG_DIDT_IND }, | ||
| 542 | { ixDIDT_TD_WEIGHT4_7, DIDT_TD_WEIGHT4_7__WEIGHT5_MASK, DIDT_TD_WEIGHT4_7__WEIGHT5__SHIFT, 0x005d, GPU_CONFIGREG_DIDT_IND }, | ||
| 543 | { ixDIDT_TD_WEIGHT4_7, DIDT_TD_WEIGHT4_7__WEIGHT6_MASK, DIDT_TD_WEIGHT4_7__WEIGHT6__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 544 | { ixDIDT_TD_WEIGHT4_7, DIDT_TD_WEIGHT4_7__WEIGHT7_MASK, DIDT_TD_WEIGHT4_7__WEIGHT7__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 545 | |||
| 546 | { ixDIDT_TD_CTRL1, DIDT_TD_CTRL1__MIN_POWER_MASK, DIDT_TD_CTRL1__MIN_POWER__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 547 | { ixDIDT_TD_CTRL1, DIDT_TD_CTRL1__MAX_POWER_MASK, DIDT_TD_CTRL1__MAX_POWER__SHIFT, 0xffff, GPU_CONFIGREG_DIDT_IND }, | ||
| 548 | |||
| 549 | { ixDIDT_TD_CTRL_OCP, DIDT_TD_CTRL_OCP__UNUSED_0_MASK, DIDT_TD_CTRL_OCP__UNUSED_0__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 550 | { ixDIDT_TD_CTRL_OCP, DIDT_TD_CTRL_OCP__OCP_MAX_POWER_MASK, DIDT_TD_CTRL_OCP__OCP_MAX_POWER__SHIFT, 0x00ff, GPU_CONFIGREG_DIDT_IND }, | ||
| 551 | |||
| 552 | { ixDIDT_TD_CTRL2, DIDT_TD_CTRL2__MAX_POWER_DELTA_MASK, DIDT_TD_CTRL2__MAX_POWER_DELTA__SHIFT, 0x3fff, GPU_CONFIGREG_DIDT_IND }, | ||
| 553 | { ixDIDT_TD_CTRL2, DIDT_TD_CTRL2__UNUSED_0_MASK, DIDT_TD_CTRL2__UNUSED_0__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 554 | { ixDIDT_TD_CTRL2, DIDT_TD_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK, DIDT_TD_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT, 0x000f, GPU_CONFIGREG_DIDT_IND }, | ||
| 555 | { ixDIDT_TD_CTRL2, DIDT_TD_CTRL2__UNUSED_1_MASK, DIDT_TD_CTRL2__UNUSED_1__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 556 | { ixDIDT_TD_CTRL2, DIDT_TD_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK, DIDT_TD_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 557 | { ixDIDT_TD_CTRL2, DIDT_TD_CTRL2__UNUSED_2_MASK, DIDT_TD_CTRL2__UNUSED_2__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 558 | |||
| 559 | { ixDIDT_TD_STALL_CTRL, DIDT_TD_STALL_CTRL__DIDT_STALL_CTRL_ENABLE_MASK, DIDT_TD_STALL_CTRL__DIDT_STALL_CTRL_ENABLE__SHIFT, 0x0001, GPU_CONFIGREG_DIDT_IND }, | ||
| 560 | { ixDIDT_TD_STALL_CTRL, DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK, DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT, 0x0001, GPU_CONFIGREG_DIDT_IND }, | ||
| 561 | { ixDIDT_TD_STALL_CTRL, DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK, DIDT_TD_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT, 0x0001, GPU_CONFIGREG_DIDT_IND }, | ||
| 562 | { ixDIDT_TD_STALL_CTRL, DIDT_TD_STALL_CTRL__DIDT_HI_POWER_THRESHOLD_MASK, DIDT_TD_STALL_CTRL__DIDT_HI_POWER_THRESHOLD__SHIFT, 0x01aa, GPU_CONFIGREG_DIDT_IND }, | ||
| 563 | { ixDIDT_TD_STALL_CTRL, DIDT_TD_STALL_CTRL__UNUSED_0_MASK, DIDT_TD_STALL_CTRL__UNUSED_0__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 564 | |||
| 565 | { ixDIDT_TD_TUNING_CTRL, DIDT_TD_TUNING_CTRL__DIDT_TUNING_ENABLE_MASK, DIDT_TD_TUNING_CTRL__DIDT_TUNING_ENABLE__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 566 | { ixDIDT_TD_TUNING_CTRL, DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK, DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT, 0x0dde, GPU_CONFIGREG_DIDT_IND }, | ||
| 567 | { ixDIDT_TD_TUNING_CTRL, DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK, DIDT_TD_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT, 0x0dde, GPU_CONFIGREG_DIDT_IND }, | ||
| 568 | { ixDIDT_TD_TUNING_CTRL, DIDT_TD_TUNING_CTRL__UNUSED_0_MASK, DIDT_TD_TUNING_CTRL__UNUSED_0__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 569 | |||
| 570 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__DIDT_CTRL_EN_MASK, DIDT_TD_CTRL0__DIDT_CTRL_EN__SHIFT, 0x0001, GPU_CONFIGREG_DIDT_IND }, | ||
| 571 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__USE_REF_CLOCK_MASK, DIDT_TD_CTRL0__USE_REF_CLOCK__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 572 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__PHASE_OFFSET_MASK, DIDT_TD_CTRL0__PHASE_OFFSET__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 573 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__DIDT_CTRL_RST_MASK, DIDT_TD_CTRL0__DIDT_CTRL_RST__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 574 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK, DIDT_TD_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 575 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__DIDT_MAX_STALLS_ALLOWED_HI_MASK, DIDT_TD_CTRL0__DIDT_MAX_STALLS_ALLOWED_HI__SHIFT, 0x0008, GPU_CONFIGREG_DIDT_IND }, | ||
| 576 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__DIDT_MAX_STALLS_ALLOWED_LO_MASK, DIDT_TD_CTRL0__DIDT_MAX_STALLS_ALLOWED_LO__SHIFT, 0x0008, GPU_CONFIGREG_DIDT_IND }, | ||
| 577 | { ixDIDT_TD_CTRL0, DIDT_TD_CTRL0__UNUSED_0_MASK, DIDT_TD_CTRL0__UNUSED_0__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 578 | |||
| 579 | /* DIDT_TCP */ | ||
| 580 | { ixDIDT_TCP_WEIGHT0_3, DIDT_TCP_WEIGHT0_3__WEIGHT0_MASK, DIDT_TCP_WEIGHT0_3__WEIGHT0__SHIFT, 0x0004, GPU_CONFIGREG_DIDT_IND }, | ||
| 581 | { ixDIDT_TCP_WEIGHT0_3, DIDT_TCP_WEIGHT0_3__WEIGHT1_MASK, DIDT_TCP_WEIGHT0_3__WEIGHT1__SHIFT, 0x0037, GPU_CONFIGREG_DIDT_IND }, | ||
| 582 | { ixDIDT_TCP_WEIGHT0_3, DIDT_TCP_WEIGHT0_3__WEIGHT2_MASK, DIDT_TCP_WEIGHT0_3__WEIGHT2__SHIFT, 0x0001, GPU_CONFIGREG_DIDT_IND }, | ||
| 583 | { ixDIDT_TCP_WEIGHT0_3, DIDT_TCP_WEIGHT0_3__WEIGHT3_MASK, DIDT_TCP_WEIGHT0_3__WEIGHT3__SHIFT, 0x00ff, GPU_CONFIGREG_DIDT_IND }, | ||
| 584 | |||
| 585 | { ixDIDT_TCP_WEIGHT4_7, DIDT_TCP_WEIGHT4_7__WEIGHT4_MASK, DIDT_TCP_WEIGHT4_7__WEIGHT4__SHIFT, 0x0054, GPU_CONFIGREG_DIDT_IND }, | ||
| 586 | { ixDIDT_TCP_WEIGHT4_7, DIDT_TCP_WEIGHT4_7__WEIGHT5_MASK, DIDT_TCP_WEIGHT4_7__WEIGHT5__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 587 | { ixDIDT_TCP_WEIGHT4_7, DIDT_TCP_WEIGHT4_7__WEIGHT6_MASK, DIDT_TCP_WEIGHT4_7__WEIGHT6__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 588 | { ixDIDT_TCP_WEIGHT4_7, DIDT_TCP_WEIGHT4_7__WEIGHT7_MASK, DIDT_TCP_WEIGHT4_7__WEIGHT7__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 589 | |||
| 590 | { ixDIDT_TCP_CTRL1, DIDT_TCP_CTRL1__MIN_POWER_MASK, DIDT_TCP_CTRL1__MIN_POWER__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 591 | { ixDIDT_TCP_CTRL1, DIDT_TCP_CTRL1__MAX_POWER_MASK, DIDT_TCP_CTRL1__MAX_POWER__SHIFT, 0xffff, GPU_CONFIGREG_DIDT_IND }, | ||
| 592 | |||
| 593 | { ixDIDT_TCP_CTRL_OCP, DIDT_TCP_CTRL_OCP__UNUSED_0_MASK, DIDT_TCP_CTRL_OCP__UNUSED_0__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 594 | { ixDIDT_TCP_CTRL_OCP, DIDT_TCP_CTRL_OCP__OCP_MAX_POWER_MASK, DIDT_TCP_CTRL_OCP__OCP_MAX_POWER__SHIFT, 0xffff, GPU_CONFIGREG_DIDT_IND }, | ||
| 595 | |||
| 596 | { ixDIDT_TCP_CTRL2, DIDT_TCP_CTRL2__MAX_POWER_DELTA_MASK, DIDT_TCP_CTRL2__MAX_POWER_DELTA__SHIFT, 0x3dde, GPU_CONFIGREG_DIDT_IND }, | ||
| 597 | { ixDIDT_TCP_CTRL2, DIDT_TCP_CTRL2__UNUSED_0_MASK, DIDT_TCP_CTRL2__UNUSED_0__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 598 | { ixDIDT_TCP_CTRL2, DIDT_TCP_CTRL2__SHORT_TERM_INTERVAL_SIZE_MASK, DIDT_TCP_CTRL2__SHORT_TERM_INTERVAL_SIZE__SHIFT, 0x0032, GPU_CONFIGREG_DIDT_IND }, | ||
| 599 | { ixDIDT_TCP_CTRL2, DIDT_TCP_CTRL2__UNUSED_1_MASK, DIDT_TCP_CTRL2__UNUSED_1__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 600 | { ixDIDT_TCP_CTRL2, DIDT_TCP_CTRL2__LONG_TERM_INTERVAL_RATIO_MASK, DIDT_TCP_CTRL2__LONG_TERM_INTERVAL_RATIO__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 601 | { ixDIDT_TCP_CTRL2, DIDT_TCP_CTRL2__UNUSED_2_MASK, DIDT_TCP_CTRL2__UNUSED_2__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 602 | |||
| 603 | { ixDIDT_TCP_STALL_CTRL, DIDT_TCP_STALL_CTRL__DIDT_STALL_CTRL_ENABLE_MASK, DIDT_TCP_STALL_CTRL__DIDT_STALL_CTRL_ENABLE__SHIFT, 0x0001, GPU_CONFIGREG_DIDT_IND }, | ||
| 604 | { ixDIDT_TCP_STALL_CTRL, DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_HI_MASK, DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_HI__SHIFT, 0x0001, GPU_CONFIGREG_DIDT_IND }, | ||
| 605 | { ixDIDT_TCP_STALL_CTRL, DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_LO_MASK, DIDT_TCP_STALL_CTRL__DIDT_STALL_DELAY_LO__SHIFT, 0x0001, GPU_CONFIGREG_DIDT_IND }, | ||
| 606 | { ixDIDT_TCP_STALL_CTRL, DIDT_TCP_STALL_CTRL__DIDT_HI_POWER_THRESHOLD_MASK, DIDT_TCP_STALL_CTRL__DIDT_HI_POWER_THRESHOLD__SHIFT,0x01aa, GPU_CONFIGREG_DIDT_IND }, | ||
| 607 | { ixDIDT_TCP_STALL_CTRL, DIDT_TCP_STALL_CTRL__UNUSED_0_MASK, DIDT_TCP_STALL_CTRL__UNUSED_0__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 608 | |||
| 609 | { ixDIDT_TCP_TUNING_CTRL, DIDT_TCP_TUNING_CTRL__DIDT_TUNING_ENABLE_MASK, DIDT_TCP_TUNING_CTRL__DIDT_TUNING_ENABLE__SHIFT, 0x0001, GPU_CONFIGREG_DIDT_IND }, | ||
| 610 | { ixDIDT_TCP_TUNING_CTRL, DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_HI_MASK, DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_HI__SHIFT, 0x3dde, GPU_CONFIGREG_DIDT_IND }, | ||
| 611 | { ixDIDT_TCP_TUNING_CTRL, DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_LO_MASK, DIDT_TCP_TUNING_CTRL__MAX_POWER_DELTA_LO__SHIFT, 0x3dde, GPU_CONFIGREG_DIDT_IND }, | ||
| 612 | { ixDIDT_TCP_TUNING_CTRL, DIDT_TCP_TUNING_CTRL__UNUSED_0_MASK, DIDT_TCP_TUNING_CTRL__UNUSED_0__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 613 | |||
| 614 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__DIDT_CTRL_EN_MASK, DIDT_TCP_CTRL0__DIDT_CTRL_EN__SHIFT, 0x0001, GPU_CONFIGREG_DIDT_IND }, | ||
| 615 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__USE_REF_CLOCK_MASK, DIDT_TCP_CTRL0__USE_REF_CLOCK__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 616 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__PHASE_OFFSET_MASK, DIDT_TCP_CTRL0__PHASE_OFFSET__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 617 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__DIDT_CTRL_RST_MASK, DIDT_TCP_CTRL0__DIDT_CTRL_RST__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 618 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__DIDT_CLK_EN_OVERRIDE_MASK, DIDT_TCP_CTRL0__DIDT_CLK_EN_OVERRIDE__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 619 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__DIDT_MAX_STALLS_ALLOWED_HI_MASK, DIDT_TCP_CTRL0__DIDT_MAX_STALLS_ALLOWED_HI__SHIFT, 0x0010, GPU_CONFIGREG_DIDT_IND }, | ||
| 620 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__DIDT_MAX_STALLS_ALLOWED_LO_MASK, DIDT_TCP_CTRL0__DIDT_MAX_STALLS_ALLOWED_LO__SHIFT, 0x0010, GPU_CONFIGREG_DIDT_IND }, | ||
| 621 | { ixDIDT_TCP_CTRL0, DIDT_TCP_CTRL0__UNUSED_0_MASK, DIDT_TCP_CTRL0__UNUSED_0__SHIFT, 0x0000, GPU_CONFIGREG_DIDT_IND }, | ||
| 622 | |||
| 623 | { 0xFFFFFFFF } /* End of list */ | ||
| 624 | }; | ||
| 480 | 625 | ||
| 481 | static int smu7_enable_didt(struct pp_hwmgr *hwmgr, const bool enable) | 626 | static int smu7_enable_didt(struct pp_hwmgr *hwmgr, const bool enable) |
| 482 | { | 627 | { |
| @@ -630,7 +775,10 @@ int smu7_enable_didt_config(struct pp_hwmgr *hwmgr) | |||
| 630 | } else if (hwmgr->chip_id == CHIP_POLARIS11) { | 775 | } else if (hwmgr->chip_id == CHIP_POLARIS11) { |
| 631 | result = smu7_program_pt_config_registers(hwmgr, GCCACConfig_Polaris11); | 776 | result = smu7_program_pt_config_registers(hwmgr, GCCACConfig_Polaris11); |
| 632 | PP_ASSERT_WITH_CODE((result == 0), "DIDT Config failed.", return result); | 777 | PP_ASSERT_WITH_CODE((result == 0), "DIDT Config failed.", return result); |
| 633 | result = smu7_program_pt_config_registers(hwmgr, DIDTConfig_Polaris11); | 778 | if (hwmgr->smumgr->is_kicker) |
| 779 | result = smu7_program_pt_config_registers(hwmgr, DIDTConfig_Polaris11_Kicker); | ||
| 780 | else | ||
| 781 | result = smu7_program_pt_config_registers(hwmgr, DIDTConfig_Polaris11); | ||
| 634 | PP_ASSERT_WITH_CODE((result == 0), "DIDT Config failed.", return result); | 782 | PP_ASSERT_WITH_CODE((result == 0), "DIDT Config failed.", return result); |
| 635 | } else if (hwmgr->chip_id == CHIP_POLARIS12) { | 783 | } else if (hwmgr->chip_id == CHIP_POLARIS12) { |
| 636 | result = smu7_program_pt_config_registers(hwmgr, GCCACConfig_Polaris11); | 784 | result = smu7_program_pt_config_registers(hwmgr, GCCACConfig_Polaris11); |
diff --git a/drivers/gpu/drm/amd/powerplay/inc/smumgr.h b/drivers/gpu/drm/amd/powerplay/inc/smumgr.h index 9b6531bd6350..7c318a95e0c2 100644 --- a/drivers/gpu/drm/amd/powerplay/inc/smumgr.h +++ b/drivers/gpu/drm/amd/powerplay/inc/smumgr.h | |||
| @@ -137,6 +137,7 @@ struct pp_smumgr { | |||
| 137 | uint32_t usec_timeout; | 137 | uint32_t usec_timeout; |
| 138 | bool reload_fw; | 138 | bool reload_fw; |
| 139 | const struct pp_smumgr_func *smumgr_funcs; | 139 | const struct pp_smumgr_func *smumgr_funcs; |
| 140 | bool is_kicker; | ||
| 140 | }; | 141 | }; |
| 141 | 142 | ||
| 142 | extern int smum_early_init(struct pp_instance *handle); | 143 | extern int smum_early_init(struct pp_instance *handle); |
diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c index 0e26900e459e..c6c3c5751ac7 100644 --- a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c +++ b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c | |||
| @@ -494,6 +494,7 @@ static int polaris10_populate_ulv_level(struct pp_hwmgr *hwmgr, | |||
| 494 | struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend); | 494 | struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend); |
| 495 | struct phm_ppt_v1_information *table_info = | 495 | struct phm_ppt_v1_information *table_info = |
| 496 | (struct phm_ppt_v1_information *)(hwmgr->pptable); | 496 | (struct phm_ppt_v1_information *)(hwmgr->pptable); |
| 497 | struct pp_smumgr *smumgr = hwmgr->smumgr; | ||
| 497 | 498 | ||
| 498 | state->CcPwrDynRm = 0; | 499 | state->CcPwrDynRm = 0; |
| 499 | state->CcPwrDynRm1 = 0; | 500 | state->CcPwrDynRm1 = 0; |
| @@ -502,7 +503,10 @@ static int polaris10_populate_ulv_level(struct pp_hwmgr *hwmgr, | |||
| 502 | state->VddcOffsetVid = (uint8_t)(table_info->us_ulv_voltage_offset * | 503 | state->VddcOffsetVid = (uint8_t)(table_info->us_ulv_voltage_offset * |
| 503 | VOLTAGE_VID_OFFSET_SCALE2 / VOLTAGE_VID_OFFSET_SCALE1); | 504 | VOLTAGE_VID_OFFSET_SCALE2 / VOLTAGE_VID_OFFSET_SCALE1); |
| 504 | 505 | ||
| 505 | state->VddcPhase = (data->vddc_phase_shed_control) ? 0 : 1; | 506 | if (smumgr->is_kicker) |
| 507 | state->VddcPhase = data->vddc_phase_shed_control ^ 0x3; | ||
| 508 | else | ||
| 509 | state->VddcPhase = (data->vddc_phase_shed_control) ? 0 : 1; | ||
| 506 | 510 | ||
| 507 | CONVERT_FROM_HOST_TO_SMC_UL(state->CcPwrDynRm); | 511 | CONVERT_FROM_HOST_TO_SMC_UL(state->CcPwrDynRm); |
| 508 | CONVERT_FROM_HOST_TO_SMC_UL(state->CcPwrDynRm1); | 512 | CONVERT_FROM_HOST_TO_SMC_UL(state->CcPwrDynRm1); |
diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c index 6749fbe26c74..35ac27681415 100644 --- a/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c +++ b/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c | |||
| @@ -533,6 +533,8 @@ int smu7_upload_smu_firmware_image(struct pp_smumgr *smumgr) | |||
| 533 | cgs_get_firmware_info(smumgr->device, | 533 | cgs_get_firmware_info(smumgr->device, |
| 534 | smu7_convert_fw_type_to_cgs(UCODE_ID_SMU_SK), &info); | 534 | smu7_convert_fw_type_to_cgs(UCODE_ID_SMU_SK), &info); |
| 535 | 535 | ||
| 536 | smumgr->is_kicker = info.is_kicker; | ||
| 537 | |||
| 536 | result = smu7_upload_smc_firmware_data(smumgr, info.image_size, (uint32_t *)info.kptr, SMU7_SMC_SIZE); | 538 | result = smu7_upload_smc_firmware_data(smumgr, info.image_size, (uint32_t *)info.kptr, SMU7_SMC_SIZE); |
| 537 | 539 | ||
| 538 | return result; | 540 | return result; |
diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h index 7e75fa053473..a8e8db024980 100644 --- a/include/drm/ttm/ttm_bo_driver.h +++ b/include/drm/ttm/ttm_bo_driver.h | |||
| @@ -42,7 +42,7 @@ | |||
| 42 | #include <linux/spinlock.h> | 42 | #include <linux/spinlock.h> |
| 43 | #include <linux/reservation.h> | 43 | #include <linux/reservation.h> |
| 44 | 44 | ||
| 45 | #define TTM_MAX_BO_PRIORITY 16 | 45 | #define TTM_MAX_BO_PRIORITY 16U |
| 46 | 46 | ||
| 47 | struct ttm_backend_func { | 47 | struct ttm_backend_func { |
| 48 | /** | 48 | /** |
