coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
i82801dx.h File Reference
#include <acpi/acpi.h>
#include <device/device.h>
Include dependency graph for i82801dx.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define DEBUG_PERIODIC_SMIS   0
 
#define MAINBOARD_POWER_OFF   0
 
#define MAINBOARD_POWER_ON   1
 
#define MAINBOARD_POWER_KEEP   2
 
#define IDE_TIM_PRI   0x40 /* IDE timings, primary */
 
#define IDE_TIM_SEC   0x42 /* IDE timings, secondary */
 
#define IDE_DECODE_ENABLE   (1 << 15)
 
#define PCI_DMA_CFG   0x90
 
#define SERIRQ_CNTL   0x64
 
#define GEN_CNTL   0xd0
 
#define GEN_STS   0xd4
 
#define RTC_CONF   0xd8
 
#define GEN_PMCON_3   0xa4
 
#define PCICMD   0x04
 
#define PMBASE   0x40
 
#define PMBASE_ADDR   0x0400
 
#define DEFAULT_PMBASE   PMBASE_ADDR
 
#define ACPI_CNTL   0x44
 
#define ACPI_EN   (1 << 4)
 
#define BIOS_CNTL   0x4E
 
#define GPIO_BASE   0x58
 
#define GPIO_CNTL   0x5C
 
#define GPIOBASE_ADDR   0x0500
 
#define PIRQA_ROUT   0x60
 
#define PIRQB_ROUT   0x61
 
#define PIRQC_ROUT   0x62
 
#define PIRQD_ROUT   0x63
 
#define PIRQE_ROUT   0x68
 
#define PIRQF_ROUT   0x69
 
#define PIRQG_ROUT   0x6A
 
#define PIRQH_ROUT   0x6B
 
#define COM_DEC   0xE0
 
#define LPC_EN   0xE6
 
#define FUNC_DIS   0xF2
 
#define CMD   0x04
 
#define SBUS_NUM   0x19
 
#define SUB_BUS_NUM   0x1A
 
#define SMLT   0x1B
 
#define IOBASE   0x1C
 
#define IOLIM   0x1D
 
#define MEMBASE   0x20
 
#define MEMLIM   0x22
 
#define CNF   0x50
 
#define MTT   0x70
 
#define PCI_MAST_STS   0x82
 
#define RTC_FAILED   (1 <<2)
 
#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 BM_STS   (1 << 4)
 
#define TMROF_STS   (1 << 0)
 
#define PM1_EN   0x02
 
#define PCIEXPWAK_DIS   (1 << 14)
 
#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 BM_RLD   (1 << 1)
 
#define SCI_EN   (1 << 0)
 
#define PM1_TMR   0x08
 
#define PROC_CNT   0x10
 
#define LV2   0x14
 
#define LV3   0x15
 
#define LV4   0x16
 
#define PM2_CNT   0x20
 
#define GPE0_STS   0x28
 
#define PME_B0_STS   (1 << 13)
 
#define USB3_STS   (1 << 12)
 
#define PME_STS   (1 << 11)
 
#define BATLOW_STS   (1 << 10)
 
#define GST_STS   (1 << 9)
 
#define RI_STS   (1 << 8)
 
#define SMB_WAK_STS   (1 << 7)
 
#define TCOSCI_STS   (1 << 6)
 
#define AC97_STS   (1 << 5)
 
#define USB2_STS   (1 << 4)
 
#define USB1_STS   (1 << 3)
 
#define SWGPE_STS   (1 << 2)
 
#define HOT_PLUG_STS   (1 << 1)
 
#define THRM_STS   (1 << 0)
 
#define GPE0_EN   0x2c
 
#define PME_B0_EN   (1 << 13)
 
#define PME_EN   (1 << 11)
 
#define SMI_EN   0x30
 
#define EL_SMI_EN   (1 << 25)
 
#define INTEL_USB2_EN   (1 << 18)
 
#define LEGACY_USB2_EN   (1 << 17)
 
#define PERIODIC_EN   (1 << 14)
 
#define TCO_EN   (1 << 13)
 
#define MCSMI_EN   (1 << 11)
 
#define BIOS_RLS   (1 << 7)
 
#define SWSMI_TMR_EN   (1 << 6)
 
