coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
pm.h File Reference
#include <acpi/acpi.h>
#include <soc/gpe.h>
#include <soc/iomap.h>
#include <soc/pmc.h>
Include dependency graph for pm.h:

Go to the source code of this file.

Data Structures

struct  chipset_power_state
 

Macros

#define PM1_STS   0x00
 
#define WAK_STS   (1 << 15)
 
#define PCIEXPWAK_STS   (1 << 14)
 
#define PRBTNOR_STS   (1 << 11)
 
#define RTC_STS   (1 << 10)
 
#define PWRBTN_STS   (1 << 8)
 
#define GBL_STS   (1 << 5)
 
#define PM1_EN   0x02
 
#define RTC_EN   (1 << 10)
 
#define PWRBTN_EN   (1 << 8)
 
#define GBL_EN   (1 << 5)
 
#define TMROF_EN   (1 << 0)
 
#define PM1_CNT   0x04
 
#define GBL_RLS   (1 << 2)
 
#define SCI_EN   (1 << 0)
 
#define PM1_TMR   0x08
 
#define SMI_EN   0x30
 
#define ESPI_SMI_EN   (1 << 28)
 
#define PERIODIC_EN   (1 << 14)
 
#define TCO_SMI_EN   (1 << 13)
 
#define APMC_EN   (1 << 5)
 
#define SLP_SMI_EN   (1 << 4)
 
#define BIOS_EN   (1 << 2)
 
#define EOS   (1 << 1)
 
#define GBL_SMI_EN   (1 << 0)
 
#define SMI_STS   0x34
 
#define SMI_STS_BITS   32
 
#define XHCI_SMI_STS_BIT   31
 
#define ME_SMI_STS_BIT   30
 
#define SERIAL_IO_SMI_STS_BIT   29
 
#define ESPI_SMI_STS_BIT   28
 
#define GPIO_UNLOCK_SMI_STS_BIT   27
 
#define SPI_SMI_STS_BIT   26
 
#define SCC_SMI_STS_BIT   25
 
#define IE_SMI_STS_BIT   23
 
#define MONITOR_STS_BIT   21
 
#define PCI_EXP_SMI_STS_BIT   20
 
#define SMBUS_SMI_STS_BIT   16
 
#define SERIRQ_SMI_STS_BIT   15
 
#define PERIODIC_STS_BIT   14
 
#define TCO_STS_BIT   13
 
#define DEVMON_STS_BIT   12
 
#define MCSMI_STS_BIT   11
 
#define GPIO_STS_BIT   10
 
#define GPE0_STS_BIT   9
 
#define PM1_STS_BIT   8
 
#define SWSMI_TMR_STS_BIT   6
 
#define APM_STS_BIT   5
 
#define SMI_ON_SLP_EN_STS_BIT   4
 
#define LEGACY_USB_STS_BIT   3
 
#define BIOS_STS_BIT   2
 
#define GPE_CNTL   0x42
 
#define SWGPE_CTRL   (1 << 1)
 
#define DEVACT_STS   0x44
 
#define PM2_CNT   0x50
 
#define GPE0_REG_MAX   4
 
#define GPE0_REG_SIZE   32
 
#define GPE0_STS(x)   (0x80 + ((x) * 4))
 
#define GPE0_EN(x)   (0x90 + ((x) * 4))
 
#define GPE_STD   3 /* 0x8c/0x9c = Standard GPE */
 
#define GPE_STS_RSVD   GPE_STD
 
#define GPIO_T2_STS   (1 << 15)
 
#define PME_B0_STS   (1 << 13)
 
#define PME_STS   (1 << 11)
 
#define PCI_EXP_STS   (1 << 9)
 
#define SMB_WAK_STS   (1 << 7)
 
#define TCOSCI_STS   (1 << 6)
 
#define GPE0_EN(x)   (0x90 + ((x) * 4))
 
#define GPIO_T2_EN   (1 << 15)
 
#define ESPI_EN   (1 << 14)
 
#define PME_B0_EN   (1 << 13)
 
#define PME_EN   (1 << 11)
 
