Rework the kernel's init_primary_display() helpers to allow for later
support of additional config-table entries and EDID information. No
functional changes.

Signed-off-by: Thomas Zimmermann <[email protected]>
---
 arch/loongarch/kernel/efi.c     | 22 +++++++++++-----------
 drivers/firmware/efi/efi-init.c | 19 ++++++++++---------
 2 files changed, 21 insertions(+), 20 deletions(-)

diff --git a/arch/loongarch/kernel/efi.c b/arch/loongarch/kernel/efi.c
index 638a392d2cd2..1ef38036e8ae 100644
--- a/arch/loongarch/kernel/efi.c
+++ b/arch/loongarch/kernel/efi.c
@@ -81,19 +81,19 @@ EXPORT_SYMBOL_GPL(sysfb_primary_display);
 
 static void __init init_primary_display(void)
 {
-       struct screen_info *si;
-
-       if (screen_info_table == EFI_INVALID_TABLE_ADDR)
-               return;
-
-       si = early_memremap(screen_info_table, sizeof(*si));
-       if (!si) {
-               pr_err("Could not map screen_info config table\n");
+       if (screen_info_table == EFI_INVALID_TABLE_ADDR) {
+               struct screen_info *si = early_memremap(screen_info_table, 
sizeof(*si));
+
+               if (!si) {
+                       pr_err("Could not map screen_info config table\n");
+                       return;
+               }
+               sysfb_primary_display.screen = *si;
+               memset(si, 0, sizeof(*si));
+               early_memunmap(si, sizeof(*si));
+       } else {
                return;
        }
-       sysfb_primary_display.screen = *si;
-       memset(si, 0, sizeof(*si));
-       early_memunmap(si, sizeof(*si));
 
        memblock_reserve(__screen_info_lfb_base(&sysfb_primary_display.screen),
                         sysfb_primary_display.screen.lfb_size);
diff --git a/drivers/firmware/efi/efi-init.c b/drivers/firmware/efi/efi-init.c
index d1d418a34407..ca697d485116 100644
--- a/drivers/firmware/efi/efi-init.c
+++ b/drivers/firmware/efi/efi-init.c
@@ -67,10 +67,9 @@ EXPORT_SYMBOL_GPL(sysfb_primary_display);
 
 static void __init init_primary_display(void)
 {
-       struct screen_info *si;
-
        if (screen_info_table != EFI_INVALID_TABLE_ADDR) {
-               si = early_memremap(screen_info_table, sizeof(*si));
+               struct screen_info *si = early_memremap(screen_info_table, 
sizeof(*si));
+
                if (!si) {
                        pr_err("Could not map screen_info config table\n");
                        return;
@@ -78,14 +77,16 @@ static void __init init_primary_display(void)
                sysfb_primary_display.screen = *si;
                memset(si, 0, sizeof(*si));
                early_memunmap(si, sizeof(*si));
+       } else {
+               return;
+       }
 
-               if 
(memblock_is_map_memory(sysfb_primary_display.screen.lfb_base))
-                       
memblock_mark_nomap(sysfb_primary_display.screen.lfb_base,
-                                           
sysfb_primary_display.screen.lfb_size);
+       if (memblock_is_map_memory(sysfb_primary_display.screen.lfb_base))
+               memblock_mark_nomap(sysfb_primary_display.screen.lfb_base,
+                                   sysfb_primary_display.screen.lfb_size);
 
-               if (IS_ENABLED(CONFIG_EFI_EARLYCON))
-                       efi_earlycon_reprobe();
-       }
+       if (IS_ENABLED(CONFIG_EFI_EARLYCON))
+               efi_earlycon_reprobe();
 }
 
 static int __init uefi_init(u64 efi_system_table)
-- 
2.51.1

Reply via email to