#define APMC_EN   (1 << 5)
 
#define SLP_SMI_EN   (1 << 4)
 
#define LEGACY_USB_EN   (1 << 3)
 
#define BIOS_EN   (1 << 2)
 
#define EOS   (1 << 1)
 
#define GBL_SMI_EN   (1 << 0)
 
#define SMI_STS   0x34
 
#define ALT_GP_SMI_EN   0x38
 
#define ALT_GP_SMI_STS   0x3a
 
#define GPE_CNTL   0x42
 
#define DEVACT_STS   0x44
 
#define SS_CNT   0x50
 
#define C3_RES   0x54
 
#define TCOBASE   0x60 /* TCO Base Address Register */
 
#define TCO1_CNT   0x08 /* TCO1 Control Register */
 
#define GEN_PMCON_1   0xa0
 
#define GEN_PMCON_2   0xa2
 
#define GEN_PMCON_3   0xa4
 
#define RTC_BATTERY_DEAD   (1 << 2)
 
#define RTC_POWER_FAILED   (1 << 1)
 
#define SLEEP_AFTER_POWER_FAIL   (1 << 0)
 

Functions

void i82801dx_enable (struct device *dev)
 
void i82801dx_early_init (void)
 
void aseg_smm_lock (void)
 

Macro Definition Documentation

◆ AC97_STS

#define AC97_STS   (1 << 5)

Definition at line 128 of file i82801dx.h.

◆ ACPI_CNTL

#define ACPI_CNTL   0x44

Definition at line 60 of file i82801dx.h.

◆ ACPI_EN

#define ACPI_EN   (1 << 4)

Definition at line 61 of file i82801dx.h.

◆ ALT_GP_SMI_EN

#define ALT_GP_SMI_EN   0x38

Definition at line 153 of file i82801dx.h.

◆ ALT_GP_SMI_STS

#define ALT_GP_SMI_STS   0x3a

Definition at line 154 of file i82801dx.h.

◆ APMC_EN

#define APMC_EN   (1 << 5)

Definition at line 146 of file i82801dx.h.

◆ BATLOW_STS

#define BATLOW_STS   (1 << 10)

Definition at line 123 of file i82801dx.h.

◆ BIOS_CNTL

#define BIOS_CNTL   0x4E

Definition at line 62 of file i82801dx.h.

◆ BIOS_EN

#define BIOS_EN   (1 << 2)

Definition at line 149 of file i82801dx.h.

◆ BIOS_RLS

#define BIOS_RLS   (1 << 7)

Definition at line 144 of file i82801dx.h.

◆ BM_RLD

#define BM_RLD   (1 << 1)

Definition at line 111 of file i82801dx.h.

◆ BM_STS

#define BM_STS   (1 << 4)

Definition at line 101 of file i82801dx.h.

◆ C3_RES

#define C3_RES   0x54

Definition at line 158 of file i82801dx.h.

◆ CMD

#define CMD   0x04

Definition at line 80 of file i82801dx.h.

◆ CNF

#define CNF   0x50

Definition at line 88 of file i82801dx.h.

◆ COM_DEC

#define COM_DEC   0xE0

Definition at line 74 of file i82801dx.h.

◆ DEBUG_PERIODIC_SMIS

#define DEBUG_PERIODIC_SMIS   0

Definition at line 26 of file i82801dx.h.

◆ DEFAULT_PMBASE

#define DEFAULT_PMBASE   PMBASE_ADDR

Definition at line 59 of file i82801dx.h.

◆ DEVACT_STS

#define DEVACT_STS   0x44

Definition at line 156 of file i82801dx.h.

◆ EL_SMI_EN

#define EL_SMI_EN   (1 << 25)

Definition at line 138 of file i82801dx.h.

◆ EOS

#define EOS   (1 << 1)

Definition at line 150 of file i82801dx.h.

◆ FUNC_DIS

#define FUNC_DIS   0xF2

Definition at line 76 of file i82801dx.h.

◆ GBL_EN

#define GBL_EN   (1 << 5)

Definition at line 107 of file i82801dx.h.

◆ GBL_RLS

#define GBL_RLS   (1 << 2)

Definition at line 110 of file i82801dx.h.

◆ GBL_SMI_EN

