# SPDX-License-Identifier: GPL-2.0-only config HAVE_INTEL_FIRMWARE bool default y if INTEL_DESCRIPTOR_MODE_CAPABLE help Platform uses the Intel Firmware Descriptor to describe the layout of the SPI ROM chip. Enabling this option will allow you to select further features that rely on this like providing individual firmware blobs. if HAVE_INTEL_FIRMWARE comment "Intel Firmware" config HAVE_IFD_BIN bool "Add Intel descriptor.bin file" select HAVE_EM100_SUPPORT # We use ifdtool to enable this. help The descriptor binary config IFD_BIN_PATH string "Path and filename of the descriptor.bin file" default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/descriptor.bin" depends on HAVE_IFD_BIN config HAVE_ME_BIN bool "Add Intel ME/TXE firmware" depends on HAVE_IFD_BIN help The Intel processor in the selected system requires a special firmware for an integrated controller. This might be called the Management Engine (ME), the Trusted Execution Engine (TXE) or something else depending on the chip. This firmware might or might not be available in coreboot's 3rdparty/blobs repository. If it is not and if you don't have access to the firmware from elsewhere, you can still build coreboot without it. In this case however, you'll have to make sure that you don't overwrite your ME/TXE firmware on your flash ROM. config STITCH_ME_BIN bool "Stitch individual ME/CSE components" default n depends on HAVE_ME_BIN help This config can be selected by mainboard if it wants to stitch ME/CSE components during build time instead of supplying a pre-stitched binary. config ME_BIN_PATH string "Path to management engine firmware" if !STITCH_ME_BIN default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/me.bin" depends on HAVE_ME_BIN && !STITCH_ME_BIN config CHECK_ME bool "Verify the integrity of the supplied ME/TXE firmware" default n depends on HAVE_ME_BIN && (NORTHBRIDGE_INTEL_IRONLAKE || \ NORTHBRIDGE_INTEL_SANDYBRIDGE || \ NORTHBRIDGE_INTEL_HASWELL || \ SOC_INTEL_BROADWELL || SOC_INTEL_SKYLAKE || \ SOC_INTEL_KABYLAKE || SOC_INTEL_BAYTRAIL || SOC_INTEL_BRASWELL) help Verify the integrity of the supplied Intel ME/TXE firmware before proceeding with the build, in order to prevent an accidental loading of a corrupted ME/TXE image. config ME_REGION_ALLOW_CPU_READ_ACCESS bool "Allows HOST/CPU read access to ME region" depends on HAVE_IFD_BIN default y if SOC_INTEL_CSE_LITE_SKU || SOC_INTEL_CSE_LITE_SYNC_BY_PAYLOAD default n help The config ensures Host has read access to the ME region if it is locked through LOCK_MANAGEMENT_ENGINE config. This config is enabled when the CSE Lite SKU is integrated. config USE_ME_CLEANER bool "Strip down the Intel ME/TXE firmware" depends on HAVE_ME_BIN && (NORTHBRIDGE_INTEL_IRONLAKE || \ NORTHBRIDGE_INTEL_SANDYBRIDGE || \ NORTHBRIDGE_INTEL_HASWELL || \ SOC_INTEL_BROADWELL || SOC_INTEL_SKYLAKE || \ SOC_INTEL_KABYLAKE || SOC_INTEL_BAYTRAIL || SOC_INTEL_BRASWELL) help Use me_cleaner to remove all the non-fundamental code from the Intel ME/TXE firmware. The resulting Intel ME/TXE firmware will have only the code responsible for the very basic hardware initialization, leaving the ME/TXE subsystem essentially in a disabled state. Don't flash a modified ME/TXE firmware and a new coreboot image at the same time, test them in two different steps. WARNING: this tool isn't based on any official Intel documentation but only on reverse engineering and trial & error. See the project's page https://github.com/corna/me_cleaner or the wiki https://github.com/corna/me_cleaner/wiki/How-to-apply-me_cleaner https://github.com/corna/me_cleaner/wiki/How-does-it-work%3F https://github.com/corna/me_cleaner/wiki/me_cleaner-status for more info about this tool If unsure, say N. comment "Please test coreboot with the original, unmodified ME firmware before using me_cleaner" depends on USE_ME_CLEANER config ME_CLEANER_ARGS string depends on USE_ME_CLEANER default "-S" config MAINBOARD_USES_IFD_GBE_REGION def_bool n config HAVE_GBE_BIN bool "Add gigabit ethernet configuration" depends on HAVE_IFD_BIN && MAINBOARD_USES_IFD_GBE_REGION help The integrated gigabit ethernet controller needs a configuration file. Select this if you are going to use the PCH integrated controller and want to add that file. config GBE_BIN_PATH string "Path to gigabit ethernet configuration" depends on HAVE_GBE_BIN default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/gbe.bin" config MAINBOARD_USES_IFD_EC_REGION def_bool n config HAVE_EC_BIN bool "Add EC firmware" depends on HAVE_IFD_BIN && MAINBOARD_USES_IFD_EC_REGION help The embedded controller needs a firmware file. Select this if you are going to use the PCH integrated controller and have the EC firmware. EC firmware will be added to final image through ifdtool. config EC_BIN_PATH string "Path to EC firmware" depends on HAVE_EC_BIN default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/ec.bin" config MAINBOARD_USES_IFD_10GBE_0_REGION def_bool n config HAVE_10GBE_0_BIN bool "Add 10GbE Firmware Region 0" depends on HAVE_IFD_BIN && MAINBOARD_USES_IFD_10GBE_0_REGION help The 10GbE region firmware file for LAN device 0. Select this if you are going to use the 10GbE 0 region and have the firmware. The firmware will be added to final image through ifdtool. config 10GBE_0_BIN_PATH string "Path to 10GbE region 0 firmware" depends on HAVE_10GBE_0_BIN default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/10gbe0.bin" config MAINBOARD_USES_IFD_10GBE_1_REGION def_bool n depends on MAINBOARD_USES_IFD_10GBE_0_REGION config HAVE_10GBE_1_BIN bool "Add 10GbE Firmware Region 1" depends on HAVE_IFD_BIN && MAINBOARD_USES_IFD_10GBE_1_REGION help The 10GbE region firmware file for LAN device 1. Select this if you are going to use the 10GbE 1 region and have the firmware. The firmware will be added to final image through ifdtool. config 10GBE_1_BIN_PATH string "Path to 10GbE region 1 firmware" depends on HAVE_10GBE_1_BIN default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/10gbe1.bin" choice prompt "Protect flash regions" if HAVE_IFD_BIN default UNLOCK_FLASH_REGIONS if HAVE_IFD_BIN help This option allows you to protect flash regions. config DO_NOT_TOUCH_DESCRIPTOR_REGION bool "Use the preset values to protect the regions" help Read and write access permissions to different regions in the flash can be controlled via dedicated bitfields in the flash descriptor. These permissions can be modified with the Intel Flash Descriptor Tool (ifdtool). If you don't want to change these permissions and keep the ones provided in the initial descriptor, use this option. config LOCK_MANAGEMENT_ENGINE bool "Lock ME/TXE section" help The Intel Firmware Descriptor supports preventing write and read accesses from the host to the ME or TXE section. If the section is locked, it can only be overwritten with an external SPI flash programmer or HECI HMRFPO_ENABLE command needs to be sent to CSE before writing to the ME Section. If CSE Lite SKU is integrated, the Kconfig prevents only writing to the ME section. If unsure, select "Unlock flash regions". config UNLOCK_FLASH_REGIONS bool "Unlock flash regions" help All regions are completely unprotected and can be overwritten using a flash programming tool. endchoice config CBFS_SIZE default 0x100000 help Reduce CBFS size to give room to the IFD blobs. endif #INTEL_FIRMWARE