aboutsummaryrefslogtreecommitdiff
path: root/src/soc/intel/common/block/include/intelblocks/lpc_lib.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/common/block/include/intelblocks/lpc_lib.h')
-rw-r--r--src/soc/intel/common/block/include/intelblocks/lpc_lib.h40
1 files changed, 30 insertions, 10 deletions
diff --git a/src/soc/intel/common/block/include/intelblocks/lpc_lib.h b/src/soc/intel/common/block/include/intelblocks/lpc_lib.h
index 596c2b5b26..2b525cab41 100644
--- a/src/soc/intel/common/block/include/intelblocks/lpc_lib.h
+++ b/src/soc/intel/common/block/include/intelblocks/lpc_lib.h
@@ -27,16 +27,25 @@
* use IOE_KBC_60_64 macro. For IOE_ macros that do not specify a port range,
* the port range is selectable via the IO decodes register.
*/
-#define LPC_IOE_EC_4E_4F (1 << 13)
-#define LPC_IOE_SUPERIO_2E_2F (1 << 12)
-#define LPC_IOE_EC_62_66 (1 << 11)
-#define LPC_IOE_KBC_60_64 (1 << 10)
-#define LPC_IOE_HGE_208 (1 << 9)
-#define LPC_IOE_LGE_200 (1 << 8)
-#define LPC_IOE_FDD_EN (1 << 3)
-#define LPC_IOE_LPT_EN (1 << 2)
-#define LPC_IOE_COMB_EN (1 << 1)
-#define LPC_IOE_COMA_EN (1 << 0)
+#define LPC_IOE_EC_4E_4F (1 << 13)
+#define LPC_IOE_SUPERIO_2E_2F (1 << 12)
+#define LPC_IOE_EC_62_66 (1 << 11)
+#define LPC_IOE_KBC_60_64 (1 << 10)
+#define LPC_IOE_HGE_208 (1 << 9)
+#define LPC_IOE_LGE_200 (1 << 8)
+#define LPC_IOE_FDD_EN (1 << 3)
+#define LPC_IOE_LPT_EN (1 << 2)
+#define LPC_IOE_COMB_EN (1 << 1)
+#define LPC_IOE_COMA_EN (1 << 0)
+#define LPC_NUM_GENERIC_IO_RANGES 4
+
+#define PCR_DMI_LPCLGIR1 0x2730
+#define PCR_DMI_LPCLGIR2 0x2734
+#define PCR_DMI_LPCLGIR3 0x2738
+#define PCR_DMI_LPCLGIR4 0x273c
+
+#define PCR_DMI_LPCIOD 0x2770
+#define PCR_DMI_LPCIOE 0x2774
/* Serial IRQ control. SERIRQ_QUIET is the default (0). */
enum serirq_mode {
@@ -75,6 +84,8 @@ void lpc_set_lock_enable(void);
void lpc_set_eiss(void);
/* Set LPC Serial IRQ mode. */
void lpc_set_serirq_mode(enum serirq_mode mode);
+/* Enable CLKRUN_EN for power gating LPC. */
+void lpc_enable_pci_clk_cntl(void);
/*
* Setup I/O Decode Range Register for LPC
* ComA Range 3F8h-3FFh [2:0]
@@ -82,5 +93,14 @@ void lpc_set_serirq_mode(enum serirq_mode mode);
* Enable ComA and ComB Port
*/
void lpc_io_setup_comm_a_b(void);
+/* Enable PCH LPC by setting up generic decode range registers. */
+void pch_enable_lpc(void);
+/* Retrieve and setup SoC speicific PCH LPC interrupt routing. */
+void soc_pch_pirq_init(const struct device *dev);
+/* Get SoC's generic IO decoder range register settings. */
+void soc_get_gen_io_dec_range(const struct device *dev,
+ uint32_t gen_io_dec[LPC_NUM_GENERIC_IO_RANGES]);
+/* Mirror generic IO decoder range register settings into DMI PCR. */
+void soc_setup_dmi_pcr_io_dec(uint32_t gen_io_dec[LPC_NUM_GENERIC_IO_RANGES]);
#endif /* _SOC_COMMON_BLOCK_LPC_LIB_H_ */