diff options
Diffstat (limited to 'src/mainboard/google/reef/smihandler.c')
-rw-r--r-- | src/mainboard/google/reef/smihandler.c | 48 |
1 files changed, 8 insertions, 40 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; } |