blob: 803056a0858fbce0b0fcdd66b0b85d72d5810bbc [file] [log] [blame]
Angel Pons60ec3652020-04-03 01:22:13 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Naresh G Solankiab5d6902016-10-15 18:13:55 +05302
Naresh G Solankiab5d6902016-10-15 18:13:55 +05303#include <cpu/x86/smm.h>
Naresh G Solankiab5d6902016-10-15 18:13:55 +05304#include <ec/google/chromeec/smm.h>
5#include <soc/iomap.h>
Naresh G Solankiab5d6902016-10-15 18:13:55 +05306#include <soc/pm.h>
Kyösti Mälkki89d7fd82019-08-13 07:57:34 +03007#include <intelblocks/smihandler.h>
Naresh G Solankiab5d6902016-10-15 18:13:55 +05308#include "ec.h"
Barnali Sarkara5b10412016-11-28 14:53:12 +05309#include <variant/gpio.h>
Naresh G Solankiab5d6902016-10-15 18:13:55 +053010
Naresh G Solankiab5d6902016-10-15 18:13:55 +053011void mainboard_smi_gpi_handler(const struct gpi_status *sts)
12{
Julius Wernercd49cce2019-03-05 16:53:33 -080013 if (CONFIG(BOARD_INTEL_KBLRVP8))
V Sowmya6b78b732018-01-22 20:23:16 +053014 return;
15
Julius Wernercd49cce2019-03-05 16:53:33 -080016 if (CONFIG(EC_GOOGLE_CHROMEEC))
Naresh G Solankiab5d6902016-10-15 18:13:55 +053017 if (gpi_status_get(sts, EC_SMI_GPI))
18 chromeec_smi_process_events();
19}
20
21void mainboard_smi_sleep(u8 slp_typ)
22{
Julius Wernercd49cce2019-03-05 16:53:33 -080023 if (CONFIG(EC_GOOGLE_CHROMEEC))
Kyösti Mälkki47af8012023-04-29 08:14:30 +030024 chromeec_smi_sleep(slp_typ, MAINBOARD_EC_S3_WAKE_EVENTS,
25 MAINBOARD_EC_S5_WAKE_EVENTS);
Naresh G Solankiab5d6902016-10-15 18:13:55 +053026}
27
28int mainboard_smi_apmc(u8 apmc)
29{
Julius Wernercd49cce2019-03-05 16:53:33 -080030 if (CONFIG(EC_GOOGLE_CHROMEEC))
Naresh G Solankiab5d6902016-10-15 18:13:55 +053031 chromeec_smi_apmc(apmc, MAINBOARD_EC_SCI_EVENTS,
32 MAINBOARD_EC_SMI_EVENTS);
33 return 0;
34}