[SeaBIOS] [PATCH v2 1/6] optionrom: enable non-vga display devices

Gerd Hoffmann kraxel at redhat.com
Mon Jun 4 09:29:12 CEST 2018


In case no VGA device was found look for other display devices.

Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>
---
 src/optionroms.c | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/src/optionroms.c b/src/optionroms.c
index 092393a56c..fc992f649f 100644
--- a/src/optionroms.c
+++ b/src/optionroms.c
@@ -350,7 +350,9 @@ optionrom_setup(void)
     // Find and deploy PCI roms.
     struct pci_device *pci;
     foreachpci(pci) {
-        if (pci->class == PCI_CLASS_DISPLAY_VGA || pci->have_driver)
+        if (pci->class == PCI_CLASS_DISPLAY_VGA ||
+            pci->class == PCI_CLASS_DISPLAY_OTHER ||
+            pci->have_driver)
             continue;
         init_pcirom(pci, 0, sources);
     }
@@ -400,10 +402,32 @@ optionrom_setup(void)
 int ScreenAndDebug;
 struct rom_header *VgaROM;
 
+static void try_setup_display_other(void)
+{
+    struct pci_device *pci;
+
+    dprintf(1, "No VGA found, scan for other display\n");
+
+    foreachpci(pci) {
+        if (pci->class != PCI_CLASS_DISPLAY_OTHER)
+            continue;
+        struct rom_header *rom = map_pcirom(pci);
+        if (!rom)
+            continue;
+        dprintf(1, "Other display found at %pP\n", pci);
+        pci_config_maskw(pci->bdf, PCI_COMMAND, 0,
+                         PCI_COMMAND_IO | PCI_COMMAND_MEMORY);
+        init_optionrom(rom, pci->bdf, 1);
+        return;
+    }
+}
+
 // Call into vga code to turn on console.
 void
 vgarom_setup(void)
 {
+    int have_vga = 0;
+
     if (! CONFIG_OPTIONROMS)
         return;
 
@@ -425,8 +449,11 @@ vgarom_setup(void)
             continue;
         vgahook_setup(pci);
         init_pcirom(pci, 1, NULL);
+        have_vga = 1;
         break;
     }
+    if (!have_vga)
+        try_setup_display_other();
 
     // Find and deploy CBFS vga-style roms not associated with a device.
     run_file_roms("vgaroms/", 1, NULL);
-- 
2.9.3




More information about the SeaBIOS mailing list