Am 03.12.25 um 10:07 schrieb Tvrtko Ursulin:
Convert the swapping of width and height quirk to a callback. Signed-off-by: Tvrtko Ursulin <[email protected]> Suggested-by: Ard Biesheuvel <[email protected]> Cc: Thomas Zimmermann <[email protected]> Cc: Ard Biesheuvel <[email protected]> Cc: Melissa Wen <[email protected]> Cc: [email protected]
Reviewed-by: Thomas Zimmermann <[email protected]>
--- drivers/firmware/efi/sysfb_efi.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/drivers/firmware/efi/sysfb_efi.c b/drivers/firmware/efi/sysfb_efi.c index 14b61414c33a..eacf9a50eab2 100644 --- a/drivers/firmware/efi/sysfb_efi.c +++ b/drivers/firmware/efi/sysfb_efi.c @@ -231,6 +231,16 @@ static const struct dmi_system_id efifb_dmi_system_table[] __initconst = { {}, };+static int __init efifb_swap_width_height(const struct dmi_system_id *id)+{ + swap(screen_info.lfb_width, screen_info.lfb_height); + screen_info.lfb_linelength = (unsigned int)screen_info.lfb_depth * + screen_info.lfb_width / + BITS_PER_BYTE; + + return 1; +} + /* * Some devices have a portrait LCD but advertise a landscape resolution (and * pitch). We simply swap width and height for these devices so that we can @@ -248,6 +258,7 @@ static const struct dmi_system_id efifb_dmi_swap_width_height[] __initconst = { DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "MIIX 310-10ICR"), DMI_EXACT_MATCH(DMI_BIOS_VERSION, "1HCN44WW"), }, + .callback = efifb_swap_width_height, }, { /* Lenovo MIIX 320-10ICR with 800x1280 portrait screen */ @@ -256,6 +267,7 @@ static const struct dmi_system_id efifb_dmi_swap_width_height[] __initconst = { DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Lenovo MIIX 320-10ICR"), }, + .callback = efifb_swap_width_height, }, { /* Lenovo D330 with 800x1280 or 1200x1920 portrait screen */ @@ -264,6 +276,7 @@ static const struct dmi_system_id efifb_dmi_swap_width_height[] __initconst = { DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad D330-10IGM"), }, + .callback = efifb_swap_width_height, }, { /* Lenovo IdeaPad Duet 3 10IGL5 with 1200x1920 portrait screen */ @@ -272,6 +285,7 @@ static const struct dmi_system_id efifb_dmi_swap_width_height[] __initconst = { DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "IdeaPad Duet 3 10IGL5"), }, + .callback = efifb_swap_width_height, }, { /* Lenovo Yoga Book X91F / X91L */ @@ -280,6 +294,7 @@ static const struct dmi_system_id efifb_dmi_swap_width_height[] __initconst = { /* Non exact match to match F + L versions */ DMI_MATCH(DMI_PRODUCT_NAME, "Lenovo YB1-X91"), }, + .callback = efifb_swap_width_height, }, {}, }; @@ -355,13 +370,8 @@ __init void sysfb_apply_efi_quirks(void) !(screen_info.capabilities & VIDEO_CAPABILITY_SKIP_QUIRKS)) dmi_check_system(efifb_dmi_system_table);- if (screen_info.orig_video_isVGA == VIDEO_TYPE_EFI &&- dmi_check_system(efifb_dmi_swap_width_height)) { - swap(screen_info.lfb_width, screen_info.lfb_height); - screen_info.lfb_linelength = (unsigned int)screen_info.lfb_depth * - screen_info.lfb_width / - BITS_PER_BYTE; - } + if (screen_info.orig_video_isVGA == VIDEO_TYPE_EFI) + dmi_check_system(efifb_dmi_swap_width_height); }__init void sysfb_set_efifb_fwnode(struct platform_device *pd)
-- -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)
