/* SPDX-License-Identifier: GPL-2.0-only */ #include #include #include #include #include void mainboard_smi_gpi(u32 gpi_sts) { printk(BIOS_SPEW, "%s: gpi_sts: %08x\n", __func__, gpi_sts); } int mainboard_smi_apmc(u8 data) { u8 val; switch (data) { case APM_CNT_ACPI_ENABLE: printk(BIOS_SPEW, "%s: APM CNT EN: %02x\n", __func__, data); /* Enable wake on PS2 */ val = inb(SCH5545_RUNTIME_REG_BASE + SCH5545_RR_PME_EN1); val |= (SCH5545_KBD_PME_EN | SCH5545_MOUSE_PME_EN); outb(val, SCH5545_RUNTIME_REG_BASE + SCH5545_RR_PME_EN1); /* Clear pending and enable PMEs */ outb(SCH5545_GLOBAL_PME_STS, SCH5545_RUNTIME_REG_BASE + SCH5545_RR_PME_STS); outb(SCH5545_GLOBAL_PME_EN, SCH5545_RUNTIME_REG_BASE + SCH5545_RR_PME_EN); break; case APM_CNT_ACPI_DISABLE: printk(BIOS_SPEW, "%s: APM CNT DIS: %02x\n", __func__, data); /* Disable wake on PS2 */ val = inb(SCH5545_RUNTIME_REG_BASE + SCH5545_RR_PME_EN1); val &= ~(SCH5545_KBD_PME_EN | SCH5545_MOUSE_PME_EN); outb(val, SCH5545_RUNTIME_REG_BASE + SCH5545_RR_PME_EN1); /* Clear pending and disable PMEs */ outb(SCH5545_GLOBAL_PME_STS, SCH5545_RUNTIME_REG_BASE + SCH5545_RR_PME_STS); outb(0, SCH5545_RUNTIME_REG_BASE + SCH5545_RR_PME_EN); break; default: break; } return 0; } void mainboard_smi_sleep(u8 slp_typ) { printk(BIOS_SPEW, "%s: SMI sleep: %02x\n", __func__, slp_typ); }