drivers/fsp/fsp2_0: Rework FSP Notify Phase API configs
[coreboot.git] / src / soc / amd / sabrina / Kconfig
blob1be53b5314c82bba594c391881a1f27a3ce674b8
1 # SPDX-License-Identifier: GPL-2.0-only
3 # TODO: Check if this is still correct
5 config SOC_AMD_SABRINA
6         bool
7         help
8           AMD Sabrina support
10 if SOC_AMD_SABRINA
12 config SOC_SPECIFIC_OPTIONS
13         def_bool y
14         select ACPI_SOC_NVS
15         select ARCH_BOOTBLOCK_X86_32
16         select ARCH_VERSTAGE_X86_32 if !VBOOT_STARTS_BEFORE_BOOTBLOCK
17         select ARCH_ROMSTAGE_X86_32
18         select ARCH_RAMSTAGE_X86_32
19         select ARCH_X86
20         select BOOT_DEVICE_SUPPORTS_WRITES if BOOT_DEVICE_SPI_FLASH
21         select CONSOLE_CBMEM_PRINT_PRE_BOOTBLOCK_CONTENTS if VBOOT_STARTS_BEFORE_BOOTBLOCK
22         select DRIVERS_USB_ACPI
23         select DRIVERS_I2C_DESIGNWARE
24         select DRIVERS_USB_PCI_XHCI
25         select FSP_COMPRESS_FSP_M_LZMA if !ASYNC_FILE_LOADING
26         select FSP_COMPRESS_FSP_M_LZ4 if ASYNC_FILE_LOADING
27         select FSP_COMPRESS_FSP_S_LZ4
28         select GENERIC_GPIO_LIB
29         select HAVE_ACPI_TABLES
30         select HAVE_CF9_RESET
31         select HAVE_EM100_SUPPORT
32         select HAVE_FSP_GOP
33         select HAVE_SMI_HANDLER
34         select IDT_IN_EVERY_STAGE
35         select PARALLEL_MP_AP_WORK
36         select PLATFORM_USES_FSP2_0
37         select PROVIDES_ROM_SHARING
38         select PSP_VERSTAGE_CCP_DMA if VBOOT_STARTS_BEFORE_BOOTBLOCK
39         select RESET_VECTOR_IN_RAM
40         select RTC
41         select SOC_AMD_COMMON
42         select SOC_AMD_COMMON_BLOCK_ACP_GEN2
43         select SOC_AMD_COMMON_BLOCK_ACPI        # TODO: Check if this is still correct
44         select SOC_AMD_COMMON_BLOCK_ACPIMMIO
45         select SOC_AMD_COMMON_BLOCK_ACPI_ALIB   # TODO: Check if this is still correct
46         select SOC_AMD_COMMON_BLOCK_ACPI_GPIO   # TODO: Check if this is still correct
47         select SOC_AMD_COMMON_BLOCK_ACPI_IVRS   # TODO: Check if this is still correct
48         select SOC_AMD_COMMON_BLOCK_AOAC
49         select SOC_AMD_COMMON_BLOCK_APOB        # TODO: Check if this is still correct
50         select SOC_AMD_COMMON_BLOCK_BANKED_GPIOS        # TODO: Check if this is still correct
51         select SOC_AMD_COMMON_BLOCK_DATA_FABRIC
52         select SOC_AMD_COMMON_BLOCK_GRAPHICS    # TODO: Check if this is still correct
53         select SOC_AMD_COMMON_BLOCK_HAS_ESPI    # TODO: Check if this is still correct
54         select SOC_AMD_COMMON_BLOCK_I2C
55         select SOC_AMD_COMMON_BLOCK_I2C_PAD_CTRL
56         select SOC_AMD_COMMON_BLOCK_I23C_PAD_CTRL
57         select SOC_AMD_COMMON_BLOCK_IOMMU
58         select SOC_AMD_COMMON_BLOCK_LPC         # TODO: Check if this is still correct
59         select SOC_AMD_COMMON_BLOCK_MCAX        # TODO: Check if this is still correct
60         select SOC_AMD_COMMON_BLOCK_NONCAR      # TODO: Check if this is still correct
61         select SOC_AMD_COMMON_BLOCK_PCI         # TODO: Check if this is still correct
62         select SOC_AMD_COMMON_BLOCK_PCI_MMCONF
63         select SOC_AMD_COMMON_BLOCK_PCIE_GPP_DRIVER     # TODO: Check if this is still correct
64         select SOC_AMD_COMMON_BLOCK_PM          # TODO: Check if this is still correct
65         select SOC_AMD_COMMON_BLOCK_PM_CHIPSET_STATE_SAVE       # TODO: Check if this is still correct
66         select SOC_AMD_COMMON_BLOCK_PSP_GEN2    # TODO: Check if this is still correct
67         select SOC_AMD_COMMON_BLOCK_SMBUS       # TODO: Check if this is still correct
68         select SOC_AMD_COMMON_BLOCK_SMI         # TODO: Check if this is still correct
69         select SOC_AMD_COMMON_BLOCK_SMM         # TODO: Check if this is still correct
70         select SOC_AMD_COMMON_BLOCK_SMU
71         select SOC_AMD_COMMON_BLOCK_SPI         # TODO: Check if this is still correct
72         select SOC_AMD_COMMON_BLOCK_TSC_FAM17H_19H      # TODO: Check if this is still correct
73         select SOC_AMD_COMMON_BLOCK_UART
74         select SOC_AMD_COMMON_BLOCK_UCODE       # TODO: Check if this is still correct
75         select SOC_AMD_COMMON_FSP_DMI_TABLES    # TODO: Check if this is still correct
76         select SOC_AMD_COMMON_FSP_PCI           # TODO: Check if this is still correct
77         select SSE2
78         select UDK_2017_BINDING
79         select USE_FSP_NOTIFY_PHASE_POST_PCI_ENUM
80         select USE_FSP_NOTIFY_PHASE_READY_TO_BOOT
81         select USE_FSP_NOTIFY_PHASE_END_OF_FIRMWARE
82         select VBOOT_DEFINE_WIDEVINE_COUNTERS if VBOOT_STARTS_BEFORE_BOOTBLOCK
83         select X86_AMD_FIXED_MTRRS
84         select X86_INIT_NEED_1_SIPI
86 config ARCH_ALL_STAGES_X86
87         default n
89 config SOC_AMD_COMMON_BLOCK_UCODE_SIZE
90         default 5568
92 config CHIPSET_DEVICETREE
93         string
94         default "soc/amd/sabrina/chipset.cb"
96 config EARLY_RESERVED_DRAM_BASE
97         hex
98         default 0x2000000
99         help
100           This variable defines the base address of the DRAM which is reserved
101           for usage by coreboot in early stages (i.e. before ramstage is up).
102           This memory gets reserved in BIOS tables to ensure that the OS does
103           not use it, thus preventing corruption of OS memory in case of S3
104           resume.
106 config EARLYRAM_BSP_STACK_SIZE
107         hex
108         default 0x1000
110 config PSP_APOB_DRAM_ADDRESS
111         hex
112         default 0x2001000
113         help
114           Location in DRAM where the PSP will copy the AGESA PSP Output
115           Block.
117 config PSP_SHAREDMEM_BASE
118         hex
119         default 0x2011000 if VBOOT
120         default 0x0
121         help
122           This variable defines the base address in DRAM memory where PSP copies
123           the vboot workbuf. This is used in the linker script to have a static
124           allocation for the buffer as well as for adding relevant entries in
125           the BIOS directory table for the PSP.
127 config PSP_SHAREDMEM_SIZE
128         hex
129         default 0x8000 if VBOOT
130         default 0x0
131         help
132           Sets the maximum size for the PSP to pass the vboot workbuf and
133           any logs or timestamps back to coreboot.  This will be copied
134           into main memory by the PSP and will be available when the x86 is
135           started.  The workbuf's base depends on the address of the reset
136           vector.
138 config PRE_X86_CBMEM_CONSOLE_SIZE
139         hex
140         default 0x1600
141         help
142           Size of the CBMEM console used in PSP verstage.
144 config PRERAM_CBMEM_CONSOLE_SIZE
145         hex
146         default 0x1600
147         help
148           Increase this value if preram cbmem console is getting truncated
150 config CBFS_MCACHE_SIZE
151         hex
152         default 0x2000 if VBOOT_STARTS_BEFORE_BOOTBLOCK
154 config C_ENV_BOOTBLOCK_SIZE
155         hex
156         default 0x10000
157         help
158           Sets the size of the bootblock stage that should be loaded in DRAM.
159           This variable controls the DRAM allocation size in linker script
160           for bootblock stage.
162 config ROMSTAGE_ADDR
163         hex
164         default 0x2040000
165         help
166           Sets the address in DRAM where romstage should be loaded.
168 config ROMSTAGE_SIZE
169         hex
170         default 0x80000
171         help
172           Sets the size of DRAM allocation for romstage in linker script.
174 config FSP_M_ADDR
175         hex
176         default 0x20C0000
177         help
178           Sets the address in DRAM where FSP-M should be loaded. cbfstool
179           performs relocation of FSP-M to this address.
181 config FSP_M_SIZE
182         hex
183         default 0xC0000
184         help
185           Sets the size of DRAM allocation for FSP-M in linker script.
187 config FSP_TEMP_RAM_SIZE
188         hex
189         default 0x40000
190         help
191           The amount of coreboot-allocated heap and stack usage by the FSP.
193 config VERSTAGE_ADDR
194         hex
195         depends on VBOOT_SEPARATE_VERSTAGE
196         default 0x2180000
197         help
198           Sets the address in DRAM where verstage should be loaded if running
199           as a separate stage on x86.
201 config VERSTAGE_SIZE
202         hex
203         depends on VBOOT_SEPARATE_VERSTAGE
204         default 0x80000
205         help
206           Sets the size of DRAM allocation for verstage in linker script if
207           running as a separate stage on x86.
209 config ASYNC_FILE_LOADING
210         bool "Loads files from SPI asynchronously"
211         select COOP_MULTITASKING
212         select SOC_AMD_COMMON_BLOCK_LPC_SPI_DMA
213         select CBFS_PRELOAD
214         help
215           When enabled, the platform will use the LPC SPI DMA controller to
216           asynchronously load contents from the SPI ROM. This will improve
217           boot time because the CPUs can be performing useful work while the
218           SPI contents are being preloaded.
220 config CBFS_CACHE_SIZE
221         hex
222         default 0x40000 if CBFS_PRELOAD
224 config RAMBASE
225         hex
226         default 0x10000000
228 config RO_REGION_ONLY
229         string
230         depends on VBOOT_SLOTS_RW_AB || VBOOT_SLOTS_RW_A
231         default "apu/amdfw"
233 config ECAM_MMCONF_BASE_ADDRESS
234         default 0xF8000000
236 config ECAM_MMCONF_BUS_NUMBER
237         default 64
239 config MAX_CPUS
240         int
241         default 16
242         help
243           Maximum number of threads the platform can have.
245 config CONSOLE_UART_BASE_ADDRESS
246         depends on CONSOLE_SERIAL && AMD_SOC_CONSOLE_UART
247         hex
248         default 0xfedc9000 if UART_FOR_CONSOLE = 0
249         default 0xfedca000 if UART_FOR_CONSOLE = 1
250         default 0xfedce000 if UART_FOR_CONSOLE = 2
251         default 0xfedcf000 if UART_FOR_CONSOLE = 3
252         default 0xfedd1000 if UART_FOR_CONSOLE = 4
254 config SMM_TSEG_SIZE
255         hex
256         default 0x800000 if HAVE_SMI_HANDLER
257         default 0x0
259 config SMM_RESERVED_SIZE
260         hex
261         default 0x180000
263 config SMM_MODULE_STACK_SIZE
264         hex
265         default 0x800
267 config ACPI_BERT
268         bool "Build ACPI BERT Table"
269         default y
270         depends on HAVE_ACPI_TABLES
271         help
272           Report Machine Check errors identified in POST to the OS in an
273           ACPI Boot Error Record Table.
275 config ACPI_BERT_SIZE
276         hex
277         default 0x4000 if ACPI_BERT
278         default 0x0
279         help
280           Specify the amount of DRAM reserved for gathering the data used to
281           generate the ACPI table.
283 config DRIVERS_I2C_DESIGNWARE_CLOCK_MHZ
284         int
285         default 150
287 config DISABLE_SPI_FLASH_ROM_SHARING
288         def_bool n
289         help
290           Instruct the chipset to not honor the EGPIO67_SPI_ROM_REQ pin
291           which indicates a board level ROM transaction request. This
292           removes arbitration with board and assumes the chipset controls
293           the SPI flash bus entirely.
295 config DISABLE_KEYBOARD_RESET_PIN
296         bool
297         help
298           Instruct the SoC to not use the state of GPIO_129 as keyboard reset
299           signal. When this pin is used as GPIO and the keyboard reset
300           functionality isn't disabled, configuring it as an output and driving
301           it as 0 will cause a reset.
303 config ACPI_SSDT_PSD_INDEPENDENT
304         bool "Allow core p-state independent transitions"
305         default y
306         help
307           AMD recommends the ACPI _PSD object to be configured to cause
308           cores to transition between p-states independently. A vendor may
309           choose to generate _PSD object to allow cores to transition together.
311 menu "PSP Configuration Options"
313 config AMD_FWM_POSITION_INDEX
314         int "Firmware Directory Table location (0 to 5)"
315         range 0 5
316         default 0 if BOARD_ROMSIZE_KB_512
317         default 1 if BOARD_ROMSIZE_KB_1024
318         default 2 if BOARD_ROMSIZE_KB_2048
319         default 3 if BOARD_ROMSIZE_KB_4096
320         default 4 if BOARD_ROMSIZE_KB_8192
321         default 5 if BOARD_ROMSIZE_KB_16384
322         help
323           Typically this is calculated by the ROM size, but there may
324           be situations where you want to put the firmware directory
325           table in a different location.
326             0: 512 KB - 0xFFFA0000
327             1: 1 MB   - 0xFFF20000
328             2: 2 MB   - 0xFFE20000
329             3: 4 MB   - 0xFFC20000
330             4: 8 MB   - 0xFF820000
331             5: 16 MB  - 0xFF020000
333 comment "AMD Firmware Directory Table set to location for 512KB ROM"
334         depends on AMD_FWM_POSITION_INDEX = 0
335 comment "AMD Firmware Directory Table set to location for 1MB ROM"
336         depends on AMD_FWM_POSITION_INDEX = 1
337 comment "AMD Firmware Directory Table set to location for 2MB ROM"
338         depends on AMD_FWM_POSITION_INDEX = 2
339 comment "AMD Firmware Directory Table set to location for 4MB ROM"
340         depends on AMD_FWM_POSITION_INDEX = 3
341 comment "AMD Firmware Directory Table set to location for 8MB ROM"
342         depends on AMD_FWM_POSITION_INDEX = 4
343 comment "AMD Firmware Directory Table set to location for 16MB ROM"
344         depends on AMD_FWM_POSITION_INDEX = 5
346 config AMDFW_CONFIG_FILE
347         string
348         default "src/soc/amd/sabrina/fw.cfg"
350 config PSP_DISABLE_POSTCODES
351         bool "Disable PSP post codes"
352         help
353           Disables the output of port80 post codes from PSP.
355 config PSP_POSTCODES_ON_ESPI
356         bool "Use eSPI bus for PSP post codes"
357         default y
358         depends on !PSP_DISABLE_POSTCODES
359         help
360           Select to send PSP port80 post codes on eSPI bus.
361           If not selected, PSP port80 codes will be sent on LPC bus.
363 config PSP_LOAD_MP2_FW
364         bool
365         default n
366         help
367           Include the MP2 firmwares and configuration into the PSP build.
369           If unsure, answer 'n'
371 config PSP_UNLOCK_SECURE_DEBUG
372         bool "Unlock secure debug"
373         default y
374         help
375           Select this item to enable secure debug options in PSP.
377 config HAVE_PSP_WHITELIST_FILE
378         bool "Include a debug whitelist file in PSP build"
379         default n
380         help
381           Support secured unlock prior to reset using a whitelisted
382           serial number. This feature requires a signed whitelist image
383           and bootloader from AMD.
385           If unsure, answer 'n'
387 config PSP_WHITELIST_FILE
388         string "Debug whitelist file path"
389         depends on HAVE_PSP_WHITELIST_FILE
390         default "3rdparty/amd_blobs/cezanne/PSP/wtl-czn.sbin"
392 config PSP_SOFTFUSE_BITS
393         string "PSP Soft Fuse bits to enable"
394         default "28 6"
395         help
396           Space separated list of Soft Fuse bits to enable.
397           Bit 0:  Enable secure debug (Set by PSP_UNLOCK_SECURE_DEBUG)
398           Bit 7:  Disable PSP postcodes on Renoir and newer chips only
399                   (Set by PSP_DISABLE_PORT80)
400           Bit 15: PSP post code destination: 0=LPC 1=eSPI
401                   (Set by PSP_INITIALIZE_ESPI)
402           Bit 29: Disable MP2 firmware loading (Set by PSP_LOAD_MP2_FW)
404           See #55758 (NDA) for additional bit definitions.
406 config PSP_VERSTAGE_FILE
407         string "Specify the PSP_verstage file path"
408         depends on VBOOT_STARTS_BEFORE_BOOTBLOCK
409         default "\$(obj)/psp_verstage.bin"
410         help
411           Add psp_verstage file to the build & PSP Directory Table
413 config PSP_VERSTAGE_SIGNING_TOKEN
414         string "Specify the PSP_verstage Signature Token file path"
415         depends on VBOOT_STARTS_BEFORE_BOOTBLOCK
416         default ""
417         help
418           Add psp_verstage signature token to the build & PSP Directory Table
420 endmenu
422 config VBOOT
423         select VBOOT_VBNV_CMOS
424         select VBOOT_VBNV_CMOS_BACKUP_TO_FLASH
426 config VBOOT_STARTS_BEFORE_BOOTBLOCK
427         def_bool n
428         depends on VBOOT
429         select ARCH_VERSTAGE_ARMV7
430         help
431           Runs verstage on the PSP.  Only available on
432           certain Chrome OS branded parts from AMD.
434 config VBOOT_HASH_BLOCK_SIZE
435         hex
436         default 0x9000
437         depends on VBOOT_STARTS_BEFORE_BOOTBLOCK
438         help
439           Because the bulk of the time in psp_verstage to hash the RO cbfs is
440           spent in the overhead of doing svc calls, increasing the hash block
441           size significantly cuts the verstage hashing time as seen below.
443           4k takes 180ms
444           16k takes 44ms
445           32k takes 33.7ms
446           36k takes 32.5ms
447           There's actually still room for an even bigger stack, but we've
448           reached a point of diminishing returns.
450 config CMOS_RECOVERY_BYTE
451         hex
452         default 0x51
453         depends on VBOOT_STARTS_BEFORE_BOOTBLOCK
454         help
455           If the workbuf is not passed from the PSP to coreboot, set the
456           recovery flag and reboot.  The PSP will read this byte, mark the
457           recovery request in VBNV, and reset the system into recovery mode.
459           This is the byte before the default first byte used by VBNV
460           (0x26 + 0x0E - 1)
462 if VBOOT_SLOTS_RW_AB && VBOOT_STARTS_BEFORE_BOOTBLOCK
464 config RWA_REGION_ONLY
465         string
466         default "apu/amdfw_a"
467         help
468           Add a space-delimited list of filenames that should only be in the
469           RW-A section.
471 config RWB_REGION_ONLY
472         string
473         default "apu/amdfw_b"
474         help
475           Add a space-delimited list of filenames that should only be in the
476           RW-B section.
478 endif # VBOOT_SLOTS_RW_AB && VBOOT_STARTS_BEFORE_BOOTBLOCK
480 endif # SOC_AMD_SABRINA