[coreboot-gerrit] Change in coreboot[master]: soc/intel/common/block/pmc: Add helper routines to read/write PM1_CNT

Furquan Shaikh (Code Review) gerrit at coreboot.org
Wed Oct 18 01:11:42 CEST 2017


Furquan Shaikh has uploaded this change for review. ( https://review.coreboot.org/22081


Change subject: soc/intel/common/block/pmc: Add helper routines to read/write PM1_CNT
......................................................................

soc/intel/common/block/pmc: Add helper routines to read/write PM1_CNT

This change adds and uses helper routines for reading and writing
PM1_CNT register.

BUG=b:67874513

Change-Id: I69b9347ab54a392b67ba733eb00922583dc1ee5f
Signed-off-by: Furquan Shaikh <furquan at chromium.org>
---
M src/soc/intel/common/block/include/intelblocks/pmclib.h
M src/soc/intel/common/block/pmc/pmclib.c
2 files changed, 24 insertions(+), 9 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/81/22081/1

diff --git a/src/soc/intel/common/block/include/intelblocks/pmclib.h b/src/soc/intel/common/block/include/intelblocks/pmclib.h
index f2301a9..f8f8acd 100644
--- a/src/soc/intel/common/block/include/intelblocks/pmclib.h
+++ b/src/soc/intel/common/block/include/intelblocks/pmclib.h
@@ -47,6 +47,9 @@
 void pmc_update_pm1_enable(uint16_t events);
 uint16_t pmc_read_pm1_enable(void);
 
+uint32_t pmc_read_pm1_control(void);
+void pmc_write_pm1_control(uint32_t pm1_cnt);
+
 /*
  * Function to print, clear, and return SMI status bits in SMI_STS
  * register. This function internally calls pmc_reset_smi_status with
diff --git a/src/soc/intel/common/block/pmc/pmclib.c b/src/soc/intel/common/block/pmc/pmclib.c
index 83de926..925b241 100644
--- a/src/soc/intel/common/block/pmc/pmclib.c
+++ b/src/soc/intel/common/block/pmc/pmclib.c
@@ -155,18 +155,28 @@
 	outw(events, ACPI_BASE_ADDRESS + PM1_EN);
 }
 
+uint32_t pmc_read_pm1_control(void)
+{
+	return inl(ACPI_BASE_ADDRESS + PM1_CNT);
+}
+
+void pmc_write_pm1_control(uint32_t pm1_cnt)
+{
+	outl(pm1_cnt, ACPI_BASE_ADDRESS + PM1_CNT);
+}
+
 void pmc_enable_pm1_control(uint32_t mask)
 {
-	uint32_t pm1_cnt = inl(ACPI_BASE_ADDRESS + PM1_CNT);
+	uint32_t pm1_cnt = pmc_read_pm1_control();
 	pm1_cnt |= mask;
-	outl(pm1_cnt, ACPI_BASE_ADDRESS + PM1_CNT);
+	pmc_write_pm1_control(pm1_cnt);
 }
 
 void pmc_disable_pm1_control(uint32_t mask)
 {
-	uint32_t pm1_cnt = inl(ACPI_BASE_ADDRESS + PM1_CNT);
+	uint32_t pm1_cnt = pmc_read_pm1_control();
 	pm1_cnt &= ~mask;
-	outl(pm1_cnt, ACPI_BASE_ADDRESS + PM1_CNT);
+	pmc_write_pm1_control(pm1_cnt);
 }
 
 static uint16_t reset_pm1_status(void)
@@ -357,7 +367,7 @@
 		}
 
 		/* Clear SLP_TYP. */
-		outl(ps->pm1_cnt & ~(SLP_TYP), ACPI_BASE_ADDRESS + PM1_CNT);
+		pmc_write_pm1_control(ps->pm1_cnt & ~(SLP_TYP));
 	}
 	return soc_prev_sleep_state(ps, prev_sleep_state);
 }
@@ -392,7 +402,7 @@
 
 	ps->pm1_sts = inw(ACPI_BASE_ADDRESS + PM1_STS);
 	ps->pm1_en = inw(ACPI_BASE_ADDRESS + PM1_EN);
-	ps->pm1_cnt = inl(ACPI_BASE_ADDRESS + PM1_CNT);
+	ps->pm1_cnt = pmc_read_pm1_control();
 
 	printk(BIOS_DEBUG, "pm1_sts: %04x pm1_en: %04x pm1_cnt: %08x\n",
 	       ps->pm1_sts, ps->pm1_en, ps->pm1_cnt);
@@ -468,7 +478,7 @@
 	if (!(inw(ACPI_BASE_ADDRESS + PM1_STS) & WAK_STS))
 		return 0;
 
-	return acpi_sleep_from_pm1(inl(ACPI_BASE_ADDRESS + PM1_CNT)) == ACPI_S3;
+	return acpi_sleep_from_pm1(pmc_read_pm1_control()) == ACPI_S3;
 }
 
 /* Read and clear GPE status (defined in arch/acpi.h) */
@@ -510,8 +520,10 @@
  */
 void vboot_platform_prepare_reboot(void)
 {
-	const uint16_t port = ACPI_BASE_ADDRESS + PM1_CNT;
-	outl((inl(port) & ~(SLP_TYP)) | (SLP_TYP_S5 << SLP_TYP_SHIFT), port);
+	uint32_t pm1_cnt;
+	pm1_cnt = (pmc_read_pm1_control() & ~(SLP_TYP)) |
+		(SLP_TYP_S5 << SLP_TYP_SHIFT);
+	pmc_write_pm1_control(pm1_cnt);
 }
 
 void poweroff(void)

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

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I69b9347ab54a392b67ba733eb00922583dc1ee5f
Gerrit-Change-Number: 22081
Gerrit-PatchSet: 1
Gerrit-Owner: Furquan Shaikh <furquan at google.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20171017/7d007612/attachment-0001.html>


More information about the coreboot-gerrit mailing list