diff options
author | Aaron Durbin <adurbin@chromium.org> | 2016-07-14 00:43:11 -0500 |
---|---|---|
committer | Aaron Durbin <adurbin@chromium.org> | 2016-07-15 08:35:59 +0200 |
commit | 1a755605996e2b46af0245c169c8e96312bcdb80 (patch) | |
tree | f3acada99e8613912b4bc39a9fc94caf67602a72 | |
parent | c2b7779d60107a38f635980f74e39e5c68774bd2 (diff) | |
download | coreboot-1a755605996e2b46af0245c169c8e96312bcdb80.tar.xz |
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@chromium.org>
Reviewed-on: https://review.coreboot.org/15687
Tested-by: build bot (Jenkins)
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Furquan Shaikh <furquan@google.com>
Reviewed-by: Shaunak Saha <shaunak.saha@intel.com>
-rw-r--r-- | src/mainboard/google/reef/smihandler.c | 48 | ||||
-rw-r--r-- | 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 edf81906ed..05d363f876 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 edf81906ed..05d363f876 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; } |