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:
committed by
Greg Kroah-Hartman
parent
4f4cb81def
commit
45068cc170
@@ -1009,6 +1009,13 @@ struct psr_settings {
|
|||||||
unsigned int psr_sdp_transmit_line_num_deadline;
|
unsigned int psr_sdp_transmit_line_num_deadline;
|
||||||
uint8_t force_ffu_mode;
|
uint8_t force_ffu_mode;
|
||||||
unsigned int psr_power_opt;
|
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 {
|
enum replay_coasting_vtotal_type {
|
||||||
|
|||||||
@@ -419,6 +419,10 @@ static bool dmub_psr_copy_settings(struct dmub_psr *dmub,
|
|||||||
copy_settings_data->relock_delay_frame_cnt = 0;
|
copy_settings_data->relock_delay_frame_cnt = 0;
|
||||||
if (link->dpcd_caps.sink_dev_id == DP_BRANCH_DEVICE_ID_001CF8)
|
if (link->dpcd_caps.sink_dev_id == DP_BRANCH_DEVICE_ID_001CF8)
|
||||||
copy_settings_data->relock_delay_frame_cnt = 2;
|
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;
|
copy_settings_data->dsc_slice_height = psr_context->dsc_slice_height;
|
||||||
|
|
||||||
dc_wake_and_execute_dmub_cmd(dc, &cmd, DM_DMUB_WAIT_TYPE_WAIT);
|
dc_wake_and_execute_dmub_cmd(dc, &cmd, DM_DMUB_WAIT_TYPE_WAIT);
|
||||||
|
|||||||
@@ -2869,6 +2869,12 @@ struct dmub_cmd_psr_copy_settings_data {
|
|||||||
* Some panels request main link off before xth vertical line
|
* Some panels request main link off before xth vertical line
|
||||||
*/
|
*/
|
||||||
uint16_t poweroff_before_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;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user