Patrick Georgi | c49d7a3 | 2020-05-08 22:50:46 +0200 | [diff] [blame] | 1 | ## SPDX-License-Identifier: GPL-2.0-only |
Martin Roth | 59aa2b1 | 2015-06-20 16:17:12 -0600 | [diff] [blame] | 2 | |
| 3 | ifeq ($(CONFIG_HAVE_INTEL_FIRMWARE),y) |
| 4 | |
| 5 | # Run intermediate steps when producing coreboot.rom |
| 6 | # that adds additional components to the final firmware |
| 7 | # image outside of CBFS |
| 8 | |
| 9 | ifeq ($(CONFIG_HAVE_IFD_BIN),y) |
Patrick Georgi | d6eb72c | 2021-01-12 15:09:57 +0100 | [diff] [blame] | 10 | $(call add_intermediate, add_intel_firmware) |
Angel Pons | a52016c | 2018-09-11 13:49:45 +0200 | [diff] [blame] | 11 | else ifeq ($(CONFIG_INTEL_DESCRIPTOR_MODE_REQUIRED),y) |
Martin Roth | 372503f | 2023-12-08 00:43:23 -0700 | [diff] [blame] | 12 | show_notices:: warn_intel_firmware |
Martin Roth | 59aa2b1 | 2015-06-20 16:17:12 -0600 | [diff] [blame] | 13 | endif |
| 14 | |
Martin Roth | 59aa2b1 | 2015-06-20 16:17:12 -0600 | [diff] [blame] | 15 | IFD_BIN_PATH := $(CONFIG_IFD_BIN_PATH) |
Andrey Petrov | c4d0f52 | 2016-11-06 23:43:16 -0800 | [diff] [blame] | 16 | ifneq ($(call strip_quotes,$(CONFIG_IFD_CHIPSET)),) |
| 17 | IFDTOOL_USE_CHIPSET := -p $(CONFIG_IFD_CHIPSET) |
| 18 | endif |
Martin Roth | 59aa2b1 | 2015-06-20 16:17:12 -0600 | [diff] [blame] | 19 | |
Sridhar Siricilla | 416b828 | 2020-12-03 17:56:49 +0530 | [diff] [blame] | 20 | ifeq ($(CONFIG_ME_REGION_ALLOW_CPU_READ_ACCESS),y) |
| 21 | IFDTOOL_LOCK_ME_MODE := -lr |
| 22 | else |
| 23 | IFDTOOL_LOCK_ME_MODE := -l |
| 24 | endif |
| 25 | |
Nico Huber | 26e59a6 | 2019-06-08 19:49:48 +0200 | [diff] [blame] | 26 | add_intel_firmware: $(call strip_quotes,$(CONFIG_IFD_BIN_PATH)) |
| 27 | ifeq ($(CONFIG_HAVE_ME_BIN),y) |
Furquan Shaikh | 3959aa6 | 2021-10-01 15:18:09 -0700 | [diff] [blame] | 28 | |
| 29 | OBJ_ME_BIN := $(obj)/me.bin |
| 30 | |
| 31 | ifneq ($(CONFIG_STITCH_ME_BIN),y) |
| 32 | |
| 33 | $(OBJ_ME_BIN): $(call strip_quotes,$(CONFIG_ME_BIN_PATH)) |
| 34 | cp $< $@ |
| 35 | |
| 36 | endif |
| 37 | |
| 38 | add_intel_firmware: $(OBJ_ME_BIN) |
| 39 | |
Nico Huber | 26e59a6 | 2019-06-08 19:49:48 +0200 | [diff] [blame] | 40 | endif |
| 41 | ifeq ($(CONFIG_HAVE_GBE_BIN),y) |
| 42 | add_intel_firmware: $(call strip_quotes,$(CONFIG_GBE_BIN_PATH)) |
| 43 | endif |
| 44 | ifeq ($(CONFIG_HAVE_EC_BIN),y) |
| 45 | add_intel_firmware: $(call strip_quotes,$(CONFIG_EC_BIN_PATH)) |
| 46 | endif |
Angel Pons | 240eaaa | 2018-08-20 16:32:22 +0200 | [diff] [blame] | 47 | add_intel_firmware: $(obj)/coreboot.pre $(IFDTOOL) |
Martin Roth | 59aa2b1 | 2015-06-20 16:17:12 -0600 | [diff] [blame] | 48 | printf " DD Adding Intel Firmware Descriptor\n" |
Patrick Georgi | 0b7d3a1 | 2021-01-13 09:16:41 +0100 | [diff] [blame] | 49 | dd if=$(IFD_BIN_PATH) \ |
Martin Roth | 59aa2b1 | 2015-06-20 16:17:12 -0600 | [diff] [blame] | 50 | of=$(obj)/coreboot.pre conv=notrunc >/dev/null 2>&1 |
Mathew King | d8b150f | 2019-08-09 10:55:37 -0600 | [diff] [blame] | 51 | ifeq ($(CONFIG_VALIDATE_INTEL_DESCRIPTOR),y) |
Maximilian Brune | ab0e680 | 2023-03-05 04:34:40 +0100 | [diff] [blame] | 52 | printf " IFDTOOL validate IFD against FMAP\n" |
Mathew King | d8b150f | 2019-08-09 10:55:37 -0600 | [diff] [blame] | 53 | $(objutil)/ifdtool/ifdtool \ |
| 54 | $(IFDTOOL_USE_CHIPSET) \ |
| 55 | -t $(obj)/coreboot.pre |
| 56 | endif |
Martin Roth | 59aa2b1 | 2015-06-20 16:17:12 -0600 | [diff] [blame] | 57 | ifeq ($(CONFIG_HAVE_ME_BIN),y) |
| 58 | printf " IFDTOOL me.bin -> coreboot.pre\n" |
| 59 | $(objutil)/ifdtool/ifdtool \ |
Andrey Petrov | c4d0f52 | 2016-11-06 23:43:16 -0800 | [diff] [blame] | 60 | $(IFDTOOL_USE_CHIPSET) \ |
Furquan Shaikh | 3959aa6 | 2021-10-01 15:18:09 -0700 | [diff] [blame] | 61 | -i ME:$(OBJ_ME_BIN) \ |
Marcello Sylvester Bauer | efc4be6 | 2020-03-04 12:32:14 +0100 | [diff] [blame] | 62 | -O $(obj)/coreboot.pre \ |
Martin Roth | 59aa2b1 | 2015-06-20 16:17:12 -0600 | [diff] [blame] | 63 | $(obj)/coreboot.pre |
Martin Roth | 59aa2b1 | 2015-06-20 16:17:12 -0600 | [diff] [blame] | 64 | endif |
Nicola Corna | 16719ad | 2017-03-10 11:27:39 +0100 | [diff] [blame] | 65 | ifeq ($(CONFIG_CHECK_ME),y) |
| 66 | util/me_cleaner/me_cleaner.py -c $(obj)/coreboot.pre > /dev/null |
| 67 | endif |
Nicola Corna | 92e95ca | 2017-01-23 15:29:03 +0100 | [diff] [blame] | 68 | ifeq ($(CONFIG_USE_ME_CLEANER),y) |
| 69 | printf " ME_CLEANER coreboot.pre\n" |
Nicola Corna | 364f2e1 | 2018-03-31 18:24:44 +0200 | [diff] [blame] | 70 | util/me_cleaner/me_cleaner.py $(obj)/coreboot.pre \ |
| 71 | $(patsubst "%,%,$(patsubst %",%,$(CONFIG_ME_CLEANER_ARGS))) > \ |
Nicola Corna | 92e95ca | 2017-01-23 15:29:03 +0100 | [diff] [blame] | 72 | $(obj)/me_cleaner.log |
| 73 | endif |
Martin Roth | c6a177d | 2015-07-09 20:50:51 -0600 | [diff] [blame] | 74 | ifeq ($(CONFIG_HAVE_GBE_BIN),y) |
| 75 | printf " IFDTOOL gbe.bin -> coreboot.pre\n" |
| 76 | $(objutil)/ifdtool/ifdtool \ |
Andrey Petrov | c4d0f52 | 2016-11-06 23:43:16 -0800 | [diff] [blame] | 77 | $(IFDTOOL_USE_CHIPSET) \ |
Martin Roth | c6a177d | 2015-07-09 20:50:51 -0600 | [diff] [blame] | 78 | -i GbE:$(CONFIG_GBE_BIN_PATH) \ |
Marcello Sylvester Bauer | efc4be6 | 2020-03-04 12:32:14 +0100 | [diff] [blame] | 79 | -O $(obj)/coreboot.pre \ |
Martin Roth | c6a177d | 2015-07-09 20:50:51 -0600 | [diff] [blame] | 80 | $(obj)/coreboot.pre |
Martin Roth | c6a177d | 2015-07-09 20:50:51 -0600 | [diff] [blame] | 81 | endif |
Lijian Zhao | 0fb6568 | 2017-05-16 12:11:45 -0700 | [diff] [blame] | 82 | ifeq ($(CONFIG_HAVE_EC_BIN),y) |
| 83 | printf " IFDTOOL ec.bin -> coreboot.pre\n" |
| 84 | $(objutil)/ifdtool/ifdtool \ |
| 85 | $(IFDTOOL_USE_CHIPSET) \ |
| 86 | -i EC:$(CONFIG_EC_BIN_PATH) \ |
Marcello Sylvester Bauer | efc4be6 | 2020-03-04 12:32:14 +0100 | [diff] [blame] | 87 | -O $(obj)/coreboot.pre \ |
Lijian Zhao | 0fb6568 | 2017-05-16 12:11:45 -0700 | [diff] [blame] | 88 | $(obj)/coreboot.pre |
Lijian Zhao | 0fb6568 | 2017-05-16 12:11:45 -0700 | [diff] [blame] | 89 | endif |
Jeff Daly | 1e4d9d5 | 2022-01-06 16:16:46 -0500 | [diff] [blame] | 90 | ifeq ($(CONFIG_HAVE_10GBE_0_BIN),y) |
| 91 | printf " IFDTOOL 10gbe0.bin -> coreboot.pre\n" |
| 92 | $(objutil)/ifdtool/ifdtool \ |
| 93 | $(IFDTOOL_USE_CHIPSET) \ |
| 94 | -i 10GbE_0:$(CONFIG_10GBE_0_BIN_PATH) \ |
| 95 | -O $(obj)/coreboot.pre \ |
| 96 | $(obj)/coreboot.pre |
| 97 | endif |
| 98 | ifeq ($(CONFIG_HAVE_10GBE_1_BIN),y) |
| 99 | printf " IFDTOOL 10gbe1.bin -> coreboot.pre\n" |
| 100 | $(objutil)/ifdtool/ifdtool \ |
| 101 | $(IFDTOOL_USE_CHIPSET) \ |
| 102 | -i 10GbE_1:$(CONFIG_10GBE_1_BIN_PATH) \ |
| 103 | -O $(obj)/coreboot.pre \ |
| 104 | $(obj)/coreboot.pre |
| 105 | endif |
Martin Roth | 59aa2b1 | 2015-06-20 16:17:12 -0600 | [diff] [blame] | 106 | ifeq ($(CONFIG_LOCK_MANAGEMENT_ENGINE),y) |
| 107 | printf " IFDTOOL Locking Management Engine\n" |
Andrey Petrov | c4d0f52 | 2016-11-06 23:43:16 -0800 | [diff] [blame] | 108 | $(objutil)/ifdtool/ifdtool \ |
Sridhar Siricilla | 416b828 | 2020-12-03 17:56:49 +0530 | [diff] [blame] | 109 | $(IFDTOOL_USE_CHIPSET) $(IFDTOOL_LOCK_ME_MODE) \ |
Marcello Sylvester Bauer | efc4be6 | 2020-03-04 12:32:14 +0100 | [diff] [blame] | 110 | -O $(obj)/coreboot.pre \ |
| 111 | $(obj)/coreboot.pre |
Mario Scheithauer | 2687443 | 2019-02-27 10:29:01 +0100 | [diff] [blame] | 112 | endif |
| 113 | ifeq ($(CONFIG_UNLOCK_FLASH_REGIONS),y) |
Martin Roth | 59aa2b1 | 2015-06-20 16:17:12 -0600 | [diff] [blame] | 114 | printf " IFDTOOL Unlocking Management Engine\n" |
Andrey Petrov | c4d0f52 | 2016-11-06 23:43:16 -0800 | [diff] [blame] | 115 | $(objutil)/ifdtool/ifdtool \ |
Marcello Sylvester Bauer | efc4be6 | 2020-03-04 12:32:14 +0100 | [diff] [blame] | 116 | $(IFDTOOL_USE_CHIPSET) -u \ |
| 117 | -O $(obj)/coreboot.pre \ |
| 118 | $(obj)/coreboot.pre |
Martin Roth | 59aa2b1 | 2015-06-20 16:17:12 -0600 | [diff] [blame] | 119 | endif |
| 120 | |
Martin Roth | b9de78b | 2015-12-03 14:27:45 -0700 | [diff] [blame] | 121 | ifeq ($(CONFIG_EM100),y) |
| 122 | printf " IFDTOOL Setting EM100 mode\n" |
Andrey Petrov | c4d0f52 | 2016-11-06 23:43:16 -0800 | [diff] [blame] | 123 | $(objutil)/ifdtool/ifdtool \ |
Marcello Sylvester Bauer | efc4be6 | 2020-03-04 12:32:14 +0100 | [diff] [blame] | 124 | $(IFDTOOL_USE_CHIPSET) --em100 \ |
| 125 | -O $(obj)/coreboot.pre \ |
| 126 | $(obj)/coreboot.pre |
Martin Roth | b9de78b | 2015-12-03 14:27:45 -0700 | [diff] [blame] | 127 | endif |
| 128 | |
Angel Pons | a52016c | 2018-09-11 13:49:45 +0200 | [diff] [blame] | 129 | warn_intel_firmware: |
| 130 | printf "\n\t** WARNING **\n" |
Nico Huber | 5ef3460 | 2018-09-19 10:09:16 +0200 | [diff] [blame] | 131 | printf "coreboot has been built without an Intel Firmware Descriptor.\n" |
Angel Pons | a52016c | 2018-09-11 13:49:45 +0200 | [diff] [blame] | 132 | printf "Never write a complete coreboot.rom without an IFD to your\n" |
| 133 | printf "board's flash chip! You can use flashrom's IFD or layout\n" |
| 134 | printf "parameters to flash only to the BIOS region.\n\n" |
| 135 | |
Patrick Georgi | d6eb72c | 2021-01-12 15:09:57 +0100 | [diff] [blame] | 136 | PHONY+=warn_intel_firmware |
Martin Roth | 59aa2b1 | 2015-06-20 16:17:12 -0600 | [diff] [blame] | 137 | |
| 138 | endif |