drivers/firmware: move x86 Generic System Framebuffers support
The x86 architecture has generic support to register a system framebuffer platform device. It either registers a "simple-framebuffer" if the config option CONFIG_X86_SYSFB is enabled, or a legacy VGA/VBE/EFI FB device. But the code is generic enough to be reused by other architectures and can be moved out of the arch/x86 directory. This will allow to also support the simple{fb,drm} drivers on non-x86 EFI platforms, such as aarch64 where these drivers are only supported with DT. Signed-off-by: Javier Martinez Canillas <javierm@redhat.com> Acked-by: Borislav Petkov <bp@suse.de> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20210625130947.1803678-2-javierm@redhat.com
This commit is contained in:
parent
bf44e8cecc
commit
d391c58271
9 changed files with 42 additions and 35 deletions
|
@ -2806,32 +2806,6 @@ config AMD_NB
|
||||||
def_bool y
|
def_bool y
|
||||||
depends on CPU_SUP_AMD && PCI
|
depends on CPU_SUP_AMD && PCI
|
||||||
|
|
||||||
config X86_SYSFB
|
|
||||||
bool "Mark VGA/VBE/EFI FB as generic system framebuffer"
|
|
||||||
help
|
|
||||||
Firmwares often provide initial graphics framebuffers so the BIOS,
|
|
||||||
bootloader or kernel can show basic video-output during boot for
|
|
||||||
user-guidance and debugging. Historically, x86 used the VESA BIOS
|
|
||||||
Extensions and EFI-framebuffers for this, which are mostly limited
|
|
||||||
to x86.
|
|
||||||
This option, if enabled, marks VGA/VBE/EFI framebuffers as generic
|
|
||||||
framebuffers so the new generic system-framebuffer drivers can be
|
|
||||||
used on x86. If the framebuffer is not compatible with the generic
|
|
||||||
modes, it is advertised as fallback platform framebuffer so legacy
|
|
||||||
drivers like efifb, vesafb and uvesafb can pick it up.
|
|
||||||
If this option is not selected, all system framebuffers are always
|
|
||||||
marked as fallback platform framebuffers as usual.
|
|
||||||
|
|
||||||
Note: Legacy fbdev drivers, including vesafb, efifb, uvesafb, will
|
|
||||||
not be able to pick up generic system framebuffers if this option
|
|
||||||
is selected. You are highly encouraged to enable simplefb as
|
|
||||||
replacement if you select this option. simplefb can correctly deal
|
|
||||||
with generic system framebuffers. But you should still keep vesafb
|
|
||||||
and others enabled as fallback if a system framebuffer is
|
|
||||||
incompatible with simplefb.
|
|
||||||
|
|
||||||
If unsure, say Y.
|
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -135,9 +135,6 @@ obj-$(CONFIG_X86_CHECK_BIOS_CORRUPTION) += check.o
|
||||||
obj-$(CONFIG_SWIOTLB) += pci-swiotlb.o
|
obj-$(CONFIG_SWIOTLB) += pci-swiotlb.o
|
||||||
obj-$(CONFIG_OF) += devicetree.o
|
obj-$(CONFIG_OF) += devicetree.o
|
||||||
obj-$(CONFIG_UPROBES) += uprobes.o
|
obj-$(CONFIG_UPROBES) += uprobes.o
|
||||||
obj-y += sysfb.o
|
|
||||||
obj-$(CONFIG_X86_SYSFB) += sysfb_simplefb.o
|
|
||||||
obj-$(CONFIG_EFI) += sysfb_efi.o
|
|
||||||
|
|
||||||
obj-$(CONFIG_PERF_EVENTS) += perf_regs.o
|
obj-$(CONFIG_PERF_EVENTS) += perf_regs.o
|
||||||
obj-$(CONFIG_TRACING) += tracepoint.o
|
obj-$(CONFIG_TRACING) += tracepoint.o
|
||||||
|
|
|
@ -251,6 +251,38 @@ config QCOM_SCM_DOWNLOAD_MODE_DEFAULT
|
||||||
|
|
||||||
Say Y here to enable "download mode" by default.
|
Say Y here to enable "download mode" by default.
|
||||||
|
|
||||||
|
config SYSFB
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
depends on X86 || COMPILE_TEST
|
||||||
|
|
||||||
|
config X86_SYSFB
|
||||||
|
bool "Mark VGA/VBE/EFI FB as generic system framebuffer"
|
||||||
|
depends on SYSFB
|
||||||
|
help
|
||||||
|
Firmwares often provide initial graphics framebuffers so the BIOS,
|
||||||
|
bootloader or kernel can show basic video-output during boot for
|
||||||
|
user-guidance and debugging. Historically, x86 used the VESA BIOS
|
||||||
|
Extensions and EFI-framebuffers for this, which are mostly limited
|
||||||
|
to x86.
|
||||||
|
This option, if enabled, marks VGA/VBE/EFI framebuffers as generic
|
||||||
|
framebuffers so the new generic system-framebuffer drivers can be
|
||||||
|
used on x86. If the framebuffer is not compatible with the generic
|
||||||
|
modes, it is advertised as fallback platform framebuffer so legacy
|
||||||
|
drivers like efifb, vesafb and uvesafb can pick it up.
|
||||||
|
If this option is not selected, all system framebuffers are always
|
||||||
|
marked as fallback platform framebuffers as usual.
|
||||||
|
|
||||||
|
Note: Legacy fbdev drivers, including vesafb, efifb, uvesafb, will
|
||||||
|
not be able to pick up generic system framebuffers if this option
|
||||||
|
is selected. You are highly encouraged to enable simplefb as
|
||||||
|
replacement if you select this option. simplefb can correctly deal
|
||||||
|
with generic system framebuffers. But you should still keep vesafb
|
||||||
|
and others enabled as fallback if a system framebuffer is
|
||||||
|
incompatible with simplefb.
|
||||||
|
|
||||||
|
If unsure, say Y.
|
||||||
|
|
||||||
config TI_SCI_PROTOCOL
|
config TI_SCI_PROTOCOL
|
||||||
tristate "TI System Control Interface (TISCI) Message Protocol"
|
tristate "TI System Control Interface (TISCI) Message Protocol"
|
||||||
depends on TI_MESSAGE_MANAGER
|
depends on TI_MESSAGE_MANAGER
|
||||||
|
|
|
@ -18,6 +18,8 @@ obj-$(CONFIG_FIRMWARE_MEMMAP) += memmap.o
|
||||||
obj-$(CONFIG_RASPBERRYPI_FIRMWARE) += raspberrypi.o
|
obj-$(CONFIG_RASPBERRYPI_FIRMWARE) += raspberrypi.o
|
||||||
obj-$(CONFIG_FW_CFG_SYSFS) += qemu_fw_cfg.o
|
obj-$(CONFIG_FW_CFG_SYSFS) += qemu_fw_cfg.o
|
||||||
obj-$(CONFIG_QCOM_SCM) += qcom_scm.o qcom_scm-smc.o qcom_scm-legacy.o
|
obj-$(CONFIG_QCOM_SCM) += qcom_scm.o qcom_scm-smc.o qcom_scm-legacy.o
|
||||||
|
obj-$(CONFIG_SYSFB) += sysfb.o
|
||||||
|
obj-$(CONFIG_X86_SYSFB) += sysfb_simplefb.o
|
||||||
obj-$(CONFIG_TI_SCI_PROTOCOL) += ti_sci.o
|
obj-$(CONFIG_TI_SCI_PROTOCOL) += ti_sci.o
|
||||||
obj-$(CONFIG_TRUSTED_FOUNDATIONS) += trusted_foundations.o
|
obj-$(CONFIG_TRUSTED_FOUNDATIONS) += trusted_foundations.o
|
||||||
obj-$(CONFIG_TURRIS_MOX_RWTM) += turris-mox-rwtm.o
|
obj-$(CONFIG_TURRIS_MOX_RWTM) += turris-mox-rwtm.o
|
||||||
|
|
|
@ -36,6 +36,8 @@ obj-$(CONFIG_LOAD_UEFI_KEYS) += mokvar-table.o
|
||||||
fake_map-y += fake_mem.o
|
fake_map-y += fake_mem.o
|
||||||
fake_map-$(CONFIG_X86) += x86_fake_mem.o
|
fake_map-$(CONFIG_X86) += x86_fake_mem.o
|
||||||
|
|
||||||
|
obj-$(CONFIG_SYSFB) += sysfb_efi.o
|
||||||
|
|
||||||
arm-obj-$(CONFIG_EFI) := efi-init.o arm-runtime.o
|
arm-obj-$(CONFIG_EFI) := efi-init.o arm-runtime.o
|
||||||
obj-$(CONFIG_ARM) += $(arm-obj-y)
|
obj-$(CONFIG_ARM) += $(arm-obj-y)
|
||||||
obj-$(CONFIG_ARM64) += $(arm-obj-y)
|
obj-$(CONFIG_ARM64) += $(arm-obj-y)
|
||||||
|
|
|
@ -21,10 +21,10 @@
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/screen_info.h>
|
#include <linux/screen_info.h>
|
||||||
|
#include <linux/sysfb.h>
|
||||||
#include <video/vga.h>
|
#include <video/vga.h>
|
||||||
|
|
||||||
#include <asm/efi.h>
|
#include <asm/efi.h>
|
||||||
#include <asm/sysfb.h>
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
OVERRIDE_NONE = 0x0,
|
OVERRIDE_NONE = 0x0,
|
|
@ -32,7 +32,7 @@
|
||||||
#include <linux/platform_data/simplefb.h>
|
#include <linux/platform_data/simplefb.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/screen_info.h>
|
#include <linux/screen_info.h>
|
||||||
#include <asm/sysfb.h>
|
#include <linux/sysfb.h>
|
||||||
|
|
||||||
static __init int sysfb_init(void)
|
static __init int sysfb_init(void)
|
||||||
{
|
{
|
|
@ -18,7 +18,7 @@
|
||||||
#include <linux/platform_data/simplefb.h>
|
#include <linux/platform_data/simplefb.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/screen_info.h>
|
#include <linux/screen_info.h>
|
||||||
#include <asm/sysfb.h>
|
#include <linux/sysfb.h>
|
||||||
|
|
||||||
static const char simplefb_resname[] = "BOOTFB";
|
static const char simplefb_resname[] = "BOOTFB";
|
||||||
static const struct simplefb_format formats[] = SIMPLEFB_FORMATS;
|
static const struct simplefb_format formats[] = SIMPLEFB_FORMATS;
|
|
@ -1,6 +1,6 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||||
#ifndef _ARCH_X86_KERNEL_SYSFB_H
|
#ifndef _LINUX_SYSFB_H
|
||||||
#define _ARCH_X86_KERNEL_SYSFB_H
|
#define _LINUX_SYSFB_H
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generic System Framebuffers on x86
|
* Generic System Framebuffers on x86
|
||||||
|
@ -91,4 +91,4 @@ static inline int create_simplefb(const struct screen_info *si,
|
||||||
|
|
||||||
#endif /* CONFIG_X86_SYSFB */
|
#endif /* CONFIG_X86_SYSFB */
|
||||||
|
|
||||||
#endif /* _ARCH_X86_KERNEL_SYSFB_H */
|
#endif /* _LINUX_SYSFB_H */
|
Loading…
Add table
Reference in a new issue