#define PCI_EXP_EN   (1 << 9)
 
#define TCOSCI_EN   (1 << 6)
 
#define ENABLE_SMI_PARAMS    (APMC_EN | GBL_SMI_EN | EOS)
 
#define PSS_MAX_ENTRIES   16
 
#define PSS_RATIO_STEP   1
 
#define PSS_LATENCY_TRANSITION   10
 
#define PSS_LATENCY_BUSMASTER   10
 
#define ETR   0xac
 
#define CF9_LOCK   (1 << 31)
 
#define CF9_GLB_RST   (1 << 20)
 
#define PRSTS   0x10
 

Functions

uint8_tpmc_mmio_regs (void)
 
uint16_t get_pmbase (void)
 
void pmc_lock_smi (void)
 

Variables

struct chipset_power_state __packed
 

Macro Definition Documentation

◆ APM_STS_BIT

#define APM_STS_BIT   5

Definition at line 59 of file pm.h.

◆ APMC_EN

#define APMC_EN   (1 << 5)

Definition at line 32 of file pm.h.

◆ BIOS_EN

#define BIOS_EN   (1 << 2)

Definition at line 34 of file pm.h.

◆ BIOS_STS_BIT

#define BIOS_STS_BIT   2

Definition at line 62 of file pm.h.

◆ CF9_GLB_RST

#define CF9_GLB_RST   (1 << 20)

Definition at line 99 of file pm.h.

◆ CF9_LOCK

#define CF9_LOCK   (1 << 31)

Definition at line 98 of file pm.h.

◆ DEVACT_STS

#define DEVACT_STS   0x44

Definition at line 65 of file pm.h.

◆ DEVMON_STS_BIT

#define DEVMON_STS_BIT   12

Definition at line 53 of file pm.h.

◆ ENABLE_SMI_PARAMS

#define ENABLE_SMI_PARAMS    (APMC_EN | GBL_SMI_EN | EOS)

Definition at line 87 of file pm.h.

◆ EOS

#define EOS   (1 << 1)

Definition at line 35 of file pm.h.

◆ ESPI_EN

#define ESPI_EN   (1 << 14)

Definition at line 81 of file pm.h.

◆ ESPI_SMI_EN

#define ESPI_SMI_EN   (1 << 28)

Definition at line 29 of file pm.h.

◆ ESPI_SMI_STS_BIT

#define ESPI_SMI_STS_BIT   28

Definition at line 42 of file pm.h.

◆ ETR

#define ETR   0xac

Definition at line 97 of file pm.h.

◆ GBL_EN

#define GBL_EN   (1 << 5)

Definition at line 22 of file pm.h.

◆ GBL_RLS

#define GBL_RLS   (1 << 2)

Definition at line 25 of file pm.h.

◆ GBL_SMI_EN

#define GBL_SMI_EN   (1 << 0)

Definition at line 36 of file pm.h.

◆ GBL_STS

#define GBL_STS   (1 << 5)

Definition at line 18 of file pm.h.

◆ GPE0_EN [1/2]

#define GPE0_EN (   x)    (0x90 + ((x) * 4))

Definition at line 79 of file pm.h.

◆ GPE0_EN [2/2]

#define GPE0_EN (   x)    (0x90 + ((x) * 4))

Definition at line 79 of file pm.h.

◆ GPE0_REG_MAX

#define GPE0_REG_MAX   4

Definition at line 67 of file pm.h.

◆ GPE0_REG_SIZE

#define GPE0_REG_SIZE   32

Definition at line 68 of file pm.h.

◆ GPE0_STS

#define GPE0_STS (   x)    (0x80 + ((x) * 4))

Definition at line 69 of file pm.h.

◆ GPE0_STS_BIT

#define GPE0_STS_BIT   9

Definition at line 56 of file pm.h.

◆ GPE_CNTL

#define GPE_CNTL   0x42

Definition at line 63 of file pm.h.

◆ GPE_STD

#define GPE_STD   3 /* 0x8c/0x9c = Standard GPE */

