mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 15:22:21 -04:00
drm/amd/display: Add Debug Option To Enable Per-DPM De-rate Usage
[Why] DML has been updated to use per-DPM derates when provided but per-DPM de-rates have not been finalized. Need to validate to see what values should be stored in the bounding box. [How] Add debug options to set custom derates per DPM (starting at DPM0) and their values Each entry in the custom derate expects the derates to be stored in the following format: bits 0-7: dram_derate_percent_pixel bits 8-15: fclk_derate_percent bits 16-23: dcfclk_derate_percent bits 24-31 are unused. e.g. Using the value 0x414020 will set the following derates for DPM0 DPM0: 0x20, 0x40, 0x41 for dram, fclk, and dcfclk respectively Note that global derate value will be used if the per-DPM derate is 0. Reviewed-by: Dillon Varone <dillon.varone@amd.com> Signed-off-by: Austin Zheng <Austin.Zheng@amd.com> Signed-off-by: George Zhang <george.zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
9dfd0da5e3
commit
78d36c5b53
@@ -1289,6 +1289,8 @@ struct dc_debug_options {
|
||||
bool enable_replay_esd_recovery;
|
||||
uint8_t iommu_mismatch_temp_wka;
|
||||
bool disable_dynamic_expansion_for_test_pattern;
|
||||
uint32_t dml21_custom_derate_num_dpms;
|
||||
uint32_t dml21_custom_derate_at_dpm[DML2_MAX_NUM_DPM_LVL];
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -269,6 +269,22 @@ void dcn401_update_soc_bb_with_values_from_software_policy(struct dml2_soc_bb *s
|
||||
if (dc->bb_overrides.sr_enter_plus_exit_z8_time_ns)
|
||||
soc_bb->power_management_parameters.z8_stutter_enter_plus_exit_latency_us =
|
||||
dc->bb_overrides.sr_enter_plus_exit_z8_time_ns / 1000.0;
|
||||
|
||||
/* Override per-dpm derates based on a custom derate table.
|
||||
* Global derate value will be used for derates that aren't populated
|
||||
* 3 derates for a single DPM level:
|
||||
* bits 0-7: dram_derate_percent_pixel
|
||||
* bits 8-15: fclk_derate_percent
|
||||
* bits 16-23: dcfclk_derate_percent
|
||||
*/
|
||||
for (unsigned int i = 0; i < dc->debug.dml21_custom_derate_num_dpms; i++) {
|
||||
soc_bb->qos_parameters.derate_table_per_dpm.system_active_derates_per_dpm.dram_derate_percent_pixel[i]
|
||||
= dc->debug.dml21_custom_derate_at_dpm[i] & 0xFF;
|
||||
soc_bb->qos_parameters.derate_table_per_dpm.system_active_derates_per_dpm.fclk_derate_percent[i]
|
||||
= (dc->debug.dml21_custom_derate_at_dpm[i] >> 8) & 0xFF;
|
||||
soc_bb->qos_parameters.derate_table_per_dpm.system_active_derates_per_dpm.dcfclk_derate_percent[i]
|
||||
= (dc->debug.dml21_custom_derate_at_dpm[i] >> 16) & 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
static void apply_soc_bb_updates(struct dml2_soc_bb *soc_bb, const struct dc *dc, const struct dml2_configuration_options *config)
|
||||
|
||||
Reference in New Issue
Block a user