summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--blobs/t1650/12_ifd.binbin0 -> 4096 bytes
-rw-r--r--blobs/t1650/gbe.binbin0 -> 8192 bytes
-rw-r--r--resources/blobs/sources12
-rw-r--r--resources/coreboot/t1650_12mb/board.cfg7
-rw-r--r--resources/coreboot/t1650_12mb/config/libgfxinit_txtmode637
-rw-r--r--resources/git/revisions12
-rwxr-xr-xresources/scripts/build/clean/uefitool28
-rw-r--r--resources/scripts/build/dependencies/arch5
-rwxr-xr-xresources/scripts/build/dependencies/debian4
-rwxr-xr-xresources/scripts/build/dependencies/fedora385
-rwxr-xr-xresources/scripts/build/dependencies/parabola5
-rwxr-xr-xresources/scripts/build/dependencies/ubuntu20044
-rwxr-xr-xresources/scripts/build/dependencies/void5
-rwxr-xr-xresources/scripts/build/module/uefitool44
-rwxr-xr-xresources/scripts/build/release/roms9
-rwxr-xr-xresources/scripts/build/release/src6
-rwxr-xr-xresources/scripts/update/blobs/download91
-rwxr-xr-xresources/scripts/update/blobs/inject22
-rwxr-xr-xresources/scripts/update/module/biosutilities22
-rwxr-xr-xresources/scripts/update/module/uefitool22
21 files changed, 937 insertions, 6 deletions
diff --git a/.gitignore b/.gitignore
index a7e52978..57247d97 100644
--- a/.gitignore
+++ b/.gitignore
@@ -43,5 +43,8 @@
/blobs/app/
/blobs/cache/
*me.bin
+*sch5545ec.bin
/mrc/
/util/nvmutil/nvm
+/biosutilities/
+/uefitool/
diff --git a/blobs/t1650/12_ifd.bin b/blobs/t1650/12_ifd.bin
new file mode 100644
index 00000000..623470e9
--- /dev/null
+++ b/blobs/t1650/12_ifd.bin
Binary files differ
diff --git a/blobs/t1650/gbe.bin b/blobs/t1650/gbe.bin
new file mode 100644
index 00000000..963369d5
--- /dev/null
+++ b/blobs/t1650/gbe.bin
Binary files differ
diff --git a/resources/blobs/sources b/resources/blobs/sources
index 414bc277..f5696089 100644
--- a/resources/blobs/sources
+++ b/resources/blobs/sources
@@ -75,8 +75,16 @@
EC_url_bkup https://ftp.hp.com/pub/softpaq/sp96001-96500/sp96088.exe
}
-# nvidia vga option rom for dgpu models of Dell Latitude E6400
-# for downloading the nvidia rom to pciroms/pci0x10de,0x06eb.rom
+{t1650}{
+ DL_hash 039c89c6d44ae11ae2510cbd5fed756e97ed9a31
+ DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
+ DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
+
+ SCH5545EC_DL_url https://dl.dell.com/FOLDER05065992M/1/T1650A28.exe
+ SCH5545EC_DL_url_bkup https://web.archive.org/web/20230811151654/https://dl.dell.com/FOLDER05065992M/1/T1650A28.exe
+ SCH5545EC_DL_hash 9651bab78b8a0063997f568f7698590c7deb7925
+}
+
{e6400nvidia}{
E6400_VGA_DL_hash a24ed919e80287b281e407d525af31f307746250
E6400_VGA_DL_url https://dl.dell.com/FOLDER01530530M/1/E6400A34.exe
diff --git a/resources/coreboot/t1650_12mb/board.cfg b/resources/coreboot/t1650_12mb/board.cfg
new file mode 100644
index 00000000..be7e03a9
--- /dev/null
+++ b/resources/coreboot/t1650_12mb/board.cfg
@@ -0,0 +1,7 @@
+cbtree="default"
+romtype="normal"
+arch="x86_64"
+payload_seabios="y"
+payload_seabios_withgrub="y"
+payload_memtest="y"
+grub_scan_disk="ahci"
diff --git a/resources/coreboot/t1650_12mb/config/libgfxinit_txtmode b/resources/coreboot/t1650_12mb/config/libgfxinit_txtmode
new file mode 100644
index 00000000..f6616f48
--- /dev/null
+++ b/resources/coreboot/t1650_12mb/config/libgfxinit_txtmode
@@ -0,0 +1,637 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# coreboot configuration
+#
+
+#
+# General setup
+#
+CONFIG_COREBOOT_BUILD=y
+CONFIG_LOCALVERSION=""
+CONFIG_CBFS_PREFIX="fallback"
+CONFIG_COMPILER_GCC=y
+# CONFIG_COMPILER_LLVM_CLANG is not set
+CONFIG_ARCH_SUPPORTS_CLANG=y
+# CONFIG_ANY_TOOLCHAIN is not set
+# CONFIG_CCACHE is not set
+# CONFIG_IWYU is not set
+# CONFIG_FMD_GENPARSER is not set
+# CONFIG_UTIL_GENPARSER is not set
+# CONFIG_OPTION_BACKEND_NONE is not set
+CONFIG_USE_OPTION_TABLE=y
+CONFIG_STATIC_OPTION_TABLE=y
+CONFIG_COMPRESS_RAMSTAGE_LZMA=y
+# CONFIG_COMPRESS_RAMSTAGE_LZ4 is not set
+CONFIG_INCLUDE_CONFIG_FILE=y
+CONFIG_COLLECT_TIMESTAMPS=y
+# CONFIG_TIMESTAMPS_ON_CONSOLE is not set
+CONFIG_USE_BLOBS=y
+# CONFIG_USE_AMD_BLOBS is not set
+# CONFIG_USE_QC_BLOBS is not set
+# CONFIG_COVERAGE is not set
+# CONFIG_UBSAN is not set
+CONFIG_HAVE_ASAN_IN_RAMSTAGE=y
+# CONFIG_ASAN is not set
+# CONFIG_NO_STAGE_CACHE is not set
+CONFIG_TSEG_STAGE_CACHE=y
+# CONFIG_UPDATE_IMAGE is not set
+# CONFIG_BOOTSPLASH_IMAGE is not set
+# CONFIG_FW_CONFIG is not set
+
+#
+# Software Bill Of Materials (SBOM)
+#
+# CONFIG_SBOM is not set
+# end of Software Bill Of Materials (SBOM)
+# end of General setup
+
+#
+# Mainboard
+#
+
+#
+# Important: Run 'make distclean' before switching boards
+#
+# CONFIG_VENDOR_51NB is not set
+# CONFIG_VENDOR_ACER is not set
+# CONFIG_VENDOR_ADLINK is not set
+# CONFIG_VENDOR_AMD is not set
+# CONFIG_VENDOR_AOPEN is not set
+# CONFIG_VENDOR_APPLE is not set
+# CONFIG_VENDOR_ASROCK is not set
+# CONFIG_VENDOR_ASUS is not set
+# CONFIG_VENDOR_BIOSTAR is not set
+# CONFIG_VENDOR_BOSTENTECH is not set
+# CONFIG_VENDOR_BYTEDANCE is not set
+# CONFIG_VENDOR_CAVIUM is not set
+# CONFIG_VENDOR_CLEVO is not set
+# CONFIG_VENDOR_COMPULAB is not set
+CONFIG_VENDOR_DELL=y
+# CONFIG_VENDOR_EMULATION is not set
+# CONFIG_VENDOR_EXAMPLE is not set
+# CONFIG_VENDOR_FACEBOOK is not set
+# CONFIG_VENDOR_FOXCONN is not set
+# CONFIG_VENDOR_GETAC is not set
+# CONFIG_VENDOR_GIGABYTE is not set
+# CONFIG_VENDOR_GOOGLE is not set
+# CONFIG_VENDOR_HP is not set
+# CONFIG_VENDOR_IBASE is not set
+# CONFIG_VENDOR_IBM is not set
+# CONFIG_VENDOR_INTEL is not set
+# CONFIG_VENDOR_INVENTEC is not set
+# CONFIG_VENDOR_KONTRON is not set
+# CONFIG_VENDOR_LENOVO is not set
+# CONFIG_VENDOR_LIBRETREND is not set
+# CONFIG_VENDOR_MSI is not set
+# CONFIG_VENDOR_OCP is not set
+# CONFIG_VENDOR_OPENCELLULAR is not set
+# CONFIG_VENDOR_PACKARDBELL is not set
+# CONFIG_VENDOR_PCENGINES is not set
+# CONFIG_VENDOR_PINE64 is not set
+# CONFIG_VENDOR_PORTWELL is not set
+# CONFIG_VENDOR_PRODRIVE is not set
+# CONFIG_VENDOR_PROTECTLI is not set
+# CONFIG_VENDOR_PURISM is not set
+# CONFIG_VENDOR_RAZER is not set
+# CONFIG_VENDOR_RODA is not set
+# CONFIG_VENDOR_SAMSUNG is not set
+# CONFIG_VENDOR_SAPPHIRE is not set
+# CONFIG_VENDOR_SIEMENS is not set
+# CONFIG_VENDOR_SIFIVE is not set
+# CONFIG_VENDOR_STARLABS is not set
+# CONFIG_VENDOR_SUPERMICRO is not set
+# CONFIG_VENDOR_SYSTEM76 is not set
+# CONFIG_VENDOR_TI is not set
+# CONFIG_VENDOR_UP is not set
+CONFIG_MAINBOARD_PART_NUMBER="Precision T1650"
+CONFIG_MAINBOARD_VERSION="1.0"
+CONFIG_MAINBOARD_DIR="dell/snb_ivb_workstations"
+CONFIG_VGA_BIOS_ID="8086,0106"
+CONFIG_DIMM_MAX=4
+CONFIG_DIMM_SPD_SIZE=256
+CONFIG_FMDFILE=""
+# CONFIG_NO_POST is not set
+CONFIG_MAINBOARD_VENDOR="Dell Inc."
+CONFIG_CBFS_SIZE=0xBE5000
+CONFIG_CONSOLE_SERIAL=y
+CONFIG_MAX_CPUS=8
+# CONFIG_ONBOARD_VGA_IS_PRIMARY is not set
+CONFIG_POST_DEVICE=y
+CONFIG_POST_IO=y
+CONFIG_UART_FOR_CONSOLE=0
+CONFIG_DEVICETREE="variants/baseboard/devicetree.cb"
+# CONFIG_VBOOT is not set
+CONFIG_VARIANT_DIR="precision_t1650"
+CONFIG_OVERRIDE_DEVICETREE="variants/$(CONFIG_VARIANT_DIR)/overridetree.cb"
+# CONFIG_VGA_BIOS is not set
+CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Dell Inc."
+CONFIG_DRAM_RESET_GATE_GPIO=60
+CONFIG_INTEL_GMA_VBT_FILE="src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/data.vbt"
+CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00
+CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default"
+CONFIG_CMOS_LAYOUT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.layout"
+CONFIG_USBDEBUG_HCD_INDEX=2
+CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0
+# CONFIG_CONSOLE_POST is not set
+CONFIG_TPM_PIRQ=0x0
+# CONFIG_BOARD_DELL_E6400 is not set
+# CONFIG_BOARD_DELL_OPTIPLEX_9010 is not set
+CONFIG_BOARD_DELL_PRECISION_T1650=y
+CONFIG_BOARD_DELL_SNB_IVB_WORKSTATIONS=y
+CONFIG_INCLUDE_SMSC_SCH5545_EC_FW=y
+CONFIG_SMSC_SCH5545_EC_FW_FILE="../../blobs/t1650/sch5545ec.bin"
+CONFIG_ECAM_MMCONF_BASE_ADDRESS=0xf0000000
+CONFIG_ECAM_MMCONF_BUS_NUMBER=64
+CONFIG_MEMLAYOUT_LD_FILE="src/arch/x86/memlayout.ld"
+CONFIG_DCACHE_RAM_BASE=0xfefe0000
+CONFIG_DCACHE_RAM_SIZE=0x20000
+CONFIG_C_ENV_BOOTBLOCK_SIZE=0x40000
+CONFIG_DCACHE_BSP_STACK_SIZE=0x10000
+CONFIG_MAX_ACPI_TABLE_SIZE_KB=144
+CONFIG_HAVE_INTEL_FIRMWARE=y
+CONFIG_MRC_SETTINGS_CACHE_SIZE=0x10000
+CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y
+CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_DRIVERS_INTEL_WIFI=y
+CONFIG_IFD_BIN_PATH="../../blobs/t1650/12_ifd.bin"
+CONFIG_ME_BIN_PATH="../../blobs/t1650/me.bin"
+CONFIG_GBE_BIN_PATH="../../blobs/t1650/gbe.bin"
+CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000
+CONFIG_CARDBUS_PLUGIN_SUPPORT=y
+CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME="Precision T1650"
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_PCIEXP_HOTPLUG_BUSES=8
+CONFIG_PCIEXP_HOTPLUG_MEM=0x800000
+CONFIG_PCIEXP_HOTPLUG_PREFETCH_MEM=0x10000000
+# CONFIG_DEBUG_SMI is not set
+CONFIG_PS2K_EISAID="PNP0303"
+CONFIG_PS2M_EISAID="PNP0F13"
+CONFIG_GFX_GMA_PANEL_1_PORT="eDP"
+CONFIG_TTYS0_BAUD=115200
+CONFIG_D3COLD_SUPPORT=y
+CONFIG_PCIEXP_ASPM=y
+CONFIG_PCIEXP_L1_SUB_STATE=y
+# CONFIG_PCIEXP_CLK_PM is not set
+CONFIG_GFX_GMA_PANEL_1_ON_EDP=y
+CONFIG_DRIVERS_UART_8250IO=y
+CONFIG_PC_CMOS_BASE_PORT_BANK1=0x72
+CONFIG_HEAP_SIZE=0x4000
+CONFIG_EC_GPE_SCI=0x50
+# CONFIG_TPM_MEASURED_BOOT is not set
+CONFIG_BOARD_ROMSIZE_KB_12288=y
+# CONFIG_COREBOOT_ROMSIZE_KB_256 is not set
+# CONFIG_COREBOOT_ROMSIZE_KB_512 is not set
+# CONFIG_COREBOOT_ROMSIZE_KB_1024 is not set
+# CONFIG_COREBOOT_ROMSIZE_KB_2048 is not set
+# CONFIG_COREBOOT_ROMSIZE_KB_4096 is not set
+# CONFIG_COREBOOT_ROMSIZE_KB_5120 is not set
+# CONFIG_COREBOOT_ROMSIZE_KB_6144 is not set
+# CONFIG_COREBOOT_ROMSIZE_KB_8192 is not set
+# CONFIG_COREBOOT_ROMSIZE_KB_10240 is not set
+CONFIG_COREBOOT_ROMSIZE_KB_12288=y
+# CONFIG_COREBOOT_ROMSIZE_KB_16384 is not set
+# CONFIG_COREBOOT_ROMSIZE_KB_32768 is not set
+# CONFIG_COREBOOT_ROMSIZE_KB_65536 is not set
+CONFIG_COREBOOT_ROMSIZE_KB=12288
+CONFIG_ROM_SIZE=0x00c00000
+CONFIG_HAVE_POWER_STATE_AFTER_FAILURE=y
+CONFIG_HAVE_POWER_STATE_PREVIOUS_AFTER_FAILURE=y
+CONFIG_POWER_STATE_OFF_AFTER_FAILURE=y
+# CONFIG_POWER_STATE_ON_AFTER_FAILURE is not set
+# CONFIG_POWER_STATE_PREVIOUS_AFTER_FAILURE is not set
+CONFIG_MAINBOARD_POWER_FAILURE_STATE=0
+# end of Mainboard
+
+#
+# Chipset
+#
+
+#
+# SoC
+#
+CONFIG_CHIPSET_DEVICETREE="northbridge/intel/sandybridge/chipset.cb"
+CONFIG_CBFS_MCACHE_SIZE=0x4000
+CONFIG_ROMSTAGE_ADDR=0x2000000
+CONFIG_VERSTAGE_ADDR=0x2000000
+CONFIG_SMM_TSEG_SIZE=0x800000
+CONFIG_SMM_RESERVED_SIZE=0x100000
+CONFIG_SMM_MODULE_STACK_SIZE=0x400
+CONFIG_SERIRQ_CONTINUOUS_MODE=y
+CONFIG_EHCI_BAR=0xfef00000
+CONFIG_ACPI_CPU_STRING="CP%02X"
+CONFIG_STACK_SIZE=0x2000
+CONFIG_IED_REGION_SIZE=0x400000
+CONFIG_VBT_DATA_SIZE_KB=8
+CONFIG_INTEL_GMA_BCLV_OFFSET=0x48254
+CONFIG_INTEL_GMA_BCLV_WIDTH=16
+CONFIG_INTEL_GMA_BCLM_OFFSET=0xc8256
+CONFIG_INTEL_GMA_BCLM_WIDTH=16
+CONFIG_BOOTBLOCK_IN_CBFS=y
+CONFIG_DCACHE_RAM_MRC_VAR_SIZE=0x0
+CONFIG_FIXED_MCHBAR_MMIO_BASE=0xfed10000
+CONFIG_FIXED_DMIBAR_MMIO_BASE=0xfed18000
+CONFIG_FIXED_EPBAR_MMIO_BASE=0xfed19000
+CONFIG_PCIEXP_COMMON_CLOCK=y
+CONFIG_FIXED_SMBUS_IO_BASE=0x400
+CONFIG_HPET_MIN_TICKS=0x80
+CONFIG_CBFS_CACHE_ALIGN=8
+CONFIG_DOMAIN_RESOURCE_32BIT_LIMIT=0xfe000000
+
+#
+# CPU
+#
+CONFIG_CPU_INTEL_MODEL_206AX=y
+CONFIG_CPU_INTEL_COMMON=y
+CONFIG_ENABLE_VMX=y
+CONFIG_SET_IA32_FC_LOCK_BIT=y
+CONFIG_SET_MSR_AESNI_LOCK_BIT=y
+CONFIG_CPU_INTEL_COMMON_TIMEBASE=y
+CONFIG_CPU_INTEL_COMMON_SMM=y
+CONFIG_MICROCODE_UPDATE_PRE_RAM=y
+CONFIG_PARALLEL_MP=y
+CONFIG_XAPIC_ONLY=y
+# CONFIG_X2APIC_ONLY is not set
+# CONFIG_X2APIC_RUNTIME is not set
+# CONFIG_X2APIC_LATE_WORKAROUND is not set
+CONFIG_UDELAY_TSC=y
+CONFIG_TSC_MONOTONIC_TIMER=y
+CONFIG_TSC_SYNC_MFENCE=y
+CONFIG_HAVE_SMI_HANDLER=y
+CONFIG_SMM_TSEG=y
+CONFIG_SMM_PCI_RESOURCE_STORE_NUM_SLOTS=8
+CONFIG_AP_STACK_SIZE=0x800
+CONFIG_SMP=y
+CONFIG_SSE=y
+CONFIG_SSE2=y
+CONFIG_SUPPORT_CPU_UCODE_IN_CBFS=y
+CONFIG_USE_CPU_MICROCODE_CBFS_BINS=y
+CONFIG_CPU_MICROCODE_CBFS_DEFAULT_BINS=y
+# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS is not set
+# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER is not set
+# CONFIG_CPU_MICROCODE_CBFS_NONE is not set
+
+#
+# Northbridge
+#
+CONFIG_USE_NATIVE_RAMINIT=y
+CONFIG_NORTHBRIDGE_INTEL_SANDYBRIDGE=y
+# CONFIG_NATIVE_RAMINIT_IGNORE_MAX_MEM_FUSES is not set
+# CONFIG_NATIVE_RAMINIT_IGNORE_XMP_MAX_DIMMS is not set
+# CONFIG_NATIVE_RAMINIT_IGNORE_XMP_REQUESTED_VOLTAGE is not set
+# CONFIG_RAMINIT_ALWAYS_ALLOW_DLL_OFF is not set
+CONFIG_RAMINIT_ENABLE_ECC=y
+
+#
+# Southbridge
+#
+CONFIG_SOUTHBRIDGE_INTEL_C216=y
+CONFIG_SOUTH_BRIDGE_OPTIONS=y
+# CONFIG_HIDE_MEI_ON_ERROR is not set
+CONFIG_PCIEXP_HOTPLUG=y
+CONFIG_INTEL_DESCRIPTOR_MODE_REQUIRED=y
+CONFIG_SOUTHBRIDGE_INTEL_COMMON_RESET=y
+CONFIG_SOUTHBRIDGE_INTEL_COMMON_RTC=y
+CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMCLIB=y
+CONFIG_SOUTHBRIDGE_INTEL_COMMON_PMBASE=y
+CONFIG_SOUTHBRIDGE_INTEL_COMMON_GPIO=y
+CONFIG_SOUTHBRIDGE_INTEL_COMMON_ME=y
+CONFIG_SOUTHBRIDGE_INTEL_COMMON_EARLY_SMBUS=y
+CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMBUS=y
+CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI=y
+CONFIG_SOUTHBRIDGE_INTEL_COMMON_SPI_ICH9=y
+CONFIG_SOUTHBRIDGE_INTEL_COMMON_PIRQ_ACPI_GEN=y
+CONFIG_SOUTHBRIDGE_INTEL_COMMON_RCBA_PIRQ=y
+CONFIG_HAVE_INTEL_CHIPSET_LOCKDOWN=y
+CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMM=y
+CONFIG_SOUTHBRIDGE_INTEL_COMMON_FINALIZE=y
+CONFIG_SOUTHBRIDGE_INTEL_COMMON_USB_DEBUG=y
+CONFIG_INTEL_DESCRIPTOR_MODE_CAPABLE=y
+# CONFIG_VALIDATE_INTEL_DESCRIPTOR is not set
+CONFIG_INTEL_CHIPSET_LOCKDOWN=y
+CONFIG_TCO_SPACE_NOT_YET_SPLIT=y
+CONFIG_SOUTHBRIDGE_INTEL_COMMON_WATCHDOG=y
+CONFIG_FIXED_RCBA_MMIO_BASE=0xfed1c000
+CONFIG_RCBA_LENGTH=0x4000
+
+#
+# Super I/O
+#
+CONFIG_SUPERIO_SMSC_SCH5545=y
+
+#
+# Embedded Controllers
+#
+
+#
+# Intel Firmware
+#
+CONFIG_HAVE_ME_BIN=y
+# CONFIG_STITCH_ME_BIN is not set
+# CONFIG_CHECK_ME is not set
+# CONFIG_ME_REGION_ALLOW_CPU_READ_ACCESS is not set
+# CONFIG_USE_ME_CLEANER is not set
+CONFIG_MAINBOARD_USES_IFD_GBE_REGION=y
+CONFIG_HAVE_GBE_BIN=y
+# CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION is not set
+# CONFIG_LOCK_MANAGEMENT_ENGINE is not set
+CONFIG_UNLOCK_FLASH_REGIONS=y
+CONFIG_ARCH_X86=y
+CONFIG_ARCH_BOOTBLOCK_X86_32=y
+CONFIG_ARCH_VERSTAGE_X86_32=y
+CONFIG_ARCH_ROMSTAGE_X86_32=y
+CONFIG_ARCH_POSTCAR_X86_32=y
+CONFIG_ARCH_RAMSTAGE_X86_32=y
+CONFIG_ARCH_ALL_STAGES_X86_32=y
+CONFIG_HAVE_EXP_X86_64_SUPPORT=y
+# CONFIG_USE_EXP_X86_64_SUPPORT is not set
+CONFIG_X86_TOP4G_BOOTMEDIA_MAP=y
+CONFIG_PC80_SYSTEM=y
+CONFIG_HAVE_CMOS_DEFAULT=y
+CONFIG_POSTCAR_STAGE=y
+CONFIG_BOOTBLOCK_SIMPLE=y
+# CONFIG_BOOTBLOCK_NORMAL is not set
+CONFIG_COLLECT_TIMESTAMPS_TSC=y
+CONFIG_HAVE_CF9_RESET=y
+CONFIG_DEBUG_HW_BREAKPOINTS=y
+CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS=y
+# CONFIG_DUMP_SMBIOS_TYPE17 is not set
+# end of Chipset
+
+#
+# Devices
+#
+CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y
+CONFIG_HAVE_LINEAR_FRAMEBUFFER=y
+CONFIG_MAINBOARD_HAS_LIBGFXINIT=y
+CONFIG_MAINBOARD_USE_LIBGFXINIT=y
+# CONFIG_VGA_ROM_RUN is not set
+# CONFIG_NO_GFX_INIT is not set
+CONFIG_NO_EARLY_GFX_INIT=y
+
+#
+# Display
+#
+CONFIG_VGA_TEXT_FRAMEBUFFER=y
+# CONFIG_GENERIC_LINEAR_FRAMEBUFFER is not set
+# end of Display
+
+CONFIG_PCI=y
+CONFIG_ECAM_MMCONF_SUPPORT=y
+CONFIG_PCIX_PLUGIN_SUPPORT=y
+CONFIG_AZALIA_PLUGIN_SUPPORT=y
+CONFIG_PCIEXP_PLUGIN_SUPPORT=y
+CONFIG_ECAM_MMCONF_LENGTH=0x04000000
+CONFIG_PCI_ALLOW_BUS_MASTER=y
+CONFIG_PCI_SET_BUS_MASTER_PCI_BRIDGES=y
+CONFIG_PCI_ALLOW_BUS_MASTER_ANY_DEVICE=y
+# CONFIG_PCIEXP_SUPPORT_RESIZABLE_BARS is not set
+# CONFIG_PCIEXP_LANE_ERR_STAT_CLEAR is not set
+CONFIG_PCIEXP_HOTPLUG_PREFETCH_MEM_ABOVE_4G=y
+# CONFIG_PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G is not set
+CONFIG_PCIEXP_HOTPLUG_IO=0x800
+CONFIG_FIRMWARE_CONNECTION_MANAGER=y
+# CONFIG_SOFTWARE_CONNECTION_MANAGER is not set
+# CONFIG_EARLY_PCI_BRIDGE is not set
+CONFIG_SUBSYSTEM_VENDOR_ID=0x0000
+CONFIG_SUBSYSTEM_DEVICE_ID=0x0000
+CONFIG_INTEL_GMA_HAVE_VBT=y
+CONFIG_INTEL_GMA_ADD_VBT=y
+# CONFIG_SOFTWARE_I2C is not set
+CONFIG_I2C_TRANSFER_TIMEOUT_US=500000
+CONFIG_RESOURCE_ALLOCATION_TOP_DOWN=y
+CONFIG_NO_DDR5=y
+CONFIG_NO_LPDDR4=y
+CONFIG_NO_DDR4=y
+CONFIG_NO_DDR2=y
+CONFIG_USE_DDR3=y
+# end of Devices
+
+#
+# Generic Drivers
+#
+CONFIG_CRB_TPM_BASE_ADDRESS=0xfed40000
+# CONFIG_ELOG is not set
+CONFIG_CACHE_MRC_SETTINGS=y
+# CONFIG_MRC_SETTINGS_PROTECT is not set
+CONFIG_MRC_CACHE_USING_MRC_VERSION=y
+# CONFIG_SMMSTORE is not set
+CONFIG_SPI_FLASH=y
+CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y
+CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY=y
+# CONFIG_SPI_FLASH_NO_FAST_READ is not set
+CONFIG_SPI_FLASH_ADESTO=y
+CONFIG_SPI_FLASH_AMIC=y
+CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_FLASH_SST=y
+CONFIG_TPM_INIT_RAMSTAGE=y
+# CONFIG_TPM_PPI is not set
+CONFIG_DRIVERS_UART=y
+# CONFIG_DRIVERS_UART_OXPCIE is not set
+CONFIG_HAVE_USBDEBUG=y
+CONFIG_HAVE_USBDEBUG_OPTIONS=y
+# CONFIG_USBDEBUG is not set
+# CONFIG_VPD is not set
+# CONFIG_DRIVERS_GENERIC_CBFS_SERIAL is not set
+# CONFIG_DRIVERS_GENERIC_CBFS_UUID is not set
+# CONFIG_DRIVERS_GENESYSLOGIC_GL9750 is not set
+# CONFIG_DRIVERS_GENESYSLOGIC_GL9755 is not set
+# CONFIG_DRIVERS_GENESYSLOGIC_GL9763E is not set
+# CONFIG_DRIVERS_I2C_MAX98396 is not set
+CONFIG_INTEL_INT15=y
+CONFIG_INTEL_GMA_ACPI=y
+CONFIG_GFX_GMA=y
+CONFIG_GFX_GMA_DYN_CPU=y
+CONFIG_GFX_GMA_GENERATION="Ironlake"
+CONFIG_GFX_GMA_PCH="Cougar_Point"
+CONFIG_GFX_GMA_PANEL_2_PORT="Disabled"
+CONFIG_GFX_GMA_ANALOG_I2C_PORT="PCH_DAC"
+# CONFIG_DRIVERS_NXP_UWB_SR1XX is not set
+# CONFIG_DRIVERS_PS2_KEYBOARD is not set
+CONFIG_DRIVERS_MC146818=y
+# CONFIG_USE_PC_CMOS_ALTCENTURY is not set
+CONFIG_PC_CMOS_BASE_PORT_BANK0=0x70
+CONFIG_MEMORY_MAPPED_TPM=y
+CONFIG_TPM_TIS_BASE_ADDRESS=0xfed40000
+CONFIG_VGA=y
+# CONFIG_DRIVERS_SIL_3114 is not set
+CONFIG_DRIVERS_WIFI_GENERIC=y
+# end of Generic Drivers
+
+#
+# Security
+#
+
+#
+# CBFS verification
+#
+# CONFIG_CBFS_VERIFICATION is not set
+# end of CBFS verification
+
+#
+# Verified Boot (vboot)
+#
+# end of Verified Boot (vboot)
+
+#
+# Trusted Platform Module
+#
+# CONFIG_NO_TPM is not set
+CONFIG_TPM1=y
+CONFIG_TPM=y
+CONFIG_MAINBOARD_HAS_TPM1=y
+# CONFIG_TPM_DEACTIVATE is not set
+# CONFIG_DEBUG_TPM is not set
+# CONFIG_TPM_RDRESP_NEED_DELAY is not set
+CONFIG_PCR_BOOT_MODE=1
+CONFIG_PCR_HWID=1
+CONFIG_PCR_SRTM=2
+CONFIG_PCR_RUNTIME_DATA=3
+# end of Trusted Platform Module
+
+#
+# Memory initialization
+#
+CONFIG_PLATFORM_HAS_DRAM_CLEAR=y
+# CONFIG_SECURITY_CLEAR_DRAM_ON_REGULAR_BOOT is not set
+# end of Memory initialization
+
+# CONFIG_INTEL_TXT is not set
+# CONFIG_STM is not set
+CONFIG_BOOTMEDIA_LOCK_NONE=y
+# CONFIG_BOOTMEDIA_LOCK_CONTROLLER is not set
+# CONFIG_BOOTMEDIA_LOCK_CHIP is not set
+# CONFIG_BOOTMEDIA_SMM_BWP is not set
+# end of Security
+
+CONFIG_ACPI_HAVE_PCAT_8259=y
+CONFIG_ACPI_INTEL_HARDWARE_SLEEP_VALUES=y
+CONFIG_ACPI_SOC_NVS=y
+CONFIG_ACPI_NO_CUSTOM_MADT=y
+CONFIG_ACPI_COMMON_MADT_LAPIC=y
+CONFIG_ACPI_COMMON_MADT_IOAPIC=y
+CONFIG_HAVE_ACPI_TABLES=y
+CONFIG_BOOT_DEVICE_SPI_FLASH=y
+CONFIG_BOOT_DEVICE_MEMORY_MAPPED=y
+CONFIG_BOOT_DEVICE_SUPPORTS_WRITES=y
+CONFIG_RTC=y
+
+#
+# Console
+#
+CONFIG_BOOTBLOCK_CONSOLE=y
+CONFIG_POSTCAR_CONSOLE=y
+CONFIG_SQUELCH_EARLY_SMP=y
+
+#
+# I/O mapped, 8250-compatible
+#
+CONFIG_TTYS0_BASE=0x3f8
+
+#
+# Serial port base address = 0x3f8
+#
+# CONFIG_CONSOLE_SERIAL_921600 is not set
+# CONFIG_CONSOLE_SERIAL_460800 is not set
+# CONFIG_CONSOLE_SERIAL_230400 is not set
+CONFIG_CONSOLE_SERIAL_115200=y
+# CONFIG_CONSOLE_SERIAL_57600 is not set
+# CONFIG_CONSOLE_SERIAL_38400 is not set
+# CONFIG_CONSOLE_SERIAL_19200 is not set
+# CONFIG_CONSOLE_SERIAL_9600 is not set
+CONFIG_TTYS0_LCS=3
+# CONFIG_SPKMODEM is not set
+# CONFIG_CONSOLE_NE2K is not set
+CONFIG_CONSOLE_CBMEM=y
+# CONFIG_CONSOLE_SPI_FLASH is not set
+# CONFIG_CONSOLE_I2C_SMBUS is not set
+# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8 is not set
+CONFIG_DEFAULT_CONSOLE_LOGLEVEL_7=y
+# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_6 is not set
+# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_5 is not set
+# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_4 is not set
+# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3 is not set
+# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_2 is not set
+# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_1 is not set
+# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0 is not set
+CONFIG_DEFAULT_CONSOLE_LOGLEVEL=7
+CONFIG_CONSOLE_USE_LOGLEVEL_PREFIX=y
+CONFIG_CONSOLE_USE_ANSI_ESCAPES=y
+# CONFIG_CMOS_POST is not set
+CONFIG_POST_DEVICE_NONE=y
+# CONFIG_POST_DEVICE_LPC is not set
+# CONFIG_POST_DEVICE_PCI_PCIE is not set
+CONFIG_POST_IO_PORT=0x80
+CONFIG_HWBASE_DEBUG_CB=y
+# end of Console
+
+CONFIG_HAVE_ACPI_RESUME=y
+CONFIG_RESUME_PATH_SAME_AS_BOOT=y
+CONFIG_HAVE_MONOTONIC_TIMER=y
+CONFIG_HAVE_OPTION_TABLE=y
+CONFIG_IOAPIC=y
+CONFIG_USE_WATCHDOG_ON_BOOT=y
+
+#
+# System tables
+#
+CONFIG_GENERATE_SMBIOS_TABLES=y
+CONFIG_BIOS_VENDOR="coreboot"
+CONFIG_MAINBOARD_SERIAL_NUMBER="123456789"
+# end of System tables
+
+#
+# Payload
+#
+CONFIG_PAYLOAD_NONE=y
+# end of Payload
+
+#
+# Debugging
+#
+
+#
+# CPU Debug Settings
+#
+# CONFIG_DISPLAY_MTRRS is not set
+
+#
+# BLOB Debug Settings
+#
+
+#
+# General Debug Settings
+#
+# CONFIG_GDB_STUB is not set
+# CONFIG_FATAL_ASSERTS is not set
+# CONFIG_DEBUG_CBFS is not set
+CONFIG_HAVE_DEBUG_RAM_SETUP=y
+# CONFIG_DEBUG_RAM_SETUP is not set
+CONFIG_HAVE_DEBUG_SMBUS=y
+# CONFIG_DEBUG_SMBUS is not set
+# CONFIG_DEBUG_MALLOC is not set
+# CONFIG_DEBUG_CONSOLE_INIT is not set
+# CONFIG_DEBUG_SPI_FLASH is not set
+# CONFIG_DEBUG_BOOT_STATE is not set
+# CONFIG_DEBUG_ADA_CODE is not set
+CONFIG_HAVE_EM100_SUPPORT=y
+# CONFIG_EM100 is not set
+# CONFIG_DEBUG_ACPICA_COMPATIBLE is not set
+# end of Debugging
+
+CONFIG_RAMSTAGE_ADA=y
+CONFIG_RAMSTAGE_LIBHWBASE=y
+CONFIG_HWBASE_DYNAMIC_MMIO=y
+CONFIG_HWBASE_DEFAULT_MMCONF=0xf0000000
+CONFIG_HWBASE_DIRECT_PCIDEV=y
+CONFIG_DECOMPRESS_OFAST=y
+CONFIG_WARNINGS_ARE_ERRORS=y
+CONFIG_MAX_REBOOT_CNT=3
+CONFIG_RELOCATABLE_MODULES=y
+CONFIG_HAVE_BOOTBLOCK=y
+CONFIG_HAVE_ROMSTAGE=y
+CONFIG_HAVE_RAMSTAGE=y
diff --git a/resources/git/revisions b/resources/git/revisions
index 7d88fed9..9d28c1e6 100644
--- a/resources/git/revisions
+++ b/resources/git/revisions
@@ -56,3 +56,15 @@
loc: bios_extract
url: https://review.coreboot.org/bios_extract
}
+
+{biosutilities}{
+ rev: 03ae0cf0706ede5a2a15da0986c19c776d0e6b26
+ loc: biosutilities
+ url: https://github.com/platomav/BIOSUtilities
+}
+
+{uefitool}{
+ rev: 4a41c33596e9bc3ae812e763965d91ac57553e02
+ loc: uefitool
+ url: https://github.com/LongSoft/UEFITool
+}
diff --git a/resources/scripts/build/clean/uefitool b/resources/scripts/build/clean/uefitool
new file mode 100755
index 00000000..ad8aa56e
--- /dev/null
+++ b/resources/scripts/build/clean/uefitool
@@ -0,0 +1,28 @@
+#!/usr/bin/env sh
+
+# helper script: run make clean on bios_extract
+#
+# Copyright (C) 2023 Leah Rowe <info@minifree.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+[ "x${DEBUG+set}" = 'xset' ] && set -v
+set -u -e
+
+printf "Cleaning the previous build of uefitool (UEFIExtract)\n"
+
+[ ! -d "uefitool" ] && exit 0
+
+make clean -BC uefitool || exit 1
diff --git a/resources/scripts/build/dependencies/arch b/resources/scripts/build/dependencies/arch
index 407915e1..92af1a87 100644
--- a/resources/scripts/build/dependencies/arch
+++ b/resources/scripts/build/dependencies/arch
@@ -94,6 +94,11 @@ pacman -S --needed --noconfirm libpciaccess pciutils zlib libftdi \
pacman -S --needed --noconfirm innoextract p7zip unar
+# UEFIExtract
+# ------------
+
+pacman -S --needed --noconfirm cmake
+
# U-Boot build dependencies
# ------------------------------------------------------------
pacman -S --needed --noconfirm swig dtc
diff --git a/resources/scripts/build/dependencies/debian b/resources/scripts/build/dependencies/debian
index b9ab42e6..065cb2c7 100755
--- a/resources/scripts/build/dependencies/debian
+++ b/resources/scripts/build/dependencies/debian
@@ -127,6 +127,10 @@ apt-get -y install libpci-dev pciutils zlib1g-dev libftdi-dev \
# For cross-compiling i686 target on x86_64 host.
[ "${arch}" -eq 0 ] && apt-get -y install lib32z1-dev
+# UEFIExtract
+# ------------
+
+apt-get -y install cmake
# Blobs building dependencies (for me)
# ------------------------------------------------------------
diff --git a/resources/scripts/build/dependencies/fedora38 b/resources/scripts/build/dependencies/fedora38
index 0f852f44..57dd20a3 100755
--- a/resources/scripts/build/dependencies/fedora38
+++ b/resources/scripts/build/dependencies/fedora38
@@ -93,6 +93,11 @@ dnf -y install gcc
dnf -y install pciutils-devel zlib-devel libftdi-devel gcc libusb-devel
+# UEFIExtract
+# ------------
+
+dnf -y install cmake
+
# For extracting IntelME from lenovo updates (X230 etc)
dnf -y install innoextract p7zip p7zip-plugins unar
diff --git a/resources/scripts/build/dependencies/parabola b/resources/scripts/build/dependencies/parabola
index 4e40b175..67a5fe75 100755
--- a/resources/scripts/build/dependencies/parabola
+++ b/resources/scripts/build/dependencies/parabola
@@ -101,6 +101,11 @@ pacman -S --needed --noconfirm innoextract p7zip unar
# ------------------------------------------------------------
pacman -S --needed --noconfirm swig dtc
+# UEFIExtract
+# ------------
+
+pacman -S --needed --noconfirm cmake
+
# Unifont, for GRUB
# ------------------------------------------------------------
diff --git a/resources/scripts/build/dependencies/ubuntu2004 b/resources/scripts/build/dependencies/ubuntu2004
index bacb1e46..8ea5507b 100755
--- a/resources/scripts/build/dependencies/ubuntu2004
+++ b/resources/scripts/build/dependencies/ubuntu2004
@@ -109,6 +109,10 @@ apt-get -y install libpci-dev pciutils zlib1g-dev libftdi-dev \
# For cross-compiling i686 target on x86_64 host.
[ "${arch}" -eq 0 ] && apt-get -y install lib32z1-dev
+# UEFIExtract
+# ------------
+
+apt-get -y install cmake
# Blobs building dependencies (for me)
# ------------------------------------------------------------
diff --git a/resources/scripts/build/dependencies/void b/resources/scripts/build/dependencies/void
index 7ceaafde..96263f9c 100755
--- a/resources/scripts/build/dependencies/void
+++ b/resources/scripts/build/dependencies/void
@@ -85,6 +85,11 @@ xbps-install -y base-devel
xbps-install -y libpciaccess pciutils zlib libftdi1 base-devel libusb
+# UEFIExtract
+# ------------
+
+xbps-install -y cmake
+
# Management engine extraction dependencies
# ------------------------------------------------------------
diff --git a/resources/scripts/build/module/uefitool b/resources/scripts/build/module/uefitool
new file mode 100755
index 00000000..6adf1de2
--- /dev/null
+++ b/resources/scripts/build/module/uefitool
@@ -0,0 +1,44 @@
+#!/usr/bin/env sh
+
+# helper script: builds bios_extract source code
+#
+# Copyright (C) 2023 Leah Rowe <info@minifree.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+[ "x${DEBUG+set}" = 'xset' ] && set -v
+set -u -e
+
+main()
+{
+ if [ ! -d "uefitool" ]; then
+ ./download uefitool || fail "cannot download uefitool"
+ fi
+
+ printf "Building uefitool (UEFIExtract)\n"
+
+ (
+ cd uefitool || fail "uefitool not downloaded"
+ cmake UEFIExtract/ || fail "cannot cmake UEFIExtract"
+ make || fail "error compiling UEFIExtract"
+ )
+}
+
+fail()
+{
+ printf "(uefitool build) %s\n" $1 1>&2
+}
+
+main $@
diff --git a/resources/scripts/build/release/roms b/resources/scripts/build/release/roms
index d81ec09a..c60070ec 100755
--- a/resources/scripts/build/release/roms
+++ b/resources/scripts/build/release/roms
@@ -29,6 +29,7 @@ target=""
CONFIG_HAVE_MRC=""
CONFIG_HAVE_ME_BIN=""
CONFIG_KBC1126_FIRMWARE=""
+CONFIG_INCLUDE_SMSC_SCH5545_EC_FW=""
ifdtool="cbutils/${cbtree}/ifdtool"
cbfstool="cbutils/${cbtree}/cbfstool"
@@ -76,6 +77,7 @@ make_archive()
CONFIG_HAVE_MRC="y"
CONFIG_HAVE_ME_BIN="y"
CONFIG_KBC1126_FIRMWARE="y"
+ CONFIG_INCLUDE_SMSC_SCH5545_EC_FW="y"
grep "CONFIG_HAVE_ME_BIN=y" \
"resources/coreboot/${target}/config/"* \
|| CONFIG_HAVE_ME_BIN="n"
@@ -85,6 +87,9 @@ make_archive()
grep "CONFIG_KBC1126_FIRMWARE=y" \
"resources/coreboot/${target}/config"/* \
|| CONFIG_KBC1126_FIRMWARE="n"
+ grep "CONFIG_INCLUDE_SMSC_SCH5545_EC_FW=y" \
+ "resources/coreboot/${target}/config"/* \
+ || CONFIG_INCLUDE_SMSC_SCH5545_EC_FW="n"
# remove ME/MRC/EC firmware from ROM images
if [ "${CONFIG_HAVE_ME_BIN}" = "y" ] \
@@ -163,6 +168,10 @@ strip_rom_image()
${cbfstool} "${romfile}" remove -n ecfw2.bin || exit 1
fi
+ if [ "${CONFIG_INCLUDE_SMSC_SCH5545_EC_FW}" = "y" ]; then
+ ${cbfstool} "${romfile}" remove -n sch5545_ecfw.bin || exit 1
+ fi
+
# TODO: replace this board-specific hack
if [ "${target}" = "e6400nvidia_4mb" ]; then
${cbfstool} "${romfile}" remove \
diff --git a/resources/scripts/build/release/src b/resources/scripts/build/release/src
index 7a2f94d7..0e3237ab 100755
--- a/resources/scripts/build/release/src
+++ b/resources/scripts/build/release/src
@@ -24,7 +24,7 @@ set -u -e
projectname="$(cat projectname)"
modlist="coreboot flashrom grub memtest86plus seabios me_cleaner u-boot"
-modlist="${modlist} bios_extract"
+modlist="${modlist} bios_extract biosutilities uefitool"
dirlist="resources util" # do not add blobs directory here. it's handled below
@@ -104,8 +104,8 @@ copy_blobs()
mkdir -p "${srcdir}"/blobs
# do not copy intel ME etc, but do copy ifd/gbe files
for i in t440p xx20 xx30 hp8200sff hp_ivybridge hp_sandybridge \
- hp8300usdt; do
- for j in ifd gbe 16_ifd; do
+ hp8300usdt t1650; do
+ for j in ifd gbe 4_ifd 8_ifd 12_ifd 16_ifd; do
if [ -f "blobs/${i}/${j}.bin" ]; then
if [ ! -e "${srcdir}/blobs/${i}" ]; then
mkdir -p "${srcdir}/blobs/${i}"
diff --git a/resources/scripts/update/blobs/download b/resources/scripts/update/blobs/download
index 9beacab8..9fd2a6b9 100755
--- a/resources/scripts/update/blobs/download
+++ b/resources/scripts/update/blobs/download
@@ -19,6 +19,9 @@ e6400_vga_dl_url=""
e6400_vga_dl_url_bkup=""
e6400_vga_offset=""
e6400_vga_romname=""
+sch5545ec_dl_url=""
+sch5545ec_dl_url_bkup=""
+sch5545ec_dl_hash=""
cbdir="coreboot/default"
cbcfgsdir="resources/coreboot"
@@ -31,6 +34,8 @@ e6400_unpack="$(pwd)/bios_extract/dell_inspiron_1100_unpacker.py"
me7updateparser="$(pwd)/resources/blobs/me7_update_parser.py"
kbc1126_ec_dump="$(pwd)/${cbdir}/util/kbc1126/kbc1126_ec_dump"
board=""
+pfs_extract="$(pwd)/biosutilities/Dell_PFS_Extract.py"
+uefiextract="$(pwd)/uefitool/uefiextract"
_b="" # board shorthand without e.g. _4mb (avoid duplication per flash size)
CONFIG_HAVE_MRC=""
@@ -40,6 +45,8 @@ CONFIG_HAVE_GBE_BIN=""
CONFIG_KBC1126_FIRMWARE=""
CONFIG_BOARD_DELL_E6400=""
CONFIG_VGA_BIOS_FILE=""
+CONFIG_INCLUDE_SMSC_SCH5545_EC_FW=""
+CONFIG_SMSC_SCH5545_EC_FW_FILE=""
main()
{
@@ -92,11 +99,15 @@ detect_firmware()
&& [ "${CONFIG_VGA_BIOS_FILE}" != "" ]; then
needs="${needs} E6400VGA"
fi
+ if [ "${CONFIG_INCLUDE_SMSC_SCH5545_EC_FW}" = "y" ]; then
+ needs="${needs} SCH5545EC"
+ fi
if [ -z ${needs+x} ]; then
printf 'No binary blobs needed for this board\n'
return 1
fi
- printf "Firmware needed for board %s: %s\n" ${board} ${needs}
+ printf "Firmware needed for board '%s':\n" ${board}
+ printf "%s\n" ${needs}
}
scan_sources_config()
@@ -152,6 +163,18 @@ scan_sources_config()
set ${line}
e6400_vga_romname=${2}
;;
+ SCH5545EC_DL_hash*)
+ set ${line}
+ sch5545ec_dl_hash=${2}
+ ;;
+ SCH5545EC_DL_url_bkup*)
+ set ${line}
+ sch5545ec_dl_url_bkup=${2}
+ ;;
+ SCH5545EC_DL_url*)
+ set ${line}
+ sch5545ec_dl_url=${2}
+ ;;
esac
done << EOF
$(eval "awk '${awkstr}' resources/blobs/sources")
@@ -174,6 +197,20 @@ build_dependencies()
./download bios_extract \
|| fail "could not download bios_extract"
fi
+ if [ ! -d biosutilities ]; then
+ printf "downloading biosutilities\n"
+ ./download biosutilities \
+ || fail "could not download biosutilities"
+ fi
+ if [ ! -d uefitool ]; then
+ printf "download uefitool (for UEFIExtract)\n"
+ ./download uefitool \
+ || fail "could not download uefitool"
+ fi
+ if [ ! -f uefitool/uefiextract ]; then
+ ./build module uefitool \
+ || fail "could not build uefitool"
+ fi
if [ ! -f ${cbdir}/util/kbc1126/kbc1126_ec_dump ]; then
printf "Building kbc1126_ec_dump from coreboot\n"
make -BC ${cbdir}/util/kbc1126 \
@@ -193,6 +230,9 @@ download_blobs()
*ME*)
download_blob_intel_me || _failed="${_failed} me"
;;
+ *SCH5545EC*)
+ download_sch5545ec || failed="${_failed} sch5545ec"
+ ;;
*EC*)
download_ec || _failed="${_failed} ec"
;;
@@ -420,6 +460,51 @@ extract_e6400vga()
printf "E6400 Nvidia ROM saved to: %s\n" "${_vga_destination}"
}
+download_sch5545ec()
+{
+ printf "Downloading SMSC SCH5545 Environment Controller firmware\n"
+
+ fetch_update sch5545ec || return 1
+ extract_sch5545ec || return 1
+}
+
+# TODO: this code is cancer. hardcoded is bad, and stupid.
+# TODO: make it *scan* (based on signature, in each file)
+extract_sch5545ec()
+{
+ printf "Extracting SCH5545 Environment Controller firmware for '%s'\n" \
+ ${board}
+
+ _sch5545ec_destination=${CONFIG_SMSC_SCH5545_EC_FW_FILE#../../}
+
+ if [ -f "${_sch5545ec_destination}" ]; then
+ printf 'sch5545 firmware already downloaded\n'
+ return 0
+ fi
+
+ if [ -d "${appdir}" ]; then
+ rm -Rf "${appdir}"
+ fi
+ mkdir -p "${appdir}/"
+
+ cp "${dl_path}" "${appdir}/"
+ python "${pfs_extract}" "${appdir}/${dlsum}" -e || exit 1
+
+ # full system ROM (UEFI), to extract with UEFIExtract:
+ _bios="${appdir}/${dlsum}_extracted/Firmware"
+ _bios="${_bios}/1 ${dlsum} -- 1 System BIOS vA.28.bin"
+
+ # this is the SCH5545 firmware, inside of the extracted UEFI ROM:
+ _sch5545ec_fw="${_bios}.dump/4 7A9354D9-0468-444A-81CE-0BF617D890DF"
+ _sch5545ec_fw="${_sch5545ec_fw}/54 D386BEB8-4B54-4E69-94F5-06091F67E0D3"
+ _sch5545ec_fw="${_sch5545ec_fw}/0 Raw section/body.bin" # <-- this!
+
+ # this makes the file defined by _sch5545ec_fw available to copy
+ "${uefiextract}" "${_bios}" || exit 1
+
+ cp "${_sch5545ec_fw}" "${_sch5545ec_destination}" || exit 1
+}
+
fetch_update()
{
printf "Fetching vendor update for board: %s\n" ${board}
@@ -440,6 +525,10 @@ fetch_update()
dl=${e6400_vga_dl_url}
dl_bkup=${e6400_vga_dl_url_bkup}
dlsum=${e6400_vga_dl_hash}
+ elif [ "${fw_type}" = "sch5545ec" ]; then
+ dl="${sch5545ec_dl_url}"
+ dl_bkup="${sch5545ec_dl_url_bkup}"
+ dlsum="${sch5545ec_dl_hash}"
else
printf "Unsupported download type: %s\n" ${fw_type}
return 1
diff --git a/resources/scripts/update/blobs/inject b/resources/scripts/update/blobs/inject
index bc8a9a4d..97cb35a6 100755
--- a/resources/scripts/update/blobs/inject
+++ b/resources/scripts/update/blobs/inject
@@ -34,6 +34,8 @@ CONFIG_KBC1126_FW2_OFFSET=""
CONFIG_VGA_BIOS_FILE=""
CONFIG_VGA_BIOS_ID=""
CONFIG_GBE_BIN_PATH=""
+CONFIG_INCLUDE_SMSC_SCH5545_EC_FW=""
+CONFIG_SMSC_SCH5545_EC_FW_FILE=""
main()
{
@@ -217,6 +219,11 @@ patch_rom()
inject_blob_dell_e6400_vgarom_nvidia
fi
+ if [ "${CONFIG_INCLUDE_SMSC_SCH5545_EC_FW}" = "y" ] \
+ && [ "${CONFIG_SMSC_SCH5545_EC_FW_FILE}" != "" ]; then
+ inject_blob_smsc_sch5545_ec "${rom}"
+ fi
+
if [ "${modifygbe}" = "true" ] && ! [ "${release}" = "true" ]; then
modify_gbe ${rom}
fi
@@ -325,6 +332,21 @@ inject_blob_dell_e6400_vgarom_nvidia()
-t optionrom || exit 1
}
+inject_blob_smsc_sch5545_ec()
+{
+ rom="${1}"
+
+ _sch5545ec_location="${CONFIG_SMSC_SCH5545_EC_FW_FILE#../../}"
+
+ if [ ! -f "${_sch5545ec_location}" ]; then
+ printf "SCH5545 firmware file missing\n" 1>&2
+ exit 1
+ fi
+
+ "${cbfstool}" "${rom}" add -f "${_sch5545ec_location}" \
+ -n sch5545_ecfw.bin -t raw || exit 1
+}
+
modify_gbe()
{
printf "changing mac address in gbe to ${new_mac}\n"
diff --git a/resources/scripts/update/module/biosutilities b/resources/scripts/update/module/biosutilities
new file mode 100755
index 00000000..c6de36b1
--- /dev/null
+++ b/resources/scripts/update/module/biosutilities
@@ -0,0 +1,22 @@
+#!/usr/bin/env sh
+#
+# Copyright (C) 2023 Leah Rowe <info@minifree.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+[ "x${DEBUG+set}" = 'xset' ] && set -v
+set -u -e
+
+./gitclone biosutilities
diff --git a/resources/scripts/update/module/uefitool b/resources/scripts/update/module/uefitool
new file mode 100755
index 00000000..cd376895
--- /dev/null
+++ b/resources/scripts/update/module/uefitool
@@ -0,0 +1,22 @@
+#!/usr/bin/env sh
+#
+# Copyright (C) 2023 Leah Rowe <info@minifree.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+[ "x${DEBUG+set}" = 'xset' ] && set -v
+set -u -e
+
+./gitclone uefitool