#define GBL_SMI_EN   (1 << 0)

Definition at line 151 of file i82801dx.h.

◆ GBL_STS

#define GBL_STS   (1 << 5)

Definition at line 100 of file i82801dx.h.

◆ GEN_CNTL

#define GEN_CNTL   0xd0

Definition at line 51 of file i82801dx.h.

◆ GEN_PMCON_1

#define GEN_PMCON_1   0xa0

Definition at line 163 of file i82801dx.h.

◆ GEN_PMCON_2

#define GEN_PMCON_2   0xa2

Definition at line 164 of file i82801dx.h.

◆ GEN_PMCON_3 [1/2]

#define GEN_PMCON_3   0xa4

Definition at line 165 of file i82801dx.h.

◆ GEN_PMCON_3 [2/2]

#define GEN_PMCON_3   0xa4

Definition at line 165 of file i82801dx.h.

◆ GEN_STS

#define GEN_STS   0xd4

Definition at line 52 of file i82801dx.h.

◆ GPE0_EN

#define GPE0_EN   0x2c

Definition at line 134 of file i82801dx.h.

◆ GPE0_STS

#define GPE0_STS   0x28

Definition at line 119 of file i82801dx.h.

◆ GPE_CNTL

#define GPE_CNTL   0x42

Definition at line 155 of file i82801dx.h.

◆ GPIO_BASE

#define GPIO_BASE   0x58

Definition at line 63 of file i82801dx.h.

◆ GPIO_CNTL

#define GPIO_CNTL   0x5C

Definition at line 64 of file i82801dx.h.

◆ GPIOBASE_ADDR

#define GPIOBASE_ADDR   0x0500

Definition at line 65 of file i82801dx.h.

◆ GST_STS

#define GST_STS   (1 << 9)

Definition at line 124 of file i82801dx.h.

◆ HOT_PLUG_STS

#define HOT_PLUG_STS   (1 << 1)

Definition at line 132 of file i82801dx.h.

◆ IDE_DECODE_ENABLE

#define IDE_DECODE_ENABLE   (1 << 15)

Definition at line 47 of file i82801dx.h.

◆ IDE_TIM_PRI

#define IDE_TIM_PRI   0x40 /* IDE timings, primary */

Definition at line 43 of file i82801dx.h.

◆ IDE_TIM_SEC

#define IDE_TIM_SEC   0x42 /* IDE timings, secondary */

Definition at line 44 of file i82801dx.h.

◆ INTEL_USB2_EN

#define INTEL_USB2_EN   (1 << 18)

Definition at line 139 of file i82801dx.h.

◆ IOBASE

#define IOBASE   0x1C

Definition at line 84 of file i82801dx.h.

◆ IOLIM

#define IOLIM   0x1D

Definition at line 85 of file i82801dx.h.

◆ LEGACY_USB2_EN

#define LEGACY_USB2_EN   (1 << 17)

Definition at line 140 of file i82801dx.h.

◆ LEGACY_USB_EN

#define LEGACY_USB_EN   (1 << 3)

Definition at line 148 of file i82801dx.h.

◆ LPC_EN

#define LPC_EN   0xE6

Definition at line 75 of file i82801dx.h.

◆ LV2

#define LV2   0x14

Definition at line 115 of file i82801dx.h.

◆ LV3

#define LV3   0x15

Definition at line 116 of file i82801dx.h.

◆ LV4

#define LV4   0x16

Definition at line 117 of file i82801dx.h.

◆ MAINBOARD_POWER_KEEP

#define MAINBOARD_POWER_KEEP   2

Definition at line 30 of file i82801dx.h.

◆ MAINBOARD_POWER_OFF

#define MAINBOARD_POWER_OFF   0

Definition at line 28 of file i82801dx.h.

◆ MAINBOARD_POWER_ON

#define MAINBOARD_POWER_ON   1

Definition at line 29 of file i82801dx.h.

◆ MCSMI_EN

#define MCSMI_EN   (1 << 11)

Definition at line 143 of file i82801dx.h.

◆ MEMBASE

#define MEMBASE   0x20

Definition at line 86 of file i82801dx.h.

◆ MEMLIM

#define MEMLIM   0x22

