coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
smihandler.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <acpi/acpi.h>
4 #include <arch/io.h>
5 #include <cpu/x86/smm.h>
6 #include <soc/nvs.h>
10 
11 /*
12  * Change LED_POWER# (SIO GPIO 45) state based on sleep type.
13  * The IO address is hardcoded as we don't have device path in SMM.
14  */
15 #define SIO_GPIO_BASE_SET4 (0x730 + 3)
16 #define SIO_GPIO_BLINK_GPIO45 0x25
17 void mainboard_smi_sleep(u8 slp_typ)
18 {
19  u8 reg8;
20 
21  switch (slp_typ) {
22  case ACPI_S3:
23  case ACPI_S4:
24  break;
25 
26  case ACPI_S5:
27  /* Turn off LED */
28  reg8 = inb(SIO_GPIO_BASE_SET4);
29  reg8 |= (1 << 5);
30  outb(reg8, SIO_GPIO_BASE_SET4);
31  break;
32  }
33 }
void __weak mainboard_smi_sleep(u8 slp_typ)
Definition: smihandler.c:210
u8 inb(u16 port)
void outb(u8 val, u16 port)
@ ACPI_S5
Definition: acpi.h:1385
@ ACPI_S4
Definition: acpi.h:1384
@ ACPI_S3
Definition: acpi.h:1383
#define SIO_GPIO_BASE_SET4
Definition: smihandler.c:15
uint8_t u8
Definition: stdint.h:45