blob: 2e9022f24ca92d7fb9e992214af766c35b99309a [file] [log] [blame]
Felix Held3c44c622022-01-10 20:57:29 +01001# SPDX-License-Identifier: GPL-2.0-only
2
3# TODO: Check if this is still correct
4
Ritul Gurud3dae3d2022-04-04 13:33:01 +05305config SOC_AMD_REMBRANDT_BASE
6 bool
7
Felix Held3c44c622022-01-10 20:57:29 +01008config SOC_AMD_SABRINA
9 bool
Ritul Gurud3dae3d2022-04-04 13:33:01 +053010 select SOC_AMD_REMBRANDT_BASE
Felix Held3c44c622022-01-10 20:57:29 +010011 help
12 AMD Sabrina support
13
Ritul Gurud3dae3d2022-04-04 13:33:01 +053014config SOC_AMD_REMBRANDT
15 bool
16 select SOC_AMD_REMBRANDT_BASE
17 help
18 AMD Rembrandt support
19
20
21if SOC_AMD_REMBRANDT_BASE
Felix Held3c44c622022-01-10 20:57:29 +010022
23config SOC_SPECIFIC_OPTIONS
24 def_bool y
25 select ACPI_SOC_NVS
26 select ARCH_BOOTBLOCK_X86_32
27 select ARCH_VERSTAGE_X86_32 if !VBOOT_STARTS_BEFORE_BOOTBLOCK
28 select ARCH_ROMSTAGE_X86_32
29 select ARCH_RAMSTAGE_X86_32
30 select ARCH_X86
31 select BOOT_DEVICE_SUPPORTS_WRITES if BOOT_DEVICE_SPI_FLASH
32 select CONSOLE_CBMEM_PRINT_PRE_BOOTBLOCK_CONTENTS if VBOOT_STARTS_BEFORE_BOOTBLOCK
33 select DRIVERS_USB_ACPI
Felix Held3c44c622022-01-10 20:57:29 +010034 select DRIVERS_USB_PCI_XHCI
35 select FSP_COMPRESS_FSP_M_LZMA if !ASYNC_FILE_LOADING
36 select FSP_COMPRESS_FSP_M_LZ4 if ASYNC_FILE_LOADING
37 select FSP_COMPRESS_FSP_S_LZ4
38 select GENERIC_GPIO_LIB
39 select HAVE_ACPI_TABLES
40 select HAVE_CF9_RESET
41 select HAVE_EM100_SUPPORT
42 select HAVE_FSP_GOP
43 select HAVE_SMI_HANDLER
44 select IDT_IN_EVERY_STAGE
45 select PARALLEL_MP_AP_WORK
46 select PLATFORM_USES_FSP2_0
47 select PROVIDES_ROM_SHARING
48 select PSP_VERSTAGE_CCP_DMA if VBOOT_STARTS_BEFORE_BOOTBLOCK
49 select RESET_VECTOR_IN_RAM
50 select RTC
51 select SOC_AMD_COMMON
Fred Reitberger81d3cde2022-02-10 09:31:26 -050052 select SOC_AMD_COMMON_BLOCK_ACP_GEN2
Felix Held3c44c622022-01-10 20:57:29 +010053 select SOC_AMD_COMMON_BLOCK_ACPI # TODO: Check if this is still correct
Felix Held70f32bb2022-02-04 16:23:47 +010054 select SOC_AMD_COMMON_BLOCK_ACPIMMIO
Felix Held3c44c622022-01-10 20:57:29 +010055 select SOC_AMD_COMMON_BLOCK_ACPI_ALIB # TODO: Check if this is still correct
Felix Heldaf803a62022-06-22 18:22:16 +020056 select SOC_AMD_COMMON_BLOCK_ACPI_GPIO
Felix Held3c44c622022-01-10 20:57:29 +010057 select SOC_AMD_COMMON_BLOCK_ACPI_IVRS # TODO: Check if this is still correct
Felix Held716ccb72022-02-03 18:27:29 +010058 select SOC_AMD_COMMON_BLOCK_AOAC
Felix Held3c44c622022-01-10 20:57:29 +010059 select SOC_AMD_COMMON_BLOCK_APOB # TODO: Check if this is still correct
60 select SOC_AMD_COMMON_BLOCK_BANKED_GPIOS # TODO: Check if this is still correct
Felix Held75739d32022-02-03 18:44:27 +010061 select SOC_AMD_COMMON_BLOCK_DATA_FABRIC
Karthikeyan Ramasubramanian4a8bbea2022-03-25 13:49:36 -060062 select SOC_AMD_COMMON_BLOCK_ESPI_RETAIN_PORT80_EN # TODO: Remove(b/227201571)
Felix Held3c44c622022-01-10 20:57:29 +010063 select SOC_AMD_COMMON_BLOCK_GRAPHICS # TODO: Check if this is still correct
64 select SOC_AMD_COMMON_BLOCK_HAS_ESPI # TODO: Check if this is still correct
Raul E Rangel5a5de332022-04-25 13:33:50 -060065 select SOC_AMD_COMMON_BLOCK_HAS_ESPI_ALERT_ENABLE
Felix Held8e4742d2022-02-03 15:15:37 +010066 select SOC_AMD_COMMON_BLOCK_I2C
Felix Held3bdbdb72022-02-02 22:55:34 +010067 select SOC_AMD_COMMON_BLOCK_I23C_PAD_CTRL
Felix Held0eef54b2022-02-04 19:28:51 +010068 select SOC_AMD_COMMON_BLOCK_IOMMU
Felix Held3c44c622022-01-10 20:57:29 +010069 select SOC_AMD_COMMON_BLOCK_LPC # TODO: Check if this is still correct
Felix Held901481f2022-06-22 15:38:44 +020070 select SOC_AMD_COMMON_BLOCK_MCAX
Felix Held3c44c622022-01-10 20:57:29 +010071 select SOC_AMD_COMMON_BLOCK_NONCAR # TODO: Check if this is still correct
72 select SOC_AMD_COMMON_BLOCK_PCI # TODO: Check if this is still correct
Felix Heldceefc742022-02-07 15:27:27 +010073 select SOC_AMD_COMMON_BLOCK_PCI_MMCONF
Felix Held3c44c622022-01-10 20:57:29 +010074 select SOC_AMD_COMMON_BLOCK_PCIE_GPP_DRIVER # TODO: Check if this is still correct
75 select SOC_AMD_COMMON_BLOCK_PM # TODO: Check if this is still correct
76 select SOC_AMD_COMMON_BLOCK_PM_CHIPSET_STATE_SAVE # TODO: Check if this is still correct
77 select SOC_AMD_COMMON_BLOCK_PSP_GEN2 # TODO: Check if this is still correct
78 select SOC_AMD_COMMON_BLOCK_SMBUS # TODO: Check if this is still correct
79 select SOC_AMD_COMMON_BLOCK_SMI # TODO: Check if this is still correct
80 select SOC_AMD_COMMON_BLOCK_SMM # TODO: Check if this is still correct
Felix Held6f9e4ab2022-02-03 18:34:23 +010081 select SOC_AMD_COMMON_BLOCK_SMU
Felix Held3c44c622022-01-10 20:57:29 +010082 select SOC_AMD_COMMON_BLOCK_SPI # TODO: Check if this is still correct
83 select SOC_AMD_COMMON_BLOCK_TSC_FAM17H_19H # TODO: Check if this is still correct
Felix Heldb0789ed2022-02-04 22:36:32 +010084 select SOC_AMD_COMMON_BLOCK_UART
Felix Heldd9bb9fc2022-06-22 15:35:35 +020085 select SOC_AMD_COMMON_BLOCK_UCODE
Felix Held3c44c622022-01-10 20:57:29 +010086 select SOC_AMD_COMMON_FSP_DMI_TABLES # TODO: Check if this is still correct
87 select SOC_AMD_COMMON_FSP_PCI # TODO: Check if this is still correct
88 select SSE2
89 select UDK_2017_BINDING
Subrata Banik34f26b22022-02-10 12:38:02 +053090 select USE_FSP_NOTIFY_PHASE_POST_PCI_ENUM
91 select USE_FSP_NOTIFY_PHASE_READY_TO_BOOT
92 select USE_FSP_NOTIFY_PHASE_END_OF_FIRMWARE
Felix Held3c44c622022-01-10 20:57:29 +010093 select VBOOT_DEFINE_WIDEVINE_COUNTERS if VBOOT_STARTS_BEFORE_BOOTBLOCK
94 select X86_AMD_FIXED_MTRRS
95 select X86_INIT_NEED_1_SIPI
96
97config ARCH_ALL_STAGES_X86
98 default n
99
Felix Held3c44c622022-01-10 20:57:29 +0100100config CHIPSET_DEVICETREE
101 string
Ritul Gurud3dae3d2022-04-04 13:33:01 +0530102 default "soc/amd/sabrina/chipset_sabrina.cb" if SOC_AMD_SABRINA
103 default "soc/amd/sabrina/chipset_rembrandt.cb"
Felix Held3c44c622022-01-10 20:57:29 +0100104
105config EARLY_RESERVED_DRAM_BASE
106 hex
107 default 0x2000000
108 help
109 This variable defines the base address of the DRAM which is reserved
110 for usage by coreboot in early stages (i.e. before ramstage is up).
111 This memory gets reserved in BIOS tables to ensure that the OS does
112 not use it, thus preventing corruption of OS memory in case of S3
113 resume.
114
115config EARLYRAM_BSP_STACK_SIZE
116 hex
117 default 0x1000
118
119config PSP_APOB_DRAM_ADDRESS
120 hex
121 default 0x2001000
122 help
123 Location in DRAM where the PSP will copy the AGESA PSP Output
124 Block.
125
126config PSP_SHAREDMEM_BASE
127 hex
128 default 0x2011000 if VBOOT
129 default 0x0
130 help
131 This variable defines the base address in DRAM memory where PSP copies
132 the vboot workbuf. This is used in the linker script to have a static
133 allocation for the buffer as well as for adding relevant entries in
134 the BIOS directory table for the PSP.
135
136config PSP_SHAREDMEM_SIZE
137 hex
138 default 0x8000 if VBOOT
139 default 0x0
140 help
141 Sets the maximum size for the PSP to pass the vboot workbuf and
142 any logs or timestamps back to coreboot. This will be copied
143 into main memory by the PSP and will be available when the x86 is
144 started. The workbuf's base depends on the address of the reset
145 vector.
146
Felix Held55614682022-01-25 04:31:15 +0100147config PRE_X86_CBMEM_CONSOLE_SIZE
148 hex
149 default 0x1600
150 help
151 Size of the CBMEM console used in PSP verstage.
152
Felix Held3c44c622022-01-10 20:57:29 +0100153config PRERAM_CBMEM_CONSOLE_SIZE
154 hex
155 default 0x1600
156 help
157 Increase this value if preram cbmem console is getting truncated
158
159config CBFS_MCACHE_SIZE
160 hex
161 default 0x2000 if VBOOT_STARTS_BEFORE_BOOTBLOCK
162
163config C_ENV_BOOTBLOCK_SIZE
164 hex
165 default 0x10000
166 help
167 Sets the size of the bootblock stage that should be loaded in DRAM.
168 This variable controls the DRAM allocation size in linker script
169 for bootblock stage.
170
171config ROMSTAGE_ADDR
172 hex
173 default 0x2040000
174 help
175 Sets the address in DRAM where romstage should be loaded.
176
177config ROMSTAGE_SIZE
178 hex
179 default 0x80000
180 help
181 Sets the size of DRAM allocation for romstage in linker script.
182
183config FSP_M_ADDR
184 hex
185 default 0x20C0000
186 help
187 Sets the address in DRAM where FSP-M should be loaded. cbfstool
188 performs relocation of FSP-M to this address.
189
190config FSP_M_SIZE
191 hex
192 default 0xC0000
193 help
194 Sets the size of DRAM allocation for FSP-M in linker script.
195
196config FSP_TEMP_RAM_SIZE
197 hex
198 default 0x40000
199 help
200 The amount of coreboot-allocated heap and stack usage by the FSP.
201
202config VERSTAGE_ADDR
203 hex
204 depends on VBOOT_SEPARATE_VERSTAGE
205 default 0x2180000
206 help
207 Sets the address in DRAM where verstage should be loaded if running
208 as a separate stage on x86.
209
210config VERSTAGE_SIZE
211 hex
212 depends on VBOOT_SEPARATE_VERSTAGE
213 default 0x80000
214 help
215 Sets the size of DRAM allocation for verstage in linker script if
216 running as a separate stage on x86.
217
218config ASYNC_FILE_LOADING
219 bool "Loads files from SPI asynchronously"
220 select COOP_MULTITASKING
221 select SOC_AMD_COMMON_BLOCK_LPC_SPI_DMA
222 select CBFS_PRELOAD
223 help
224 When enabled, the platform will use the LPC SPI DMA controller to
225 asynchronously load contents from the SPI ROM. This will improve
226 boot time because the CPUs can be performing useful work while the
227 SPI contents are being preloaded.
228
229config CBFS_CACHE_SIZE
230 hex
231 default 0x40000 if CBFS_PRELOAD
232
Felix Held3c44c622022-01-10 20:57:29 +0100233config RO_REGION_ONLY
234 string
235 depends on VBOOT_SLOTS_RW_AB || VBOOT_SLOTS_RW_A
236 default "apu/amdfw"
237
238config ECAM_MMCONF_BASE_ADDRESS
239 default 0xF8000000
240
241config ECAM_MMCONF_BUS_NUMBER
242 default 64
243
244config MAX_CPUS
245 int
Ritul Gurud3dae3d2022-04-04 13:33:01 +0530246 default 8 if SOC_AMD_SABRINA
247 default 16
Felix Held3c44c622022-01-10 20:57:29 +0100248 help
249 Maximum number of threads the platform can have.
250
251config CONSOLE_UART_BASE_ADDRESS
252 depends on CONSOLE_SERIAL && AMD_SOC_CONSOLE_UART
253 hex
254 default 0xfedc9000 if UART_FOR_CONSOLE = 0
255 default 0xfedca000 if UART_FOR_CONSOLE = 1
Felix Heldb1fe9de2022-01-12 23:18:54 +0100256 default 0xfedce000 if UART_FOR_CONSOLE = 2
257 default 0xfedcf000 if UART_FOR_CONSOLE = 3
258 default 0xfedd1000 if UART_FOR_CONSOLE = 4
Felix Held3c44c622022-01-10 20:57:29 +0100259
260config SMM_TSEG_SIZE
261 hex
262 default 0x800000 if HAVE_SMI_HANDLER
263 default 0x0
264
265config SMM_RESERVED_SIZE
266 hex
267 default 0x180000
268
269config SMM_MODULE_STACK_SIZE
270 hex
271 default 0x800
272
273config ACPI_BERT
274 bool "Build ACPI BERT Table"
275 default y
276 depends on HAVE_ACPI_TABLES
277 help
278 Report Machine Check errors identified in POST to the OS in an
279 ACPI Boot Error Record Table.
280
281config ACPI_BERT_SIZE
282 hex
283 default 0x4000 if ACPI_BERT
284 default 0x0
285 help
286 Specify the amount of DRAM reserved for gathering the data used to
287 generate the ACPI table.
288
289config DRIVERS_I2C_DESIGNWARE_CLOCK_MHZ
290 int
291 default 150
292
293config DISABLE_SPI_FLASH_ROM_SHARING
294 def_bool n
295 help
296 Instruct the chipset to not honor the EGPIO67_SPI_ROM_REQ pin
297 which indicates a board level ROM transaction request. This
298 removes arbitration with board and assumes the chipset controls
299 the SPI flash bus entirely.
300
301config DISABLE_KEYBOARD_RESET_PIN
302 bool
303 help
304 Instruct the SoC to not use the state of GPIO_129 as keyboard reset
305 signal. When this pin is used as GPIO and the keyboard reset
306 functionality isn't disabled, configuring it as an output and driving
307 it as 0 will cause a reset.
308
309config ACPI_SSDT_PSD_INDEPENDENT
310 bool "Allow core p-state independent transitions"
311 default y
312 help
313 AMD recommends the ACPI _PSD object to be configured to cause
314 cores to transition between p-states independently. A vendor may
315 choose to generate _PSD object to allow cores to transition together.
316
317menu "PSP Configuration Options"
318
319config AMD_FWM_POSITION_INDEX
320 int "Firmware Directory Table location (0 to 5)"
321 range 0 5
322 default 0 if BOARD_ROMSIZE_KB_512
323 default 1 if BOARD_ROMSIZE_KB_1024
324 default 2 if BOARD_ROMSIZE_KB_2048
325 default 3 if BOARD_ROMSIZE_KB_4096
326 default 4 if BOARD_ROMSIZE_KB_8192
327 default 5 if BOARD_ROMSIZE_KB_16384
328 help
329 Typically this is calculated by the ROM size, but there may
330 be situations where you want to put the firmware directory
331 table in a different location.
332 0: 512 KB - 0xFFFA0000
333 1: 1 MB - 0xFFF20000
334 2: 2 MB - 0xFFE20000
335 3: 4 MB - 0xFFC20000
336 4: 8 MB - 0xFF820000
337 5: 16 MB - 0xFF020000
338
339comment "AMD Firmware Directory Table set to location for 512KB ROM"
340 depends on AMD_FWM_POSITION_INDEX = 0
341comment "AMD Firmware Directory Table set to location for 1MB ROM"
342 depends on AMD_FWM_POSITION_INDEX = 1
343comment "AMD Firmware Directory Table set to location for 2MB ROM"
344 depends on AMD_FWM_POSITION_INDEX = 2
345comment "AMD Firmware Directory Table set to location for 4MB ROM"
346 depends on AMD_FWM_POSITION_INDEX = 3
347comment "AMD Firmware Directory Table set to location for 8MB ROM"
348 depends on AMD_FWM_POSITION_INDEX = 4
349comment "AMD Firmware Directory Table set to location for 16MB ROM"
350 depends on AMD_FWM_POSITION_INDEX = 5
351
352config AMDFW_CONFIG_FILE
Karthikeyan Ramasubramanian9cb0a052022-03-21 17:49:11 -0600353 string "AMD PSP Firmware config file"
Felix Held3c44c622022-01-10 20:57:29 +0100354 default "src/soc/amd/sabrina/fw.cfg"
Karthikeyan Ramasubramanian9cb0a052022-03-21 17:49:11 -0600355 help
356 Specify the path/location of AMD PSP Firmware config file.
Felix Held3c44c622022-01-10 20:57:29 +0100357
358config PSP_DISABLE_POSTCODES
359 bool "Disable PSP post codes"
360 help
361 Disables the output of port80 post codes from PSP.
362
363config PSP_POSTCODES_ON_ESPI
364 bool "Use eSPI bus for PSP post codes"
365 default y
366 depends on !PSP_DISABLE_POSTCODES
367 help
368 Select to send PSP port80 post codes on eSPI bus.
369 If not selected, PSP port80 codes will be sent on LPC bus.
370
371config PSP_LOAD_MP2_FW
372 bool
373 default n
374 help
375 Include the MP2 firmwares and configuration into the PSP build.
376
377 If unsure, answer 'n'
378
379config PSP_UNLOCK_SECURE_DEBUG
380 bool "Unlock secure debug"
381 default y
382 help
383 Select this item to enable secure debug options in PSP.
384
385config HAVE_PSP_WHITELIST_FILE
386 bool "Include a debug whitelist file in PSP build"
387 default n
388 help
389 Support secured unlock prior to reset using a whitelisted
390 serial number. This feature requires a signed whitelist image
391 and bootloader from AMD.
392
393 If unsure, answer 'n'
394
395config PSP_WHITELIST_FILE
396 string "Debug whitelist file path"
397 depends on HAVE_PSP_WHITELIST_FILE
398 default "3rdparty/amd_blobs/cezanne/PSP/wtl-czn.sbin"
399
Karthikeyan Ramasubramanian8ee94292022-04-01 17:21:14 -0600400config HAVE_SPL_FILE
401 bool "Have a mainboard specific SPL table file"
402 default n
403 help
404 Have a mainboard specific Security Patch Level (SPL) table file. SPL file
405 is required to support PSP FW anti-rollback and needs to be created by AMD.
406 The default SPL file applies to all boards that use the concerned SoC and
407 is dropped under 3rdparty/blobs. The mainboard specific SPL file override
408 can be applied through SPL_TABLE_FILE config.
409
410 If unsure, answer 'n'
411
412config SPL_TABLE_FILE
413 string "SPL table file"
414 depends on HAVE_SPL_FILE
415 default "3rdparty/amd_blobs/cezanne/PSP/TypeId0x55_SplTableBl_CZN.sbin"
416
Felix Held3c44c622022-01-10 20:57:29 +0100417config PSP_SOFTFUSE_BITS
418 string "PSP Soft Fuse bits to enable"
Felix Helded694502022-06-22 15:09:23 +0200419 default "34 28 6"
Felix Held3c44c622022-01-10 20:57:29 +0100420 help
421 Space separated list of Soft Fuse bits to enable.
422 Bit 0: Enable secure debug (Set by PSP_UNLOCK_SECURE_DEBUG)
423 Bit 7: Disable PSP postcodes on Renoir and newer chips only
424 (Set by PSP_DISABLE_PORT80)
Felix Heldc3579002022-03-23 22:15:56 +0100425 Bit 15: PSP debug output destination:
426 0=SoC MMIO UART, 1=IO port 0x3F8
Felix Held3c44c622022-01-10 20:57:29 +0100427 Bit 29: Disable MP2 firmware loading (Set by PSP_LOAD_MP2_FW)
428
429 See #55758 (NDA) for additional bit definitions.
430
431config PSP_VERSTAGE_FILE
432 string "Specify the PSP_verstage file path"
433 depends on VBOOT_STARTS_BEFORE_BOOTBLOCK
434 default "\$(obj)/psp_verstage.bin"
435 help
436 Add psp_verstage file to the build & PSP Directory Table
437
438config PSP_VERSTAGE_SIGNING_TOKEN
439 string "Specify the PSP_verstage Signature Token file path"
440 depends on VBOOT_STARTS_BEFORE_BOOTBLOCK
441 default ""
442 help
443 Add psp_verstage signature token to the build & PSP Directory Table
444
445endmenu
446
447config VBOOT
448 select VBOOT_VBNV_CMOS
449 select VBOOT_VBNV_CMOS_BACKUP_TO_FLASH
450
451config VBOOT_STARTS_BEFORE_BOOTBLOCK
452 def_bool n
453 depends on VBOOT
454 select ARCH_VERSTAGE_ARMV7
455 help
456 Runs verstage on the PSP. Only available on
457 certain Chrome OS branded parts from AMD.
458
459config VBOOT_HASH_BLOCK_SIZE
460 hex
461 default 0x9000
462 depends on VBOOT_STARTS_BEFORE_BOOTBLOCK
463 help
464 Because the bulk of the time in psp_verstage to hash the RO cbfs is
465 spent in the overhead of doing svc calls, increasing the hash block
466 size significantly cuts the verstage hashing time as seen below.
467
468 4k takes 180ms
469 16k takes 44ms
470 32k takes 33.7ms
471 36k takes 32.5ms
472 There's actually still room for an even bigger stack, but we've
473 reached a point of diminishing returns.
474
475config CMOS_RECOVERY_BYTE
476 hex
477 default 0x51
478 depends on VBOOT_STARTS_BEFORE_BOOTBLOCK
479 help
480 If the workbuf is not passed from the PSP to coreboot, set the
481 recovery flag and reboot. The PSP will read this byte, mark the
482 recovery request in VBNV, and reset the system into recovery mode.
483
484 This is the byte before the default first byte used by VBNV
485 (0x26 + 0x0E - 1)
486
487if VBOOT_SLOTS_RW_AB && VBOOT_STARTS_BEFORE_BOOTBLOCK
488
489config RWA_REGION_ONLY
490 string
491 default "apu/amdfw_a"
492 help
493 Add a space-delimited list of filenames that should only be in the
494 RW-A section.
495
496config RWB_REGION_ONLY
497 string
498 default "apu/amdfw_b"
499 help
500 Add a space-delimited list of filenames that should only be in the
501 RW-B section.
502
503endif # VBOOT_SLOTS_RW_AB && VBOOT_STARTS_BEFORE_BOOTBLOCK
504
Ritul Gurud3dae3d2022-04-04 13:33:01 +0530505endif # SOC_AMD_REMBRANDT_BASE