blob: d54de0914921644e36dbc22534002457173cddd4 [file] [log] [blame]
Angel Pons27123982020-04-05 13:22:30 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Furquan Shaikh06cd9032016-12-14 12:10:21 -08002
3#include <cpu/x86/smm.h>
Furquan Shaikh48547612017-10-16 23:02:00 -07004#include <ec/google/chromeec/ec.h>
Furquan Shaikh06cd9032016-12-14 12:10:21 -08005#include <ec/google/chromeec/smm.h>
Furquan Shaikh48547612017-10-16 23:02:00 -07006#include <elog.h>
Furquan Shaikh3178bdc2017-05-27 17:52:32 -07007#include <gpio.h>
8#include <soc/gpio.h>
Kyösti Mälkki89d7fd82019-08-13 07:57:34 +03009#include <intelblocks/smihandler.h>
Furquan Shaikh06cd9032016-12-14 12:10:21 -080010
Shelley Chen528448e2018-05-30 20:13:24 -070011#include <baseboard/variants.h>
Furquan Shaikh3178bdc2017-05-27 17:52:32 -070012#include <variant/gpio.h>
Furquan Shaikh76c392d2017-04-13 14:15:56 -070013#include <variant/ec.h>
Furquan Shaikh06cd9032016-12-14 12:10:21 -080014
15void mainboard_smi_espi_handler(void)
16{
17 chromeec_smi_process_events();
18}
19
Shelley Chen528448e2018-05-30 20:13:24 -070020void __weak variant_smi_sleep(u8 slp_typ) {}
21
Furquan Shaikh06cd9032016-12-14 12:10:21 -080022void mainboard_smi_sleep(u8 slp_typ)
23{
Furquan Shaikh6985c902018-10-06 12:03:23 -070024 const struct google_chromeec_event_info *info;
25
26 info = variant_get_event_info();
27
Shelley Chen528448e2018-05-30 20:13:24 -070028 variant_smi_sleep(slp_typ);
Furquan Shaikh6985c902018-10-06 12:03:23 -070029 chromeec_smi_sleep(slp_typ, info->s3_wake_events, info->s5_wake_events);
Furquan Shaikh06cd9032016-12-14 12:10:21 -080030}
31
32int mainboard_smi_apmc(u8 apmc)
33{
Furquan Shaikh6985c902018-10-06 12:03:23 -070034 const struct google_chromeec_event_info *info;
35
36 info = variant_get_event_info();
37
38 chromeec_smi_apmc(apmc, info->sci_events, info->smi_events);
39
Furquan Shaikh06cd9032016-12-14 12:10:21 -080040 return 0;
41}
Furquan Shaikh48547612017-10-16 23:02:00 -070042
43void elog_gsmi_cb_mainboard_log_wake_source(void)
44{
Furquan Shaikh6985c902018-10-06 12:03:23 -070045 const struct google_chromeec_event_info *info;
46
47 info = variant_get_event_info();
48
49 google_chromeec_log_events(info->log_events | info->s0ix_wake_events);
Furquan Shaikh48547612017-10-16 23:02:00 -070050}