[PATCH 1/3] drm/amdgpu/powerplay: Add special avfs cases for some polaris asics
Quan, Evan
Evan.Quan at amd.com
Fri Dec 7 01:16:36 UTC 2018
Comment inline
> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Alex
> Deucher
> Sent: 2018年12月7日 0:29
> To: amd-gfx at lists.freedesktop.org
> Cc: Deucher, Alexander <Alexander.Deucher at amd.com>
> Subject: [PATCH 1/3] drm/amdgpu/powerplay: Add special avfs cases for
> some polaris asics
>
> Add special avfs handling for some polaris variants.
>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> .../drm/amd/powerplay/smumgr/polaris10_smumgr.c | 51
> ++++++++++++++++++++++
> 1 file changed, 51 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
> b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
> index 94898b2da282..831a182942e6 100644
> --- a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
> +++ b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
> @@ -1639,6 +1639,7 @@ static int
> polaris10_populate_avfs_parameters(struct pp_hwmgr *hwmgr) {
> struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr-
> >backend);
> struct polaris10_smumgr *smu_data = (struct polaris10_smumgr
> *)(hwmgr->smu_backend);
> + struct amdgpu_device *adev = hwmgr->adev;
>
> SMU74_Discrete_DpmTable *table = &(smu_data-
> >smc_state_table);
> int result = 0;
> @@ -1659,6 +1660,56 @@ static int
> polaris10_populate_avfs_parameters(struct pp_hwmgr *hwmgr)
> result = atomctrl_get_avfs_information(hwmgr, &avfs_params);
>
> if (0 == result) {
> + if (((adev->pdev->device == 0x67ef) &&
> + ((adev->pdev->revision == 0xe0) ||
> + (adev->pdev->revision == 0xe5))) ||
> + ((adev->pdev->device == 0x67ff) &&
> + ((adev->pdev->revision == 0xcf) ||
> + (adev->pdev->revision == 0xef) ||
> + (adev->pdev->revision == 0xff)))) {
[Quan, Evan] 1st "if" statement here.
> + avfs_params.ucEnableApplyAVFS_CKS_OFF_Voltage
> = 1;
> + if ((adev->pdev->device == 0x67ef && adev->pdev-
> >revision == 0xe5) ||
> + (adev->pdev->device == 0x67ff && adev->pdev-
> >revision == 0xef)) {
> + if
> ((avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a0 == 0xEA522DD3) &&
> +
> (avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a1 == 0x5645A) &&
> +
> (avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a2 == 0x33F9E) &&
> +
> (avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_m1 == 0xFFFFC5CC) &&
> +
> (avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 == 0x1B1A) &&
> +
> (avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b == 0xFFFFFCED)) {
> +
> avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a0 = 0xF718F1D4;
> +
> avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a1 = 0x323FD;
> +
> avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a2 = 0x1E455;
> +
> avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_m1 = 0;
> +
> avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 = 0;
> +
> avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b = 0x23;
> + }
> + }
> + } else if (hwmgr->chip_id == CHIP_POLARIS12 && !hwmgr-
> >is_kicker) {
> + avfs_params.ucEnableApplyAVFS_CKS_OFF_Voltage
> = 1;
> + avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a0 =
> 0xF6B024DD;
> + avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a1 =
> 0x3005E;
> + avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a2 =
> 0x18A5F;
> + avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_m1 =
> 0x315;
> + avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 =
> 0xFED1;
> + avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b =
> 0x3B;
> + } else if (((adev->pdev->device == 0x67ef) &&
> + ((adev->pdev->revision == 0xe0) ||
> + (adev->pdev->revision == 0xe5))) ||
> + ((adev->pdev->device == 0x67ff) &&
> + ((adev->pdev->revision == 0xcf) ||
> + (adev->pdev->revision == 0xef) ||
> + (adev->pdev->revision == 0xff)))) {
[Quan, Evan] This seems the same as the 1st "if" statement. Typo?
> + avfs_params.ucEnableApplyAVFS_CKS_OFF_Voltage
> = 1;
> + avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a0 =
> 0xF843B66B;
> + avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a1 =
> 0x59CB5;
> + avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a2 =
> 0xFFFF287F;
> + avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_m1 =
> 0;
> + avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 =
> 0xFF23;
> + avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b =
> 0x58;
> + }
> + }
> +
> + if (0 == result) {
> table->BTCGB_VDROOP_TABLE[0].a0 =
> PP_HOST_TO_SMC_UL(avfs_params.ulGB_VDROOP_TABLE_CKSON_a0);
> table->BTCGB_VDROOP_TABLE[0].a1 =
> PP_HOST_TO_SMC_UL(avfs_params.ulGB_VDROOP_TABLE_CKSON_a1);
> table->BTCGB_VDROOP_TABLE[0].a2 =
> PP_HOST_TO_SMC_UL(avfs_params.ulGB_VDROOP_TABLE_CKSON_a2);
> --
> 2.13.6
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
More information about the amd-gfx
mailing list