diff options
author | Rex Zhu <Rex.Zhu@amd.com> | 2017-09-15 04:30:52 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-09-26 13:07:01 -0400 |
commit | 0596df6b09cf652844eb08c917da94984177846b (patch) | |
tree | b2688200f9f851a7c873d2763324aec149169807 /drivers/gpu/drm/amd | |
parent | 780cffc599b640f1ea1ab051496ad1fed4532150 (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/drm/amd')
-rw-r--r-- | drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c | 59 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.h | 9 |
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) | |||
388 | static int smu7_program_voting_clients(struct pp_hwmgr *hwmgr) | 388 | static 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 | ||
418 | static int smu7_clear_voting_clients(struct pp_hwmgr *hwmgr) | 406 | static 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; |