blob: 21dfe1fedc8989c2edc77757cea3a92e77f657d3 [file] [log] [blame]
Angel Pons60ec3652020-04-03 01:22:13 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Stefan Reinauer6651da32012-04-27 23:16:30 +02002
Furquan Shaikh76cedd22020-05-02 10:24:23 -07003#include <acpi/acpi.h>
Stefan Reinauer6651da32012-04-27 23:16:30 +02004#include <arch/io.h>
Stefan Reinauer6651da32012-04-27 23:16:30 +02005#include <cpu/x86/smm.h>
Stefan Reinauer6651da32012-04-27 23:16:30 +02006#include <southbridge/intel/bd82x6x/pch.h>
7#include <southbridge/intel/bd82x6x/me.h>
8#include <northbridge/intel/sandybridge/sandybridge.h>
Stefan Reinauer6651da32012-04-27 23:16:30 +02009
Stefan Reinauer6651da32012-04-27 23:16:30 +020010/*
11 * Change LED_POWER# (SIO GPIO 45) state based on sleep type.
12 * The IO address is hardcoded as we don't have device path in SMM.
13 */
14#define SIO_GPIO_BASE_SET4 (0x730 + 3)
15#define SIO_GPIO_BLINK_GPIO45 0x25
16void mainboard_smi_sleep(u8 slp_typ)
17{
18 u8 reg8;
19
20 switch (slp_typ) {
Aaron Durbin30b0c7a2016-07-13 13:01:13 -050021 case ACPI_S3:
22 case ACPI_S4:
Stefan Reinauer6651da32012-04-27 23:16:30 +020023 break;
24
Aaron Durbin30b0c7a2016-07-13 13:01:13 -050025 case ACPI_S5:
Stefan Reinauer6651da32012-04-27 23:16:30 +020026 /* Turn off LED */
27 reg8 = inb(SIO_GPIO_BASE_SET4);
28 reg8 |= (1 << 5);
29 outb(reg8, SIO_GPIO_BASE_SET4);
30 break;
31 }
32}