blob: 81972ff42a70b3455e3cc78890fa31df4fab2cc4 [file] [log] [blame]
Angel Ponsfeedf232020-04-05 13:22:01 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Stefan Reinauer49428d82013-02-21 15:48:37 -08002
Furquan Shaikh76cedd22020-05-02 10:24:23 -07003#include <acpi/acpi.h>
Stefan Reinauer49428d82013-02-21 15:48:37 -08004#include <console/console.h>
5#include <cpu/x86/smm.h>
Stefan Reinauer49428d82013-02-21 15:48:37 -08006#include <southbridge/intel/bd82x6x/pch.h>
7#include <southbridge/intel/bd82x6x/me.h>
8#include <northbridge/intel/sandybridge/sandybridge.h>
Stefan Reinauer49428d82013-02-21 15:48:37 -08009
Stefan Reinauer49428d82013-02-21 15:48:37 -080010/* Include EC functions */
11#include <ec/google/chromeec/ec.h>
Kyösti Mälkki923b8ec2022-11-29 07:36:44 +020012#include <ec/google/chromeec/smm.h>
Stefan Reinauer49428d82013-02-21 15:48:37 -080013#include "ec.h"
14
Duncan Laurie0edc2242013-04-29 15:04:30 -070015void mainboard_smi_gpi(u32 gpi_sts)
Stefan Reinauer49428d82013-02-21 15:48:37 -080016{
Kyösti Mälkki83faa5d2023-01-05 15:39:16 +020017 if (gpi_sts & (1 << EC_SMI_GPI))
18 chromeec_smi_process_events();
Stefan Reinauer49428d82013-02-21 15:48:37 -080019}
20
21void mainboard_smi_sleep(u8 slp_typ)
22{
23 /* Disable USB charging if required */
Kyösti Mälkki027f86e2022-12-02 15:30:10 +020024 chromeec_set_usb_charge_mode(slp_typ);
Stefan Reinauer49428d82013-02-21 15:48:37 -080025
26 /* Disable SCI and SMI events */
27 google_chromeec_set_smi_mask(0);
28 google_chromeec_set_sci_mask(0);
29
30 /* Clear pending events that may trigger immediate wake */
Rob Barnesf1ade482021-06-14 10:22:21 -060031 while (google_chromeec_get_event() != EC_HOST_EVENT_NONE)
32 ;
Stefan Reinauer49428d82013-02-21 15:48:37 -080033
34 /* Enable wake events */
Kyösti Mälkki383c4e72023-01-05 18:05:11 +020035 google_chromeec_set_wake_mask(MAINBOARD_EC_S3_WAKE_EVENTS);
Stefan Reinauer49428d82013-02-21 15:48:37 -080036}
37
Stefan Reinauer49428d82013-02-21 15:48:37 -080038int mainboard_smi_apmc(u8 apmc)
39{
Kyösti Mälkki383c4e72023-01-05 18:05:11 +020040 chromeec_smi_apmc(apmc, MAINBOARD_EC_SCI_EVENTS, MAINBOARD_EC_SMI_EVENTS);
Stefan Reinauer49428d82013-02-21 15:48:37 -080041 return 0;
42}