36 struct device *pciePort[6];
37 int i, slot_number = 1;
40 for (i = 0; i < 6; ++i) {
44 die(
" is not listed in devicetree.\n");
51 for (i = 0; i < 6; ++i) {
58 for (i = 5; (i >= 0) && !pciePort[i]->
enabled; --i) {
64 for (i = 0; i < 6; ++i) {
65 struct device *
const dev = pciePort[i];
67 if (
info->pcie_slot_implemented & (1 << i))
73 if (
info->pcie_slot_implemented & (1 << i)) {
75 slcap &= ~(0x1fff << 19);
76 slcap |= (slot_number++ << 19);
77 slcap &= ~(0x0003 << 16);
78 slcap |= (
info->pcie_power_limits[i].scale << 16);
79 slcap &= ~(0x00ff << 7);
80 slcap |= (
info->pcie_power_limits[i].value << 7);
86 for (i = 0; i < 6; ++i)
94 die(
"EHCI controller (00:1d.7) not listed in devicetree.\n");
97 die(
"EHCI controller (00:1a.7) not listed in devicetree.\n");
105 (1 << 29) | (1 << 17) | (2 << 2));
108 (1 << 29) | (1 << 17) | (2 << 2));
116 "PCI device 00:%x.%x",
118 die(
" is not listed in devicetree.\n");
163 reg32 |= functions[i].
mask;
171 for (i = 0; i < 6; ++i) {
173 reg32 |= (1 << ((i * 4) + 3));
199 #if !CONFIG(HAVE_SMI_HANDLER)
206 CHIP_NAME(
"Intel ICH9/ICH9-M (82801Ix) Series Southbridge")
#define printk(level,...)
void __noreturn die(const char *fmt,...)
void outw(u16 val, u16 port)
DEVTREE_CONST struct device * pcidev_path_on_root(pci_devfn_t devfn)
DEVTREE_CONST struct device * pcidev_on_root(uint8_t dev, uint8_t fn)
static struct smmstore_params_info info
static void i82801ix_ehci_init(void)
static void i82801ix_pcie_init(const config_t *const info)
static int i82801ix_function_disabled(const unsigned int devfn)
static void i82801ix_init(void *chip_info)
static void i82801ix_hide_functions(void)
static void i82801ix_enable_device(struct device *dev)
static void i82801ix_early_settings(const config_t *const info)
struct chip_operations southbridge_intel_i82801ix_ops
#define LPC_IS_MOBILE(dev)
static __always_inline void pci_or_config32(const struct device *dev, u16 reg, u32 ormask)
static __always_inline void pci_write_config32(const struct device *dev, u16 reg, u32 val)
static __always_inline void pci_update_config32(const struct device *dev, u16 reg, u32 mask, u32 or)
static __always_inline void pci_or_config16(const struct device *dev, u16 reg, u16 ormask)
static __always_inline u32 pci_read_config32(const struct device *dev, u16 reg)
static __always_inline void pci_write_config8(const struct device *dev, u16 reg, u8 val)
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
#define BIOS_EMERG
BIOS_EMERG - Emergency / Fatal.
#define PCI_DEVFN(slot, func)
#define PCI_EXP_FLAGS_SLOT