drm/amd/display: Support multiple options during psr entry.

[WHY]
Some panels may not handle idle pattern properly during PSR entry.

[HOW]
Add a condition to allow multiple options on power down
sequence during PSR1 entry.

Reviewed-by: Anthony Koo <anthony.koo@amd.com>
Signed-off-by: Martin Tsai <Martin.Tsai@amd.com>
Signed-off-by: Alex Hung <alex.hung@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Martin Tsai 2025-01-20 11:21:46 +08:00 committed by Alex Deucher
parent be704e5ef4
commit 3a5fa55455
3 changed files with 17 additions and 0 deletions

View File

@ -1033,6 +1033,13 @@ struct psr_settings {
unsigned int psr_sdp_transmit_line_num_deadline;
uint8_t force_ffu_mode;
unsigned int psr_power_opt;
/**
* Some panels cannot handle idle pattern during PSR entry.
* To power down phy before disable stream to avoid sending
* idle pattern.
*/
uint8_t power_down_phy_before_disable_stream;
};
enum replay_coasting_vtotal_type {

View File

@ -418,6 +418,10 @@ static bool dmub_psr_copy_settings(struct dmub_psr *dmub,
copy_settings_data->relock_delay_frame_cnt = 0;
if (link->dpcd_caps.sink_dev_id == DP_BRANCH_DEVICE_ID_001CF8)
copy_settings_data->relock_delay_frame_cnt = 2;
copy_settings_data->power_down_phy_before_disable_stream =
link->psr_settings.power_down_phy_before_disable_stream;
copy_settings_data->dsc_slice_height = psr_context->dsc_slice_height;
dc_wake_and_execute_dmub_cmd(dc, &cmd, DM_DMUB_WAIT_TYPE_WAIT);

View File

@ -3118,6 +3118,12 @@ struct dmub_cmd_psr_copy_settings_data {
* Some panels request main link off before xth vertical line
*/
uint16_t poweroff_before_vertical_line;
/**
* Some panels cannot handle idle pattern during PSR entry.
* To power down phy before disable stream to avoid sending
* idle pattern.
*/
uint8_t power_down_phy_before_disable_stream;
};
/**