Skip to content

Commit 7a65e88

Browse files
Ovidiu Buneaalexdeucher
authored andcommitted
drm/amd/display: Optimize power up sequence for specific OLED
[why & how] OLED power up sequence takes an extra 150ms via hardcoded delay, but there is a strict requirement on DisplayOn resume time. For customer panel, remove these delays to meet target until a cleaner solution is can be put in place. Reviewed-by: Charlene Liu <charlene.liu@amd.com> Signed-off-by: Ovidiu Bunea <Ovidiu.Bunea@amd.com> Signed-off-by: Tom Chung <chiahsuan.chung@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent 57e92d9 commit 7a65e88

File tree

4 files changed

+15
-5
lines changed

4 files changed

+15
-5
lines changed

drivers/gpu/drm/amd/display/dc/dc.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1067,6 +1067,7 @@ struct dc_debug_options {
10671067
unsigned int sharpen_policy;
10681068
unsigned int scale_to_sharpness_policy;
10691069
bool skip_full_updated_if_possible;
1070+
unsigned int enable_oled_edp_power_up_opt;
10701071
};
10711072

10721073

drivers/gpu/drm/amd/display/dc/dc_types.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ struct dc_panel_patch {
180180
unsigned int remove_sink_ext_caps;
181181
unsigned int disable_colorimetry;
182182
uint8_t blankstream_before_otg_off;
183+
bool oled_optimize_display_on;
183184
};
184185

185186
struct dc_edid_caps {

drivers/gpu/drm/amd/display/dc/hwss/dce110/dce110_hwseq.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1039,7 +1039,8 @@ void dce110_edp_backlight_control(
10391039
link_transmitter_control(ctx->dc_bios, &cntl);
10401040

10411041
if (enable && link->dpcd_sink_ext_caps.bits.oled &&
1042-
!link->dc->config.edp_no_power_sequencing) {
1042+
!link->dc->config.edp_no_power_sequencing &&
1043+
!link->local_sink->edid_caps.panel_patch.oled_optimize_display_on) {
10431044
post_T7_delay += link->panel_config.pps.extra_post_t7_ms;
10441045
msleep(post_T7_delay);
10451046
}

drivers/gpu/drm/amd/display/dc/link/link_dpms.c

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2082,6 +2082,9 @@ static enum dc_status enable_link_dp(struct dc_state *state,
20822082
if (link_settings->link_rate == LINK_RATE_LOW)
20832083
skip_video_pattern = false;
20842084

2085+
if (stream->sink_patches.oled_optimize_display_on)
2086+
set_default_brightness_aux(link);
2087+
20852088
if (perform_link_training_with_retries(link_settings,
20862089
skip_video_pattern,
20872090
lt_attempts,
@@ -2105,10 +2108,14 @@ static enum dc_status enable_link_dp(struct dc_state *state,
21052108
if (link->dpcd_sink_ext_caps.bits.oled == 1 ||
21062109
link->dpcd_sink_ext_caps.bits.sdr_aux_backlight_control == 1 ||
21072110
link->dpcd_sink_ext_caps.bits.hdr_aux_backlight_control == 1) {
2108-
set_default_brightness_aux(link);
2109-
if (link->dpcd_sink_ext_caps.bits.oled == 1)
2110-
msleep(bl_oled_enable_delay);
2111-
edp_backlight_enable_aux(link, true);
2111+
if (!stream->sink_patches.oled_optimize_display_on) {
2112+
set_default_brightness_aux(link);
2113+
if (link->dpcd_sink_ext_caps.bits.oled == 1)
2114+
msleep(bl_oled_enable_delay);
2115+
edp_backlight_enable_aux(link, true);
2116+
} else {
2117+
edp_backlight_enable_aux(link, true);
2118+
}
21122119
}
21132120

21142121
return status;

0 commit comments

Comments
 (0)