Comment inline > -----Original Message----- > From: amd-gfx <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Alex > Deucher > Sent: 2018年12月7日 0:29 > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Deucher, Alexander <Alexander.Deucher@xxxxxxx> > 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@xxxxxxx> > --- > .../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@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx