coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
lockdown.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <device/mmio.h>
4 #include <device/pci.h>
5 #include <intelblocks/cfg.h>
6 #include <intelblocks/pmclib.h>
7 #include <intelpch/lockdown.h>
8 #include <soc/pci_devs.h>
9 #include <soc/pm.h>
10 
11 static void pmc_lockdown_config(int chipset_lockdown)
12 {
13  uint8_t *pmcbase;
14  u32 pmsyncreg;
15 
16  /* PMSYNC */
17  pmcbase = pmc_mmio_regs();
18  pmsyncreg = read32(pmcbase + PMSYNC_TPR_CFG);
19  pmsyncreg |= PMSYNC_LOCK;
20  write32(pmcbase + PMSYNC_TPR_CFG, pmsyncreg);
21 
22  /* Make sure payload/OS can't trigger global reset */
24 
25  /* Lock PMC stretch policy */
27 }
28 
29 static void sata_lockdown_config(int chipset_lockdown)
30 {
31  if (chipset_lockdown == CHIPSET_LOCKDOWN_COREBOOT) {
34  }
35 }
36 
37 void soc_lockdown_config(int chipset_lockdown)
38 {
39  pmc_lockdown_config(chipset_lockdown);
40  sata_lockdown_config(chipset_lockdown);
41 }
uint8_t * pmc_mmio_regs(void)
Definition: pmutil.c:142
static void write32(void *addr, uint32_t val)
Definition: mmio.h:40
static uint32_t read32(const void *addr)
Definition: mmio.h:22
static __always_inline void pci_or_config32(const struct device *dev, u16 reg, u32 ormask)
Definition: pci_ops.h:191
#define GEN_PMCON_B
Definition: pmc.h:53
#define PMSYNC_TPR_CFG
Definition: pmc.h:103
#define SLP_STR_POL_LOCK
Definition: pmc.h:54
#define PMSYNC_LOCK
Definition: pmc.h:81
#define PCH_DEV_SSATA
Definition: pch_pci_devs.h:18
#define SATAGC_REGLOCK
Definition: pch_pci_devs.h:43
#define PCH_DEV_SATA
Definition: pci_devs.h:159
#define PCH_DEV_PMC
Definition: pci_devs.h:236
void soc_lockdown_config(int chipset_lockdown)
Definition: lockdown.c:50
@ CHIPSET_LOCKDOWN_COREBOOT
Definition: cfg.h:12
void pmc_global_reset_disable_and_lock(void)
#define SATAGC
Definition: sata.h:11
static void sata_lockdown_config(int chipset_lockdown)
Definition: lockdown.c:29
static void pmc_lockdown_config(int chipset_lockdown)
Definition: lockdown.c:11
uint32_t u32
Definition: stdint.h:51
unsigned char uint8_t
Definition: stdint.h:8