From 0d93e821867c2a6edcd15317311dcb99f7a16887 Mon Sep 17 00:00:00 2001 From: Charlene Liu Date: Wed, 26 Mar 2025 17:11:35 +0800 Subject: [PATCH] drm/amd/display: turn off eDP lcdvdd and backlight if not required [why] A+N configuration, eDP on A-APU is off, extended display active. Resume from s4, eDP's backlight is still on. [how] Turn off inactive eDP backlight and lcdvdd. Reviewed-by: Charlene Liu Reviewed-by: Aric Cyr Signed-off-by: Charlene Liu Signed-off-by: Jing Zhou Signed-off-by: Roman Li Tested-by: Daniel Wheeler Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/display/dc/core/dc.c | 4 ++-- .../amd/display/dc/link/protocols/link_edp_panel_control.c | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c index 636999fcaebb..66e23507eb82 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c @@ -6298,10 +6298,10 @@ void dc_query_current_properties(struct dc *dc, struct dc_current_properties *pr void dc_set_edp_power(const struct dc *dc, struct dc_link *edp_link, bool powerOn) { - if (edp_link->connector_signal != SIGNAL_TYPE_EDP) + if (!edp_link || !edp_link->dc || !edp_link->dc->link_srv) return; - if (edp_link->skip_implict_edp_power_control == false) + if (edp_link->connector_signal != SIGNAL_TYPE_EDP) return; edp_link->dc->link_srv->edp_set_panel_power(edp_link, powerOn); diff --git a/drivers/gpu/drm/amd/display/dc/link/protocols/link_edp_panel_control.c b/drivers/gpu/drm/amd/display/dc/link/protocols/link_edp_panel_control.c index da74c2b5854f..f50c4dbc7553 100644 --- a/drivers/gpu/drm/amd/display/dc/link/protocols/link_edp_panel_control.c +++ b/drivers/gpu/drm/amd/display/dc/link/protocols/link_edp_panel_control.c @@ -393,6 +393,7 @@ void edp_set_panel_power(struct dc_link *link, bool powerOn) // 3. Rx power on dpcd_write_rx_power_ctrl(link, true); + DC_LOG_BACKLIGHT("eDP power and backlight: Power on"); } else { // 3. Rx power off dpcd_write_rx_power_ctrl(link, false); @@ -404,6 +405,7 @@ void edp_set_panel_power(struct dc_link *link, bool powerOn) // 1. panel VDD off if (!link->dc->config.edp_no_power_sequencing) link->dc->hwss.edp_power_control(link, false); + DC_LOG_BACKLIGHT("eDP power and backlight: Power off"); } } -- 2.25.1