Definition at line 71 of file pm.h.

◆ GPE_STS_RSVD

#define GPE_STS_RSVD   GPE_STD

Definition at line 72 of file pm.h.

◆ GPIO_STS_BIT

#define GPIO_STS_BIT   10

Definition at line 55 of file pm.h.

◆ GPIO_T2_EN

#define GPIO_T2_EN   (1 << 15)

Definition at line 80 of file pm.h.

◆ GPIO_T2_STS

#define GPIO_T2_STS   (1 << 15)

Definition at line 73 of file pm.h.

◆ GPIO_UNLOCK_SMI_STS_BIT

#define GPIO_UNLOCK_SMI_STS_BIT   27

Definition at line 43 of file pm.h.

◆ IE_SMI_STS_BIT

#define IE_SMI_STS_BIT   23

Definition at line 46 of file pm.h.

◆ LEGACY_USB_STS_BIT

#define LEGACY_USB_STS_BIT   3

Definition at line 61 of file pm.h.

◆ MCSMI_STS_BIT

#define MCSMI_STS_BIT   11

Definition at line 54 of file pm.h.

◆ ME_SMI_STS_BIT

#define ME_SMI_STS_BIT   30

Definition at line 40 of file pm.h.

◆ MONITOR_STS_BIT

#define MONITOR_STS_BIT   21

Definition at line 47 of file pm.h.

◆ PCI_EXP_EN

#define PCI_EXP_EN   (1 << 9)

Definition at line 84 of file pm.h.

◆ PCI_EXP_SMI_STS_BIT

#define PCI_EXP_SMI_STS_BIT   20

Definition at line 48 of file pm.h.

◆ PCI_EXP_STS

#define PCI_EXP_STS   (1 << 9)

Definition at line 76 of file pm.h.

◆ PCIEXPWAK_STS

#define PCIEXPWAK_STS   (1 << 14)

Definition at line 14 of file pm.h.

◆ PERIODIC_EN

#define PERIODIC_EN   (1 << 14)

Definition at line 30 of file pm.h.

◆ PERIODIC_STS_BIT

#define PERIODIC_STS_BIT   14

Definition at line 51 of file pm.h.

◆ PM1_CNT

#define PM1_CNT   0x04

Definition at line 24 of file pm.h.

◆ PM1_EN

#define PM1_EN   0x02

Definition at line 19 of file pm.h.

◆ PM1_STS

#define PM1_STS   0x00

Definition at line 12 of file pm.h.

◆ PM1_STS_BIT

#define PM1_STS_BIT   8

Definition at line 57 of file pm.h.

◆ PM1_TMR

#define PM1_TMR   0x08

Definition at line 27 of file pm.h.

◆ PM2_CNT

#define PM2_CNT   0x50

Definition at line 66 of file pm.h.

◆ PME_B0_EN

#define PME_B0_EN   (1 << 13)

Definition at line 82 of file pm.h.

◆ PME_B0_STS

#define PME_B0_STS   (1 << 13)

Definition at line 74 of file pm.h.

◆ PME_EN

#define PME_EN   (1 << 11)

Definition at line 83 of file pm.h.

◆ PME_STS

#define PME_STS   (1 << 11)

Definition at line 75 of file pm.h.

◆ PRBTNOR_STS

#define PRBTNOR_STS   (1 << 11)

Definition at line 15 of file pm.h.

◆ PRSTS

#define PRSTS   0x10

Definition at line 101 of file pm.h.

◆ PSS_LATENCY_BUSMASTER

#define PSS_LATENCY_BUSMASTER   10

Definition at line 94 of file pm.h.

◆ PSS_LATENCY_TRANSITION

#define PSS_LATENCY_TRANSITION   10

Definition at line 93 of file pm.h.

◆ PSS_MAX_ENTRIES

#define PSS_MAX_ENTRIES   16

Definition at line 91 of file pm.h.

◆ PSS_RATIO_STEP

#define PSS_RATIO_STEP   1

Definition at line 92 of file pm.h.

◆ PWRBTN_EN

#define PWRBTN_EN   (1 << 8)

