53 (1 << 7) | (1 << 6) | ((21 - 17) << 2) | (0 << 0));
54 #if !CONFIG(SERIRQ_CONTINUOUS_MODE)
56 (1 << 7) | (0 << 6) | ((21 - 17) << 2) | (0 << 0));
66 for (i = 0; i < 8; ++i)
121 u8 int_pin = 0, int_line = 0;
152 reg32 |= (
config->gpi0_routing & 0x03) << 0;
153 reg32 |= (
config->gpi1_routing & 0x03) << 2;
154 reg32 |= (
config->gpi2_routing & 0x03) << 4;
155 reg32 |= (
config->gpi3_routing & 0x03) << 6;
156 reg32 |= (
config->gpi4_routing & 0x03) << 8;
157 reg32 |= (
config->gpi5_routing & 0x03) << 10;
158 reg32 |= (
config->gpi6_routing & 0x03) << 12;
159 reg32 |= (
config->gpi7_routing & 0x03) << 14;
160 reg32 |= (
config->gpi8_routing & 0x03) << 16;
161 reg32 |= (
config->gpi9_routing & 0x03) << 18;
162 reg32 |= (
config->gpi10_routing & 0x03) << 20;
163 reg32 |= (
config->gpi11_routing & 0x03) << 22;
164 reg32 |= (
config->gpi12_routing & 0x03) << 24;
165 reg32 |= (
config->gpi13_routing & 0x03) << 26;
166 reg32 |= (
config->gpi14_routing & 0x03) << 28;
167 reg32 |= (
config->gpi15_routing & 0x03) << 30;
187 CONFIG_MAINBOARD_POWER_FAILURE_STATE);
202 state =
"state keep";
270 reg32 |= (1 << 4) | (1 << 5) | (1 << 0);
336 RCBA32(0x2304) = 0xc07b8400;
345 RCBA32(0x3314) = 0x000007bf;
350 RCBA32(0x3324) = 0x04000000;
351 RCBA32(0x3340) = 0x020ddbff;
355 RCBA32(0x3368) = 0x00041000;
356 RCBA32(0x3378) = 0x3f8ddbff;
357 RCBA32(0x337c) = 0x000001e1;
358 RCBA32(0x3388) = 0x00001000;
359 RCBA32(0x33a0) = 0x00000800;
360 RCBA32(0x33ac) = 0x00001000;
361 RCBA32(0x33b0) = 0x00001000;
362 RCBA32(0x33c0) = 0x00011900;
363 RCBA32(0x33d0) = 0x06000802;
364 RCBA32(0x3a28) = 0x01010000;
365 RCBA32(0x3a2c) = 0x01010404;
372 RCBA32(0x2b14) = 0x1e0a0317;
373 RCBA32(0x2b24) = 0x4000000b;
374 RCBA32(0x2b28) = 0x00000002;
375 RCBA32(0x2b2c) = 0x00008813;
377 RCBA32(0x3a80) = 0x01040000;
380 if (
config && (
config->sata_port_map & ((1 << 1) | (1 << 0))) == 0)
381 reg32 |= (1 << 20) | (1 << 18);
383 if (
config && (
config->sata_port_map & ((1 << 3) | (1 << 2))) == 0)
384 reg32 |= (1 << 24) | (1 << 26);
386 RCBA32(0x3a88) = 0x00000001;
387 RCBA32(0x33d4) = 0xc80bc000;
410 RCBA32(0x3314) = 0x00012fff;
411 RCBA32(0x3318) = 0x0dcf0400;
412 RCBA32(0x3324) = 0x04000000;
413 RCBA32(0x3368) = 0x00041400;
414 RCBA32(0x3388) = 0x3f8ddbff;
415 RCBA32(0x33ac) = 0x00007001;
416 RCBA32(0x33b0) = 0x00181900;
417 RCBA32(0x33c0) = 0x00060A00;
418 RCBA32(0x33d0) = 0x06200840;
419 RCBA32(0x3a28) = 0x01010101;
420 RCBA32(0x3a2c) = 0x04040404;
421 RCBA32(0x2b1c) = 0x03808033;
422 RCBA32(0x2b34) = 0x80000009;
423 RCBA32(0x3348) = 0x022ddfff;
424 RCBA32(0x334c) = 0x00000001;
425 RCBA32(0x3358) = 0x0001c000;
426 RCBA32(0x3380) = 0x3f8ddbff;
427 RCBA32(0x3384) = 0x0001c7e1;
428 RCBA32(0x338c) = 0x0001c7e1;
429 RCBA32(0x3398) = 0x0001c000;
430 RCBA32(0x33a8) = 0x00181900;
431 RCBA32(0x33dc) = 0x00080000;
432 RCBA32(0x33e0) = 0x00000001;
433 RCBA32(0x3a20) = 0x00000404;
434 RCBA32(0x3a24) = 0x01010101;
435 RCBA32(0x3a30) = 0x01010101;
442 RCBA32(0x33b4) = 0x00007001;
443 RCBA32(0x3350) = 0x022ddfff;
444 RCBA32(0x3354) = 0x00000001;
450 RCBA32(0x2b10) = 0x0000883c;
451 RCBA32(0x2b14) = 0x1e0a4616;
452 RCBA32(0x2b24) = 0x40000005;
453 RCBA32(0x2b20) = 0x0005db01;
454 RCBA32(0x3a80) = 0x05145005;
466 if (
config && (
config->sata_port_map & ((1 << 3) | (1 << 2))) == 0)
467 data |= (1 << 24) | (1 << 26);
469 if (
config && (
config->sata_port_map & ((1 << 1) | (1 << 0))) == 0)
470 data |= (1 << 20) | (1 << 18);
493 reg16 |= (1 << 11) | (1 << 12) | (1 << 14);
518 reg16 &= ~((1 << 11) | (1 << 14));
519 reg16 |= (1 << 5) | (1 << 6) | (1 << 7) | (1 << 12) | (1 << 13);
541 if (
RCBA32(0x3454) & (1 << 4))
626 res->
base = default_decode_base;
627 res->
size = 0 - default_decode_base;
631 if (CONFIG_FIXED_RCBA_MMIO_BASE < default_decode_base) {
634 res->
size = CONFIG_RCBA_LENGTH;
643 if (reg < default_decode_base) {
646 res->
size = 16 * 1024;
654 #define LPC_DEFAULT_IO_RANGE_LOWER 0
655 #define LPC_DEFAULT_IO_RANGE_UPPER 0x1000
765 unsigned long current;
unsigned long acpi_write_hpet(const struct device *device, unsigned long current, acpi_rsdp_t *rsdp)
void acpi_add_table(acpi_rsdp_t *rsdp, void *table)
Add an ACPI table to the RSDT (and XSDT) structure, recalculate length and checksum.
uint16_t get_pmbase(void)
static int acpi_is_wakeup_s3(void)
void setup_ioapic(void *ioapic_base, u8 ioapic_id)
void ioapic_lock_max_vectors(void *ioapic_base)
void ioapic_set_max_vectors(void *ioapic_base, int mre_count)
void enable_alt_smi(uint32_t mask)
#define MAINBOARD_POWER_ON
#define MAINBOARD_POWER_OFF
#define MAINBOARD_POWER_KEEP
void enable_all_gpe(uint32_t set1, uint32_t set2, uint32_t set3, uint32_t set4)
#define printk(level,...)
void outb(u8 val, u16 port)
void outl(u32 val, u16 port)
DEVTREE_CONST struct device *DEVTREE_CONST all_devices
Linked list of ALL devices.
DEVTREE_CONST struct device * pcidev_on_root(uint8_t dev, uint8_t fn)
struct resource * new_resource(struct device *dev, unsigned int index)
See if a resource structure already exists for a given index and if not allocate one.
void i8259_configure_irq_trigger(int int_num, int is_level_triggered)
Configure IRQ triggering in the i8259 compatible Interrupt Controller.
static uintptr_t acpi_align_current(uintptr_t current)
#define APM_CNT_ACPI_DISABLE
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_config8(const struct device *dev, u16 reg, u8 mask, u8 or)
static __always_inline u16 pci_read_config16(const struct device *dev, u16 reg)
static __always_inline void pci_or_config8(const struct device *dev, u16 reg, u8 ormask)
static __always_inline u32 pci_read_config32(const struct device *dev, u16 reg)
static __always_inline u8 pci_read_config8(const struct device *dev, u16 reg)
static __always_inline void pci_write_config16(const struct device *dev, u16 reg, u16 val)
static __always_inline void pci_write_config8(const struct device *dev, u16 reg, u8 val)
#define BIOS_INFO
BIOS_INFO - Expected events.
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
unsigned int get_uint_option(const char *name, const unsigned int fallback)
#define PCI_INTERRUPT_PIN
#define PCI_INTERRUPT_LINE
void pci_dev_enable_resources(struct device *dev)
void pci_dev_read_resources(struct device *dev)
struct pci_operations pci_dev_ops_pci
Default device operation for PCI devices.
void pci_dev_set_resources(struct device *dev)
#define PCI_DID_INTEL_LPT_Q87
#define PCI_DID_INTEL_LPT_MOBILE_SAMPLE
#define PCI_DID_INTEL_LPT_H81
#define PCI_DID_INTEL_LPT_LP_PREMIUM
#define PCI_DID_INTEL_LPT_C226
#define PCI_DID_INTEL_LPT_DESKTOP_SAMPLE
#define PCI_DID_INTEL_LPT_Q85
#define PCI_DID_INTEL_LPT_C224
#define PCI_DID_INTEL_LPT_C222
#define PCI_DID_INTEL_LPT_LP_SAMPLE
#define PCI_DID_INTEL_LPT_HM87
#define PCI_DID_INTEL_LPT_QM87
#define PCI_DID_INTEL_LPT_B85
#define PCI_DID_INTEL_LPT_Z85
#define PCI_DID_INTEL_LPT_LP_VALUE
#define PCI_DID_INTEL_LPT_LP_MAINSTREAM
#define PCI_DID_INTEL_LPT_Z87
#define PCI_DID_INTEL_LPT_H87
#define PCI_DID_INTEL_LPT_HM86
void intel_acpi_gen_def_acpi_pirq(const struct device *lpc)
#define IORESOURCE_RESERVE
#define IORESOURCE_ASSIGNED
void scan_static_bus(struct device *bus)
__weak void acpi_create_serialio_ssdt(acpi_header_t *ssdt)
#define PCH_IOAPIC_PCI_SLOT
#define PCH_HPET_PCI_SLOT
#define PCH_IOAPIC_PCI_BUS
#define PCH_DISABLE_ADSPD
static uint16_t get_gpiobase(void)
void pch_iobp_update(u32 address, u32 andvalue, u32 orvalue)
void pch_enable(struct device *dev)
#define RCBA32_AND_OR(x, and, or)
void spi_finalize_ops(void)
static void pch_power_options(struct device *dev)
static void lpc_final(struct device *dev)
static const char * lpc_acpi_name(const struct device *dev)
static struct device_operations device_ops
static void configure_dmi_pm(struct device *dev)
static void pch_lpc_read_resources(struct device *dev)
static void southbridge_fill_ssdt(const struct device *dev)
static void pch_lpc_add_gen_io_resources(struct device *dev, int reg_value, int index)
static void pch_enable_serial_irqs(struct device *dev)
static int pch_io_range_in_default(int base, int size)
#define LPC_DEFAULT_IO_RANGE_LOWER
static void lpt_pm_init(struct device *dev)
static void enable_clock_gating(struct device *dev)
static void pch_gpi_routing(struct device *dev, struct southbridge_intel_lynxpoint_config *config)
static void enable_hpet(struct device *const dev)
static void pch_lpc_add_io_resources(struct device *dev)
static void pch_set_acpi_mode(void)
static void pch_lpc_add_io_resource(struct device *dev, u16 base, u16 size, int index)
static void lpc_init(struct device *dev)
static void lpt_lp_pm_init(struct device *dev)
static const struct pci_driver pch_lpc __pci_driver
static const unsigned short pci_device_ids[]
static void pch_lpc_enable(struct device *dev)
static void pch_enable_ioapic(struct device *dev)
Set miscellaneous static southbridge features.
static void pch_pirq_init(struct device *dev)
static void pch_lpc_add_mmio_resources(struct device *dev)
static unsigned long southbridge_write_acpi_tables(const struct device *device, unsigned long start, struct acpi_rsdp *rsdp)
#define LPC_DEFAULT_IO_RANGE_UPPER
static void enable_lp_clock_gating(struct device *dev)
static int pch_is_lp(void)
void(* read_resources)(struct device *dev)
enum device_path_type type
DEVTREE_CONST struct device * next
DEVTREE_CONST void * chip_info