summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2023-09-02 17:03:54 +0100
committerLeah Rowe <leah@libreboot.org>2023-09-02 17:40:49 +0100
commitb30c7e330be8729b3879baf34589cabd0a6c1bd3 (patch)
tree48c835fc526c5cef5332230009a61e575a1b1bf4
parent436b2ccb5a619f41e41d973ada417d47cb7839dd (diff)
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 <leah@libreboot.org>
-rw-r--r--resources/blobs/sources2
-rw-r--r--resources/coreboot/e6400_4mb/config/libgfxinit_corebootfb8
-rw-r--r--resources/coreboot/e6400_4mb/config/libgfxinit_txtmode8
-rw-r--r--resources/coreboot/e6400_4mb/target.cfg1
-rwxr-xr-xscript/build/release/roms4
-rwxr-xr-xscript/update/blobs/download3
-rwxr-xr-xscript/update/blobs/inject2
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}"