Replace screen_info and edid_info with sysfb_primary_device of type struct sysfb_display_info. Update all users.
Sysfb DRM drivers currently fetch the global edid_info directly, when they should get that information together with the screen_info from their device. Wrapping screen_info and edid_info in sysfb_primary_display and passing this to drivers enables this. Replacing both with sysfb_primary_display has been motivate by the EFI stub. EFI wants to transfer EDID via config table in a single entry. Using struct sysfb_display_info this will become easily possible. Hence accept some churn in architecture code for the long-term improvements. Patches 1 and 2 reduce the exposure of screen_info in EFI-related code. Patch 3 adds struct sysfb_display_info. Patch 4 replaces scren_info with sysfb_primary_display. This results in several changes throught the kernel, but is really just a refactoring. Patch 5 updates sysfb to transfer sysfb_primary_display to the related drivers. Patch 6 moves edid_info into sysfb_primary_display. This resolves some drivers' reference to the global edid_info, but also makes the EDID data available on non-x86 architectures. The short-term benefit of this series is in patches 5 and 6. With sysfb_primary_display in place a follow-up series will improve EFI support for EDID as outlined in the series at [1] and [2]. [1] https://lore.kernel.org/dri-devel/[email protected]/ [2] https://lore.kernel.org/linux-efi/[email protected]/ Thomas Zimmermann (6): efi: earlycon: Reduce number of references to global screen_info efi: sysfb_efi: Reduce number of references to global screen_info sysfb: Add struct sysfb_display_info sysfb: Replace screen_info with sysfb_primary_display sysfb: Pass sysfb_primary_display to devices sysfb: Move edid_info into sysfb_primary_display arch/arm64/kernel/image-vars.h | 2 +- arch/loongarch/kernel/efi.c | 11 +-- arch/loongarch/kernel/image-vars.h | 2 +- arch/riscv/kernel/image-vars.h | 2 +- arch/x86/kernel/kexec-bzimage64.c | 4 +- arch/x86/kernel/setup.c | 16 ++-- arch/x86/video/video-common.c | 4 +- drivers/firmware/efi/earlycon.c | 42 +++++----- drivers/firmware/efi/efi-init.c | 14 ++-- drivers/firmware/efi/libstub/efi-stub-entry.c | 18 +++-- drivers/firmware/efi/sysfb_efi.c | 81 ++++++++++--------- drivers/firmware/sysfb.c | 13 +-- drivers/firmware/sysfb_simplefb.c | 2 +- drivers/gpu/drm/sysfb/efidrm.c | 14 ++-- drivers/gpu/drm/sysfb/vesadrm.c | 14 ++-- drivers/hv/vmbus_drv.c | 6 +- drivers/pci/vgaarb.c | 4 +- drivers/video/Kconfig | 1 - drivers/video/fbdev/core/fbmon.c | 8 +- drivers/video/fbdev/efifb.c | 10 ++- drivers/video/fbdev/vesafb.c | 10 ++- drivers/video/fbdev/vga16fb.c | 8 +- drivers/video/screen_info_pci.c | 5 +- include/linux/screen_info.h | 2 - include/linux/sysfb.h | 23 ++++-- include/video/edid.h | 4 - 26 files changed, 177 insertions(+), 143 deletions(-) base-commit: 57e807d4454add8b60e8807ad1cf812141f34cdb -- 2.51.1