Definition at line 21 of file pm.h.

◆ PWRBTN_STS

#define PWRBTN_STS   (1 << 8)

Definition at line 17 of file pm.h.

◆ RTC_EN

#define RTC_EN   (1 << 10)

Definition at line 20 of file pm.h.

◆ RTC_STS

#define RTC_STS   (1 << 10)

Definition at line 16 of file pm.h.

◆ SCC_SMI_STS_BIT

#define SCC_SMI_STS_BIT   25

Definition at line 45 of file pm.h.

◆ SCI_EN

#define SCI_EN   (1 << 0)

Definition at line 26 of file pm.h.

◆ SERIAL_IO_SMI_STS_BIT

#define SERIAL_IO_SMI_STS_BIT   29

Definition at line 41 of file pm.h.

◆ SERIRQ_SMI_STS_BIT

#define SERIRQ_SMI_STS_BIT   15

Definition at line 50 of file pm.h.

◆ SLP_SMI_EN

#define SLP_SMI_EN   (1 << 4)

Definition at line 33 of file pm.h.

◆ SMB_WAK_STS

#define SMB_WAK_STS   (1 << 7)

Definition at line 77 of file pm.h.

◆ SMBUS_SMI_STS_BIT

#define SMBUS_SMI_STS_BIT   16

Definition at line 49 of file pm.h.

◆ SMI_EN

#define SMI_EN   0x30

Definition at line 28 of file pm.h.

◆ SMI_ON_SLP_EN_STS_BIT

#define SMI_ON_SLP_EN_STS_BIT   4

Definition at line 60 of file pm.h.

◆ SMI_STS

#define SMI_STS   0x34

Definition at line 37 of file pm.h.

◆ SMI_STS_BITS

#define SMI_STS_BITS   32

Definition at line 38 of file pm.h.

◆ SPI_SMI_STS_BIT

#define SPI_SMI_STS_BIT   26

Definition at line 44 of file pm.h.

◆ SWGPE_CTRL

#define SWGPE_CTRL   (1 << 1)

Definition at line 64 of file pm.h.

◆ SWSMI_TMR_STS_BIT

#define SWSMI_TMR_STS_BIT   6

Definition at line 58 of file pm.h.

◆ TCO_SMI_EN

#define TCO_SMI_EN   (1 << 13)

Definition at line 31 of file pm.h.

◆ TCO_STS_BIT

#define TCO_STS_BIT   13

Definition at line 52 of file pm.h.

◆ TCOSCI_EN

#define TCOSCI_EN   (1 << 6)

Definition at line 85 of file pm.h.

◆ TCOSCI_STS

#define TCOSCI_STS   (1 << 6)

Definition at line 78 of file pm.h.

◆ TMROF_EN

#define TMROF_EN   (1 << 0)

Definition at line 23 of file pm.h.

◆ WAK_STS

#define WAK_STS   (1 << 15)

Definition at line 13 of file pm.h.

◆ XHCI_SMI_STS_BIT

#define XHCI_SMI_STS_BIT   31

Definition at line 39 of file pm.h.

Function Documentation

◆ get_pmbase()

uint16_t get_pmbase ( void  )

Definition at line 254 of file pmutil.c.

◆ pmc_lock_smi()

void pmc_lock_smi ( void  )

Definition at line 57 of file pmc.c.

References BIOS_DEBUG, GEN_PMCON_A, PCH_DEV_PMC, pci_or_config32(), printk, and SMI_LOCK.

Here is the call graph for this function:

◆ pmc_mmio_regs()

uint8_t* pmc_mmio_regs ( void  )

Definition at line 142 of file pmutil.c.

References PCH_DEV_PMC, PCH_PWRM_BASE_ADDRESS, pci_read_config32(), PMC_PWRM_BASE, and PWRMBASE.

Referenced by clear_rtc_failed(), deep_s3_enabled(), pmc_set_disb(), pmc_soc_set_afterg3_en(), soc_fill_power_state(), soc_read_pmc_base(), and vbnv_cmos_failed().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ __packed