From c21b054acc866dc79c4783338e97337b9ca9c587 Mon Sep 17 00:00:00 2001 From: Sven Schnelle Date: Sat, 4 Jun 2011 19:35:22 +0200 Subject: SMM: add mainboard_apm_cnt() callback motherboards can use this hook to get notified if someone writes to the APM_CNT port (0xb2). If the hook returns 1, the chipset specific hook is also skipped. Change-Id: I05f1a27cebf9d25db8064f2adfd2a0f5759e48b5 Signed-off-by: Sven Schnelle Reviewed-on: http://review.coreboot.org/3 Reviewed-by: Patrick Georgi Tested-by: build bot (Jenkins) --- src/include/cpu/x86/smm.h | 2 +- src/southbridge/intel/i82801gx/smihandler.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/include/cpu/x86/smm.h b/src/include/cpu/x86/smm.h index ad0984eae5..559b1b7197 100644 --- a/src/include/cpu/x86/smm.h +++ b/src/include/cpu/x86/smm.h @@ -263,4 +263,4 @@ void __attribute__((weak)) northbridge_smi_handler(unsigned int node, smm_state_ void __attribute__((weak)) southbridge_smi_handler(unsigned int node, smm_state_save_area_t *state_save); void __attribute__((weak)) mainboard_smi_gpi(u16 gpi_sts); - +int __attribute__((weak)) mainboard_apm_cnt(u8 data); diff --git a/src/southbridge/intel/i82801gx/smihandler.c b/src/southbridge/intel/i82801gx/smihandler.c index aefa283571..bccf6d5f05 100644 --- a/src/southbridge/intel/i82801gx/smihandler.c +++ b/src/southbridge/intel/i82801gx/smihandler.c @@ -362,6 +362,9 @@ static void southbridge_smi_apmc(unsigned int node, smm_state_save_area_t *state /* Emulate B2 register as the FADT / Linux expects it */ reg8 = inb(APM_CNT); + if (mainboard_apm_cnt && mainboard_apm_cnt(reg8)) + return; + switch (reg8) { case CST_CONTROL: /* Calling this function seems to cause -- cgit v1.2.3