From 9ebb3f5efaf7ebf643210c8c0befadfcc47e24f1 Mon Sep 17 00:00:00 2001 From: Nicolas Reinecke Date: Fri, 17 Oct 2014 15:06:29 +0200 Subject: lenovo/t520: Enable wake on LID and Fn key Change-Id: Ieb23728ba171733820830e86e77a4c6d8e1cc57d Signed-off-by: Nicolas Reinecke Reviewed-on: http://review.coreboot.org/7101 Tested-by: build bot (Jenkins) Reviewed-by: Vladimir Serbinenko --- src/mainboard/lenovo/t520/smihandler.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/mainboard') diff --git a/src/mainboard/lenovo/t520/smihandler.c b/src/mainboard/lenovo/t520/smihandler.c index f4ed367d8a..c81825e798 100644 --- a/src/mainboard/lenovo/t520/smihandler.c +++ b/src/mainboard/lenovo/t520/smihandler.c @@ -167,3 +167,23 @@ int mainboard_smi_apmc(u8 data) } return 0; } + +void mainboard_smi_sleep(u8 slp_typ) +{ + if (slp_typ == 3) { + u8 ec_wake = ec_read(0x32); + /* If EC wake events are enabled, enable wake on EC WAKE GPE. */ + if (ec_wake & 0x14) { + u32 gpe_rout; + u16 pmbase = pci_read_config16(PCI_DEV(0, 0x1f, 0), 0x40) & 0xfffc; + + /* Enable EC WAKE GPE. */ + outl(inl(pmbase + GPE0_EN) | (1 << 29), pmbase + GPE0_EN); + gpe_rout = pci_read_config32(PCI_DEV(0, 0x1f, 0), GPIO_ROUT); + /* Redirect EC WAKE GPE to SCI. */ + gpe_rout &= ~(3 << 26); + gpe_rout |= (2 << 26); + pci_write_config32(PCI_DEV(0, 0x1f, 0), GPIO_ROUT, gpe_rout); + } + } +} -- cgit v1.2.3