From faadfce1e6d55f9aeb9c57e53f921ddf3c7e0012 Mon Sep 17 00:00:00 2001 From: Martin Kepplinger Date: Tue, 2 Jan 2018 15:31:28 +0100 Subject: [PATCH] initial infos Signed-off-by: Martin Kepplinger --- 75b154334d.config | 686 ++++++++++++++++++++++++++++++++++++++++++++++ README.md | 100 +++++++ pci8086,0166.rom | Bin 0 -> 65536 bytes 3 files changed, 786 insertions(+) create mode 100644 75b154334d.config create mode 100644 pci8086,0166.rom diff --git a/75b154334d.config b/75b154334d.config new file mode 100644 index 0000000..baf6daa --- /dev/null +++ b/75b154334d.config @@ -0,0 +1,686 @@ +# +# 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_ANY_TOOLCHAIN is not set +# CONFIG_CCACHE is not set +# CONFIG_FMD_GENPARSER is not set +# CONFIG_UTIL_GENPARSER is not set +# CONFIG_USE_OPTION_TABLE is not set +CONFIG_COMPRESS_RAMSTAGE=y +CONFIG_INCLUDE_CONFIG_FILE=y +CONFIG_COLLECT_TIMESTAMPS=y +# CONFIG_USE_BLOBS is not set +# CONFIG_COVERAGE is not set +# CONFIG_UBSAN is not set +CONFIG_RELOCATABLE_RAMSTAGE=y +# CONFIG_UPDATE_IMAGE is not set +# CONFIG_BOOTSPLASH_IMAGE is not set + +# +# Mainboard +# + +# +# Important: Run 'make distclean' before switching boards +# +# CONFIG_VENDOR_A_TREND is not set +# CONFIG_VENDOR_AAEON is not set +# CONFIG_VENDOR_ABIT is not set +# CONFIG_VENDOR_ADI is not set +# CONFIG_VENDOR_ADLINK is not set +# CONFIG_VENDOR_ADVANSUS is not set +# CONFIG_VENDOR_AMD is not set +# CONFIG_VENDOR_AOPEN is not set +# CONFIG_VENDOR_APPLE is not set +# CONFIG_VENDOR_ARTECGROUP is not set +# CONFIG_VENDOR_ASROCK is not set +# CONFIG_VENDOR_ASUS is not set +# CONFIG_VENDOR_AVALUE is not set +# CONFIG_VENDOR_AZZA is not set +# CONFIG_VENDOR_BACHMANN is not set +# CONFIG_VENDOR_BAP is not set +# CONFIG_VENDOR_BCOM is not set +# CONFIG_VENDOR_BIOSTAR is not set +# CONFIG_VENDOR_BROADCOM is not set +# CONFIG_VENDOR_COMPAQ is not set +# CONFIG_VENDOR_CUBIETECH is not set +# CONFIG_VENDOR_DIGITALLOGIC is not set +# CONFIG_VENDOR_DMP is not set +# CONFIG_VENDOR_ECS is not set +# CONFIG_VENDOR_ELMEX is not set +# CONFIG_VENDOR_EMULATION is not set +# CONFIG_VENDOR_ESD is not set +# CONFIG_VENDOR_FOXCONN is not set +# CONFIG_VENDOR_GETAC is not set +# CONFIG_VENDOR_GIGABYTE is not set +# CONFIG_VENDOR_GIZMOSPHERE is not set +# CONFIG_VENDOR_GOOGLE is not set +# CONFIG_VENDOR_HP is not set +# CONFIG_VENDOR_IBASE is not set +# CONFIG_VENDOR_IEI is not set +# CONFIG_VENDOR_INTEL is not set +# CONFIG_VENDOR_IWAVE is not set +# CONFIG_VENDOR_IWILL is not set +# CONFIG_VENDOR_JETWAY is not set +# CONFIG_VENDOR_KONTRON is not set +# CONFIG_VENDOR_LANNER is not set +CONFIG_VENDOR_LENOVO=y +# CONFIG_VENDOR_LINUTOP is not set +# CONFIG_VENDOR_LIPPERT is not set +# CONFIG_VENDOR_LOWRISC is not set +# CONFIG_VENDOR_MITAC is not set +# CONFIG_VENDOR_MSI is not set +# CONFIG_VENDOR_NEC is not set +# CONFIG_VENDOR_NOKIA is not set +# CONFIG_VENDOR_NVIDIA is not set +# CONFIG_VENDOR_PACKARDBELL is not set +# CONFIG_VENDOR_PCENGINES is not set +# CONFIG_VENDOR_PURISM is not set +# CONFIG_VENDOR_RCA 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_SOYO is not set +# CONFIG_VENDOR_SUNW is not set +# CONFIG_VENDOR_SUPERMICRO is not set +# CONFIG_VENDOR_TECHNEXION is not set +# CONFIG_VENDOR_THOMSON is not set +# CONFIG_VENDOR_TI is not set +# CONFIG_VENDOR_TRAVERSE is not set +# CONFIG_VENDOR_TYAN is not set +# CONFIG_VENDOR_VIA is not set +# CONFIG_VENDOR_WINENT is not set +# CONFIG_VENDOR_WINNET is not set +# CONFIG_VENDOR_WYSE is not set +CONFIG_BOARD_SPECIFIC_OPTIONS=y +CONFIG_MAINBOARD_DIR="lenovo/x230" +CONFIG_MAINBOARD_PART_NUMBER="ThinkPad X230" +CONFIG_MAINBOARD_VENDOR="LENOVO" +CONFIG_MAX_CPUS=8 +CONFIG_CACHE_ROM_SIZE_OVERRIDE=0x0 +CONFIG_CBFS_SIZE=0x100000 +CONFIG_PAYLOAD_CONFIGFILE="" +CONFIG_VGA_BIOS_ID="8086,0166" +# CONFIG_ONBOARD_VGA_IS_PRIMARY is not set +CONFIG_DIMM_SPD_SIZE=256 +CONFIG_VGA_BIOS=y +CONFIG_DCACHE_RAM_BASE=0xfefe0000 +CONFIG_DCACHE_RAM_SIZE=0x20000 +CONFIG_VGA_BIOS_FILE="pci8086,0166.rom" +CONFIG_MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID=0x17aa +CONFIG_MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID=0x21fa +# CONFIG_HAVE_IFD_BIN is not set +# CONFIG_HAVE_ME_BIN is not set +CONFIG_DRAM_RESET_GATE_GPIO=10 +CONFIG_MMCONF_BASE_ADDRESS=0xf8000000 +# CONFIG_POST_IO is not set +CONFIG_DEVICETREE="devicetree.cb" +CONFIG_MAX_REBOOT_CNT=3 +CONFIG_ID_SECTION_OFFSET=0x80 +# CONFIG_POST_DEVICE is not set +CONFIG_USBDEBUG_HCD_INDEX=2 +CONFIG_IFD_BIOS_SECTION="" +CONFIG_IFD_ME_SECTION="" +# CONFIG_VBOOT is not set +CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 +CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00 +# CONFIG_DRIVERS_UART_8250IO is not set +CONFIG_FMDFILE="" +CONFIG_IFD_GBE_SECTION="" +# CONFIG_BOARD_LENOVO_G505S is not set +# CONFIG_BOARD_LENOVO_L520 is not set +# CONFIG_BOARD_LENOVO_R400 is not set +# CONFIG_BOARD_LENOVO_S230U is not set +# CONFIG_BOARD_LENOVO_T400 is not set +# CONFIG_BOARD_LENOVO_T420 is not set +# CONFIG_BOARD_LENOVO_T420S is not set +# CONFIG_BOARD_LENOVO_THINKPAD_T430 is not set +# CONFIG_BOARD_LENOVO_T430S is not set +# CONFIG_BOARD_LENOVO_T500 is not set +# CONFIG_BOARD_LENOVO_T520 is not set +# CONFIG_BOARD_LENOVO_T530 is not set +# CONFIG_BOARD_LENOVO_T60 is not set +# CONFIG_BOARD_LENOVO_X1_CARBON_GEN1 is not set +# CONFIG_BOARD_LENOVO_X200 is not set +# CONFIG_BOARD_LENOVO_X201 is not set +# CONFIG_BOARD_LENOVO_X220 is not set +# CONFIG_BOARD_LENOVO_X220I is not set +CONFIG_BOARD_LENOVO_X230=y +# CONFIG_BOARD_LENOVO_X60 is not set +CONFIG_CPU_ADDR_BITS=36 +CONFIG_DEFAULT_CONSOLE_LOGLEVEL=7 +# CONFIG_USBDEBUG is not set +# CONFIG_DRIVERS_PS2_KEYBOARD is not set +# CONFIG_PCIEXP_L1_SUB_STATE is not set +# CONFIG_NO_POST is not set +CONFIG_BOARD_ROMSIZE_KB_12288=y +# CONFIG_COREBOOT_ROMSIZE_KB_64 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_128 is not set +# 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_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=0xc00000 +# CONFIG_MAINBOARD_HAS_TPM2 is not set +CONFIG_SYSTEM_TYPE_LAPTOP=y +# CONFIG_CBFS_AUTOGEN_ATTRIBUTES is not set + +# +# Chipset +# + +# +# SoC +# +CONFIG_CPU_SPECIFIC_OPTIONS=y +CONFIG_RAMTOP=0x200000 +CONFIG_HEAP_SIZE=0x4000 +CONFIG_RAMBASE=0x100000 +CONFIG_EHCI_BAR=0xfef00000 +CONFIG_SERIRQ_CONTINUOUS_MODE=y +CONFIG_SMM_TSEG_SIZE=0x800000 +CONFIG_ACPI_CPU_STRING="\\_PR.CP%02d" +# CONFIG_SOC_BROADCOM_CYGNUS is not set +CONFIG_BOOTBLOCK_CPU_INIT="cpu/intel/model_206ax/bootblock.c" +# CONFIG_SOC_INTEL_GLK is not set +CONFIG_C_ENV_BOOTBLOCK_SIZE=0x10000 +CONFIG_X86_TOP4G_BOOTMEDIA_MAP=y +CONFIG_ROMSTAGE_ADDR=0x2000000 +CONFIG_VERSTAGE_ADDR=0x2000000 +CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y +CONFIG_DCACHE_RAM_MRC_VAR_SIZE=0x0 +CONFIG_BUILD_WITH_FAKE_IFD=y +CONFIG_PCIEXP_ASPM=y +CONFIG_PCIEXP_COMMON_CLOCK=y +# CONFIG_PCIEXP_CLK_PM is not set +CONFIG_BOOTBLOCK_NORTHBRIDGE_INIT="northbridge/intel/sandybridge/bootblock.c" +CONFIG_BOOTBLOCK_SOUTHBRIDGE_INIT="southbridge/intel/bd82x6x/bootblock.c" +CONFIG_CACHE_MRC_SIZE_KB=512 +CONFIG_STACK_SIZE=0x1000 +CONFIG_CONSOLE_CBMEM=y +CONFIG_UART_PCI_ADDR=0x0 +CONFIG_HPET_MIN_TICKS=0x80 +# CONFIG_SOC_INTEL_KABYLAKE is not set +# CONFIG_SOC_LOWRISC_LOWRISC is not set +# CONFIG_SOC_MARVELL_MVMAP2315 is not set +# CONFIG_SOC_MEDIATEK_MT8173 is not set +# CONFIG_SOC_NVIDIA_TEGRA124 is not set +# CONFIG_SOC_NVIDIA_TEGRA210 is not set +# CONFIG_SOC_QC_IPQ40XX is not set +# CONFIG_SOC_QC_IPQ806X is not set +# CONFIG_SOC_ROCKCHIP_RK3288 is not set +# CONFIG_SOC_ROCKCHIP_RK3399 is not set +# CONFIG_CPU_SAMSUNG_EXYNOS5250 is not set +# CONFIG_CPU_SAMSUNG_EXYNOS5420 is not set +# CONFIG_SOC_UCB_RISCV is not set + +# +# CPU +# +# CONFIG_CPU_ALLWINNER_A10 is not set +CONFIG_SOCKET_SPECIFIC_OPTIONS=y +CONFIG_XIP_ROM_SIZE=0x20000 +CONFIG_NUM_IPI_STARTS=2 +# CONFIG_CPU_AMD_AGESA is not set +# CONFIG_CPU_AMD_PI is not set +# CONFIG_CPU_ARMLTD_CORTEX_A9 is not set +CONFIG_CPU_INTEL_MODEL_306AX=y +CONFIG_SSE2=y +CONFIG_CPU_INTEL_SOCKET_RPGA989=y +# CONFIG_CPU_INTEL_FIRMWARE_INTERFACE_TABLE is not set +# CONFIG_CPU_INTEL_TURBO_NOT_PACKAGE_SCOPED is not set +CONFIG_CPU_INTEL_COMMON=y +CONFIG_ENABLE_VMX=y +CONFIG_SET_VMX_LOCK_BIT=y +# CONFIG_CPU_TI_AM335X is not set +# CONFIG_PARALLEL_CPU_INIT is not set +# CONFIG_PARALLEL_MP is not set +# CONFIG_UDELAY_IO is not set +# CONFIG_UDELAY_LAPIC is not set +CONFIG_UDELAY_TSC=y +CONFIG_TSC_CONSTANT_RATE=y +CONFIG_TSC_MONOTONIC_TIMER=y +# CONFIG_UDELAY_TIMER2 is not set +# CONFIG_TSC_SYNC_LFENCE is not set +CONFIG_TSC_SYNC_MFENCE=y +# CONFIG_NO_FIXED_XIP_ROM_SIZE is not set +CONFIG_LOGICAL_CPUS=y +CONFIG_SMM_TSEG=y +CONFIG_SMM_MODULE_HEAP_SIZE=0x4000 +# CONFIG_SMM_LAPIC_REMAP_MITIGATION is not set +# CONFIG_SERIALIZED_SMM_INITIALIZATION is not set +# CONFIG_X86_AMD_FIXED_MTRRS is not set +# CONFIG_PLATFORM_USES_FSP1_0 is not set +# CONFIG_MIRROR_PAYLOAD_TO_RAM_BEFORE_LOADING is not set +# CONFIG_SOC_SETS_MSRS is not set +CONFIG_CACHE_AS_RAM=y +# CONFIG_NO_CAR_GLOBAL_MIGRATION is not set +CONFIG_SMP=y +CONFIG_AP_SIPI_VECTOR=0xfffff000 +CONFIG_MMX=y +CONFIG_SSE=y +CONFIG_SUPPORT_CPU_UCODE_IN_CBFS=y +# CONFIG_USES_MICROCODE_HEADER_FILES is not set +CONFIG_CPU_MICROCODE_CBFS_GENERATE=y +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER is not set +# CONFIG_CPU_MICROCODE_CBFS_NONE is not set +# CONFIG_CPU_MICROCODE_MULTIPLE_FILES is not set +CONFIG_CPU_UCODE_BINARIES="" + +# +# Northbridge +# +# CONFIG_NORTHBRIDGE_AMD_AGESA is not set +# CONFIG_S3_VGA_ROM_RUN is not set +# CONFIG_NO_MMCONF_SUPPORT is not set +# CONFIG_AMD_NB_CIMX is not set +# CONFIG_NORTHBRIDGE_AMD_CIMX_RD890 is not set +# CONFIG_NORTHBRIDGE_AMD_PI is not set +CONFIG_NORTHBRIDGE_INTEL_COMMON_MRC_CACHE=y +CONFIG_MRC_CACHE_SIZE=0x10000 +CONFIG_NORTHBRIDGE_INTEL_IVYBRIDGE=y +CONFIG_USE_NATIVE_RAMINIT=y +# CONFIG_NATIVE_RAMINIT_IGNORE_MAX_MEM_FUSES is not set +# CONFIG_NATIVE_RAMINIT_IGNORE_XMP_MAX_DIMMS is not set +CONFIG_SANDYBRIDGE_IVYBRIDGE_LVDS=y +CONFIG_HPET_ADDRESS=0xfed00000 +CONFIG_MAX_PIRQ_LINKS=4 + +# +# Southbridge +# +# CONFIG_AMD_SB_CIMX is not set +# CONFIG_SOUTHBRIDGE_AMD_CIMX_SB800 is not set +# CONFIG_SOUTHBRIDGE_AMD_CIMX_SB900 is not set +CONFIG_SOUTHBRIDGE_INTEL_C216=y +CONFIG_SOUTH_BRIDGE_OPTIONS=y +CONFIG_LOCK_SPI_FLASH_NONE=y +# CONFIG_LOCK_SPI_FLASH_RO is not set +# CONFIG_LOCK_SPI_FLASH_NO_ACCESS is not set +CONFIG_SOUTHBRIDGE_INTEL_COMMON=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_GPIO=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_SMBUS=y +CONFIG_HAVE_INTEL_CHIPSET_LOCKDOWN=y +CONFIG_INTEL_CHIPSET_LOCKDOWN=y +# CONFIG_LOCK_MANAGEMENT_ENGINE is not set + +# +# Super I/O +# +# CONFIG_SUPERIO_NUVOTON_NCT6776_COM_A is not set + +# +# Embedded Controllers +# +CONFIG_EC_ACPI=y +CONFIG_EC_LENOVO_H8=y +CONFIG_SEABIOS_PS2_TIMEOUT=3000 +# CONFIG_H8_BEEP_ON_DEATH is not set +CONFIG_H8_FLASH_LEDS_ON_DEATH=y +CONFIG_EC_LENOVO_PMH7=y +CONFIG_HAVE_INTEL_FIRMWARE=y + +# +# Intel Firmware +# +CONFIG_IFD_PLATFORM_SECTION="" +# CONFIG_MAINBOARD_HAS_CHROMEOS is not set +# CONFIG_GOOGLE_SMBIOS_MAINBOARD_VERSION is not set +# CONFIG_UEFI_2_4_BINDING is not set +# CONFIG_UDK_2015_BINDING is not set +# CONFIG_USE_SIEMENS_HWILIB is not set +# CONFIG_ARCH_ARM is not set +# CONFIG_ARCH_BOOTBLOCK_ARM is not set +# CONFIG_ARCH_VERSTAGE_ARM is not set +# CONFIG_ARCH_ROMSTAGE_ARM is not set +# CONFIG_ARCH_RAMSTAGE_ARM is not set +# CONFIG_ARCH_BOOTBLOCK_ARMV4 is not set +# CONFIG_ARCH_VERSTAGE_ARMV4 is not set +# CONFIG_ARCH_ROMSTAGE_ARMV4 is not set +# CONFIG_ARCH_RAMSTAGE_ARMV4 is not set +# CONFIG_ARCH_BOOTBLOCK_ARMV7 is not set +# CONFIG_ARCH_VERSTAGE_ARMV7 is not set +# CONFIG_ARCH_ROMSTAGE_ARMV7 is not set +# CONFIG_ARCH_RAMSTAGE_ARMV7 is not set +# CONFIG_ARCH_BOOTBLOCK_ARMV7_M is not set +# CONFIG_ARCH_VERSTAGE_ARMV7_M is not set +# CONFIG_ARCH_BOOTBLOCK_ARMV7_R is not set +# CONFIG_ARCH_VERSTAGE_ARMV7_R is not set +# CONFIG_ARCH_ROMSTAGE_ARMV7_R is not set +# CONFIG_ARCH_RAMSTAGE_ARMV7_R is not set +# CONFIG_ARM_LPAE is not set +# CONFIG_ARCH_ARM64 is not set +# CONFIG_ARCH_BOOTBLOCK_ARM64 is not set +# CONFIG_ARCH_VERSTAGE_ARM64 is not set +# CONFIG_ARCH_ROMSTAGE_ARM64 is not set +# CONFIG_ARCH_RAMSTAGE_ARM64 is not set +# CONFIG_ARCH_BOOTBLOCK_ARMV8_64 is not set +# CONFIG_ARCH_VERSTAGE_ARMV8_64 is not set +# CONFIG_ARCH_ROMSTAGE_ARMV8_64 is not set +# CONFIG_ARCH_RAMSTAGE_ARMV8_64 is not set +# CONFIG_ARM64_A53_ERRATUM_843419 is not set +# CONFIG_ARCH_MIPS is not set +# CONFIG_ARCH_BOOTBLOCK_MIPS is not set +# CONFIG_ARCH_VERSTAGE_MIPS is not set +# CONFIG_ARCH_ROMSTAGE_MIPS is not set +# CONFIG_ARCH_RAMSTAGE_MIPS is not set +# CONFIG_ARCH_POWER8 is not set +# CONFIG_ARCH_BOOTBLOCK_POWER8 is not set +# CONFIG_ARCH_VERSTAGE_POWER8 is not set +# CONFIG_ARCH_ROMSTAGE_POWER8 is not set +# CONFIG_ARCH_RAMSTAGE_POWER8 is not set +# CONFIG_ARCH_RISCV is not set +# CONFIG_ARCH_BOOTBLOCK_RISCV is not set +# CONFIG_ARCH_VERSTAGE_RISCV is not set +# CONFIG_ARCH_ROMSTAGE_RISCV is not set +# CONFIG_ARCH_RAMSTAGE_RISCV is not set +CONFIG_ARCH_X86=y +CONFIG_ARCH_BOOTBLOCK_X86_32=y +CONFIG_ARCH_VERSTAGE_X86_32=y +CONFIG_ARCH_ROMSTAGE_X86_32=y +CONFIG_ARCH_RAMSTAGE_X86_32=y +# CONFIG_ARCH_BOOTBLOCK_X86_64 is not set +# CONFIG_ARCH_VERSTAGE_X86_64 is not set +# CONFIG_ARCH_ROMSTAGE_X86_64 is not set +# CONFIG_ARCH_RAMSTAGE_X86_64 is not set +# CONFIG_USE_MARCH_586 is not set +# CONFIG_AP_IN_SIPI_WAIT is not set +# CONFIG_SIPI_VECTOR_IN_ROM is not set +# CONFIG_ROMCC is not set +# CONFIG_CBMEM_TOP_BACKUP is not set +# CONFIG_LATE_CBMEM_INIT is not set +# CONFIG_EARLY_EBDA_INIT is not set +CONFIG_PC80_SYSTEM=y +# CONFIG_BOOTBLOCK_DEBUG_SPINLOOP is not set +# CONFIG_BOOTBLOCK_SAVE_BIST_AND_TIMESTAMP is not set +CONFIG_HAVE_CMOS_DEFAULT=y +CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" +CONFIG_IOAPIC_INTERRUPTS_ON_FSB=y +# CONFIG_IOAPIC_INTERRUPTS_ON_APIC_SERIAL_BUS is not set +# CONFIG_POSTCAR_STAGE is not set +# CONFIG_VERSTAGE_DEBUG_SPINLOOP is not set +# CONFIG_ROMSTAGE_DEBUG_SPINLOOP is not set +CONFIG_BOOTBLOCK_SIMPLE=y +# CONFIG_BOOTBLOCK_NORMAL is not set +CONFIG_BOOTBLOCK_SOURCE="bootblock_simple.c" + +# +# Devices +# +CONFIG_HAVE_VGA_TEXT_FRAMEBUFFER=y +CONFIG_MAINBOARD_HAS_NATIVE_VGA_INIT=y +# CONFIG_MAINBOARD_FORCE_NATIVE_VGA_INIT is not set +CONFIG_MAINBOARD_HAS_LIBGFXINIT=y +# CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT is not set +# CONFIG_MAINBOARD_USE_LIBGFXINIT is not set +CONFIG_VGA_ROM_RUN=y +# CONFIG_NO_GFX_INIT is not set +# CONFIG_ALWAYS_LOAD_OPROM is not set +# CONFIG_ON_DEVICE_ROM_LOAD is not set +CONFIG_PCI_OPTION_ROM_RUN_REALMODE=y +# CONFIG_PCI_OPTION_ROM_RUN_YABEL is not set +# CONFIG_MULTIPLE_VGA_ADAPTERS is not set + +# +# Display +# +# CONFIG_FRAMEBUFFER_SET_VESA_MODE is not set +CONFIG_VGA_TEXT_FRAMEBUFFER=y +# CONFIG_SMBUS_HAS_AUX_CHANNELS is not set +CONFIG_PCI=y +CONFIG_MMCONF_SUPPORT=y +# CONFIG_HYPERTRANSPORT_PLUGIN_SUPPORT is not set +CONFIG_PCIX_PLUGIN_SUPPORT=y +CONFIG_CARDBUS_PLUGIN_SUPPORT=y +# CONFIG_AZALIA_PLUGIN_SUPPORT is not set +CONFIG_PCIEXP_PLUGIN_SUPPORT=y +# CONFIG_EARLY_PCI_BRIDGE is not set +CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 +CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 +# CONFIG_INTEL_GMA_ADD_VBT_DATA_FILE is not set +# CONFIG_SOFTWARE_I2C is not set + +# +# Generic Drivers +# +# CONFIG_DRIVERS_AS3722_RTC is not set +# CONFIG_GIC is not set +# CONFIG_IPMI_KCS is not set +# CONFIG_DRIVERS_LENOVO_WACOM is not set +# CONFIG_RT8168_GET_MAC_FROM_VPD is not set +# CONFIG_RT8168_SET_LED_MODE is not set +CONFIG_SPI_FLASH=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y +# CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY is not set +# CONFIG_SPI_FLASH_SMM is not set +# 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_GIGADEVICE=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_SST=y +CONFIG_SPI_FLASH_STMICRO=y +CONFIG_SPI_FLASH_WINBOND=y +# CONFIG_SPI_FLASH_FAST_READ_DUAL_OUTPUT_3B is not set +# CONFIG_SPI_FLASH_HAS_VOLATILE_GROUP is not set +# CONFIG_HAVE_SPI_CONSOLE_SUPPORT is not set +# CONFIG_DRIVERS_UART is not set +CONFIG_NO_UART_ON_SUPERIO=y +# CONFIG_UART_OVERRIDE_INPUT_CLOCK_DIVIDER is not set +# CONFIG_UART_OVERRIDE_REFCLK is not set +# CONFIG_DRIVERS_UART_8250MEM is not set +# CONFIG_DRIVERS_UART_8250MEM_32 is not set +# CONFIG_HAVE_UART_SPECIAL is not set +# CONFIG_DRIVERS_UART_OXPCIE is not set +# CONFIG_DRIVERS_UART_PL011 is not set +# CONFIG_UART_USE_REFCLK_AS_INPUT_CLOCK is not set +CONFIG_HAVE_USBDEBUG=y +CONFIG_HAVE_USBDEBUG_OPTIONS=y +# CONFIG_DRIVERS_AMD_PI is not set +CONFIG_SMBIOS_PROVIDED_BY_MOBO=y +# CONFIG_DRIVERS_I2C_MAX98927 is not set +# CONFIG_DRIVERS_I2C_PCF8523 is not set +# CONFIG_DRIVERS_I2C_RT5663 is not set +# CONFIG_DRIVERS_I2C_RTD2132 is not set +# CONFIG_DRIVERS_I2C_RX6110SA is not set +# CONFIG_MAINBOARD_HAS_I2C_TPM_ATMEL is not set +# CONFIG_MAINBOARD_HAS_I2C_TPM_CR50 is not set +# CONFIG_INTEL_DDI is not set +# CONFIG_INTEL_EDID is not set +CONFIG_INTEL_INT15=y +CONFIG_INTEL_GMA_ACPI=y +# CONFIG_INTEL_GMA_SSC_ALTERNATE_REF is not set +CONFIG_GFX_GMA=y +CONFIG_GFX_GMA_CPU="Ivybridge" +CONFIG_GFX_GMA_CPU_VARIANT="Normal" +# CONFIG_GFX_GMA_INTERNAL_IS_EDP is not set +CONFIG_GFX_GMA_INTERNAL_IS_LVDS=y +CONFIG_GFX_GMA_INTERNAL_PORT="LVDS" +CONFIG_GFX_GMA_ANALOG_I2C_PORT="PCH_DAC" +# CONFIG_DRIVER_INTEL_I210 is not set +# CONFIG_DRIVERS_INTEL_MIPI_CAMERA is not set +# CONFIG_DRIVERS_INTEL_WIFI is not set +# CONFIG_USE_SAR is not set +# CONFIG_DRIVERS_LENOVO_HYBRID_GRAPHICS is not set +# CONFIG_DRIVER_MAXIM_MAX77686 is not set +# CONFIG_DRIVER_PARADE_PS8625 is not set +# CONFIG_DRIVER_PARADE_PS8640 is not set +CONFIG_DRIVERS_MC146818=y +CONFIG_MAINBOARD_HAS_LPC_TPM=y +# CONFIG_LPC_TPM is not set +CONFIG_VGA=y +CONFIG_DRIVERS_RICOH_RCE822=y +# CONFIG_DRIVER_SIEMENS_NC_FPGA is not set +# CONFIG_NC_FPGA_NOTIFY_CB_READY is not set +# CONFIG_DRIVERS_SIL_3114 is not set +# CONFIG_MAINBOARD_HAS_SPI_TPM_CR50 is not set +# CONFIG_DRIVER_TI_TPS65090 is not set +# CONFIG_DRIVERS_TI_TPS65913 is not set +# CONFIG_DRIVERS_TI_TPS65913_RTC is not set +# CONFIG_DRIVER_XPOWERS_AXP209 is not set +# CONFIG_COMMONLIB_STORAGE is not set + +# +# Security +# + +# +# Verified Boot (vboot) +# +CONFIG_ACPI_SATA_GENERATOR=y +CONFIG_ACPI_INTEL_HARDWARE_SLEEP_VALUES=y +# CONFIG_ACPI_AMD_HARDWARE_SLEEP_VALUES is not set +# CONFIG_BOOT_DEVICE_NOT_SPI_FLASH is not set +CONFIG_BOOT_DEVICE_SPI_FLASH=y +CONFIG_BOOT_DEVICE_MEMORY_MAPPED=y +# CONFIG_BOOT_DEVICE_SUPPORTS_WRITES is not set +CONFIG_RTC=y +# CONFIG_TPM is not set +# CONFIG_MAINBOARD_HAS_TPM_CR50 is not set + +# +# Console +# +CONFIG_SQUELCH_EARLY_SMP=y +# CONFIG_SPKMODEM is not set +# CONFIG_CONSOLE_NE2K is not set +CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 +# CONFIG_CONSOLE_CBMEM_DUMP_TO_UART is not set +# CONFIG_CONSOLE_SPI_FLASH 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_CMOS_POST is not set +# CONFIG_CONSOLE_POST is not set +# CONFIG_NO_EARLY_BOOTBLOCK_POSTCODES is not set +CONFIG_HWBASE_DEBUG_CB=y +CONFIG_HAVE_ACPI_RESUME=y +# CONFIG_ACPI_HUGE_LOWMEM_BACKUP is not set +CONFIG_RESUME_PATH_SAME_AS_BOOT=y +CONFIG_HAVE_HARD_RESET=y +# CONFIG_HAVE_ROMSTAGE_CONSOLE_SPINLOCK is not set +# CONFIG_HAVE_ROMSTAGE_NVRAM_CBFS_SPINLOCK is not set +# CONFIG_HAVE_ROMSTAGE_MICROCODE_CBFS_SPINLOCK is not set +CONFIG_HAVE_MONOTONIC_TIMER=y +# CONFIG_GENERIC_UDELAY is not set +# CONFIG_TIMER_QUEUE is not set +CONFIG_HAVE_OPTION_TABLE=y +# CONFIG_PIRQ_ROUTE is not set +CONFIG_HAVE_SMI_HANDLER=y +# CONFIG_PCI_IO_CFG_EXT is not set +CONFIG_IOAPIC=y +CONFIG_USE_WATCHDOG_ON_BOOT=y +# CONFIG_GFXUMA is not set +CONFIG_HAVE_ACPI_TABLES=y +CONFIG_COMMON_FADT=y +# CONFIG_ACPI_NHLT is not set + +# +# System tables +# +# CONFIG_GENERATE_MP_TABLE is not set +# CONFIG_GENERATE_PIRQ_TABLE is not set +CONFIG_GENERATE_SMBIOS_TABLES=y + +# +# Payload +# +# CONFIG_PAYLOAD_NONE is not set +# CONFIG_PAYLOAD_ELF is not set +# CONFIG_PAYLOAD_BAYOU is not set +# CONFIG_PAYLOAD_FILO is not set +# CONFIG_PAYLOAD_GRUB2 is not set +CONFIG_PAYLOAD_SEABIOS=y +# CONFIG_PAYLOAD_UBOOT is not set +# CONFIG_PAYLOAD_LINUX is not set +# CONFIG_PAYLOAD_TIANOCORE is not set +CONFIG_PAYLOAD_FILE="payloads/external/SeaBIOS/seabios/out/bios.bin.elf" +# CONFIG_SEABIOS_STABLE is not set +# CONFIG_SEABIOS_MASTER is not set +CONFIG_SEABIOS_REVISION=y +CONFIG_SEABIOS_REVISION_ID="63451fca13c75870e1703eb3e20584d91179aebc" +# CONFIG_SEABIOS_THREAD_OPTIONROMS is not set +CONFIG_SEABIOS_BOOTORDER_FILE="" +CONFIG_SEABIOS_DEBUG_LEVEL=-1 + +# +# Using default SeaBIOS log level +# +CONFIG_PAYLOAD_OPTIONS="" +# CONFIG_PXE is not set +CONFIG_COMPRESSED_PAYLOAD_LZMA=y +# CONFIG_PAYLOAD_IS_FLAT_BINARY is not set + +# +# Secondary Payloads +# +# CONFIG_COREINFO_SECONDARY_PAYLOAD is not set +# CONFIG_MEMTEST_SECONDARY_PAYLOAD is not set +# CONFIG_NVRAMCUI_SECONDARY_PAYLOAD is not set +# CONFIG_TINT_SECONDARY_PAYLOAD is not set + +# +# Debugging +# +# 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_CAR is not set +CONFIG_HAVE_DEBUG_SMBUS=y +# CONFIG_DEBUG_SMBUS is not set +# CONFIG_DEBUG_SMI is not set +# CONFIG_DEBUG_SMM_RELOCATION is not set +# CONFIG_DEBUG_MALLOC is not set +# CONFIG_DEBUG_ACPI is not set +# CONFIG_REALMODE_DEBUG is not set +# CONFIG_DEBUG_SPI_FLASH is not set +# CONFIG_TRACE is not set +# CONFIG_DEBUG_BOOT_STATE is not set +# CONFIG_DEBUG_ADA_CODE is not set +CONFIG_NO_EDID_FILL_FB=y +# CONFIG_ENABLE_APIC_EXT_ID is not set +CONFIG_WARNINGS_ARE_ERRORS=y +# CONFIG_POWER_BUTTON_DEFAULT_ENABLE is not set +# CONFIG_POWER_BUTTON_DEFAULT_DISABLE is not set +# CONFIG_POWER_BUTTON_FORCE_ENABLE is not set +# CONFIG_POWER_BUTTON_FORCE_DISABLE is not set +# CONFIG_POWER_BUTTON_IS_OPTIONAL is not set +# CONFIG_REG_SCRIPT is not set +# CONFIG_CREATE_BOARD_CHECKLIST is not set +# CONFIG_MAKE_CHECKLIST_PUBLIC is not set +# CONFIG_NO_XIP_EARLY_STAGES is not set +CONFIG_EARLY_CBMEM_INIT=y +# CONFIG_EARLY_CBMEM_LIST is not set +CONFIG_RELOCATABLE_MODULES=y +# CONFIG_BOARD_ID_AUTO is not set +# CONFIG_BOARD_ID_MANUAL is not set +CONFIG_BOOTBLOCK_CUSTOM=y diff --git a/README.md b/README.md index 4c0f90a..87e9352 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,102 @@ # coreboot-x230 pre-built coreboot images and documentation on how to flash them for the Thinkpad X230 + +These imges: +* include Lenovo's proprietary VGA BIOS ROM. If it might not be needed anymore, I'm happy for hints. +* include [SeaBIOS](https://seabios.org/SeaBIOS) as coreboot payload, for maximum compatibility. +* are meant to be [flashed externally](#how-to-flash) + +## Latest build +See our [releases](https://github.com/merge/coreboot-x230/releases) + +## Flashing for the first time + +### EC firmware +Enter Lenovo's BIOS with __F1__ and check the embedded controller (EC) version to be +__1.14__ and upgrade using [the latest bootable CD](https://support.lenovo.com/at/en/downloads/ds029188) +if it isn't. The EC cannot be upgraded when coreboot is installed. (In case a newer +version should ever be available (I doubt it), you could temporarily flash back your +original Lenovo BIOS image) + +### me_cleaner +The Intel Management Engine resides on the 8MB chip. We don't need to touch it +for coreboot-upgrades in the future, but while opening up the Thinkpad anyways, +we can save it and run [ifdtool](https://github.com/coreboot/coreboot/tree/master/util/ifdtool) +and [me_cleaner](https://github.com/corna/me_cleaner) on it: + + + flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=128 -c "MX25L3206E/MX25L3208E" -r ifdmegbe.rom + flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=128 -c "MX25L3206E/MX25L3208E" -r ifdmegbe2.rom + diff ifdmegbe.rom ifdmegbe2.rom + git clone https://github.com/corna/me_cleaner.git && cd me_cleaner + ./me_cleaner.py -O ifdmegbe_meclean.rom ifdmegbe.rom + ifdtool -u ifdmegbe_meclean.rom + flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=128 -c "MX25L3206E/MX25L3208E" -w ifdmegbe_meclean.rom.new + +### save the 4MB chip +(internally, memory of the two chips is mapped together, the 8MB being the lower +part, but we can essientially ignore that) + +For the first time, we have to save the original image, just like we did with +the 8MB chip above: + + + flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=128 -r top1.rom + flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=128 -r top2.rom + diff top1.rom top2.rom + +## Flashing the coreboot / SeaBIOS image +When __upgrading__ to a new version, for example when a new [SeaBIOS](https://seabios.org/Releases) +version is available, only this has to be done. + +Download the latest release image we provide here and flash it: + + + flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=128 -w example.rom + +## How to flash +We flash externally, using a "Pomona 5250 8-pin SOIC test clip". You'll find +one easily. + +We connect it to a Raspberry Pi 3, running [Raspbian](https://www.raspberrypi.org/downloads/raspbian/) +and the following setup +* in the SD Cards's `/boot/config.txt` file `enable_uart=1` and `dtparam=spi=on` +* [For flashrom](https://www.flashrom.org/RaspberryPi) we put `spi_bcm2835` and `spidev` in /etc/modules +* [Connect to a wifi](https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md) +* install `flashrom` +* connect the Clip to the Raspberry Pi 3: + + Edge of pi (furthest from you) + L CS + E | + F +---------------------------------------------------------------------------------+ + T | x x x x x x x x x x x x x x x x x x x x | + | x x x x x x x x x x x x x x x x x x x x | + E +----------------------------------^---^---^---^-------------------------------^--+ + D | | | | | + G 3.3V MOSIMISO| GND + E (VCC) CLK + Body of Pi (closest to you) + +and you X230: + + + Screen (furthest from you) + __ + MOSI 5 --| |-- 4 GND + CLK 6 --| |-- 3 N/C + N/C 7 --| |-- 2 MISO + VCC 8 --|__|-- 1 CS + + Edge (closest to you) + + +Now you should be able to run the above mentioned `flashrom` commands. + +## How we build +Everything necessary to build coreboot is included in this project and building +coreboot is not hard at all. Please refer to [coreboot's own documentation](https://www.coreboot.org/Build_HOWTO). + +When building, testing and doing a release here, we always try to upload our +result to coreboot's [board status project](https://www.coreboot.org/Supported_Motherboards). + diff --git a/pci8086,0166.rom b/pci8086,0166.rom new file mode 100644 index 0000000000000000000000000000000000000000..83223da055bd00916386c277caa19cb86849b394 GIT binary patch literal 65536 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 literal 0 HcmV?d00001