Definition at line 87 of file i82801dx.h.

◆ MTT

#define MTT   0x70

Definition at line 89 of file i82801dx.h.

◆ PCI_DMA_CFG

#define PCI_DMA_CFG   0x90

Definition at line 49 of file i82801dx.h.

◆ PCI_MAST_STS

#define PCI_MAST_STS   0x82

Definition at line 90 of file i82801dx.h.

◆ PCICMD

#define PCICMD   0x04

Definition at line 56 of file i82801dx.h.

◆ PCIEXPWAK_DIS

#define PCIEXPWAK_DIS   (1 << 14)

Definition at line 104 of file i82801dx.h.

◆ PCIEXPWAK_STS

#define PCIEXPWAK_STS   (1 << 14)

Definition at line 96 of file i82801dx.h.

◆ PERIODIC_EN

#define PERIODIC_EN   (1 << 14)

Definition at line 141 of file i82801dx.h.

◆ PIRQA_ROUT

#define PIRQA_ROUT   0x60

Definition at line 66 of file i82801dx.h.

◆ PIRQB_ROUT

#define PIRQB_ROUT   0x61

Definition at line 67 of file i82801dx.h.

◆ PIRQC_ROUT

#define PIRQC_ROUT   0x62

Definition at line 68 of file i82801dx.h.

◆ PIRQD_ROUT

#define PIRQD_ROUT   0x63

Definition at line 69 of file i82801dx.h.

◆ PIRQE_ROUT

#define PIRQE_ROUT   0x68

Definition at line 70 of file i82801dx.h.

◆ PIRQF_ROUT

#define PIRQF_ROUT   0x69

Definition at line 71 of file i82801dx.h.

◆ PIRQG_ROUT

#define PIRQG_ROUT   0x6A

Definition at line 72 of file i82801dx.h.

◆ PIRQH_ROUT

#define PIRQH_ROUT   0x6B

Definition at line 73 of file i82801dx.h.

◆ PM1_CNT

#define PM1_CNT   0x04

Definition at line 109 of file i82801dx.h.

◆ PM1_EN

#define PM1_EN   0x02

Definition at line 103 of file i82801dx.h.

◆ PM1_STS

#define PM1_STS   0x00

Definition at line 94 of file i82801dx.h.

◆ PM1_TMR

#define PM1_TMR   0x08

Definition at line 113 of file i82801dx.h.

◆ PM2_CNT

#define PM2_CNT   0x20

Definition at line 118 of file i82801dx.h.

◆ PMBASE

#define PMBASE   0x40

Definition at line 57 of file i82801dx.h.

◆ PMBASE_ADDR

#define PMBASE_ADDR   0x0400

Definition at line 58 of file i82801dx.h.

◆ PME_B0_EN

#define PME_B0_EN   (1 << 13)

Definition at line 135 of file i82801dx.h.

◆ PME_B0_STS

#define PME_B0_STS   (1 << 13)

Definition at line 120 of file i82801dx.h.

◆ PME_EN

#define PME_EN   (1 << 11)

Definition at line 136 of file i82801dx.h.

◆ PME_STS

#define PME_STS   (1 << 11)

Definition at line 122 of file i82801dx.h.

◆ PRBTNOR_STS

#define PRBTNOR_STS   (1 << 11)

Definition at line 97 of file i82801dx.h.

◆ PROC_CNT

#define PROC_CNT   0x10

Definition at line 114 of file i82801dx.h.

◆ PWRBTN_EN

#define PWRBTN_EN   (1 << 8)

Definition at line 106 of file i82801dx.h.

◆ PWRBTN_STS

#define PWRBTN_STS   (1 << 8)

Definition at line 99 of file i82801dx.h.

◆ RI_STS

#define RI_STS   (1 << 8)

Definition at line 125 of file i82801dx.h.

◆ RTC_BATTERY_DEAD

#define RTC_BATTERY_DEAD   (1 << 2)

Definition at line 168 of file i82801dx.h.

◆ RTC_CONF

#define RTC_CONF   0xd8

Definition at line 53 of file i82801dx.h.

◆ RTC_EN

#define RTC_EN   (1 << 10)

Definition at line 105 of file i82801dx.h.

◆ RTC_FAILED

