From 1a755605996e2b46af0245c169c8e96312bcdb80 Mon Sep 17 00:00:00 2001 From: Aaron Durbin Date: Thu, 14 Jul 2016 00:43:11 -0500 Subject: 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 Reviewed-on: https://review.coreboot.org/15687 Tested-by: build bot (Jenkins) Reviewed-by: Duncan Laurie Reviewed-by: Paul Menzel Reviewed-by: Furquan Shaikh Reviewed-by: Shaunak Saha --- src/mainboard/google/reef/smihandler.c | 48 ++++++--------------------------- src/mainboard/intel/amenia/smihandler.c | 48 ++++++--------------------------- 2 files changed, 16 insertions(+), 80 deletions(-) (limited to 'src/mainboard') diff --git a/src/mainboard/google/reef/smihandler.c b/src/mainboard/google/reef/smihandler.c index edf81906ed..05d363f876 100644 --- a/src/mainboard/google/reef/smihandler.c +++ b/src/mainboard/google/reef/smihandler.c @@ -16,56 +16,24 @@ #include #include -#include +#include #include #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 edf81906ed..05d363f876 100644 --- a/src/mainboard/intel/amenia/smihandler.c +++ b/src/mainboard/intel/amenia/smihandler.c @@ -16,56 +16,24 @@ #include #include -#include +#include #include #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; } -- cgit v1.2.3