aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4210-drm-amd-display-Check-lid-state-to-determine-fast-bo.patch
diff options
context:
space:
mode:
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.patch82
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
+