summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/soc/intel/fsp_broadwell_de/chip.h2
-rw-r--r--src/soc/intel/fsp_broadwell_de/southcluster.c12
2 files changed, 14 insertions, 0 deletions
diff --git a/src/soc/intel/fsp_broadwell_de/chip.h b/src/soc/intel/fsp_broadwell_de/chip.h
index bf2896238a54..95c1c2d9594b 100644
--- a/src/soc/intel/fsp_broadwell_de/chip.h
+++ b/src/soc/intel/fsp_broadwell_de/chip.h
@@ -25,6 +25,8 @@
struct soc_intel_fsp_broadwell_de_config {
/* PCIe completion timeout value */
int pcie_compltoval;
+ /* LPC Generic Memory Range Register value */
+ uint32_t lpc_lgmr;
};
typedef struct soc_intel_fsp_broadwell_de_config config_t;
diff --git a/src/soc/intel/fsp_broadwell_de/southcluster.c b/src/soc/intel/fsp_broadwell_de/southcluster.c
index fb8af87b625e..df562f133dd5 100644
--- a/src/soc/intel/fsp_broadwell_de/southcluster.c
+++ b/src/soc/intel/fsp_broadwell_de/southcluster.c
@@ -28,6 +28,7 @@
#include <pc80/i8259.h>
#include <pc80/isa-dma.h>
#include <soc/iomap.h>
+#include <soc/intel/common/block/lpc/lpc_def.h>
#include <soc/irq.h>
#include <soc/lpc.h>
#include <soc/pci_devs.h>
@@ -216,6 +217,17 @@ static void sc_read_resources(struct device *dev)
pci_dev_read_resources(dev);
sc_add_mmio_resources(dev);
sc_add_io_resources(dev);
+
+ const config_t *config = config_of_soc();
+ if (config->lpc_lgmr) {
+ struct resource *res;
+ res = new_resource(dev, LGMR);
+ res->base = config->lpc_lgmr & ~(LPC_LGMR_EN);
+ res->size = 64 * KiB;
+ res->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED
+ | IORESOURCE_RESERVE;
+ pci_write_config32(dev, LGMR, config->lpc_lgmr);
+ }
}
static void sc_init(struct device *dev)