coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
romstage.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <cbfs.h>
4 #include <console/console.h>
5 #include <fsp/util.h>
6 #include <soc/pci_devs.h>
7 #include <soc/pm.h>
8 #include <soc/romstage.h>
9 #include <soc/reg_access.h>
10 
11 static const struct reg_script clear_smi_and_wake_events_script[] = {
12  /* Clear any SMI or wake events */
18 };
19 
21 {
22  struct chipset_power_state *ps;
23 
24  /* Clear SMI and wake events */
25  ps = get_power_state();
26  if (ps->prev_sleep_state != 3) {
27  printk(BIOS_SPEW, "Clearing SMI interrupts and wake events\n");
30  }
31 }
32 
34 {
35  uint32_t data;
36 
37  /* Determine if the shadow ROM is enabled */
40  if ((data & (ESEG_RD_DRAM | FSEG_RD_DRAM))
41  != (ESEG_RD_DRAM | FSEG_RD_DRAM)) {
42 
43  /* Disable the ROM shadow 0x000e0000 - 0x000fffff */
44  data |= ESEG_RD_DRAM | FSEG_RD_DRAM;
47  }
48 }
49 
50 void *locate_rmu_file(size_t *rmu_file_len)
51 {
52  size_t fsize;
53  void *rmu_data;
54 
55  /* Locate the rmu.bin file in the read-only region of the flash */
56  rmu_data = cbfs_ro_map("rmu.bin", &fsize);
57  if (!rmu_data)
58  return NULL;
59 
60  if (rmu_file_len != NULL)
61  *rmu_file_len = fsize;
62 
63  return rmu_data;
64 }
#define QNC_MSG_FSBIC_REG_HMISC
Definition: QuarkNcSocId.h:266
#define B_QNC_GPE0BLK_SMIS_ALL
Definition: QuarkNcSocId.h:554
#define QUARK_NC_HOST_BRIDGE_SB_PORT_ID
Definition: QuarkNcSocId.h:133
#define R_QNC_GPE0BLK_SMIS
Definition: QuarkNcSocId.h:552
#define FSEG_RD_DRAM
Definition: QuarkNcSocId.h:269
#define ESEG_RD_DRAM
Definition: QuarkNcSocId.h:271
#define B_QNC_GPE0BLK_GPE0S_ALL
Definition: QuarkNcSocId.h:526
#define R_QNC_GPE0BLK_GPE0S
Definition: QuarkNcSocId.h:524
static void * cbfs_ro_map(const char *name, size_t *size_out)
Definition: cbfs.h:251
#define printk(level,...)
Definition: stdlib.h:16
#define BIOS_SPEW
BIOS_SPEW - Excessively verbose output.
Definition: loglevel.h:142
struct chipset_power_state * get_power_state(void)
Definition: fsp_params.c:51
void reg_script_run_on_dev(struct device *dev, const struct reg_script *step)
Definition: reg_script.c:689
#define REG_SCRIPT_END
Definition: reg_script.h:427
#define LPC_BDF
Definition: pci_devs.h:53
#define REG_GPE0_OR(reg_, value_)
Definition: reg_access.h:71
uint32_t port_reg_read(uint8_t port, uint32_t offset)
Definition: reg_access.c:120
#define REG_GPE0_READ(reg_)
Definition: reg_access.h:61
void port_reg_write(uint8_t port, uint32_t offset, uint32_t value)
Definition: reg_access.c:128
void * locate_rmu_file(size_t *rmu_file_len)
Definition: romstage.c:50
static const struct reg_script clear_smi_and_wake_events_script[]
Definition: romstage.c:11
void clear_smi_and_wake_events(void)
Definition: romstage.c:20
void disable_rom_shadow(void)
Definition: romstage.c:33
#define NULL
Definition: stddef.h:19
unsigned int uint32_t
Definition: stdint.h:14
uint32_t prev_sleep_state
Definition: pm.h:153