aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorRex Zhu <Rex.Zhu@amd.com>2017-09-15 04:30:52 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-09-26 13:07:01 -0400
commit0596df6b09cf652844eb08c917da94984177846b (patch)
treeb2688200f9f851a7c873d2763324aec149169807 /drivers/gpu
parent780cffc599b640f1ea1ab051496ad1fed4532150 (diff)
drm/amd/powerplay: Simplify smu7_voting_clients()
Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c59
-rw-r--r--drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.h9
2 files changed, 19 insertions, 49 deletions
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
index 8fe9d8738ed7..4c603e53a171 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
@@ -388,6 +388,7 @@ static int smu7_enable_display_gap(struct pp_hwmgr *hwmgr)
388static int smu7_program_voting_clients(struct pp_hwmgr *hwmgr) 388static int smu7_program_voting_clients(struct pp_hwmgr *hwmgr)
389{ 389{
390 struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend); 390 struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
391 int i;
391 392
392 /* Clear reset for voting clients before enabling DPM */ 393 /* Clear reset for voting clients before enabling DPM */
393 PHM_WRITE_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, 394 PHM_WRITE_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
@@ -395,50 +396,26 @@ static int smu7_program_voting_clients(struct pp_hwmgr *hwmgr)
395 PHM_WRITE_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, 396 PHM_WRITE_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
396 SCLK_PWRMGT_CNTL, RESET_BUSY_CNT, 0); 397 SCLK_PWRMGT_CNTL, RESET_BUSY_CNT, 0);
397 398
398 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC, 399 for (i = 0; i < 8; i++)
399 ixCG_FREQ_TRAN_VOTING_0, data->voting_rights_clients0); 400 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
400 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC, 401 ixCG_FREQ_TRAN_VOTING_0 + i * 4,
401 ixCG_FREQ_TRAN_VOTING_1, data->voting_rights_clients1); 402 data->voting_rights_clients[i]);
402 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
403 ixCG_FREQ_TRAN_VOTING_2, data->voting_rights_clients2);
404 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
405 ixCG_FREQ_TRAN_VOTING_3, data->voting_rights_clients3);
406 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
407 ixCG_FREQ_TRAN_VOTING_4, data->voting_rights_clients4);
408 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
409 ixCG_FREQ_TRAN_VOTING_5, data->voting_rights_clients5);
410 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
411 ixCG_FREQ_TRAN_VOTING_6, data->voting_rights_clients6);
412 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
413 ixCG_FREQ_TRAN_VOTING_7, data->voting_rights_clients7);
414
415 return 0; 403 return 0;
416} 404}
417 405
418static int smu7_clear_voting_clients(struct pp_hwmgr *hwmgr) 406static int smu7_clear_voting_clients(struct pp_hwmgr *hwmgr)
419{ 407{
408 int i;
409
420 /* Reset voting clients before disabling DPM */ 410 /* Reset voting clients before disabling DPM */
421 PHM_WRITE_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, 411 PHM_WRITE_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
422 SCLK_PWRMGT_CNTL, RESET_SCLK_CNT, 1); 412 SCLK_PWRMGT_CNTL, RESET_SCLK_CNT, 1);
423 PHM_WRITE_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, 413 PHM_WRITE_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
424 SCLK_PWRMGT_CNTL, RESET_BUSY_CNT, 1); 414 SCLK_PWRMGT_CNTL, RESET_BUSY_CNT, 1);
425 415
426 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC, 416 for (i = 0; i < 8; i++)
427 ixCG_FREQ_TRAN_VOTING_0, 0); 417 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
428 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC, 418 ixCG_FREQ_TRAN_VOTING_0 + i * 4, 0);
429 ixCG_FREQ_TRAN_VOTING_1, 0);
430 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
431 ixCG_FREQ_TRAN_VOTING_2, 0);
432 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
433 ixCG_FREQ_TRAN_VOTING_3, 0);
434 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
435 ixCG_FREQ_TRAN_VOTING_4, 0);
436 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
437 ixCG_FREQ_TRAN_VOTING_5, 0);
438 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
439 ixCG_FREQ_TRAN_VOTING_6, 0);
440 cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
441 ixCG_FREQ_TRAN_VOTING_7, 0);
442 419
443 return 0; 420 return 0;
444} 421}
@@ -1384,14 +1361,14 @@ static void smu7_init_dpm_defaults(struct pp_hwmgr *hwmgr)
1384 data->vddc_vddgfx_delta = 300; 1361 data->vddc_vddgfx_delta = 300;
1385 data->static_screen_threshold = SMU7_STATICSCREENTHRESHOLD_DFLT; 1362 data->static_screen_threshold = SMU7_STATICSCREENTHRESHOLD_DFLT;
1386 data->static_screen_threshold_unit = SMU7_STATICSCREENTHRESHOLDUNIT_DFLT; 1363 data->static_screen_threshold_unit = SMU7_STATICSCREENTHRESHOLDUNIT_DFLT;
1387 data->voting_rights_clients0 = SMU7_VOTINGRIGHTSCLIENTS_DFLT0; 1364 data->voting_rights_clients[0] = SMU7_VOTINGRIGHTSCLIENTS_DFLT0;
1388 data->voting_rights_clients1 = SMU7_VOTINGRIGHTSCLIENTS_DFLT1; 1365 data->voting_rights_clients[1]= SMU7_VOTINGRIGHTSCLIENTS_DFLT1;
1389 data->voting_rights_clients2 = SMU7_VOTINGRIGHTSCLIENTS_DFLT2; 1366 data->voting_rights_clients[2] = SMU7_VOTINGRIGHTSCLIENTS_DFLT2;
1390 data->voting_rights_clients3 = SMU7_VOTINGRIGHTSCLIENTS_DFLT3; 1367 data->voting_rights_clients[3]= SMU7_VOTINGRIGHTSCLIENTS_DFLT3;
1391 data->voting_rights_clients4 = SMU7_VOTINGRIGHTSCLIENTS_DFLT4; 1368 data->voting_rights_clients[4]= SMU7_VOTINGRIGHTSCLIENTS_DFLT4;
1392 data->voting_rights_clients5 = SMU7_VOTINGRIGHTSCLIENTS_DFLT5; 1369 data->voting_rights_clients[5]= SMU7_VOTINGRIGHTSCLIENTS_DFLT5;
1393 data->voting_rights_clients6 = SMU7_VOTINGRIGHTSCLIENTS_DFLT6; 1370 data->voting_rights_clients[6]= SMU7_VOTINGRIGHTSCLIENTS_DFLT6;
1394 data->voting_rights_clients7 = SMU7_VOTINGRIGHTSCLIENTS_DFLT7; 1371 data->voting_rights_clients[7]= SMU7_VOTINGRIGHTSCLIENTS_DFLT7;
1395 1372
1396 data->mclk_dpm_key_disabled = hwmgr->feature_mask & PP_MCLK_DPM_MASK ? false : true; 1373 data->mclk_dpm_key_disabled = hwmgr->feature_mask & PP_MCLK_DPM_MASK ? false : true;
1397 data->sclk_dpm_key_disabled = hwmgr->feature_mask & PP_SCLK_DPM_MASK ? false : true; 1374 data->sclk_dpm_key_disabled = hwmgr->feature_mask & PP_SCLK_DPM_MASK ? false : true;
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.h b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.h
index f221e17b67e7..e021154aedbd 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.h
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.h
@@ -182,14 +182,7 @@ struct smu7_hwmgr {
182 struct smu7_dpm_table dpm_table; 182 struct smu7_dpm_table dpm_table;
183 struct smu7_dpm_table golden_dpm_table; 183 struct smu7_dpm_table golden_dpm_table;
184 184
185 uint32_t voting_rights_clients0; 185 uint32_t voting_rights_clients[8];
186 uint32_t voting_rights_clients1;
187 uint32_t voting_rights_clients2;
188 uint32_t voting_rights_clients3;
189 uint32_t voting_rights_clients4;
190 uint32_t voting_rights_clients5;
191 uint32_t voting_rights_clients6;
192 uint32_t voting_rights_clients7;
193 uint32_t static_screen_threshold_unit; 186 uint32_t static_screen_threshold_unit;
194 uint32_t static_screen_threshold; 187 uint32_t static_screen_threshold;
195 uint32_t voltage_control; 188 uint32_t voltage_control;