drivers/amd/opensil: Add openSIL timepoint calls
[coreboot.git] / src / mainboard / emulation / qemu-q35 / bootblock.c
blobd40ff0f98d478f0acc58105d0030407bd3254f0b
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #include <device/pci_ops.h>
4 #include <bootblock_common.h>
5 #include <southbridge/intel/common/early_spi.h>
6 #include <southbridge/intel/i82801ix/i82801ix.h>
8 #include "q35.h"
10 void bootblock_soc_early_init(void)
13 * The "io" variant of the config access is explicitly used to
14 * setup the PCIEXBAR because CONFIG(ECAM_MMCONF_SUPPORT) is set
15 * to true. That way all subsequent non-explicit config accesses use
16 * MCFG. This code also assumes that bootblock_northbridge_init() is
17 * the first thing called in the non-asm boot block code. The final
18 * assumption is that no assembly code is using the
19 * CONFIG(ECAM_MMCONF_SUPPORT) option to do PCI config accesses.
21 * The PCIEXBAR is assumed to live in the memory mapped IO space under
22 * 4GiB.
24 const uint32_t pciexbar = make_pciexbar();
25 pci_io_write_config32(HOST_BRIDGE, D0F0_PCIEXBAR_HI, 0);
26 pci_io_write_config32(HOST_BRIDGE, D0F0_PCIEXBAR_LO, pciexbar);
29 static void bootblock_southbridge_init(void)
31 enable_spi_prefetching_and_caching();
33 /* Enable RCBA */
34 pci_write_config32(PCI_DEV(0, 0x1f, 0), RCBA,
35 CONFIG_FIXED_RCBA_MMIO_BASE | 1);
38 void bootblock_soc_init(void)
40 if (CONFIG(BOOTBLOCK_CONSOLE))
41 mainboard_machine_check();
43 bootblock_southbridge_init();