blob: f5399ea92cdf2a0034e622771494acb291078f04 [file] [log] [blame]
Patrick Georgic49d7a32020-05-08 22:50:46 +02001# SPDX-License-Identifier: GPL-2.0-only
Lee Leahy47bd2d92016-07-24 18:12:16 -07002
Andrey Petrovb37fd672016-03-01 16:25:38 -08003config PLATFORM_USES_FSP2_0
4 bool
Subrata Banik74558812018-01-25 11:41:04 +05305 default n
Andrey Petrovb37fd672016-03-01 16:25:38 -08006 help
7 Include FSP 2.0 wrappers and functionality
8
Subrata Banik8a832822018-12-19 16:46:37 +05309config PLATFORM_USES_FSP2_1
10 bool
11 default n
12 select PLATFORM_USES_FSP2_0
13 select FSP_USES_CB_STACK
Subrata Banik8a832822018-12-19 16:46:37 +053014 help
15 Include FSP 2.1 wrappers and functionality.
Jonathan Zhang01e38552020-06-17 16:03:18 -070016 Feature added into FSP 2.1 specification that impacts coreboot is:
Subrata Banik8a832822018-12-19 16:46:37 +053017 1. Remove FSP stack switch and use the same stack with boot firmware
Subrata Banik8a832822018-12-19 16:46:37 +053018
Subrata Banik33d9c4a2020-05-26 18:26:54 +053019config PLATFORM_USES_FSP2_2
20 bool
21 default n
22 select PLATFORM_USES_FSP2_1
23 help
24 Include FSP 2.2 wrappers and functionality.
25 Features added into FSP 2.2 specification that impact coreboot are:
26 1. Added multi-phase silicon initialization to increase the modularity of the
27 FspSiliconInit() API
28 2. FSP_INFO_HEADER changes to add FspMultiPhaseSiInitEntryOffset
29 3. Added EnableMultiPhaseSiliconInit, bootloaders designed for FSP2.0/2.1 can disable
30 the FspMultiPhaseSiInit() API and continue to use FspSiliconInit() without change.
31
Anil Kumar57309d32021-11-11 18:56:21 -080032config PLATFORM_USES_FSP2_3
33 bool
34 default n
35 select PLATFORM_USES_FSP2_2
36 help
37 Include FSP 2.3 wrappers and functionality.
38 Features added into FSP 2.3 specification that impact coreboot are:
39 1. Added ExtendedImageRevision field in FSP_INFO_HEADER
40 2. Added FSP_NON_VOLATILE_STORAGE_HOB2
41
Andrey Petrov9be1a112016-05-14 16:32:39 -070042if PLATFORM_USES_FSP2_0
Andrey Petrovb37fd672016-03-01 16:25:38 -080043
Patrick Rudolph31218a42020-11-30 15:50:06 +010044config PLATFORM_USES_FSP2_X86_32
45 bool
46 default y
47 help
48 The FSP 2.0 runs in x86_32 protected mode.
49 Once there's a x86_64 FSP this needs to default to n.
50
Nico Hubera0e72c42020-04-03 23:38:17 +020051config HAVE_INTEL_FSP_REPO
52 bool
53 help
54 Select this, if the FSP binaries for the platform are public
55 and available in 3rdparty/fsp/. When selecting this option, the
56 platform must also set FSP_HEADER_PATH and FSP_FD_PATH correctly.
57
Nico Huber04da5d72020-03-27 20:34:54 +010058config FSP_USE_REPO
59 bool "Use binaries of the Intel FSP repository on GitHub"
60 depends on HAVE_INTEL_FSP_REPO
Michael Niewöhner59f06ad2020-11-25 13:55:42 +010061 select FSP_FULL_FD
Nico Huber04da5d72020-03-27 20:34:54 +010062 default y
Andrey Petrov9be1a112016-05-14 16:32:39 -070063 help
Nico Hubera0e72c42020-04-03 23:38:17 +020064 Select this option to use the default FSP headers and binaries
65 found in the IntelFsp GitHub repository at
66
67 https://github.com/IntelFsp/FSP/
68
69 If unsure, say Y.
70
71config FSP_HEADER_PATH
72 string "Location of FSP headers" if !FSP_USE_REPO
73 help
74 Include directory with the FSP ABI header files.
75
Nico Huber04da5d72020-03-27 20:34:54 +010076config ADD_FSP_BINARIES
77 bool "Add Intel FSP 2.0 binaries to CBFS" if !FSP_USE_REPO
78 default y if FSP_USE_REPO
79 help
80 Add the FSP-M and FSP-S binaries to CBFS.
Andrey Petrov9be1a112016-05-14 16:32:39 -070081
Brenton Dong0a5971c2016-10-18 11:35:15 -070082config FSP_T_CBFS
83 string "Name of FSP-T in CBFS"
84 depends on FSP_CAR
85 default "fspt.bin"
86
Arthur Heymans0f068a62021-05-03 10:59:45 +020087config FSP_T_LOCATION
88 hex
89 default 0xfffe0000
90 help
91 The location for FSP-T.
92
Andrey Petrov9be1a112016-05-14 16:32:39 -070093config FSP_S_CBFS
94 string "Name of FSP-S in CBFS"
95 default "fsps.bin"
96
97config FSP_M_CBFS
98 string "Name of FSP-M in CBFS"
99 default "fspm.bin"
100
Michael Niewöhner59f06ad2020-11-25 13:55:42 +0100101config FSP_FULL_FD
102 bool "Use a combined FSP FD file" if !FSP_USE_REPO
103 depends on ADD_FSP_BINARIES
104 help
105 Use a combined FSP FD file instead of specifying individual, already split
106 binaries and split the file at build-time.
107
Michael Niewöhner3044d702020-11-25 15:07:47 +0100108config FSP_FD_PATH
109 string "Location of FSP FD file" if FSP_FULL_FD && !FSP_USE_REPO
110 help
111 Path to the FSP FD file that contains the individual FSP-T, FSP-M
112 and FSP-S binaries. The file gets split at build-time.
113
Brenton Dong0a5971c2016-10-18 11:35:15 -0700114config FSP_T_FILE
Michael Niewöhner59f06ad2020-11-25 13:55:42 +0100115 string "Intel FSP-T (temp RAM init) binary path and filename" if !FSP_FULL_FD
Nico Huber04da5d72020-03-27 20:34:54 +0100116 depends on ADD_FSP_BINARIES
Brenton Dong0a5971c2016-10-18 11:35:15 -0700117 depends on FSP_CAR
Michael Niewöhner59f06ad2020-11-25 13:55:42 +0100118 default "\$(obj)/Fsp_T.fd" if FSP_FULL_FD
Brenton Dong0a5971c2016-10-18 11:35:15 -0700119 help
Nico Huber04da5d72020-03-27 20:34:54 +0100120 The path and filename of the Intel FSP-T binary for this platform.
Brenton Dong0a5971c2016-10-18 11:35:15 -0700121
Andrey Petrov9be1a112016-05-14 16:32:39 -0700122config FSP_M_FILE
Michael Niewöhner59f06ad2020-11-25 13:55:42 +0100123 string "Intel FSP-M (memory init) binary path and filename" if !FSP_FULL_FD
Andrey Petrov9be1a112016-05-14 16:32:39 -0700124 depends on ADD_FSP_BINARIES
Michael Niewöhner59f06ad2020-11-25 13:55:42 +0100125 default "\$(obj)/Fsp_M.fd" if FSP_FULL_FD
Andrey Petrov9be1a112016-05-14 16:32:39 -0700126 help
127 The path and filename of the Intel FSP-M binary for this platform.
128
129config FSP_S_FILE
Michael Niewöhner59f06ad2020-11-25 13:55:42 +0100130 string "Intel FSP-S (silicon init) binary path and filename" if !FSP_FULL_FD
Andrey Petrov9be1a112016-05-14 16:32:39 -0700131 depends on ADD_FSP_BINARIES
Michael Niewöhner59f06ad2020-11-25 13:55:42 +0100132 default "\$(obj)/Fsp_S.fd" if FSP_FULL_FD
Andrey Petrov9be1a112016-05-14 16:32:39 -0700133 help
134 The path and filename of the Intel FSP-S binary for this platform.
135
Brenton Dong0a5971c2016-10-18 11:35:15 -0700136config FSP_CAR
Arthur Heymansacc88f82019-10-20 14:29:59 +0200137 bool
Brenton Dong0a5971c2016-10-18 11:35:15 -0700138 default n
Arthur Heymans5fc2bed2021-01-23 15:09:48 +0100139 select NO_CBFS_MCACHE if !NO_FSP_TEMP_RAM_EXIT
Brenton Dong0a5971c2016-10-18 11:35:15 -0700140 help
141 Use FSP APIs to initialize & Tear Down the Cache-As-Ram
142
Arthur Heymans97896892021-01-04 12:22:57 +0100143config FSP_T_RESERVED_SIZE
144 hex
145 default 0x100 if FSP_CAR
146 default 0x0
147 help
148 This is the size of the area reserved by FSP-T. This is not
149 defined in the FSP specification but in the SOC integration
150 guides.
151
Arthur Heymans98cc7832020-12-08 12:49:38 +0100152config NO_FSP_TEMP_RAM_EXIT
153 bool
154 depends on FSP_CAR
155 help
156 Select this on a platform where you want to use FSP-T but use
157 coreboot code to tear down CAR.
158
Lee Leahy27cd96a2016-07-21 11:16:39 -0700159config FSP_M_XIP
Arthur Heymans585786b2019-10-20 14:32:57 +0200160 bool
Lee Leahy27cd96a2016-07-21 11:16:39 -0700161 default n
162 help
163 Select this value when FSP-M is execute-in-place.
164
praveen hodagatta pranesh6c965422018-10-10 22:48:00 +0800165config FSP_T_XIP
166 bool
167 default n
168 help
169 Select this value when FSP-T is execute-in-place.
170
Aamir Bohra6d569e0c2018-08-27 13:36:15 +0530171config FSP_USES_CB_STACK
172 bool
173 default n
174 help
175 Enable support for fsp to use same stack as coreboot.
176 This option allows fsp to continue using coreboot stack
177 without reinitializing stack pointer. This feature is
178 supported Icelake onwards.
179
Kyösti Mälkkic9871502019-09-03 07:03:39 +0300180config FSP_TEMP_RAM_SIZE
181 hex
Subrata Banik1d260e62019-09-09 13:55:42 +0530182 help
Felix Held414d7e42020-08-11 22:54:06 +0200183 The amount of memory coreboot reserves for the FSP to use. In the
184 case of FSP 2.1 and newer that share the stack with coreboot instead
185 of having its own stack, this is the amount of anticipated heap usage
186 in CAR by FSP to setup HOB and needs to be the recommended value from
187 the Platform FSP integration guide. In the case of the FSP having its
188 own stack that will be placed in DRAM and not in CAR, this is the
189 amount of memory the FSP needs for its stack and heap.
Kyösti Mälkkic9871502019-09-03 07:03:39 +0300190
Aaron Durbina3cecb22017-04-25 21:58:10 -0500191config FSP_PLATFORM_MEMORY_SETTINGS_VERSIONS
192 bool
193 help
194 This is selected by SoC or mainboard to supply their own
195 concept of a version for the memory settings respectively.
196 This allows deployed systems to bump their version number
197 with the same FSP which will trigger a retrain of the memory.
198
Wim Vervoornd1371502019-12-17 14:10:16 +0100199config HAVE_FSP_LOGO_SUPPORT
200 bool
201 default n
202
Kyösti Mälkki4949a3d2021-01-09 20:38:43 +0200203config BMP_LOGO
Wim Vervoorncbc878d22019-11-28 14:45:12 +0100204 bool "Enable logo"
205 default n
Wim Vervoornd1371502019-12-17 14:10:16 +0100206 depends on HAVE_FSP_LOGO_SUPPORT
Wim Vervoorncbc878d22019-11-28 14:45:12 +0100207 help
208 Uses the FSP to display the boot logo. This method supports a
Subrata Banik7a6f8882023-08-04 21:31:05 +0530209 BMP file only. The uncompressed size can be up to 1 MB. The logo can
210 be compressed based on either `BMP_LOGO_COMPRESS_*` configs (default LZMA).
211
212config HAVE_BMP_LOGO_COMPRESS_LZMA
213 bool
214 depends on BMP_LOGO
215 default y
216
217choice
218 prompt "BMP Logo compression"
219 depends on BMP_LOGO
220 default BMP_LOGO_COMPRESS_LZMA if HAVE_BMP_LOGO_COMPRESS_LZMA
221 default BMP_LOGO_COMPRESS_LZ4
222
223config BMP_LOGO_COMPRESS_LZMA
224 bool "Use LZMA compression for BMP logo"
225 help
226 This option enables the use of LZMA compression for the BMP logo.
227 LZMA is a lossless compression algorithm that can significantly reduce
228 the size of the logo, without sacrificing quality.
229
230 If this option is not enabled, the BMP logo will be uncompressed.
231
232config BMP_LOGO_COMPRESS_LZ4
233 bool "Compress BMP logo using LZ4"
234 help
235 This option enables compression of the BMP logo using the LZ4 algorithm.
236 Although the size reduction is not as efficient as LZMA compression, however,
237 it can also make the boot process slightly faster compared to the LZMA.
238
239endchoice
Wim Vervoorncbc878d22019-11-28 14:45:12 +0100240
241config FSP2_0_LOGO_FILE_NAME
242 string "Logo file"
Kyösti Mälkki4949a3d2021-01-09 20:38:43 +0200243 depends on BMP_LOGO
Patrick Georgib8fba862020-06-17 21:06:53 +0200244 default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/logo.bmp"
Wim Vervoorncbc878d22019-11-28 14:45:12 +0100245
Aaron Durbina85febc2020-05-15 15:09:10 -0600246config FSP_COMPRESS_FSP_S_LZMA
247 bool
248
249config FSP_COMPRESS_FSP_S_LZ4
250 bool
251
Aaron Durbinecbfa992020-05-15 17:01:58 -0600252config FSP_COMPRESS_FSP_M_LZMA
253 bool
254 depends on !FSP_M_XIP
255
256config FSP_COMPRESS_FSP_M_LZ4
257 bool
258 depends on !FSP_M_XIP
259
Raul E Rangel82897c92021-11-05 10:29:24 -0600260config FSP_ALIGNMENT_FSP_S
261 int
262 help
263 Sets the CBFS alignment for FSP-S
264
265config FSP_ALIGNMENT_FSP_M
266 int
267 help
268 Sets the CBFS alignment for FSP-M
269
Aaron Durbinecbfa992020-05-15 17:01:58 -0600270config FSP_M_ADDR
271 hex
272 help
273 The address FSP-M will be relocated to during build time
274
Subrata Banik8f7a2482020-09-20 12:28:45 +0530275config FSP_STATUS_GLOBAL_RESET_REQUIRED_3
276 bool
277 help
278 FSP Reset Status code used for global reset as per FSP EAS v2.0 section 11.2.2
279
280config FSP_STATUS_GLOBAL_RESET_REQUIRED_4
281 bool
282 help
283 FSP Reset Status code used for global reset as per FSP EAS v2.0 section 11.2.2
284
285config FSP_STATUS_GLOBAL_RESET_REQUIRED_5
286 bool
287 help
288 FSP Reset Status code used for global reset as per FSP EAS v2.0 section 11.2.2
289
290config FSP_STATUS_GLOBAL_RESET_REQUIRED_6
291 bool
292 help
293 FSP Reset Status code used for global reset as per FSP EAS v2.0 section 11.2.2
294
295config FSP_STATUS_GLOBAL_RESET_REQUIRED_7
296 bool
297 help
298 FSP Reset Status code used for global reset as per FSP EAS v2.0 section 11.2.2
299
300config FSP_STATUS_GLOBAL_RESET_REQUIRED_8
301 bool
302 help
303 FSP Reset Status code used for global reset as per FSP EAS v2.0 section 11.2.2
304
305config FSP_STATUS_GLOBAL_RESET
306 hex
Subrata Banik2b2ade92020-10-31 21:07:16 +0530307 depends on SOC_INTEL_COMMON_FSP_RESET
Subrata Banik8f7a2482020-09-20 12:28:45 +0530308 default 0x40000003 if FSP_STATUS_GLOBAL_RESET_REQUIRED_3
309 default 0x40000004 if FSP_STATUS_GLOBAL_RESET_REQUIRED_4
310 default 0x40000005 if FSP_STATUS_GLOBAL_RESET_REQUIRED_5
311 default 0x40000006 if FSP_STATUS_GLOBAL_RESET_REQUIRED_6
312 default 0x40000007 if FSP_STATUS_GLOBAL_RESET_REQUIRED_7
313 default 0x40000008 if FSP_STATUS_GLOBAL_RESET_REQUIRED_8
314 default 0xffffffff
315 help
316 If global reset is supported by SoC then select the correct status value for global
317 reset type from SoC Kconfig based on available Kconfig options
318 FSP_STATUS_GLOBAL_RESET_REQUIRED_X. Default is unsupported.
319
Subrata Banik2b2ade92020-10-31 21:07:16 +0530320config SOC_INTEL_COMMON_FSP_RESET
321 bool
322 help
323 Common code block to handle platform reset request raised by FSP. The FSP
324 will use the FSP EAS v2.0 section 12.2.2 (OEM Status Code) to indicate that
325 a reset is required.
Subrata Banik298b3592021-09-14 12:38:08 +0530326
327config FSPS_HAS_ARCH_UPD
328 bool
329 help
330 SoC users must select this Kconfig if the `FSPS_UPD` header has architecture
331 UPD structure as `FSPS_ARCH_UPD`. Typically, platform with FSP 2.2 specification
332 onwards has support for `FSPS_ARCH_UPD` section as part of `FSPS_UPD` structure.
333 But there are some exceptions as in TGL, JSL, XEON_SP FSP header doesn't have
334 support for FSPS_ARCH_UPD.
335
336config FSPS_USE_MULTI_PHASE_INIT
337 bool
338 help
339 SoC users to select this Kconfig to set EnableMultiPhaseSiliconInit to enable and
340 execute FspMultiPhaseSiInit() API.
341
Subrata Banik34f26b22022-02-10 12:38:02 +0530342config USE_FSP_NOTIFY_PHASE_POST_PCI_ENUM
Subrata Banike8feab02021-12-27 10:25:55 +0000343 bool
344 help
345 The FSP API is used to notify the FSP about different phases in the boot process.
346 The current FSP specification supports three notify phases:
347 - Post PCI enumeration
348 - Ready to Boot
349 - End of Firmware
Subrata Banik34f26b22022-02-10 12:38:02 +0530350 This option allows FSP to execute Notify Phase API (Post PCI enumeration).
351 SoC users can override this config to use coreboot native implementations
352 to perform the required lock down and chipset register configuration prior
353 to executing any 3rd-party code during PCI enumeration (i.e. Option ROM).
354
355 coreboot native implementation to skip FSP Notify Phase (Post PCI enumeration)
356 is still WIP.
357
358config USE_FSP_NOTIFY_PHASE_READY_TO_BOOT
359 bool
360 help
361 The FSP API is used to notify the FSP about different phases in the boot process.
362 The current FSP specification supports three notify phases:
363 - Post PCI enumeration
364 - Ready to Boot
365 - End of Firmware
366 This option allows FSP to execute Notify Phase API (Ready to Boot).
367 SoC users can override this config to use coreboot native implementations
Subrata Banike8feab02021-12-27 10:25:55 +0000368 to perform the required lock down and chipset register configuration prior
369 boot to payload.
370
Subrata Banik34f26b22022-02-10 12:38:02 +0530371config USE_FSP_NOTIFY_PHASE_END_OF_FIRMWARE
Subrata Banike8feab02021-12-27 10:25:55 +0000372 bool
373 help
374 The FSP API is used to notify the FSP about different phases in the boot process.
375 The current FSP specification supports three notify phases:
376 - Post PCI enumeration
377 - Ready to Boot
378 - End of Firmware
Subrata Banik34f26b22022-02-10 12:38:02 +0530379 This option allows FSP to execute Notify Phase API (End of Firmware).
380 SoC users can override this config to use coreboot native implementations
381 to perform the required lock down and chipset register configuration prior
382 boot to payload.
Subrata Banike8feab02021-12-27 10:25:55 +0000383
Subrata Banik3ba6f8c2022-03-23 03:22:28 +0530384config FSP_USES_CB_DEBUG_EVENT_HANDLER
385 bool
386 default n
387 help
388 This option allows to create `Debug Event Handler` to print FSP debug messages
389 to output device using coreboot native implementation.
390
Subrata Banik6de1d9f2022-03-20 19:50:38 +0530391config DISPLAY_FSP_TIMESTAMPS
392 bool "Display FSP Timestamps"
393 default n
394 help
395 Select this config to retrieve FSP timestamps from Firmware Performance Data Table
396 (FPDT) and display from ramstage after FSP-S is executed.
397
398 To be able to use this, FSP has to be compiled with `PcdFspPerformanceEnable` set to
399 `TRUE`.
400
Subrata Banik9bc5b002022-04-06 18:41:25 +0000401config FSP_ENABLE_SERIAL_DEBUG
402 bool "Output FSP debug messages on serial console"
403 default y
404 depends on FSP_USES_CB_DEBUG_EVENT_HANDLER
405 help
406 Output FSP debug messages on serial console.
407
408 The config option is selected based on your FSP configuration i.e., debug or
409 release. Enable this option from site-local to print FSP serial messages using
410 coreboot native debug driver when coreboot has integrated the debug FSP
411 binaries. coreboot disables serial messages when this config is not enabled.
412
Johnny Lin55bc2d32022-06-13 14:05:43 +0800413config SAVE_MRC_AFTER_FSPS
414 bool
415 default n
416 depends on XEON_SP_COMMON_BASE
417 help
418 Save MRC training data after FSP-S. Select this on platforms that generate MRC
419 cache HOB data as part of FSP-S rather than FSP-M.
420
Subrata Banikda7d00e2023-04-26 16:31:56 +0530421config FSP_MULTIPHASE_SI_INIT_RETURN_BROKEN
422 bool
423 default n
424 depends on PLATFORM_USES_FSP2_2
425 help
426 Select this config for Intel SoC platform where FSP MultiPhaseSiInit API is unable
427 to return ERROR status properly.
428
429 The config option will be selected based on the target SoC platform and if the
430 problem existed inside the FSP MultiPhaseSiInit. At present the problem has only
431 reported with Alder Lake and Raptor Lake FSP where MultiPhaseSiInit API is unable
432 to return any ERROR status.
433
Andrey Petrov9be1a112016-05-14 16:32:39 -0700434endif