coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
systemagent.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <device/device.h>
4 #include <device/pci_ops.h>
6 #include <soc/iomap.h>
7 #include <soc/p2sb.h>
8 #include <soc/pci_devs.h>
9 #include <soc/romstage.h>
10 #include <soc/systemagent.h>
11 #include "chip.h"
12 
13 static void systemagent_vtd_init(void)
14 {
15  const bool vtd_capable =
17  if (!vtd_capable)
18  return;
19 
20  /* Configure P2SB VT-d originators (HPET and IOAPIC) */
23 
26 
28 }
29 
31 {
32  static const struct sa_mmio_descriptor soc_fixed_pci_resources[] = {
33  { MCHBAR, MCH_BASE_ADDRESS, MCH_BASE_SIZE, "MCHBAR" },
34  { DMIBAR, DMI_BASE_ADDRESS, DMI_BASE_SIZE, "DMIBAR" },
35  { EPBAR, EP_BASE_ADDRESS, EP_BASE_SIZE, "EPBAR" },
36  };
37 
38  static const struct sa_mmio_descriptor soc_fixed_mch_resources[] = {
39  { GDXCBAR, GDXC_BASE_ADDRESS, GDXC_BASE_SIZE, "GDXCBAR" },
41  };
42 
43  /* Set Fixed MMIO address into PCI configuration space */
44  sa_set_pci_bar(soc_fixed_pci_resources,
45  ARRAY_SIZE(soc_fixed_pci_resources));
46  /* Set Fixed MMIO address into MCH base address */
47  sa_set_mch_bar(soc_fixed_mch_resources,
48  ARRAY_SIZE(soc_fixed_mch_resources));
49 
51 
52  /* Enable PAM registers */
54 }
void systemagent_early_init(void)
Definition: systemagent.c:14
#define ARRAY_SIZE(a)
Definition: helpers.h:12
#define PCH_P2SB_IBDF
Definition: p2sb.h:11
#define PCH_P2SB_HBDF
Definition: p2sb.h:12
void sa_set_mch_bar(const struct sa_mmio_descriptor *fixed_set_resources, size_t count)
void sa_set_pci_bar(const struct sa_mmio_descriptor *fixed_set_resources, size_t count)
bool is_devfn_enabled(unsigned int devfn)
Definition: device_const.c:382
#define CAPID0_A
Definition: host_bridge.h:65
#define MCHBAR
Definition: host_bridge.h:7
#define VTD_DISABLE
Definition: host_bridge.h:67
#define DMIBAR
Definition: host_bridge.h:33
#define EPBAR
Definition: host_bridge.h:6
#define EDRAMBAR
Definition: mchbar.h:19
#define GDXCBAR
Definition: mchbar.h:22
static __always_inline u32 pci_read_config32(const struct device *dev, u16 reg)
Definition: pci_ops.h:58
static __always_inline void pci_write_config16(const struct device *dev, u16 reg, u16 val)
Definition: pci_ops.h:70
#define DMI_BASE_ADDRESS
Definition: iomap.h:37
#define EP_BASE_ADDRESS
Definition: iomap.h:40
#define MCH_BASE_ADDRESS
Definition: iomap.h:82
#define DMI_BASE_SIZE
Definition: memmap.h:8
#define EP_BASE_SIZE
Definition: memmap.h:10
#define EDRAM_BASE_ADDRESS
Definition: memmap.h:12
#define GDXC_BASE_SIZE
Definition: memmap.h:16
#define MCH_BASE_SIZE
Definition: memmap.h:6
#define GDXC_BASE_ADDRESS
Definition: memmap.h:15
#define EDRAM_BASE_SIZE
Definition: memmap.h:13
static void enable_pam_region(void)
Definition: early_init.c:37
#define V_DEFAULT_IBDF
Definition: systemagent.h:54
static const struct sa_mmio_descriptor soc_gfxvt_mmio_descriptor
Definition: systemagent.h:36
static const struct sa_mmio_descriptor soc_vtvc0_mmio_descriptor
Definition: systemagent.h:43
#define V_DEFAULT_HBDF
Definition: systemagent.h:59
static void systemagent_vtd_init(void)
Definition: systemagent.c:13
#define PCH_DEV_P2SB
Definition: pci_devs.h:225
#define SA_DEVFN_IGD
Definition: pci_devs.h:32
#define SA_DEV_ROOT
Definition: pci_devs.h:26