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.

Signed-off-by: Sven Schnelle <sv...@stackframe.org>
---
 src/include/cpu/x86/smm.h                   |    2 +-
 src/southbridge/intel/i82801gx/smihandler.c |    3 +++
 2 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/include/cpu/x86/smm.h b/src/include/cpu/x86/smm.h
index ad0984e..559b1b7 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 aefa283..bccf6d5 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
-- 
1.7.5.3


-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to