On 03/12/2025 10:29, Thomas Zimmermann wrote:
Hi
Am 03.12.25 um 11:13 schrieb Ard Biesheuvel:
On Wed, 3 Dec 2025 at 11:05, Thomas Zimmermann <[email protected]>
wrote:
Hi
Am 03.12.25 um 10:07 schrieb Tvrtko Ursulin:
Valve Steam Deck has a 800x1280 portrait screen installed in a
landscape
orientation. The firmware offers a software rotated 1280x800 mode which
GRUB can be made to switch to when displaying a boot menu. If this mode
was selected frame buffer drivers will see this fake mode and fbcon
rendering will be corrupted.
Lets therefore add a selective quirk inside the current "swap with and
height" handling, which will detect this exact mode and fix it up
back to
the native one.
This will allow the DRM based frame buffer drivers to detect the
correct
mode and, apply the existing panel orientation quirk, and render the
console in landscape mode with no corruption.
Signed-off-by: Tvrtko Ursulin <[email protected]>
Cc: Thomas Zimmermann <[email protected]>
Cc: Ard Biesheuvel <[email protected]>
Cc: Melissa Wen <[email protected]>
Cc: [email protected]
---
drivers/firmware/efi/sysfb_efi.c | 56 +++++++++++++++++++++++++++
++---
1 file changed, 51 insertions(+), 5 deletions(-)
diff --git a/drivers/firmware/efi/sysfb_efi.c b/drivers/firmware/
efi/sysfb_efi.c
index eacf9a50eab2..566492e67798 100644
--- a/drivers/firmware/efi/sysfb_efi.c
+++ b/drivers/firmware/efi/sysfb_efi.c
@@ -231,16 +231,42 @@ static const struct dmi_system_id
efifb_dmi_system_table[] __initconst = {
{},
};
+struct efifb_mode_fixup {
+ unsigned int width;
+ unsigned int height;
+ unsigned int linelength;
+};
+
static int __init efifb_swap_width_height(const struct
dmi_system_id *id)
It's something different now. Can this please become a separate list
with a separate callback?
Why? That means we have to introduce another dmi_check_system() call,
and manually implement the logic to ensure that it is not called
redundantly, i.e., after the first one already found a match.
If the separate list isn't feasible, let's at least have a separate
callback.
Ard asked for that already so in v3 it is already separate.
I have also locally changed 2/4 to use
__screen_info_lfb_bits_per_pixel() and if now everyone is happy I can
send out a v4 with that?
Regards,
Tvrtko