[PATCH] efi_loader: allow to disable GOP support
Icenowy Zheng
icenowy at aosc.io
Wed Jun 16 14:19:41 CEST 2021
在 2021-06-16星期三的 06:59 +0200,Heinrich Schuchardt写道:
> Am 15. Juni 2021 23:10:28 MESZ schrieb Icenowy Zheng
> <icenowy at aosc.io>:
> > Sometimes EFI GOP support may be not wanted (e.g. because the
> > operating
> > system cannot operate well with it) even if video support in U-Boot
> > is
> > needed.
>
> Which OS has which problem?
> Why don't you fix the OS?
I'm trying RK3399 with Linux. EFIFB never works as intended (maybe it's
because IOMMU is reconfigured), and rockchipdrmfb will be fb1 (leave
non-working EFIFB as fb0), makes fbcon unusable.
The second problem has a proposed fix, but the first problem is
mystery.
>
> Best regards
>
> Heinrich
>
>
> >
> > Allow to disable EFI GOP support with a Kconfig option.
> >
> > Signed-off-by: Icenowy Zheng <icenowy at aosc.io>
> > ---
> > lib/efi_loader/Kconfig | 8 ++++++++
> > lib/efi_loader/Makefile | 3 +--
> > lib/efi_loader/efi_setup.c | 11 ++++++-----
> > 3 files changed, 15 insertions(+), 7 deletions(-)
> >
> > diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
> > index 6242caceb7..5ba0ce6a44 100644
> > --- a/lib/efi_loader/Kconfig
> > +++ b/lib/efi_loader/Kconfig
> > @@ -282,6 +282,14 @@ config EFI_HAVE_RUNTIME_RESET
> > depends on ARCH_BCM283X || FSL_LAYERSCAPE || PSCI_RESET ||
> > \
> > SANDBOX || SYSRESET_X86
> >
> > +config EFI_GOP_PROTOCOL
> > + bool "EFI_GOP_PROTOCOL support"
> > + default y
> > + depends on DM_VIDEO || LCD
> > + help
> > + Provide a EFI_GOP_PROTOCOL implementation using the
> > graphics
> > + hardware initialized by U-Boot.
> > +
> > config EFI_GRUB_ARM32_WORKAROUND
> > bool "Workaround for GRUB on 32bit ARM"
> > default n if ARCH_BCM283X || ARCH_SUNXI || ARCH_QEMU
> > diff --git a/lib/efi_loader/Makefile b/lib/efi_loader/Makefile
> > index fd344cea29..826563d9a7 100644
> > --- a/lib/efi_loader/Makefile
> > +++ b/lib/efi_loader/Makefile
> > @@ -54,8 +54,7 @@ obj-$(CONFIG_EFI_VARIABLES_PRESEED) +=
> > efi_var_seed.o
> > endif
> > obj-y += efi_watchdog.o
> > obj-$(CONFIG_EFI_ESRT) += efi_esrt.o
> > -obj-$(CONFIG_LCD) += efi_gop.o
> > -obj-$(CONFIG_DM_VIDEO) += efi_gop.o
> > +obj-$(CONFIG_EFI_GOP_PROTOCOL) += efi_gop.o
> > obj-$(CONFIG_PARTITIONS) += efi_disk.o
> > obj-$(CONFIG_NET) += efi_net.o
> > obj-$(CONFIG_GENERATE_ACPI_TABLE) += efi_acpi.o
> > diff --git a/lib/efi_loader/efi_setup.c
> > b/lib/efi_loader/efi_setup.c
> > index 3c5cf9a435..98deb63777 100644
> > --- a/lib/efi_loader/efi_setup.c
> > +++ b/lib/efi_loader/efi_setup.c
> > @@ -254,11 +254,12 @@ efi_status_t efi_init_obj_list(void)
> > if (ret != EFI_SUCCESS)
> > goto out;
> >
> > -#if defined(CONFIG_LCD) || defined(CONFIG_DM_VIDEO)
> > - ret = efi_gop_register();
> > - if (ret != EFI_SUCCESS)
> > - goto out;
> > -#endif
> > + if (IS_ENABLED(CONFIG_EFI_GOP_PROTOCOL)) {
> > + ret = efi_gop_register();
> > + if (ret != EFI_SUCCESS)
> > + goto out;
> > + }
> > +
> > #ifdef CONFIG_NET
> > ret = efi_net_register();
> > if (ret != EFI_SUCCESS)
More information about the U-Boot
mailing list