blob: 744d5d1279ed9956671387fe694148fe50dc146f [file] [log] [blame]
Angel Pons62079a52020-04-05 13:21:34 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Patrick Georgi406313d2015-07-20 22:01:32 +02002
Matt DeVillier0b9cfe62018-06-26 13:07:32 -05003#include <baseboard/variant.h>
Patrick Georgi406313d2015-07-20 22:01:32 +02004#include <cpu/x86/smm.h>
Aaron Durbin3969df82016-07-14 01:09:34 -05005#include <ec/google/chromeec/smm.h>
Aaron Durbince6c3562015-11-11 16:46:27 -06006#include <gpio.h>
Patrick Georgi406313d2015-07-20 22:01:32 +02007#include <soc/iomap.h>
Patrick Georgi406313d2015-07-20 22:01:32 +02008#include <soc/pm.h>
Kyösti Mälkki89d7fd82019-08-13 07:57:34 +03009#include <intelblocks/smihandler.h>
Patrick Georgi406313d2015-07-20 22:01:32 +020010#include "ec.h"
Matt DeVillier0b9cfe62018-06-26 13:07:32 -050011#include <variant/gpio.h>
Patrick Georgi406313d2015-07-20 22:01:32 +020012
Aaron Durbin50ed38f2015-08-08 01:25:21 -050013void mainboard_smi_gpi_handler(const struct gpi_status *sts)
Patrick Georgi406313d2015-07-20 22:01:32 +020014{
Aaron Durbin3969df82016-07-14 01:09:34 -050015 if (gpi_status_get(sts, EC_SMI_GPI))
16 chromeec_smi_process_events();
Aaron Durbince6c3562015-11-11 16:46:27 -060017}
18
Matt DeVillier0b9cfe62018-06-26 13:07:32 -050019__weak void mainboard_gpio_smi_sleep(void)
Aaron Durbince6c3562015-11-11 16:46:27 -060020{
Aaron Durbince6c3562015-11-11 16:46:27 -060021}
22
23void mainboard_smi_sleep(u8 slp_typ)
24{
Julius Wernercd49cce2019-03-05 16:53:33 -080025 if (CONFIG(EC_GOOGLE_CHROMEEC))
Aaron Durbin3969df82016-07-14 01:09:34 -050026 chromeec_smi_sleep(slp_typ, MAINBOARD_EC_S3_WAKE_EVENTS,
27 MAINBOARD_EC_S5_WAKE_EVENTS);
Aaron Durbince6c3562015-11-11 16:46:27 -060028
Matt DeVillier0b9cfe62018-06-26 13:07:32 -050029 mainboard_gpio_smi_sleep();
Patrick Georgi406313d2015-07-20 22:01:32 +020030}
31
32int mainboard_smi_apmc(u8 apmc)
33{
Julius Wernercd49cce2019-03-05 16:53:33 -080034 if (CONFIG(EC_GOOGLE_CHROMEEC))
Aaron Durbin3969df82016-07-14 01:09:34 -050035 chromeec_smi_apmc(apmc, MAINBOARD_EC_SCI_EVENTS,
36 MAINBOARD_EC_SMI_EVENTS);
Patrick Georgi406313d2015-07-20 22:01:32 +020037 return 0;
38}