summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/soc/intel/apollolake/bootblock/bootblock.c3
-rw-r--r--src/soc/intel/apollolake/chip.h6
-rw-r--r--src/soc/intel/apollolake/lpc.c11
3 files changed, 20 insertions, 0 deletions
diff --git a/src/soc/intel/apollolake/bootblock/bootblock.c b/src/soc/intel/apollolake/bootblock/bootblock.c
index 00c47f3d28..c9b6d93d50 100644
--- a/src/soc/intel/apollolake/bootblock/bootblock.c
+++ b/src/soc/intel/apollolake/bootblock/bootblock.c
@@ -102,6 +102,9 @@ void bootblock_soc_early_init(void)
/* IO Decode Enable */
lpc_enable_fixed_io_ranges(io_enables);
+ /* Program generic IO Decode Range */
+ pch_enable_lpc();
+
if (CONFIG(TPM_ON_FAST_SPI))
tpm_enable();
diff --git a/src/soc/intel/apollolake/chip.h b/src/soc/intel/apollolake/chip.h
index 2bdabd6e33..209937d775 100644
--- a/src/soc/intel/apollolake/chip.h
+++ b/src/soc/intel/apollolake/chip.h
@@ -113,6 +113,12 @@ struct soc_intel_apollolake_config {
uint16_t lpc_iod;
uint16_t lpc_ioe;
+ /* Generic IO decode ranges */
+ uint32_t gen1_dec;
+ uint32_t gen2_dec;
+ uint32_t gen3_dec;
+ uint32_t gen4_dec;
+
/* Configure LPSS S0ix Enable */
uint8_t lpss_s0ix_enable;
diff --git a/src/soc/intel/apollolake/lpc.c b/src/soc/intel/apollolake/lpc.c
index 4a5f40f42a..21a0f44963 100644
--- a/src/soc/intel/apollolake/lpc.c
+++ b/src/soc/intel/apollolake/lpc.c
@@ -5,8 +5,19 @@
#include <intelblocks/rtc.h>
#include <soc/pcr_ids.h>
#include <soc/pm.h>
+#include <soc/intel/common/block/lpc/lpc_def.h>
#include "chip.h"
+void soc_get_gen_io_dec_range(uint32_t gen_io_dec[LPC_NUM_GENERIC_IO_RANGES])
+{
+ const config_t *config = config_of_soc();
+
+ gen_io_dec[0] = config->gen1_dec;
+ gen_io_dec[1] = config->gen2_dec;
+ gen_io_dec[2] = config->gen3_dec;
+ gen_io_dec[3] = config->gen4_dec;
+}
+
void lpc_soc_init(struct device *dev)
{
const struct soc_intel_apollolake_config *cfg;