[coreboot-gerrit] Change in coreboot[master]: soc/intel/apollolake: Implement PRMRR get base and mask APIs

Pratikkumar V Prajapati (Code Review) gerrit at coreboot.org
Tue Aug 29 01:33:39 CEST 2017


Pratikkumar V Prajapati has uploaded this change for review. ( https://review.coreboot.org/21244


Change subject: soc/intel/apollolake: Implement PRMRR get base and mask APIs
......................................................................

soc/intel/apollolake: Implement PRMRR get base and mask APIs

Implement following APIs for APL/GLK
- soc_get_uncore_prmmr_base()
- soc_get_uncore_prmmr_mask()

Change-Id: I57df1f0e8ff984f32de4efdc6ebd68be501b4799
Signed-off-by: Pratik Prajapati <pratikkumar.v.prajapati at intel.com>
---
M src/soc/intel/apollolake/systemagent.c
1 file changed, 54 insertions(+), 0 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/44/21244/1

diff --git a/src/soc/intel/apollolake/systemagent.c b/src/soc/intel/apollolake/systemagent.c
index 22d801e..88fc8ad 100644
--- a/src/soc/intel/apollolake/systemagent.c
+++ b/src/soc/intel/apollolake/systemagent.c
@@ -38,3 +38,57 @@
 	sa_add_fixed_mmio_resources(dev, index, soc_fixed_resources,
 			ARRAY_SIZE(soc_fixed_resources));
 }
+
+int soc_get_uncore_prmmr_base(msr_t *prmrr_base)
+{
+	const void *prmrr_base_hob;
+	size_t prmrr_base_hob_size = 0;
+	uint64_t temp = 0;
+
+	const uint8_t prmrr_phys_base_guid[16] = {
+		0x38, 0x3a, 0x81, 0x9f, 0xb0, 0x6f, 0xa7, 0x4f,
+		0xaf, 0x79, 0x8a, 0x4e, 0x74, 0xdd, 0x48, 0x33
+	};
+
+	prmrr_base_hob = fsp_find_extension_hob_by_guid(prmrr_phys_base_guid,
+				&prmrr_base_hob_size);
+
+	if (!prmrr_base_hob) {
+		printk(BIOS_ERR, "Failed to locate PRMRR base hob\n");
+		return -1;
+	}
+
+	temp = *(uint64_t *) prmrr_base_hob;
+	prmrr_base->lo = (uint32_t) temp;
+	prmrr_base->hi = temp >> 32;
+
+	return 0;
+}
+
+int soc_get_uncore_prmmr_mask(msr_t *prmrr_mask)
+{
+	const void *prmrr_size_hob;
+	size_t prmrr_size_hob_size = 0;
+	uint64_t prmrr_size = 0;
+	const uint64_t PRMRR_HOB_MASK = 0x07FFFFFFFFF;
+	uint64_t temp;
+	const uint8_t prmrr_size_guid[16] = {
+		0x44, 0xed, 0x0b, 0x99, 0x4e, 0x9b, 0x26, 0x42,
+		0xa5, 0x97, 0x28, 0x36, 0x76, 0x6b, 0x5c, 0x41
+	};
+
+	prmrr_size_hob = fsp_find_extension_hob_by_guid(prmrr_size_guid,
+				&prmrr_size_hob_size);
+
+	if (!prmrr_size_hob) {
+		printk(BIOS_ERR, "Failed to locate PRMRR size hob\n");
+		return -1;
+	}
+
+	prmrr_size = *(uint64_t *) prmrr_size_hob;
+	temp = PRMRR_HOB_MASK & (~((uint64_t) (prmrr_size - 1)));
+	prmrr_mask->lo = (uint32_t) temp;
+	prmrr_mask->hi = temp >> 32;
+
+	return 0;
+}

-- 
To view, visit https://review.coreboot.org/21244
To unsubscribe, visit https://review.coreboot.org/settings

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I57df1f0e8ff984f32de4efdc6ebd68be501b4799
Gerrit-Change-Number: 21244
Gerrit-PatchSet: 1
Gerrit-Owner: Pratikkumar V Prajapati <pratikkumar.v.prajapati at intel.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20170828/bf97d654/attachment.html>


More information about the coreboot-gerrit mailing list