diff options
| author | Tvrtko Ursulin <tvrtko.ursulin@igalia.com> | 2025-12-08 20:39:23 +0100 |
|---|---|---|
| committer | Ard Biesheuvel <ardb@kernel.org> | 2025-12-16 14:12:43 +0100 |
| commit | 449b87e81f3561bd907d3b9a31cf69590132a2df (patch) | |
| tree | 5a5ae2aad911951b2092a62f8dcf58aba2f11cf9 /drivers/firmware | |
| parent | bb2c941b3131437185e79c8f2a16469876664572 (diff) | |
efi: sysfb_efi: Fix lfb_linelength calculation when applying quirks
PIXEL_BIT_MASK formats can have either less or more than four bytes per
pixel so lets fix the lfb_linelenght calculation when applying the
swapped width and height quirks.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: Melissa Wen <mwen@igalia.com>
Cc: linux-efi@vger.kernel.org
Tested-by: Melissa Wen <mwen@igalia.com> # v3
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Diffstat (limited to 'drivers/firmware')
| -rw-r--r-- | drivers/firmware/efi/sysfb_efi.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/firmware/efi/sysfb_efi.c b/drivers/firmware/efi/sysfb_efi.c index 1d8b6966731c..60495eb3441c 100644 --- a/drivers/firmware/efi/sysfb_efi.c +++ b/drivers/firmware/efi/sysfb_efi.c @@ -357,8 +357,11 @@ __init void sysfb_apply_efi_quirks(void) if (screen_info.orig_video_isVGA == VIDEO_TYPE_EFI && dmi_check_system(efifb_dmi_swap_width_height)) { + u32 bpp = __screen_info_lfb_bits_per_pixel(&screen_info); + swap(screen_info.lfb_width, screen_info.lfb_height); - screen_info.lfb_linelength = 4 * screen_info.lfb_width; + screen_info.lfb_linelength = bpp * screen_info.lfb_width / + BITS_PER_BYTE; } } |
