From b30c7e330be8729b3879baf34589cabd0a6c1bd3 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 2 Sep 2023 17:03:54 +0100 Subject: coreboot/e6400: support nvidia models The same ROM images that you flash on Intel GPU variants, are now flashed on Nvidia models. The same ROM will work on both. If an Intel GPU variant is present, libgfxinit is used, and the VGA ROM is used if an Nvidia GPU variant; however, release ROMs will scrub the nvidia option ROM, so release ROMs will only work on Intel GPUs unless you run the blobutil inject command. I decided to no longer have this under WIP, but to put it in master. The issue with it pertains to video drivers, which is not Libreboot's problem. Nouveau crashes under Linux, so use "nomodeset" if it does. The "nv" drivers in BSD systems work very well. The nvidia model of E6400 isn't recommended for other reasons, namely: poor thermal cooling (thermal pad on the GPU) and that Nvidia GPU doesn't get very good performance on any libre drivers anyway. The Intel GPU variant is better, in terms of power efficiency and software support; the intel variant also works with native graphics initialisation in coreboot. This board port already only enables SeaBIOS, which will simply execute the VGA ROM. Blobutil already supports reading the config, detecting that a VGA ROM is needed, because that part of the WIP E6400 branch was already merged in lbmk master. Signed-off-by: Leah Rowe --- resources/blobs/sources | 2 +- resources/coreboot/e6400_4mb/config/libgfxinit_corebootfb | 8 ++++++-- resources/coreboot/e6400_4mb/config/libgfxinit_txtmode | 8 ++++++-- resources/coreboot/e6400_4mb/target.cfg | 1 - script/build/release/roms | 4 ++-- script/update/blobs/download | 3 +-- script/update/blobs/inject | 2 +- 7 files changed, 17 insertions(+), 11 deletions(-) diff --git a/resources/blobs/sources b/resources/blobs/sources index c1c231b7..4297090c 100644 --- a/resources/blobs/sources +++ b/resources/blobs/sources @@ -97,7 +97,7 @@ # nvidia vga option rom for dgpu models of Dell Latitude E6400 # for downloading the nvidia rom to pciroms/pci10de,06eb.rom -{e6400nvidia}{ +{e6400}{ E6400_VGA_DL_hash a24ed919e80287b281e407d525af31f307746250 E6400_VGA_DL_url https://dl.dell.com/FOLDER01530530M/1/E6400A34.exe E6400_VGA_DL_url_bkup https://web.archive.org/web/20230506014903/https://dl.dell.com/FOLDER01530530M/1/E6400A34.exe diff --git a/resources/coreboot/e6400_4mb/config/libgfxinit_corebootfb b/resources/coreboot/e6400_4mb/config/libgfxinit_corebootfb index 22abf6f4..a76ac440 100644 --- a/resources/coreboot/e6400_4mb/config/libgfxinit_corebootfb +++ b/resources/coreboot/e6400_4mb/config/libgfxinit_corebootfb @@ -107,7 +107,7 @@ CONFIG_BOARD_SPECIFIC_OPTIONS=y CONFIG_MAINBOARD_PART_NUMBER="Latitude E6400" CONFIG_MAINBOARD_VERSION="1.0" CONFIG_MAINBOARD_DIR="dell/e6400" -CONFIG_VGA_BIOS_ID="8086,2a42" +CONFIG_VGA_BIOS_ID="10de,06eb" CONFIG_DIMM_MAX=4 CONFIG_DIMM_SPD_SIZE=256 CONFIG_FMDFILE="" @@ -123,7 +123,7 @@ CONFIG_POST_IO=y CONFIG_DEVICETREE="devicetree.cb" # CONFIG_VBOOT is not set CONFIG_OVERRIDE_DEVICETREE="" -# CONFIG_VGA_BIOS is not set +CONFIG_VGA_BIOS=y CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Dell Inc." CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/data.vbt" CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00 @@ -148,6 +148,7 @@ CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y CONFIG_SPI_FLASH_WINBOND=y # CONFIG_DRIVERS_INTEL_WIFI is not set CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 +CONFIG_VGA_BIOS_FILE="../../pciroms/pci10de,06eb.rom" CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y @@ -207,6 +208,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +# CONFIG_VGA_BIOS_SECOND is not set CONFIG_EHCI_BAR=0xfef00000 CONFIG_ACPI_CPU_STRING="CP%02X" CONFIG_STACK_SIZE=0x2000 @@ -333,6 +335,7 @@ CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS=y # CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y CONFIG_HAVE_LINEAR_FRAMEBUFFER=y +CONFIG_VGA_ROM_RUN_DEFAULT=y CONFIG_MAINBOARD_HAS_LIBGFXINIT=y CONFIG_MAINBOARD_USE_LIBGFXINIT=y # CONFIG_VGA_ROM_RUN is not set @@ -367,6 +370,7 @@ CONFIG_FIRMWARE_CONNECTION_MANAGER=y # CONFIG_EARLY_PCI_BRIDGE is not set CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 +# CONFIG_VGA_BIOS_DGPU is not set CONFIG_INTEL_GMA_HAVE_VBT=y CONFIG_INTEL_GMA_ADD_VBT=y # CONFIG_SOFTWARE_I2C is not set diff --git a/resources/coreboot/e6400_4mb/config/libgfxinit_txtmode b/resources/coreboot/e6400_4mb/config/libgfxinit_txtmode index c53c98dc..92cb94c1 100644 --- a/resources/coreboot/e6400_4mb/config/libgfxinit_txtmode +++ b/resources/coreboot/e6400_4mb/config/libgfxinit_txtmode @@ -107,7 +107,7 @@ CONFIG_BOARD_SPECIFIC_OPTIONS=y CONFIG_MAINBOARD_PART_NUMBER="Latitude E6400" CONFIG_MAINBOARD_VERSION="1.0" CONFIG_MAINBOARD_DIR="dell/e6400" -CONFIG_VGA_BIOS_ID="8086,2a42" +CONFIG_VGA_BIOS_ID="10de,06eb" CONFIG_DIMM_MAX=4 CONFIG_DIMM_SPD_SIZE=256 CONFIG_FMDFILE="" @@ -121,7 +121,7 @@ CONFIG_POST_IO=y CONFIG_DEVICETREE="devicetree.cb" # CONFIG_VBOOT is not set CONFIG_OVERRIDE_DEVICETREE="" -# CONFIG_VGA_BIOS is not set +CONFIG_VGA_BIOS=y CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Dell Inc." CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/data.vbt" CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00 @@ -146,6 +146,7 @@ CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y CONFIG_SPI_FLASH_WINBOND=y # CONFIG_DRIVERS_INTEL_WIFI is not set CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 +CONFIG_VGA_BIOS_FILE="../../pciroms/pci10de,06eb.rom" CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_STMICRO=y @@ -205,6 +206,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_MODULE_STACK_SIZE=0x400 +# CONFIG_VGA_BIOS_SECOND is not set CONFIG_EHCI_BAR=0xfef00000 CONFIG_ACPI_CPU_STRING="CP%02X" CONFIG_STACK_SIZE=0x2000 @@ -331,6 +333,7 @@ CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS=y # CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y CONFIG_HAVE_LINEAR_FRAMEBUFFER=y +CONFIG_VGA_ROM_RUN_DEFAULT=y CONFIG_MAINBOARD_HAS_LIBGFXINIT=y CONFIG_MAINBOARD_USE_LIBGFXINIT=y # CONFIG_VGA_ROM_RUN is not set @@ -363,6 +366,7 @@ CONFIG_FIRMWARE_CONNECTION_MANAGER=y # CONFIG_EARLY_PCI_BRIDGE is not set CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 +# CONFIG_VGA_BIOS_DGPU is not set CONFIG_INTEL_GMA_HAVE_VBT=y CONFIG_INTEL_GMA_ADD_VBT=y # CONFIG_SOFTWARE_I2C is not set diff --git a/resources/coreboot/e6400_4mb/target.cfg b/resources/coreboot/e6400_4mb/target.cfg index e8ef81c4..b5466aef 100644 --- a/resources/coreboot/e6400_4mb/target.cfg +++ b/resources/coreboot/e6400_4mb/target.cfg @@ -7,4 +7,3 @@ payload_seabios="y" payload_memtest="y" grub_scan_disk="ahci" microcode_required="n" -blobs_required="n" diff --git a/script/build/release/roms b/script/build/release/roms index ad789477..7be63e6d 100755 --- a/script/build/release/roms +++ b/script/build/release/roms @@ -113,7 +113,7 @@ make_archive() # remove ME/MRC/EC firmware from ROM images if [ "${CONFIG_HAVE_ME_BIN}" = "y" ] || \ - [ "${target}" = "e6400nvidia_4mb" ] || \ + [ "${target}" = "e6400_4mb" ] || \ [ "${microcode_required}" = "n" ]; then strip_archive "${romdir}" fi @@ -228,7 +228,7 @@ strip_rom_image() err "strip_rom_images: ${romfile}: can't nuke sch5545ec fw" # TODO: replace this board-specific hack - if [ "${target}" = "e6400nvidia_4mb" ]; then + if [ "${target}" = "e6400_4mb" ]; then "${cbfstool}" "${romfile}" remove -n "pci10de,06eb.rom" || \ err "strip_rom_images: ${romfile}: can't nuke e6400 vga rom" fi diff --git a/script/update/blobs/download b/script/update/blobs/download index f49ab79f..012cf0b1 100755 --- a/script/update/blobs/download +++ b/script/update/blobs/download @@ -387,8 +387,7 @@ extract_e6400vga() ( cd "${appdir}" || \ err "extract_e6400vga: can't cd ${appdir}" - tail -c +${e6400_vga_offset} "${dl_path##*/}" | gunzip > bios.bin || \ - err "extract_e6400vga: can't gunzip > bios.bin" + tail -c +${e6400_vga_offset} "${dl_path##*/}" | gunzip > bios.bin || : [ -f "bios.bin" ] || \ err "extract_e6400vga: can't extract bios.bin from update" diff --git a/script/update/blobs/inject b/script/update/blobs/inject index 7efab2a9..c9c44702 100755 --- a/script/update/blobs/inject +++ b/script/update/blobs/inject @@ -200,7 +200,7 @@ patch_rom() inject_blob_hp_kbc1126_ec "${rom}" [ "${CONFIG_VGA_BIOS_FILE}" != "" ] && \ [ "${CONFIG_VGA_BIOS_ID}" != "" ] && \ - inject_blob_dell_e6400_vgarom_nvidia + inject_blob_dell_e6400_vgarom_nvidia "${rom}" [ "${CONFIG_INCLUDE_SMSC_SCH5545_EC_FW}" = "y" ] && \ [ "${CONFIG_SMSC_SCH5545_EC_FW_FILE}" != "" ] && \ inject_blob_smsc_sch5545_ec "${rom}" -- cgit v1.2.1