[coreboot-gerrit] New patch to review for coreboot: mainboards/apollolake: use common Chrome EC SMI helpers

Aaron Durbin (adurbin@chromium.org) gerrit at coreboot.org
Thu Jul 14 08:13:37 CEST 2016


Aaron Durbin (adurbin at chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15687

-gerrit

commit 9eef29b7e05b94234987fbcdef6461bc1fd6d70b
Author: Aaron Durbin <adurbin at chromium.org>
Date:   Thu Jul 14 00:43:11 2016 -0500

    mainboards/apollolake: use common Chrome EC SMI helpers
    
    Reduce duplicate code by using the Chrome EC SMI helper functions.
    
    BUG=chrome-os-partner:54977
    
    Change-Id: Iba2ca7185ad7f0566858ce99f5ad8325ecc243cf
    Signed-off-by: Aaron Durbin <adurbin at chromium.org>
---
 src/mainboard/google/reef/smihandler.c  | 48 ++++++---------------------------
 src/mainboard/intel/amenia/smihandler.c | 48 ++++++---------------------------
 2 files changed, 16 insertions(+), 80 deletions(-)

diff --git a/src/mainboard/google/reef/smihandler.c b/src/mainboard/google/reef/smihandler.c
index edf8190..05d363f 100644
--- a/src/mainboard/google/reef/smihandler.c
+++ b/src/mainboard/google/reef/smihandler.c
@@ -16,56 +16,24 @@
 
 #include <arch/acpi.h>
 #include <cpu/x86/smm.h>
-#include <ec/google/chromeec/ec.h>
+#include <ec/google/chromeec/smm.h>
 #include <soc/pm.h>
 #include "ec.h"
 
 void mainboard_smi_sleep(u8 slp_typ)
 {
-	if (!IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC))
-		return;
-
-	switch (slp_typ) {
-	case ACPI_S3:
-		/* Enable wake events */
-		google_chromeec_set_wake_mask(MAINBOARD_EC_S3_WAKE_EVENTS);
+	if (slp_typ == ACPI_S3)
 		enable_gpe(GPIO_TIER_1_SCI);
-		break;
-	case ACPI_S5:
-		/* Enable wake events */
-		google_chromeec_set_wake_mask(MAINBOARD_EC_S5_WAKE_EVENTS);
-		break;
-	}
-
-	/* Disable SCI and SMI events */
-	google_chromeec_set_smi_mask(0);
-	google_chromeec_set_sci_mask(0);
 
-	/* Clear pending events that may trigger immediate wake */
-	while (google_chromeec_get_event() != 0)
-		;
+	if (IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC))
+		chromeec_smi_sleep(slp_typ, MAINBOARD_EC_S3_WAKE_EVENTS,
+					MAINBOARD_EC_S5_WAKE_EVENTS);
 }
 
 int mainboard_smi_apmc(u8 apmc)
 {
-	if (!IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC))
-		return 0;
-
-	switch (apmc) {
-	case APM_CNT_ACPI_ENABLE:
-		google_chromeec_set_smi_mask(0);
-		/* Clear all pending events */
-		while (google_chromeec_get_event() != 0)
-			;
-		google_chromeec_set_sci_mask(MAINBOARD_EC_SCI_EVENTS);
-		break;
-	case APM_CNT_ACPI_DISABLE:
-		google_chromeec_set_sci_mask(0);
-		/* Clear all pending events */
-		while (google_chromeec_get_event() != 0)
-			;
-		google_chromeec_set_smi_mask(MAINBOARD_EC_SMI_EVENTS);
-		break;
-	}
+	if (IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC))
+		chromeec_smi_apmc(apmc, MAINBOARD_EC_SCI_EVENTS,
+					MAINBOARD_EC_SMI_EVENTS);
 	return 0;
 }
diff --git a/src/mainboard/intel/amenia/smihandler.c b/src/mainboard/intel/amenia/smihandler.c
index edf8190..05d363f 100644
--- a/src/mainboard/intel/amenia/smihandler.c
+++ b/src/mainboard/intel/amenia/smihandler.c
@@ -16,56 +16,24 @@
 
 #include <arch/acpi.h>
 #include <cpu/x86/smm.h>
-#include <ec/google/chromeec/ec.h>
+#include <ec/google/chromeec/smm.h>
 #include <soc/pm.h>
 #include "ec.h"
 
 void mainboard_smi_sleep(u8 slp_typ)
 {
-	if (!IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC))
-		return;
-
-	switch (slp_typ) {
-	case ACPI_S3:
-		/* Enable wake events */
-		google_chromeec_set_wake_mask(MAINBOARD_EC_S3_WAKE_EVENTS);
+	if (slp_typ == ACPI_S3)
 		enable_gpe(GPIO_TIER_1_SCI);
-		break;
-	case ACPI_S5:
-		/* Enable wake events */
-		google_chromeec_set_wake_mask(MAINBOARD_EC_S5_WAKE_EVENTS);
-		break;
-	}
-
-	/* Disable SCI and SMI events */
-	google_chromeec_set_smi_mask(0);
-	google_chromeec_set_sci_mask(0);
 
-	/* Clear pending events that may trigger immediate wake */
-	while (google_chromeec_get_event() != 0)
-		;
+	if (IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC))
+		chromeec_smi_sleep(slp_typ, MAINBOARD_EC_S3_WAKE_EVENTS,
+					MAINBOARD_EC_S5_WAKE_EVENTS);
 }
 
 int mainboard_smi_apmc(u8 apmc)
 {
-	if (!IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC))
-		return 0;
-
-	switch (apmc) {
-	case APM_CNT_ACPI_ENABLE:
-		google_chromeec_set_smi_mask(0);
-		/* Clear all pending events */
-		while (google_chromeec_get_event() != 0)
-			;
-		google_chromeec_set_sci_mask(MAINBOARD_EC_SCI_EVENTS);
-		break;
-	case APM_CNT_ACPI_DISABLE:
-		google_chromeec_set_sci_mask(0);
-		/* Clear all pending events */
-		while (google_chromeec_get_event() != 0)
-			;
-		google_chromeec_set_smi_mask(MAINBOARD_EC_SMI_EVENTS);
-		break;
-	}
+	if (IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC))
+		chromeec_smi_apmc(apmc, MAINBOARD_EC_SCI_EVENTS,
+					MAINBOARD_EC_SMI_EVENTS);
 	return 0;
 }



More information about the coreboot-gerrit mailing list