blob: 50cd88de1ab85d986e8481f2137649f846ded2e6 [file] [log] [blame]
Martin Rothf95a11e2022-10-21 16:43:08 -06001# SPDX-License-Identifier: GPL-2.0-only
2
3# TODO: Evaluate what can be moved to a common directory
4# TODO: Update for Glinda
5
6config SOC_AMD_GLINDA
7 bool
Martin Rothf95a11e2022-10-21 16:43:08 -06008 select ACPI_SOC_NVS
Martin Rothf95a11e2022-10-21 16:43:08 -06009 select ARCH_X86
10 select BOOT_DEVICE_SUPPORTS_WRITES if BOOT_DEVICE_SPI_FLASH
11 select DRIVERS_USB_ACPI
12 select DRIVERS_USB_PCI_XHCI
13 select FSP_COMPRESS_FSP_M_LZMA if !ASYNC_FILE_LOADING
14 select FSP_COMPRESS_FSP_M_LZ4 if ASYNC_FILE_LOADING
15 select FSP_COMPRESS_FSP_S_LZ4
16 select GENERIC_GPIO_LIB
17 select HAVE_ACPI_TABLES
18 select HAVE_CF9_RESET
19 select HAVE_EM100_SUPPORT
20 select HAVE_FSP_GOP
21 select HAVE_SMI_HANDLER
22 select IDT_IN_EVERY_STAGE
23 select PARALLEL_MP_AP_WORK
24 select PLATFORM_USES_FSP2_0
25 select PROVIDES_ROM_SHARING
26 select PSP_SUPPORTS_EFS2_RELATIVE_ADDR if VBOOT_STARTS_BEFORE_BOOTBLOCK
27 select PSP_VERSTAGE_CCP_DMA if VBOOT_STARTS_BEFORE_BOOTBLOCK
28 select RESET_VECTOR_IN_RAM
29 select RTC
30 select SOC_AMD_COMMON
31 select SOC_AMD_COMMON_BLOCK_ACP_GEN2 # TODO: Check if this is still correct
32 select SOC_AMD_COMMON_BLOCK_ACPI # TODO: Check if this is still correct
33 select SOC_AMD_COMMON_BLOCK_ACPIMMIO # TODO: Check if this is still correct
34 select SOC_AMD_COMMON_BLOCK_ACPI_ALIB # TODO: Check if this is still correct
35 select SOC_AMD_COMMON_BLOCK_ACPI_CPPC # TODO: Check if this is still correct
Felix Held21a5ecd2023-03-07 01:15:42 +010036 select SOC_AMD_COMMON_BLOCK_ACPI_CPU_POWER_STATE
Martin Rothf95a11e2022-10-21 16:43:08 -060037 select SOC_AMD_COMMON_BLOCK_ACPI_GPIO # TODO: Check if this is still correct
38 select SOC_AMD_COMMON_BLOCK_ACPI_IVRS # TODO: Check if this is still correct
39 select SOC_AMD_COMMON_BLOCK_AOAC # TODO: Check if this is still correct
40 select SOC_AMD_COMMON_BLOCK_APOB # TODO: Check if this is still correct
41 select SOC_AMD_COMMON_BLOCK_APOB_HASH # TODO: Check if this is still correct
42 select SOC_AMD_COMMON_BLOCK_BANKED_GPIOS # TODO: Check if this is still correct
Felix Helda63f8592023-03-24 16:30:55 +010043 select SOC_AMD_COMMON_BLOCK_CPUFREQ_FAM1AH
Fred Reitberger28908412022-11-01 10:49:16 -040044 select SOC_AMD_COMMON_BLOCK_DATA_FABRIC
Felix Heldb56ea252023-05-31 16:25:30 +020045 select SOC_AMD_COMMON_BLOCK_DATA_FABRIC_DOMAIN
Felix Heldea831392023-08-08 02:55:09 +020046 select SOC_AMD_COMMON_BLOCK_DATA_FABRIC_MULTI_PCI_SEGMENT
Felix Heldd6326972023-09-15 22:40:02 +020047 select SOC_AMD_COMMON_BLOCK_DATA_FABRIC_NP_REGION
Martin Rothf95a11e2022-10-21 16:43:08 -060048 select SOC_AMD_COMMON_BLOCK_ESPI_EXTENDED_DECODE_RANGES # TODO: Check if this is still correct
49 select SOC_AMD_COMMON_BLOCK_GRAPHICS # TODO: Check if this is still correct
50 select SOC_AMD_COMMON_BLOCK_HAS_ESPI # TODO: Check if this is still correct
51 select SOC_AMD_COMMON_BLOCK_HAS_ESPI_ALERT_ENABLE # TODO: Check if this is still correct
52 select SOC_AMD_COMMON_BLOCK_I2C # TODO: Check if this is still correct
53 select SOC_AMD_COMMON_BLOCK_I23C_PAD_CTRL # TODO: Check if this is still correct
54 select SOC_AMD_COMMON_BLOCK_IOMMU # TODO: Check if this is still correct
55 select SOC_AMD_COMMON_BLOCK_LPC # TODO: Check if this is still correct
56 select SOC_AMD_COMMON_BLOCK_MCAX # TODO: Check if this is still correct
57 select SOC_AMD_COMMON_BLOCK_NONCAR # TODO: Check if this is still correct
58 select SOC_AMD_COMMON_BLOCK_PCI # TODO: Check if this is still correct
59 select SOC_AMD_COMMON_BLOCK_PCI_MMCONF # TODO: Check if this is still correct
60 select SOC_AMD_COMMON_BLOCK_PCIE_GPP_DRIVER # TODO: Check if this is still correct
61 select SOC_AMD_COMMON_BLOCK_PM # TODO: Check if this is still correct
62 select SOC_AMD_COMMON_BLOCK_PM_CHIPSET_STATE_SAVE # TODO: Check if this is still correct
63 select SOC_AMD_COMMON_BLOCK_PSP_GEN2 # TODO: Check if this is still correct
Felix Held51d1f302023-10-04 21:10:36 +020064 select SOC_AMD_COMMON_BLOCK_PSP_SPL
Martin Roth10c43a22023-02-02 17:21:37 -070065 select SOC_AMD_COMMON_BLOCK_RESET
Martin Rothf95a11e2022-10-21 16:43:08 -060066 select SOC_AMD_COMMON_BLOCK_SMBUS # TODO: Check if this is still correct
67 select SOC_AMD_COMMON_BLOCK_SMI # TODO: Check if this is still correct
68 select SOC_AMD_COMMON_BLOCK_SMM # TODO: Check if this is still correct
69 select SOC_AMD_COMMON_BLOCK_SMU # TODO: Check if this is still correct
Felix Held71375622023-01-12 23:11:54 +010070 select SOC_AMD_COMMON_BLOCK_SMU_SX_ENTRY # TODO: Check if this is still correct
Martin Rothf95a11e2022-10-21 16:43:08 -060071 select SOC_AMD_COMMON_BLOCK_SPI # TODO: Check if this is still correct
Felix Held23a398e2023-03-23 23:44:03 +010072 select SOC_AMD_COMMON_BLOCK_SVI3
Felix Held60df7ca2023-03-24 20:33:15 +010073 select SOC_AMD_COMMON_BLOCK_TSC
Martin Rothf95a11e2022-10-21 16:43:08 -060074 select SOC_AMD_COMMON_BLOCK_UART # TODO: Check if this is still correct
75 select SOC_AMD_COMMON_BLOCK_UCODE # TODO: Check if this is still correct
76 select SOC_AMD_COMMON_FSP_CCX_CPPC_HOB # TODO: Check if this is still correct
77 select SOC_AMD_COMMON_FSP_DMI_TABLES # TODO: Check if this is still correct
78 select SOC_AMD_COMMON_FSP_PCI # TODO: Check if this is still correct
Fred Reitbergereb594932023-01-11 15:12:21 -050079 select SOC_AMD_COMMON_FSP_PRELOAD_FSPS
Martin Rothf95a11e2022-10-21 16:43:08 -060080 select SSE2
81 select UDK_2017_BINDING
Martin Rothbcb610a2022-10-29 13:31:54 -060082 select USE_DDR5
Martin Rothf95a11e2022-10-21 16:43:08 -060083 select USE_FSP_NOTIFY_PHASE_POST_PCI_ENUM
84 select USE_FSP_NOTIFY_PHASE_READY_TO_BOOT
85 select USE_FSP_NOTIFY_PHASE_END_OF_FIRMWARE
86 select VBOOT_DEFINE_WIDEVINE_COUNTERS if VBOOT_STARTS_BEFORE_BOOTBLOCK
87 select X86_AMD_FIXED_MTRRS
88 select X86_INIT_NEED_1_SIPI
Elyes Haouas3cd06cc2023-01-05 07:42:24 +010089 help
90 AMD Glinda support
91
92if SOC_AMD_GLINDA
Martin Rothf95a11e2022-10-21 16:43:08 -060093
Martin Rothf95a11e2022-10-21 16:43:08 -060094config CHIPSET_DEVICETREE
95 string
96 default "soc/amd/glinda/chipset.cb"
97
98config EARLY_RESERVED_DRAM_BASE
99 hex
100 default 0x2000000
101 help
102 This variable defines the base address of the DRAM which is reserved
103 for usage by coreboot in early stages (i.e. before ramstage is up).
104 This memory gets reserved in BIOS tables to ensure that the OS does
105 not use it, thus preventing corruption of OS memory in case of S3
106 resume.
107
108config EARLYRAM_BSP_STACK_SIZE
109 hex
110 default 0x1000
111
112config PSP_APOB_DRAM_ADDRESS
113 hex
114 default 0x2001000
115 help
116 Location in DRAM where the PSP will copy the AGESA PSP Output
117 Block.
118
119config PSP_APOB_DRAM_SIZE
120 hex
121 default 0x1E000
122
123config PSP_SHAREDMEM_BASE
124 hex
125 default 0x201F000 if VBOOT
126 default 0x0
127 help
128 This variable defines the base address in DRAM memory where PSP copies
129 the vboot workbuf. This is used in the linker script to have a static
130 allocation for the buffer as well as for adding relevant entries in
131 the BIOS directory table for the PSP.
132
133config PSP_SHAREDMEM_SIZE
134 hex
135 default 0x8000 if VBOOT
136 default 0x0
137 help
138 Sets the maximum size for the PSP to pass the vboot workbuf and
139 any logs or timestamps back to coreboot. This will be copied
140 into main memory by the PSP and will be available when the x86 is
141 started. The workbuf's base depends on the address of the reset
142 vector.
143
144config PRE_X86_CBMEM_CONSOLE_SIZE
145 hex
146 default 0x1600
147 help
148 Size of the CBMEM console used in PSP verstage.
149
150config PRERAM_CBMEM_CONSOLE_SIZE
151 hex
152 default 0x1600
153 help
154 Increase this value if preram cbmem console is getting truncated
155
156config CBFS_MCACHE_SIZE
157 hex
158 default 0x2000 if VBOOT_STARTS_BEFORE_BOOTBLOCK
159
160config C_ENV_BOOTBLOCK_SIZE
161 hex
162 default 0x10000
163 help
164 Sets the size of the bootblock stage that should be loaded in DRAM.
165 This variable controls the DRAM allocation size in linker script
166 for bootblock stage.
167
168config ROMSTAGE_ADDR
169 hex
170 default 0x2040000
171 help
172 Sets the address in DRAM where romstage should be loaded.
173
174config ROMSTAGE_SIZE
175 hex
176 default 0x80000
177 help
178 Sets the size of DRAM allocation for romstage in linker script.
179
180config FSP_M_ADDR
181 hex
182 default 0x20C0000
183 help
184 Sets the address in DRAM where FSP-M should be loaded. cbfstool
185 performs relocation of FSP-M to this address.
186
187config FSP_M_SIZE
188 hex
189 default 0xC0000
190 help
191 Sets the size of DRAM allocation for FSP-M in linker script.
192
193config FSP_TEMP_RAM_SIZE
194 hex
195 default 0x40000
196 help
197 The amount of coreboot-allocated heap and stack usage by the FSP.
198
199config VERSTAGE_ADDR
200 hex
201 depends on VBOOT_SEPARATE_VERSTAGE
202 default 0x2180000
203 help
204 Sets the address in DRAM where verstage should be loaded if running
205 as a separate stage on x86.
206
207config VERSTAGE_SIZE
208 hex
209 depends on VBOOT_SEPARATE_VERSTAGE
210 default 0x80000
211 help
212 Sets the size of DRAM allocation for verstage in linker script if
213 running as a separate stage on x86.
214
215config ASYNC_FILE_LOADING
216 bool "Loads files from SPI asynchronously"
217 select COOP_MULTITASKING
218 select SOC_AMD_COMMON_BLOCK_LPC_SPI_DMA
219 select CBFS_PRELOAD
220 help
221 When enabled, the platform will use the LPC SPI DMA controller to
222 asynchronously load contents from the SPI ROM. This will improve
223 boot time because the CPUs can be performing useful work while the
224 SPI contents are being preloaded.
225
226config CBFS_CACHE_SIZE
227 hex
228 default 0x40000 if CBFS_PRELOAD
229
230config RO_REGION_ONLY
231 string
232 depends on VBOOT_SLOTS_RW_AB || VBOOT_SLOTS_RW_A
233 default "apu/amdfw"
234
235config ECAM_MMCONF_BASE_ADDRESS
236 default 0xF8000000
237
238config ECAM_MMCONF_BUS_NUMBER
239 default 64
240
241config MAX_CPUS
242 int
Anand Vaikar72249992023-12-13 16:21:02 +0530243 default 24
Martin Rothf95a11e2022-10-21 16:43:08 -0600244 help
245 Maximum number of threads the platform can have.
246
247config CONSOLE_UART_BASE_ADDRESS
248 depends on CONSOLE_SERIAL && AMD_SOC_CONSOLE_UART
249 hex
250 default 0xfedc9000 if UART_FOR_CONSOLE = 0
251 default 0xfedca000 if UART_FOR_CONSOLE = 1
252 default 0xfedce000 if UART_FOR_CONSOLE = 2
253 default 0xfedcf000 if UART_FOR_CONSOLE = 3
254 default 0xfedd1000 if UART_FOR_CONSOLE = 4
255
256config SMM_TSEG_SIZE
257 hex
258 default 0x800000 if HAVE_SMI_HANDLER
259 default 0x0
260
261config SMM_RESERVED_SIZE
262 hex
263 default 0x180000
264
265config SMM_MODULE_STACK_SIZE
266 hex
267 default 0x800
268
269config ACPI_BERT
270 bool "Build ACPI BERT Table"
271 default y
272 depends on HAVE_ACPI_TABLES
273 help
274 Report Machine Check errors identified in POST to the OS in an
275 ACPI Boot Error Record Table.
276
277config ACPI_BERT_SIZE
278 hex
279 default 0x4000 if ACPI_BERT
280 default 0x0
281 help
282 Specify the amount of DRAM reserved for gathering the data used to
283 generate the ACPI table.
284
285config DRIVERS_I2C_DESIGNWARE_CLOCK_MHZ
286 int
287 default 150
288
289config DISABLE_SPI_FLASH_ROM_SHARING
290 def_bool n
291 help
292 Instruct the chipset to not honor the EGPIO67_SPI_ROM_REQ pin
293 which indicates a board level ROM transaction request. This
294 removes arbitration with board and assumes the chipset controls
295 the SPI flash bus entirely.
296
297config DISABLE_KEYBOARD_RESET_PIN
298 bool
299 help
Martin Roth9ceac742023-02-08 14:26:02 -0700300 Instruct the SoC to not to reset based on the state of GPIO_21, KBDRST_L.
Martin Rothf95a11e2022-10-21 16:43:08 -0600301
Martin Rothf95a11e2022-10-21 16:43:08 -0600302menu "PSP Configuration Options"
303
Martin Rothf95a11e2022-10-21 16:43:08 -0600304config AMDFW_CONFIG_FILE
305 string "AMD PSP Firmware config file"
306 default "src/soc/amd/glinda/fw.cfg"
307 help
308 Specify the path/location of AMD PSP Firmware config file.
309
310config PSP_DISABLE_POSTCODES
311 bool "Disable PSP post codes"
312 help
313 Disables the output of port80 post codes from PSP.
314
315config PSP_POSTCODES_ON_ESPI
316 bool "Use eSPI bus for PSP post codes"
317 default y
318 depends on !PSP_DISABLE_POSTCODES
319 help
320 Select to send PSP port80 post codes on eSPI bus.
321 If not selected, PSP port80 codes will be sent on LPC bus.
322
323config PSP_LOAD_MP2_FW
324 bool
325 default n
326 help
327 Include the MP2 firmwares and configuration into the PSP build.
328
329 If unsure, answer 'n'
330
331config PSP_UNLOCK_SECURE_DEBUG
332 bool "Unlock secure debug"
333 default y
334 help
335 Select this item to enable secure debug options in PSP.
336
337config HAVE_PSP_WHITELIST_FILE
338 bool "Include a debug whitelist file in PSP build"
339 default n
340 help
341 Support secured unlock prior to reset using a whitelisted
342 serial number. This feature requires a signed whitelist image
343 and bootloader from AMD.
344
345 If unsure, answer 'n'
346
347config PSP_WHITELIST_FILE
348 string "Debug whitelist file path"
349 depends on HAVE_PSP_WHITELIST_FILE
350 default "site-local/3rdparty/amd_blobs/glinda/PSP/wtl-mrg.sbin"
351
Martin Rothf95a11e2022-10-21 16:43:08 -0600352config PSP_SOFTFUSE_BITS
353 string "PSP Soft Fuse bits to enable"
354 default "34 28 6"
355 help
356 Space separated list of Soft Fuse bits to enable.
357 Bit 0: Enable secure debug (Set by PSP_UNLOCK_SECURE_DEBUG)
358 Bit 7: Disable PSP postcodes on Renoir and newer chips only
359 (Set by PSP_DISABLE_PORT80)
360 Bit 15: PSP debug output destination:
361 0=SoC MMIO UART, 1=IO port 0x3F8
362 Bit 29: Disable MP2 firmware loading (Set by PSP_LOAD_MP2_FW)
363
364 See #55758 (NDA) for additional bit definitions.
365
366config PSP_VERSTAGE_FILE
367 string "Specify the PSP_verstage file path"
368 depends on VBOOT_STARTS_BEFORE_BOOTBLOCK
369 default "\$(obj)/psp_verstage.bin"
370 help
371 Add psp_verstage file to the build & PSP Directory Table
372
373config PSP_VERSTAGE_SIGNING_TOKEN
374 string "Specify the PSP_verstage Signature Token file path"
375 depends on VBOOT_STARTS_BEFORE_BOOTBLOCK
376 default ""
377 help
378 Add psp_verstage signature token to the build & PSP Directory Table
379
380endmenu
381
382config VBOOT
383 select VBOOT_VBNV_CMOS
384 select VBOOT_VBNV_CMOS_BACKUP_TO_FLASH
385
386config VBOOT_STARTS_BEFORE_BOOTBLOCK
387 def_bool n
388 depends on VBOOT
389 select ARCH_VERSTAGE_ARMV7
390 help
391 Runs verstage on the PSP. Only available on
392 certain ChromeOS branded parts from AMD.
393
394config VBOOT_HASH_BLOCK_SIZE
395 hex
396 default 0x9000
397 depends on VBOOT_STARTS_BEFORE_BOOTBLOCK
398 help
399 Because the bulk of the time in psp_verstage to hash the RO cbfs is
400 spent in the overhead of doing svc calls, increasing the hash block
401 size significantly cuts the verstage hashing time as seen below.
402
403 4k takes 180ms
404 16k takes 44ms
405 32k takes 33.7ms
406 36k takes 32.5ms
407 There's actually still room for an even bigger stack, but we've
408 reached a point of diminishing returns.
409
410config CMOS_RECOVERY_BYTE
411 hex
412 default 0x51
413 depends on VBOOT_STARTS_BEFORE_BOOTBLOCK
414 help
415 If the workbuf is not passed from the PSP to coreboot, set the
416 recovery flag and reboot. The PSP will read this byte, mark the
417 recovery request in VBNV, and reset the system into recovery mode.
418
419 This is the byte before the default first byte used by VBNV
420 (0x26 + 0x0E - 1)
421
422if VBOOT_SLOTS_RW_AB && VBOOT_STARTS_BEFORE_BOOTBLOCK
423
424config RWA_REGION_ONLY
425 string
426 default "apu/amdfw_a"
427 help
428 Add a space-delimited list of filenames that should only be in the
429 RW-A section.
430
431config RWB_REGION_ONLY
432 string
433 default "apu/amdfw_b"
434 help
435 Add a space-delimited list of filenames that should only be in the
436 RW-B section.
437
438endif # VBOOT_SLOTS_RW_AB && VBOOT_STARTS_BEFORE_BOOTBLOCK
439
Felix Held431c0b42023-08-10 20:40:29 +0200440endif # SOC_AMD_GLINDA