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

[ Upstream commit 3a5fa55455db6a11248a25f24570c365f9246144 ]

[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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Martin Tsai
2025-01-20 11:21:46 +08:00
committed by Greg Kroah-Hartman
parent 4f4cb81def
commit 45068cc170
3 changed files with 17 additions and 0 deletions

View File

@@ -1009,6 +1009,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

@@ -419,6 +419,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

@@ -2869,6 +2869,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;
};
/**