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>
btrfsvols
Leah Rowe 2023-09-02 17:03:54 +01:00
parent 436b2ccb5a
commit b30c7e330b
7 changed files with 17 additions and 11 deletions

View File

@ -97,7 +97,7 @@
# nvidia vga option rom for dgpu models of Dell Latitude E6400 # nvidia vga option rom for dgpu models of Dell Latitude E6400
# for downloading the nvidia rom to pciroms/pci10de,06eb.rom # for downloading the nvidia rom to pciroms/pci10de,06eb.rom
{e6400nvidia}{ {e6400}{
E6400_VGA_DL_hash a24ed919e80287b281e407d525af31f307746250 E6400_VGA_DL_hash a24ed919e80287b281e407d525af31f307746250
E6400_VGA_DL_url https://dl.dell.com/FOLDER01530530M/1/E6400A34.exe 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 E6400_VGA_DL_url_bkup https://web.archive.org/web/20230506014903/https://dl.dell.com/FOLDER01530530M/1/E6400A34.exe

View File

@ -107,7 +107,7 @@ CONFIG_BOARD_SPECIFIC_OPTIONS=y
CONFIG_MAINBOARD_PART_NUMBER="Latitude E6400" CONFIG_MAINBOARD_PART_NUMBER="Latitude E6400"
CONFIG_MAINBOARD_VERSION="1.0" CONFIG_MAINBOARD_VERSION="1.0"
CONFIG_MAINBOARD_DIR="dell/e6400" CONFIG_MAINBOARD_DIR="dell/e6400"
CONFIG_VGA_BIOS_ID="8086,2a42" CONFIG_VGA_BIOS_ID="10de,06eb"
CONFIG_DIMM_MAX=4 CONFIG_DIMM_MAX=4
CONFIG_DIMM_SPD_SIZE=256 CONFIG_DIMM_SPD_SIZE=256
CONFIG_FMDFILE="" CONFIG_FMDFILE=""
@ -123,7 +123,7 @@ CONFIG_POST_IO=y
CONFIG_DEVICETREE="devicetree.cb" CONFIG_DEVICETREE="devicetree.cb"
# CONFIG_VBOOT is not set # CONFIG_VBOOT is not set
CONFIG_OVERRIDE_DEVICETREE="" CONFIG_OVERRIDE_DEVICETREE=""
# CONFIG_VGA_BIOS is not set CONFIG_VGA_BIOS=y
CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Dell Inc." CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Dell Inc."
CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/data.vbt" CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/data.vbt"
CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00 CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00
@ -148,6 +148,7 @@ CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y
CONFIG_SPI_FLASH_WINBOND=y CONFIG_SPI_FLASH_WINBOND=y
# CONFIG_DRIVERS_INTEL_WIFI is not set # CONFIG_DRIVERS_INTEL_WIFI is not set
CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000
CONFIG_VGA_BIOS_FILE="../../pciroms/pci10de,06eb.rom"
CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_CARDBUS_PLUGIN_SUPPORT=y
CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_GIGADEVICE=y
CONFIG_SPI_FLASH_STMICRO=y CONFIG_SPI_FLASH_STMICRO=y
@ -207,6 +208,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000
CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000
CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_RESERVED_SIZE=0x100000
CONFIG_SMM_MODULE_STACK_SIZE=0x400 CONFIG_SMM_MODULE_STACK_SIZE=0x400
# CONFIG_VGA_BIOS_SECOND is not set
CONFIG_EHCI_BAR=0xfef00000 CONFIG_EHCI_BAR=0xfef00000
CONFIG_ACPI_CPU_STRING="CP%02X" CONFIG_ACPI_CPU_STRING="CP%02X"
CONFIG_STACK_SIZE=0x2000 CONFIG_STACK_SIZE=0x2000
@ -333,6 +335,7 @@ CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS=y
# #
CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y
CONFIG_HAVE_LINEAR_FRAMEBUFFER=y CONFIG_HAVE_LINEAR_FRAMEBUFFER=y
CONFIG_VGA_ROM_RUN_DEFAULT=y
CONFIG_MAINBOARD_HAS_LIBGFXINIT=y CONFIG_MAINBOARD_HAS_LIBGFXINIT=y
CONFIG_MAINBOARD_USE_LIBGFXINIT=y CONFIG_MAINBOARD_USE_LIBGFXINIT=y
# CONFIG_VGA_ROM_RUN is not set # CONFIG_VGA_ROM_RUN is not set
@ -367,6 +370,7 @@ CONFIG_FIRMWARE_CONNECTION_MANAGER=y
# CONFIG_EARLY_PCI_BRIDGE is not set # CONFIG_EARLY_PCI_BRIDGE is not set
CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 CONFIG_SUBSYSTEM_VENDOR_ID=0x0000
CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 CONFIG_SUBSYSTEM_DEVICE_ID=0x0000
# CONFIG_VGA_BIOS_DGPU is not set
CONFIG_INTEL_GMA_HAVE_VBT=y CONFIG_INTEL_GMA_HAVE_VBT=y
CONFIG_INTEL_GMA_ADD_VBT=y CONFIG_INTEL_GMA_ADD_VBT=y
# CONFIG_SOFTWARE_I2C is not set # CONFIG_SOFTWARE_I2C is not set

View File

@ -107,7 +107,7 @@ CONFIG_BOARD_SPECIFIC_OPTIONS=y
CONFIG_MAINBOARD_PART_NUMBER="Latitude E6400" CONFIG_MAINBOARD_PART_NUMBER="Latitude E6400"
CONFIG_MAINBOARD_VERSION="1.0" CONFIG_MAINBOARD_VERSION="1.0"
CONFIG_MAINBOARD_DIR="dell/e6400" CONFIG_MAINBOARD_DIR="dell/e6400"
CONFIG_VGA_BIOS_ID="8086,2a42" CONFIG_VGA_BIOS_ID="10de,06eb"
CONFIG_DIMM_MAX=4 CONFIG_DIMM_MAX=4
CONFIG_DIMM_SPD_SIZE=256 CONFIG_DIMM_SPD_SIZE=256
CONFIG_FMDFILE="" CONFIG_FMDFILE=""
@ -121,7 +121,7 @@ CONFIG_POST_IO=y
CONFIG_DEVICETREE="devicetree.cb" CONFIG_DEVICETREE="devicetree.cb"
# CONFIG_VBOOT is not set # CONFIG_VBOOT is not set
CONFIG_OVERRIDE_DEVICETREE="" CONFIG_OVERRIDE_DEVICETREE=""
# CONFIG_VGA_BIOS is not set CONFIG_VGA_BIOS=y
CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Dell Inc." CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Dell Inc."
CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/data.vbt" CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/data.vbt"
CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00 CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00
@ -146,6 +146,7 @@ CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y
CONFIG_SPI_FLASH_WINBOND=y CONFIG_SPI_FLASH_WINBOND=y
# CONFIG_DRIVERS_INTEL_WIFI is not set # CONFIG_DRIVERS_INTEL_WIFI is not set
CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000
CONFIG_VGA_BIOS_FILE="../../pciroms/pci10de,06eb.rom"
CONFIG_CARDBUS_PLUGIN_SUPPORT=y CONFIG_CARDBUS_PLUGIN_SUPPORT=y
CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_GIGADEVICE=y
CONFIG_SPI_FLASH_STMICRO=y CONFIG_SPI_FLASH_STMICRO=y
@ -205,6 +206,7 @@ CONFIG_ROMSTAGE_ADDR=0x2000000
CONFIG_VERSTAGE_ADDR=0x2000000 CONFIG_VERSTAGE_ADDR=0x2000000
CONFIG_SMM_RESERVED_SIZE=0x100000 CONFIG_SMM_RESERVED_SIZE=0x100000
CONFIG_SMM_MODULE_STACK_SIZE=0x400 CONFIG_SMM_MODULE_STACK_SIZE=0x400
# CONFIG_VGA_BIOS_SECOND is not set
CONFIG_EHCI_BAR=0xfef00000 CONFIG_EHCI_BAR=0xfef00000
CONFIG_ACPI_CPU_STRING="CP%02X" CONFIG_ACPI_CPU_STRING="CP%02X"
CONFIG_STACK_SIZE=0x2000 CONFIG_STACK_SIZE=0x2000
@ -331,6 +333,7 @@ CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS=y
# #
CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y
CONFIG_HAVE_LINEAR_FRAMEBUFFER=y CONFIG_HAVE_LINEAR_FRAMEBUFFER=y
CONFIG_VGA_ROM_RUN_DEFAULT=y
CONFIG_MAINBOARD_HAS_LIBGFXINIT=y CONFIG_MAINBOARD_HAS_LIBGFXINIT=y
CONFIG_MAINBOARD_USE_LIBGFXINIT=y CONFIG_MAINBOARD_USE_LIBGFXINIT=y
# CONFIG_VGA_ROM_RUN is not set # CONFIG_VGA_ROM_RUN is not set
@ -363,6 +366,7 @@ CONFIG_FIRMWARE_CONNECTION_MANAGER=y
# CONFIG_EARLY_PCI_BRIDGE is not set # CONFIG_EARLY_PCI_BRIDGE is not set
CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 CONFIG_SUBSYSTEM_VENDOR_ID=0x0000
CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 CONFIG_SUBSYSTEM_DEVICE_ID=0x0000
# CONFIG_VGA_BIOS_DGPU is not set
CONFIG_INTEL_GMA_HAVE_VBT=y CONFIG_INTEL_GMA_HAVE_VBT=y
CONFIG_INTEL_GMA_ADD_VBT=y CONFIG_INTEL_GMA_ADD_VBT=y
# CONFIG_SOFTWARE_I2C is not set # CONFIG_SOFTWARE_I2C is not set

View File

@ -7,4 +7,3 @@ payload_seabios="y"
payload_memtest="y" payload_memtest="y"
grub_scan_disk="ahci" grub_scan_disk="ahci"
microcode_required="n" microcode_required="n"
blobs_required="n"

View File

@ -113,7 +113,7 @@ make_archive()
# remove ME/MRC/EC firmware from ROM images # remove ME/MRC/EC firmware from ROM images
if [ "${CONFIG_HAVE_ME_BIN}" = "y" ] || \ if [ "${CONFIG_HAVE_ME_BIN}" = "y" ] || \
[ "${target}" = "e6400nvidia_4mb" ] || \ [ "${target}" = "e6400_4mb" ] || \
[ "${microcode_required}" = "n" ]; then [ "${microcode_required}" = "n" ]; then
strip_archive "${romdir}" strip_archive "${romdir}"
fi fi
@ -228,7 +228,7 @@ strip_rom_image()
err "strip_rom_images: ${romfile}: can't nuke sch5545ec fw" err "strip_rom_images: ${romfile}: can't nuke sch5545ec fw"
# TODO: replace this board-specific hack # TODO: replace this board-specific hack
if [ "${target}" = "e6400nvidia_4mb" ]; then if [ "${target}" = "e6400_4mb" ]; then
"${cbfstool}" "${romfile}" remove -n "pci10de,06eb.rom" || \ "${cbfstool}" "${romfile}" remove -n "pci10de,06eb.rom" || \
err "strip_rom_images: ${romfile}: can't nuke e6400 vga rom" err "strip_rom_images: ${romfile}: can't nuke e6400 vga rom"
fi fi

View File

@ -387,8 +387,7 @@ extract_e6400vga()
( (
cd "${appdir}" || \ cd "${appdir}" || \
err "extract_e6400vga: can't cd ${appdir}" err "extract_e6400vga: can't cd ${appdir}"
tail -c +${e6400_vga_offset} "${dl_path##*/}" | gunzip > bios.bin || \ tail -c +${e6400_vga_offset} "${dl_path##*/}" | gunzip > bios.bin || :
err "extract_e6400vga: can't gunzip > bios.bin"
[ -f "bios.bin" ] || \ [ -f "bios.bin" ] || \
err "extract_e6400vga: can't extract bios.bin from update" err "extract_e6400vga: can't extract bios.bin from update"

View File

@ -200,7 +200,7 @@ patch_rom()
inject_blob_hp_kbc1126_ec "${rom}" inject_blob_hp_kbc1126_ec "${rom}"
[ "${CONFIG_VGA_BIOS_FILE}" != "" ] && \ [ "${CONFIG_VGA_BIOS_FILE}" != "" ] && \
[ "${CONFIG_VGA_BIOS_ID}" != "" ] && \ [ "${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_INCLUDE_SMSC_SCH5545_EC_FW}" = "y" ] && \
[ "${CONFIG_SMSC_SCH5545_EC_FW_FILE}" != "" ] && \ [ "${CONFIG_SMSC_SCH5545_EC_FW_FILE}" != "" ] && \
inject_blob_smsc_sch5545_ec "${rom}" inject_blob_smsc_sch5545_ec "${rom}"