diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4210-drm-amd-display-Check-lid-state-to-determine-fast-bo.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/4210-drm-amd-display-Check-lid-state-to-determine-fast-bo.patch | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4210-drm-amd-display-Check-lid-state-to-determine-fast-bo.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4210-drm-amd-display-Check-lid-state-to-determine-fast-bo.patch new file mode 100644 index 00000000..f473c74b --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4210-drm-amd-display-Check-lid-state-to-determine-fast-bo.patch @@ -0,0 +1,82 @@ +From 9da4c2c7659cc5acbb68f55110fe41d87ef6ac8d Mon Sep 17 00:00:00 2001 +From: Yongqiang Sun <yongqiang.sun@amd.com> +Date: Wed, 4 Apr 2018 17:27:18 -0400 +Subject: [PATCH 4210/5725] drm/amd/display: Check lid state to determine fast + boot optimization. + +For legacy enable boot up with lid closed, eDP information couldn't be +read correctly via SBIOS_SCRATCH_3 results in eDP cannot be light up +properly when open lid. +Check lid state instead can resolve the issue. + +Signed-off-by: Yongqiang Sun <yongqiang.sun@amd.com> +Reviewed-by: Eric Yang <eric.yang2@amd.com> +Acked-by: Harry Wentland <harry.wentland@amd.com> +--- + drivers/gpu/drm/amd/display/dc/dc_stream.h | 1 + + .../amd/display/dc/dce110/dce110_hw_sequencer.c | 24 ++++++++++++++-------- + 2 files changed, 17 insertions(+), 8 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/dc_stream.h b/drivers/gpu/drm/amd/display/dc/dc_stream.h +index aefc76b..4750768 100644 +--- a/drivers/gpu/drm/amd/display/dc/dc_stream.h ++++ b/drivers/gpu/drm/amd/display/dc/dc_stream.h +@@ -98,6 +98,7 @@ struct dc_stream_state { + int phy_pix_clk; + enum signal_type signal; + bool dpms_off; ++ bool lid_state_closed; + + struct dc_stream_status status; + +diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c +index b95dd9f..430d67b 100644 +--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c ++++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c +@@ -1481,6 +1481,17 @@ static void disable_vga_and_power_gate_all_controllers( + } + } + ++static bool is_eDP_lid_closed(struct dc_state *context) ++{ ++ int i; ++ ++ for (i = 0; i < context->stream_count; i++) { ++ if (context->streams[i]->signal == SIGNAL_TYPE_EDP) ++ return context->streams[i]->lid_state_closed; ++ } ++ return false; ++} ++ + static struct dc_link *get_link_for_edp_not_in_use( + struct dc *dc, + struct dc_state *context) +@@ -1515,20 +1526,17 @@ static struct dc_link *get_link_for_edp_not_in_use( + */ + void dce110_enable_accelerated_mode(struct dc *dc, struct dc_state *context) + { +- struct dc_bios *dcb = dc->ctx->dc_bios; +- +- /* vbios already light up eDP, so we can leverage vbios and skip eDP ++ /* check eDP lid state: ++ * If lid is open, vbios already light up eDP, so we can leverage vbios and skip eDP + * programming + */ +- bool can_eDP_fast_boot_optimize = +- (dcb->funcs->get_vga_enabled_displays(dc->ctx->dc_bios) == ATOM_DISPLAY_LCD1_ACTIVE); +- +- /* if OS doesn't light up eDP and eDP link is available, we want to disable */ ++ bool lid_state_closed = is_eDP_lid_closed(context); + struct dc_link *edp_link_to_turnoff = NULL; + +- if (can_eDP_fast_boot_optimize) { ++ if (!lid_state_closed) { + edp_link_to_turnoff = get_link_for_edp_not_in_use(dc, context); + ++ /* if OS doesn't light up eDP and eDP link is available, we want to disable */ + if (!edp_link_to_turnoff) + dc->apply_edp_fast_boot_optimization = true; + } +-- +2.7.4 + |