3 #define __SIMPLE_DEVICE__
17 #include <soc/pci_devs.h>
18 #include <soc/pcr_ids.h>
26 io_enables |= reg_io_enables;
28 if (
CONFIG(SOC_INTEL_COMMON_BLOCK_LPC_MIRROR_TO_GPMR))
44 io_ranges |= reg_io_ranges &
mask;
46 if (
CONFIG(SOC_INTEL_COMMON_BLOCK_LPC_MIRROR_TO_GPMR))
74 uint32_t lgir_reg_offset, lgir, window_size, alignment;
83 while (bridged_size < size) {
91 alignment = 1UL << (
log2_ceil(window_size));
92 window_size =
ALIGN_UP(window_size, alignment);
106 if (lgir_reg_num < 0) {
108 "LPC: Cannot open IO window: %llx size %llx\n",
109 bridge_base, size - bridged_size);
116 if (
CONFIG(SOC_INTEL_COMMON_BLOCK_LPC_MIRROR_TO_GPMR))
120 "LPC: Opened IO window LGIR%d: base %llx size %x\n",
121 lgir_reg_num, bridge_base, window_size);
123 bridged_size += window_size;
124 bridge_base += window_size;
136 "LPC: Cannot open window to resource %lx size %zx\n",
144 "LPC: Resource %lx size %zx larger than window(%x)\n",
151 if (
CONFIG(SOC_INTEL_COMMON_BLOCK_LPC_MIRROR_TO_GPMR))
165 bc_cntl |= bios_cntl_bit;
257 if (
CONFIG(SOC_INTEL_COMMON_BLOCK_LPC_COMB_ENABLE)) {
277 if (
CONFIG(SOC_INTEL_COMMON_BLOCK_LPC_MIRROR_TO_GPMR))
304 #define PCH_REDIR_ETR 120
355 const struct device *irq_dev;
359 uint8_t int_pin = 0, int_line = 0;
388 #define PPI_PORT_B 0x61
389 #define SERR_DIS (1 << 2)
390 #define CMOS_NMI 0x70
391 #define NMI_DIS (1 << 7)
void soc_get_gen_io_dec_range(uint32_t gen_io_dec[LPC_NUM_GENERIC_IO_RANGES])
void setup_ioapic(void *ioapic_base, u8 ioapic_id)
void ioapic_set_max_vectors(void *ioapic_base, int mre_count)
#define assert(statement)
void itss_irq_init(const uint8_t pch_interrupt_routing[PIRQ_COUNT])
#define printk(level,...)
void outb(u8 val, u16 port)
DEVTREE_CONST struct device *DEVTREE_CONST all_devices
Linked list of ALL devices.
void gpmr_write32(uint16_t offset, uint32_t val)
static __always_inline void pci_write_config32(const struct device *dev, u16 reg, u32 val)
static __always_inline u16 pci_read_config16(const struct device *dev, u16 reg)
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)
static int log2_ceil(u32 x)
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
#define BIOS_SPEW
BIOS_SPEW - Excessively verbose output.
#define BIOS_WARNING
BIOS_WARNING - Bad configuration.
#define LPC_LGIR_ADDR_MASK
#define LPC_LGIR_MAX_WINDOW_SIZE
#define LPC_IOD_COMA_RANGE_MASK
#define LPC_IOD_COMA_RANGE
#define LPC_PCCTL_CLKRUN_EN
#define LPC_LGIR_AMASK_MASK
#define LPC_LGMR_ADDR_MASK
#define LPC_IOD_COMB_RANGE_MASK
#define LPC_LGMR_WINDOW_SIZE
#define LPC_GENERIC_IO_RANGE(n)
#define LPC_IOD_COMB_RANGE
#define LPC_GENERIC_MEM_RANGE
static void lpc_set_bios_control_reg(uint8_t bios_cntl_bit)
static void lpc_set_gen_decode_range(uint32_t gen_io_dec[LPC_NUM_GENERIC_IO_RANGES])
static void lpc_configure_write_protect(bool status)
uint16_t lpc_get_fixed_io_decode(void)
void lpc_set_lock_enable(void)
void lpc_enable_pci_clk_cntl(void)
uint16_t lpc_set_fixed_io_ranges(uint16_t io_ranges, uint16_t mask)
void lpc_disable_clkrun(void)
void pch_enable_ioapic(void)
void lpc_set_serirq_mode(enum serirq_mode mode)
void lpc_disable_wp(void)
const uint8_t * lpc_get_pic_pirq_routing(size_t *num)
void lpc_set_bios_interface_lock_down(void)
void lpc_open_mmio_window(uintptr_t base, size_t size)
static int find_unused_pmio_window(void)
uint16_t lpc_enable_fixed_io_ranges(uint16_t io_enables)
void lpc_io_setup_comm_a_b(void)
void lpc_open_pmio_window(uint16_t base, uint16_t size)
void pch_enable_lpc(void)
static const uint8_t pch_interrupt_routing[PIRQ_COUNT]
#define LPC_NUM_GENERIC_IO_RANGES
#define PCI_INTERRUPT_PIN
#define PCI_INTERRUPT_LINE
#define ENV_PAYLOAD_LOADER
enum device_path_type type
DEVTREE_CONST struct device * next