#define RTC_FAILED   (1 <<2)

Definition at line 92 of file i82801dx.h.

◆ RTC_POWER_FAILED

#define RTC_POWER_FAILED   (1 << 1)

Definition at line 169 of file i82801dx.h.

◆ RTC_STS

#define RTC_STS   (1 << 10)

Definition at line 98 of file i82801dx.h.

◆ SBUS_NUM

#define SBUS_NUM   0x19

Definition at line 81 of file i82801dx.h.

◆ SCI_EN

#define SCI_EN   (1 << 0)

Definition at line 112 of file i82801dx.h.

◆ SERIRQ_CNTL

#define SERIRQ_CNTL   0x64

Definition at line 50 of file i82801dx.h.

◆ SLEEP_AFTER_POWER_FAIL

#define SLEEP_AFTER_POWER_FAIL   (1 << 0)

Definition at line 170 of file i82801dx.h.

◆ SLP_SMI_EN

#define SLP_SMI_EN   (1 << 4)

Definition at line 147 of file i82801dx.h.

◆ SMB_WAK_STS

#define SMB_WAK_STS   (1 << 7)

Definition at line 126 of file i82801dx.h.

◆ SMI_EN

#define SMI_EN   0x30

Definition at line 137 of file i82801dx.h.

◆ SMI_STS

#define SMI_STS   0x34

Definition at line 152 of file i82801dx.h.

◆ SMLT

#define SMLT   0x1B

Definition at line 83 of file i82801dx.h.

◆ SS_CNT

#define SS_CNT   0x50

Definition at line 157 of file i82801dx.h.

◆ SUB_BUS_NUM

#define SUB_BUS_NUM   0x1A

Definition at line 82 of file i82801dx.h.

◆ SWGPE_STS

#define SWGPE_STS   (1 << 2)

Definition at line 131 of file i82801dx.h.

◆ SWSMI_TMR_EN

#define SWSMI_TMR_EN   (1 << 6)

Definition at line 145 of file i82801dx.h.

◆ TCO1_CNT

#define TCO1_CNT   0x08 /* TCO1 Control Register */

Definition at line 161 of file i82801dx.h.

◆ TCO_EN

#define TCO_EN   (1 << 13)

Definition at line 142 of file i82801dx.h.

◆ TCOBASE

#define TCOBASE   0x60 /* TCO Base Address Register */

Definition at line 160 of file i82801dx.h.

◆ TCOSCI_STS

#define TCOSCI_STS   (1 << 6)

Definition at line 127 of file i82801dx.h.

◆ THRM_STS

#define THRM_STS   (1 << 0)

Definition at line 133 of file i82801dx.h.

◆ TMROF_EN

#define TMROF_EN   (1 << 0)

Definition at line 108 of file i82801dx.h.

◆ TMROF_STS

#define TMROF_STS   (1 << 0)

Definition at line 102 of file i82801dx.h.

◆ USB1_STS

#define USB1_STS   (1 << 3)

Definition at line 130 of file i82801dx.h.

◆ USB2_STS

#define USB2_STS   (1 << 4)

Definition at line 129 of file i82801dx.h.

◆ USB3_STS

#define USB3_STS   (1 << 12)

Definition at line 121 of file i82801dx.h.

◆ WAK_STS

#define WAK_STS   (1 << 15)

Definition at line 95 of file i82801dx.h.

Function Documentation

◆ aseg_smm_lock()

void aseg_smm_lock ( void  )

Definition at line 315 of file smi.c.

References BIOS_DEBUG, C_BASE_SEG, D_LCK, G_SMRAME, northbridge_write_smram(), and printk.

Referenced by lpc_init().

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

◆ i82801dx_early_init()

void i82801dx_early_init ( void  )

Definition at line 6 of file early_smbus.c.

References enable_smbus().

Referenced by mainboard_romstage_entry().

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

◆ i82801dx_enable()

void i82801dx_enable ( struct device dev)

Definition at line 8 of file i82801dx.c.

References pci_path::devfn, device::enabled, FUNC_DIS, device::path, device_path::pci, PCI_DEVFN, PCI_FUNC, pci_read_config16(), PCI_SLOT, pci_write_config16(), and pcidev_path_on_root().

Here is the call graph for this function: