summaryrefslogtreecommitdiff
path: root/src/soc/intel/common/block/include
diff options
context:
space:
mode:
authorSubrata Banik <subratabanik@google.com>2022-04-13 11:58:08 +0530
committerFelix Held <felix-coreboot@felixheld.de>2022-04-14 15:41:12 +0000
commite7089e12a13e96e61216d94db85a1c6a1347449d (patch)
tree64c755d63ddbaa25074d64c1c39d7cb77136dea6 /src/soc/intel/common/block/include
parentbb1ecc56624fc57b030cbbada2add6cc3bfd004e (diff)
soc/intel/cmn/gpmr: Enhance GPMR driver
This patch enhances the GPMR driver to add public APIs for other IA common code drivers and/or SoC code to utilize. Also, migrated all PCR GPMR register definitions into the common `pcr_gpmr.h` header file. TEST=Able to build and boot google/redrix. Signed-off-by: Subrata Banik <subratabanik@google.com> Change-Id: I87dca55a068366cb9a26a5218589166c1723da7f Reviewed-on: https://review.coreboot.org/c/coreboot/+/63607 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
Diffstat (limited to 'src/soc/intel/common/block/include')
-rw-r--r--src/soc/intel/common/block/include/intelblocks/gpmr.h14
-rw-r--r--src/soc/intel/common/block/include/intelblocks/pcr_gpmr.h27
2 files changed, 41 insertions, 0 deletions
diff --git a/src/soc/intel/common/block/include/intelblocks/gpmr.h b/src/soc/intel/common/block/include/intelblocks/gpmr.h
new file mode 100644
index 0000000000..d898f329b8
--- /dev/null
+++ b/src/soc/intel/common/block/include/intelblocks/gpmr.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef SOC_INTEL_COMMON_BLOCK_GPMR_H
+#define SOC_INTEL_COMMON_BLOCK_GPMR_H
+
+#include <types.h>
+#include <intelblocks/pcr_gpmr.h>
+
+uint32_t gpmr_read32(uint16_t offset);
+void gpmr_write32(uint16_t offset, uint32_t val);
+void gpmr_or32(uint16_t offset, uint32_t ordata);
+enum cb_err enable_gpmr(uint32_t base, uint32_t size, uint32_t dest_id);
+
+#endif /* SOC_INTEL_COMMON_BLOCK_GPMR_H */
diff --git a/src/soc/intel/common/block/include/intelblocks/pcr_gpmr.h b/src/soc/intel/common/block/include/intelblocks/pcr_gpmr.h
new file mode 100644
index 0000000000..fb138f91a0
--- /dev/null
+++ b/src/soc/intel/common/block/include/intelblocks/pcr_gpmr.h
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef SOC_INTEL_COMMON_BLOCK_PCR_GPMR_H
+#define SOC_INTEL_COMMON_BLOCK_PCR_GPMR_H
+
+#define GPMR_LPCLGIR1 0x2730
+#define GPMR_DMICTL 0x2234
+#define GPMR_DMICTL_SRLOCK (1 << 31)
+#define GPMR_LPCGMR 0x2740
+#define GPMR_GCS 0x274c
+#define GPMR_GCS_BILD (1 << 0)
+#define GPMR_LPCIOD 0x2770
+#define GPMR_LPCIOE 0x2774
+#define GPMR_TCOBASE 0x2778
+#define GPMR_TCOEN (1 << 1)
+
+#define MAX_GPMR_REGS 3
+
+#define GPMR_OFFSET(x) (0x277c + (x) * 8)
+#define GPMR_LIMIT_MASK 0xffff0000
+#define GPMR_BASE_SHIFT 16
+#define GPMR_BASE_MASK 0xffff
+
+#define GPMR_DID_OFFSET(x) (0x2780 + (x) * 8)
+#define GPMR_EN BIT(31)
+
+#endif /* SOC_INTEL_COMMON_BLOCK_PCR_GPMR_H */