diff options
author | Eric Huang <JinHuiEric.Huang@amd.com> | 2018-02-06 14:38:38 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-02-19 14:19:40 -0500 |
commit | 72d7619106075232816e87e27791934ae9b7c445 (patch) | |
tree | f15af8c47da1b0755e3328ae64bd95d39dd514a5 /drivers/gpu/drm/amd | |
parent | b01a4f4897f3a03eada496dcde9b054998d65170 (diff) |
drm/amd/powerplay: add mmhub powergating by smu in powerplay
new generic interface is added in powerplay.
Signed-off-by: Eric Huang <JinHuiEric.Huang@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@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/amd_powerplay.c | 22 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/powerplay/inc/hwmgr.h | 1 |
2 files changed, 23 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c index c571f8eca2fa..7c4b88aa7abb 100644 --- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c +++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c | |||
@@ -1475,6 +1475,27 @@ static int pp_get_display_mode_validation_clocks(void *handle, | |||
1475 | return ret; | 1475 | return ret; |
1476 | } | 1476 | } |
1477 | 1477 | ||
1478 | static int pp_set_mmhub_powergating_by_smu(void *handle) | ||
1479 | { | ||
1480 | struct pp_hwmgr *hwmgr; | ||
1481 | struct pp_instance *pp_handle = (struct pp_instance *)handle; | ||
1482 | int ret = 0; | ||
1483 | |||
1484 | ret = pp_check(pp_handle); | ||
1485 | |||
1486 | if (ret) | ||
1487 | return ret; | ||
1488 | |||
1489 | hwmgr = pp_handle->hwmgr; | ||
1490 | |||
1491 | if (hwmgr->hwmgr_func->set_mmhub_powergating_by_smu == NULL) { | ||
1492 | pr_info("%s was not implemented.\n", __func__); | ||
1493 | return 0; | ||
1494 | } | ||
1495 | |||
1496 | return hwmgr->hwmgr_func->set_mmhub_powergating_by_smu(hwmgr); | ||
1497 | } | ||
1498 | |||
1478 | const struct amd_pm_funcs pp_dpm_funcs = { | 1499 | const struct amd_pm_funcs pp_dpm_funcs = { |
1479 | .load_firmware = pp_dpm_load_fw, | 1500 | .load_firmware = pp_dpm_load_fw, |
1480 | .wait_for_fw_loading_complete = pp_dpm_fw_loading_complete, | 1501 | .wait_for_fw_loading_complete = pp_dpm_fw_loading_complete, |
@@ -1521,4 +1542,5 @@ const struct amd_pm_funcs pp_dpm_funcs = { | |||
1521 | .set_watermarks_for_clocks_ranges = pp_set_watermarks_for_clocks_ranges, | 1542 | .set_watermarks_for_clocks_ranges = pp_set_watermarks_for_clocks_ranges, |
1522 | .display_clock_voltage_request = pp_display_clock_voltage_request, | 1543 | .display_clock_voltage_request = pp_display_clock_voltage_request, |
1523 | .get_display_mode_validation_clocks = pp_get_display_mode_validation_clocks, | 1544 | .get_display_mode_validation_clocks = pp_get_display_mode_validation_clocks, |
1545 | .set_mmhub_powergating_by_smu = pp_set_mmhub_powergating_by_smu, | ||
1524 | }; | 1546 | }; |
diff --git a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h index cea4ce7233c0..4d96439dd989 100644 --- a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h +++ b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h | |||
@@ -347,6 +347,7 @@ struct pp_hwmgr_func { | |||
347 | int (*odn_edit_dpm_table)(struct pp_hwmgr *hwmgr, | 347 | int (*odn_edit_dpm_table)(struct pp_hwmgr *hwmgr, |
348 | enum PP_OD_DPM_TABLE_COMMAND type, | 348 | enum PP_OD_DPM_TABLE_COMMAND type, |
349 | long *input, uint32_t size); | 349 | long *input, uint32_t size); |
350 | int (*set_mmhub_powergating_by_smu)(struct pp_hwmgr *hwmgr); | ||
350 | }; | 351 | }; |
351 | 352 | ||
352 | struct pp_table_func { | 353 | struct pp_table_func { |