One more patch for dealing with some devices with a non-upright mounted

LCD-panel (rhbz#1730783)
This commit is contained in:
Hans de Goede 2019-07-19 11:48:32 +02:00
parent 95e332b265
commit 0e56037ed6
2 changed files with 62 additions and 1 deletions

View File

@ -613,3 +613,60 @@ index 434bcf2..795bded 100644
-- --
2.21.0 2.21.0
From aac0f839ec120fdd4dadd198709216f313bb0ac0 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Thu, 18 Jul 2019 17:51:54 +0200
Subject: [PATCH] two-step: Deal with buggy firmware which does not pre-rotate
the bgrt image
Some buggy Lenovo 2-in-1s with a 90 degree rotated panel, behave as
if the panel is mounted up-right / not rotated at all. These devices
have a buggy efifb size (landscape resolution instead of the actual
portrait resolution of the panel), this gets fixed-up by the kernel.
These buggy devices also do not pre-rotate the bgrt_image nor do
they set the ACPI-6.2 rotation status-bits. We can detect this by
checking that the bgrt_image is perfectly centered horizontally
when we use the panel's height as the width.
This commit uses this check to override the bgrt-rotation read from
the ACPI-6.2 rotation status-bits, fixing us displaying the bgrt image
with the wrong rotation.
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1730783
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
src/plugins/splash/two-step/plugin.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c
index 795bded..2e596d5 100644
--- a/src/plugins/splash/two-step/plugin.c
+++ b/src/plugins/splash/two-step/plugin.c
@@ -408,6 +408,23 @@ view_set_bgrt_background (view_t *view)
&panel_width, &panel_height,
&panel_rotation, &panel_scale);
+ /*
+ * Some buggy Lenovo 2-in-1s with a 90 degree rotated panel, behave as
+ * if the panel is mounted up-right / not rotated at all. These devices
+ * have a buggy efifb size (landscape resolution instead of the actual
+ * portrait resolution of the panel), this gets fixed-up by the kernel.
+ * These buggy devices also do not pre-rotate the bgrt_image nor do
+ * they set the ACPI-6.2 rotation status-bits. We can detect this by
+ * checking that the bgrt_image is perfectly centered horizontally
+ * when we use the panel's height as the width.
+ */
+ if (have_panel_props &&
+ (panel_rotation == PLY_PIXEL_BUFFER_ROTATE_CLOCKWISE ||
+ panel_rotation == PLY_PIXEL_BUFFER_ROTATE_COUNTER_CLOCKWISE) &&
+ (panel_width - view->plugin->background_bgrt_raw_width) / 2 != sysfs_x_offset &&
+ (panel_height - view->plugin->background_bgrt_raw_width) / 2 == sysfs_x_offset)
+ bgrt_rotation = panel_rotation;
+
/*
* Before the ACPI 6.2 specification, the BGRT table did not contain
* any rotation information, so to make sure that the firmware-splash
--
2.21.0

View File

@ -1,7 +1,7 @@
Summary: Graphical Boot Animation and Logger Summary: Graphical Boot Animation and Logger
Name: plymouth Name: plymouth
Version: 0.9.4 Version: 0.9.4
Release: 6%{?dist} Release: 7%{?dist}
License: GPLv2+ License: GPLv2+
URL: http://www.freedesktop.org/wiki/Software/Plymouth URL: http://www.freedesktop.org/wiki/Software/Plymouth
@ -415,6 +415,10 @@ fi
%changelog %changelog
* Fri Jul 19 2019 Hans de Goede <jwrdegoede@fedoraproject.org> - 0.9.4-7
- One more patch for dealing with some devices with a non-upright mounted
LCD-panel (rhbz#1730783)
* Wed Jun 12 2019 Hans de Goede <jwrdegoede@fedoraproject.org> - 0.9.4-6 * Wed Jun 12 2019 Hans de Goede <jwrdegoede@fedoraproject.org> - 0.9.4-6
- Add patches from upstream for: - Add patches from upstream for:
- Fix failing to pick the native monitor mode starting with kernel 5.2 - Fix failing to pick the native monitor mode starting with kernel 5.2