📄 pmupost.asm
字号:
; []===========================================================[]
;
; NOTICE: THIS PROGRAM BELONGS TO AWARD SOFTWARE INTERNATIONAL(R)
; INC. IT IS CONSIDERED A TRADE SECRET AND IS NOT TO BE
; DIVULGED OR USED BY PARTIES WHO HAVE NOT RECEIVED
; WRITTEN AUTHORIZATION FROM THE OWNER.
;
; []===========================================================[]
;
;
;----------------------------------------------------------------------------
;Rev Date Name Description
;----------------------------------------------------------------------------
;R67B 05/13/99 RIC Fixed that the mistake of R21 code cause RTC alarm
; to test fail.
;R71 05/13/99 ADS Fixed Modem Ring function disable that still wake up
; when ring in for HCT's test & fixed code error.
;R70 05/07/99 RIC Fixed that ISA Master/DMA wake-up event is always
; enabled in Boot before any other SMI in the case that
; BIOS No define "Move_F000_PMU_INIT_To_E000".
;R67A 05/06/99 RIC Move the CMOS index of Century High Byte to 32h from
; 7Fh for patching Y2K CMOS 32h function.
;R69 04/28/99 RAX Addded switch 'RI_AlWAYS_Wakeup_SUSPEND'.
;R65A 04/27/99 RAX Added switch to enable PME wake-up suspend always, and
; fixed PME didn't control.
;R68 04/26/99 RAX Fixed 'HDD_PWRDOWN_IN_SUSPEND' funtion not working and
; add switch to remove HDD power down in suspend fuction
; control item.
;R30A 04/23/99 RIC Fix that "WAKE_LAN_BY_LID"&"LID_Triger_By_Rising_Edge"
; definition fail in using 3Com LAN on 596A chip.
; And add "LID_ACTIVE_HIGH" definition.
;R67 04/22/99 RIC Fix that NT2000(Build-in 1982-2015) can't be installed.
; Because CMOS 7fh is ACPI Century Field not Year Alarm!
;R66A 04/16/99 RIC Fixed that "IOTRAP_SUPPORT" definition cause system
; unstable.
;R66 04/12/99 RIC Add "USB_MOUSE_SUPPORT" definition.
;R65 03/26/99 RAX Added "PME_SUPPORT" define to support PME wakeup and
; power on even ACPI mode and fixed coding mistake.
;R64 03/26/99 RIC Save CMOS Index Port in SMI Hander.
;R49C 03/24/99 ADS Fixed s4 resume hang in post 61h with SDRAM 64M bytes.
;R63 03/22/99 RAX Added define for that if customer request PM function
; working just only APM hooked.
;R62 03/19/99 RAX Fixed PM didn't work on BIOS 6.00.
;R49B 03/17/99 ADS Fixed s4 resume hanged in VGA BIOS.
;R61 03/11/99 ADS Add "WAKE_LAN_BY_GPI" function to support PCI2.2
; specification.
; NOTE: you must defined "WAKE_LAN_BY_LID" before
; "WAKE_LAN_BY_GPI".
;R52B 03/08/99 RIC Fix the R52A code was still in-completely.
;R32A 02/08/99 RIC Fix that Modem Ring Resume Setting to Disable fail
; in "Move_F000_PMU_INIT_To_E000" define.
;R60 02/01/99 RAX Modify code for not use hard coding.
;R59 02/01/99 ADS Added "Chkwakeup_source" hook to resume from SMI
; function(ext: power buttom,extsmi etc...)for WIN98
; OSR1.
;R58 02/01/99 ADS Patch WIN98 OSR1 enable "scheduled task" will clear all
; resume event (ex:like keyboard mouse etc..)
;R57 01/30/99 PAL Added "ADM9240_CPUFAN_CNTL_IN_SUSPEND" option
;R56 01/27/99 RAY Support LCD_CRT_OPTION & NEW_SUPERVGA_KERNEL
;R52A 01/21/99 RIC Fix the R52 code was still in-completely.
;R55 01/20/99 GAR Add special for TYAN
;R54 01/20/99 RIC Fix that VGA Active of PM Setup set ON cause system
; to hang in Win98(ACPI mode)
;R53 01/20/99 RIC Fix that Power Fail function abnormally when reset in
; Suspend or S1.
;R52 01/19/99 ADS Add VT686 PM event VGA reg.
;R51 01/14/99 ADS Add "PM_Beep_Speaker" function to support into suspend
; & resume speaker beep.
;R49A 01/13/99 ADS Fixed sometime cause s4 resume hanged.
;R50 01/12/99 RIC Add "Blink_Suspend_LED_In_GPO0" definition.
;R49 01/11/99 ADS Added Suspend to HDD function.
;R48 01/05/99 GAR If define POWER_LED_SELECTION, POWER_LED_USE will
; be defined
;R47 01/05/99 RIC Add 50h func SMI call in SMI_Soft_Off routine for
; specail programing of ACPI wake up .
;R46 01/04/99 GAR Fix bug. If PS2 mouse doesn't exist and restart to DOS
; in APCI mode, the keyboard will be lock
;R45 12/31/98 ADS Add "APC_Power_LED_ITEM" define for customer request.
;R31A 12/31/98 GAR Fix bug.The mouse power on will not effect if R31
;R44 12/29/98 ADS Fixed s4 can't show progress view.
;R42B 12/28/98 GAR Fix power led compile bug.
;R43 12/28/98 PAL Added "FAN3_CNTL_USE_PWM" to control fan in suspend
;R42A 12/24/98 GAR Move fan code of ITE8693 to ITE8693.SSR
;R42 12/21/98 GAR Add led and fan functions for ITE8693/8673
;R21A 12/16/98 RIC Add E000_Read_GPI_Pin sub-routine.
;R41 12/08/98 PAL Added W83782D & W83783S CPUFAN control in suspend use
; "W83782D_CPUFAN_CNTL_IN_SUSPEND" & "CPU1_FAN_USE_PWM"
;R05A 12/02/98 RIC Fix that IRQ Wake Event of ACPI don't according to
; BIOS Setup.
;R40 11/30/98 BAR Update ESCD DMI use SMM mode.
;R39 11/26/98 RIC Modify the Throttling Reg to 24bit from 32bit
; for HCT test fail in Throttling Duty Cycle
;R38A 11/16/98 RIC Fix that Trend Anti-Virus replace F0000-F4800 area.
; So move Get_Set_Ct_OR, Get_Set_Ct_AND to chiprun.
;R38 11/13/98 PAL Move E000 shadow control code from CHIPPOST.ASM
; to avoid Trend code destroy and added Wakeup_VGA option
;R37 11/11/98 ADS Added suspend to HDD function.
;R36 11/10/98 RIC Fix that APM1.2 of HCT8.0 test fail in Disabled Timer.
;R35 11/04/98 RIC Add "Power_Type_Selectable" definition.
;R34 11/01/98 RIC If Onchip USB Disable, don't enable Legacy USB SMI.
; Otherwise some mainboards will sometimes have garbage
; SMI.
;R33 11/01/98 RIC Add "Disable_EXTSMI_When_PowerOff" define.
;R32 10/30/98 RIC Fix that Modem Ring Resume Setting to Disable fail.
;R31 10/29/98 GAR Add to disable and enable keybroad interface command
; to solve that when windows restart to DOS, keyborad
; doesn't work.
;R30 10/26/98 RIC Fix that "WAKE_LAN_BY_LID" fail in using 3Com LAN
; Card.
;R29 10/20/98 RIC Turn on/off HDD standby timer while ACPI function on/off
;R28 10/19/98 RIC Save PCI configuration space I/O port.
;R25B 10/08/98 RIC Fix that "Clear_PME_Before_Off" define still hang
; in some mainboards.
;R27 10/07/98 RIC Fix that RTC alarm resume cause system to hang in
; Windows NT.
;R25A 10/06/98 RIC Fix that "Clear_PME_Before_Off" define sometimes hang.
;R22A 10/06/98 GAR Add "Use_4_Frame_PS2_Mouse" for 4 frame PS2 mouse
;R23A 10/06/98 RIC Remove R23 code.
;R26 09/23/98 RIC Change ACPI IRQ assign algorithm to Auto-assigned.
; If you want to use old algorithm, please define:
; 1."No_ACPI_IRQ_Auto_Assign" for disabled new algorithm.
; 2."ACPI_IRQ_Selectable" for enabled old algorithm.
;R25 09/22/98 RIC Add "Clear_PME_Before_Off" define to support WOL
; in suspend.
;R24 09/22/98 RIC Fix that WOL hang in POST 0Dh in some mainboard
; (with 596 SouthBridge)
;R23 09/21/98 RIC Add "Cover_Garbage_IRQ12" define.
;R09A 09/16/98 ADS Fixed error.
;R22 09/16/98 GAR Add PS2 mouse reset command to IO_SOFT_OFF.
; This can enable PS2 mouse, if you select mouse power
; on.
;R07A 09/11/98 RIC Add "Disable_EXTSMI_Button" define to fix that some
; mainboard design error in EXTSMI.
; (System will Auto-PowerOn when PowerOff by PWRBTN)
;R16B 09/10/98 RIC Fix that R16A code cause system sometimes auto PowerOn
; when Power Button press in Instant-Off condition.
;R20B 09/09/98 RIC Fix that R20 code cause EXTSMI Button abnormal.
;R21 09/01/98 RIC Add E000_Control_GPO_Pin routine.
;R20A 08/31/98 ADS Fixed R20 error.
;R20 08/27/98 RIC Add SMI_Sof_Off routine.
; and move APM16_PowerOff(PMU) code to SMI_Sof_Off.
;R18A 08/20/98 RIC Fixed that R18 code mistake in "Always_Enable_LID".
;R19 08/18/98 RIC Fixed that Power Buttom still can entry suspend.
;R18 08/12/98 RIC Add "Always_Enable_LID"
; "WAKE_LAN_BY_LID" definition.
;R17 08/10/98 RIC Fixed that system USB garbage status cause SMI routine
; fail when USB set to Disabled.
;R16A 08/05/98 RIC Fixed that abnormal Power Button function atill cause
; RTC Alarm resume fail.
;R16 07/29/98 RIC Fixed that Power Button function is abnormally in 596
; chip.
; Reason:
; 596 chip ACPI I/O Reg 2C[2] and 586B are
; in reverse design.
;R15 07/28/98 RIC Let USB Keyboard can wakeup from suspend when USB
; IRQ don't set to wakeup event.
;R14 07/24/98 RIC Add "Wake_On_GPI_Support" define.
;R13 07/20/98 RIC Add "LID_SUPPORT" define
;R12 07/20/98 RIC Fixed that SMBus Host Status cause system not to entry
; Suspend Mode.
;R11 07/15/98 RIC Remove no use code.
;R10 07/09/98 RIC Add "Wake_On_EXTSMI0_Support" define.
;R09 07/07/98 RIC Fixed that Green function is abnormal when Doze Time
; set enabled and Suspend Timer set to Disabled
;R08 07/01/98 RIC Fixed that Thermal function work abnormally.
; and Add "No_Thermal_Warning_Beep" for Thermal_With_SMI
;R07 06/29/98 RIC Fixed that system Power Buttom fail in new VT596 chip.
; Add "Cover_VT596_E_Version" define.
;R06 06/29/98 RIC Fixed that system hang at POST 0Ah in new VT596 chip.
;R05 06/15/98 RIC Fixed that system(with VT596,ACPI) can't wake-up from
; 'S1' mode in Win98.
;R04 06/15/98 RIC Fixed that PM Timeout and COM Mouse WakeUp abnormally
; in VT596.
;R03 06/12/98 RIC Add "No_PowerBottom_Debounce_In_Memphis" define.
;R02 06/15/98 RIC Fix code mistake.
;R01A 05/19/98 RIC Fixed that R01 code is not successful and modify
; "OverHot_Use_Thermal_Pin" define to "Thermal_Enable"
;R01 05/18/98 ADS Added "Suspend_When_High_In_GPI" &"OverHot_Use_Thermal_Pin"
; define.
;R00 05/13/98 RIC Initialization.
.386p
PAGE 56,132
TITLE CHIPSET -- 686 EISA/ISA ROM/BIOS
include BIOS.CFG
include BSETUP.INC
include COMMON.MAC
include COMMON.EQU
include POST.MAC
include CMOS.EQU
INCLUDE CHIPSET.EQU
_SMI_ENTRY EQU 0d0h
SMI_IDLE EQU 0d1h
SMI_SUS EQU 0d3h
ifdef APM_IN_SMBASE
COMPILE_FOR_APMBIOS = 1
include APM.INC
endif ;APM_IN_SMBASE
;R40 - start
ifdef Flash_IN_SMBASE
COMPILE_FOR_APMBIOS = 1
include SMIFlash.INC
endif ;Flash_IN_SMBASE
;R40 - end
extrn Get_Cmos:near
extrn Set_Cmos:Near
ifndef CRT_Control_Not_In_F000
ifndef CRT_Control_Not_In_APM
extrn Enable_CRT:near
extrn Disable_CRT:near
endif ;CRT_Control_Not_In_APM
endif ;CRT_Control_Not_In_F000
extrn PM_Option_Item:near
extrn PM_Auto_Table:near
extrn VGA_Type_Item:near
extrn Doze_Timer_Item:near
extrn Susp_Timer_Item:near
extrn Wait_APM_Item:near
extrn Video_Off_Item :near
extrn HDD_Timer_Item:Near
extrn IRQ3_Event_Item:Near
;R62 start
extrn IRQ4_Event_Item:near
extrn IRQ5_Event_Item:near
extrn IRQ6_Event_Item:near
extrn IRQ7_Event_Item:near
extrn IRQ8_Event_Item:near
extrn IRQ9_Event_Item:near
extrn IRQ10_Event_Item:near
extrn IRQ11_Event_Item:near
extrn IRQ12_Event_Item:near
extrn IRQ13_Event_Item:near
extrn IRQ14_Event_Item:near
extrn IRQ15_Event_Item:near
;R62 end
extrn Get_PMU:near
extrn Get_Set_PMU:near
extrn Set_PMU:near
extrn Get_Set_PMU_OR:near
;R38 extrn Get_Set_PMU_AND:near
extrn Get_Set_Ct_AND:near ;R38A
extrn Get_Set_PMU_AND:near ;R38A
extrn GetItem_Value:Near
extrn Get_PM_RAM_Seg:near
extrn Open_PM_RAM:near
extrn Close_PM_RAM:near
extrn Evt_HDD_Item:near
extrn Evt_DMA_Item:near
extrn Evt_INTR_Item:near
extrn Evt_LPT_COM_Item:near
extrn M_Evt_VGA_Item:near
ifdef Have_Conserve_Item
extrn Conserve_Mode_Item:near
endif; Have_Conserve_Item
extrn Alarm_Item:near
;R20 extrn RTC_Alarm_Resume:Far
extrn PWRBTN_OVRD_Item:Near
extrn Ring_Item:Near
ifdef ABIT_Have_Suspend_Fan_Item
extrn Fan_Item:Near
endif; ABIT_Have_Suspend_Fan_Item
ifndef New_Superio_Led_Function ;R42
ifdef PM_LED_USE_GPIO
extrn Set_PM_LED:near
endif; PM_LED_USE_GPIO
ifdef LED_Blinking_at_PM
extrn Set_PM_LED_Blinking:near
endif; LED_Blinking_at_PM
;R48 - start
ifdef Power_Led_Selection
POWER_LED_USE EQU 1
endif ;Power_Led_Selection
;R48 - end
;R42 - start
ifdef POWER_LED_USE
extrn Set_power_led:near
endif; POWER_LED_USE
else ;New_Superio_Led_Function
ifdef LED_Blinking_at_PM
extrn Set_power_led:near
endif; LED_Blinking_at_PM
endif ;New_Superio_Led_Function
;R42Aifdef Superio_support_Fan
;R42A extrn Fan_Power_On:Near
;R42A extrn Fan_Power_Off:Near
;R42Aendif ;Superio_support_Fan
;R42 - end
ifdef HDD_PWRDOWN_IN_SUSPEND
ifndef HDD_always_PWRDOWN_IN_SUSPEND ;R68
extrn HDD_Power_Item:near
endif ;HDD_always_PWRDOWN_IN_SUSPEND ;R68
endif; HDD_PWRDOWN_IN_SUSPEND
ifdef Break_Suspend_In_Mouse_CMOS
extrn Mouse_Irq_Item:near
extrn CONFIG_TABLE:near
extrn system1_byte:near
endif; Break_Suspend_In_Mouse_CMOS
extrn Post_call_proc:near
extrn F000_call_proc:near
extrn F000_GetItem_Value:near
extrn Get_PMIO:near
extrn Set_PMIO:near
extrn Get_Set_PMIO:near
extrn Get_Set_PMIO_OR:near
extrn Get_Set_PMIO_AND:near
extrn Set_PMIO_Clear:near
extrn Issue_SW_SMI:near
extrn F000_Func_End:near
extrn F000_Vect:near
;R42ifdef POWER_LED_USE
;R42 extrn Set_power_led:near
;R42endif; POWER_LED_USE
ifdef ACPI_Support
extrn ACPI_option_Item:near
extrn fPROC_Set_HDD_Standby_Timer:far ;R29
;R26 IFNDEF No_ACPI_IRQ_Selectable
IFDEF ACPI_IRQ_Selectable ;R26
extrn Assign_ACPI_IRQ_Item:near
;R26 ENDIF; No_ACPI_IRQ_Selectable
ENDIF;ACPI_IRQ_Selectable ;R26
ifdef S4_SUPPORT
extrn Do_S4_Suspend:far
extrn E_S4_Resume:far
extrn WakeUP_VGA:far ;R38
extrn REAL_IDT_LOC:near
endif; S4_SUPPORT
endif ;ACPI_Support
;R65A start
ifdef PME_SUPPORT
extrn WO_Item:near
endif ;PME_SUPPORT
;R65A end
;R37 - starts
ifdef Notebook_Power_Management
extrn Suspend_0V:near
extrn Resume_0V:near
extrn Suspend_Option_Item:near ;R49
extrn OS_TYPE_ITEM:near ;R49
endif ;Notebook_Power_Management
;R37 - ends
IFDEF USB_SUPPORT
ifdef USB_MOUSE_SUPPORT ;R66
extrn USB_Mouse_Item:near ;R66
endif ;USB_MOUSE_SUPPORT ;R66
extrn ONBD_USB_Item:near ;R17
extrn Usb_Legacy_Item:near
COMPILE_FOR_USBBIOS = 1
include USBBIOS.ASM
ENDIF ;USB_SUPPORT
RSM MACRO
db 0FH,0AAH ; Not defined in MASM.
ENDM
FIXOFST MACRO ADDRESS
dw offset ADDRESS - offset SMI_Handler_Start
ENDM
;[]-----------------------------------------------------------------------[]
; GGGGGGGG RRRRRRRR AA MMM MMM
; GGGGGGGGGGG RRRRRRRRR AAAA MMMMM MMMMM
; GGGG RRR RRR AAAAAA MMMMMM MMMMMM
; GGG GGGGG RRRRRRRRR AAA AAA MMM MMMMM MMM
; GGGG GGGG RRRRRRRR AAAAAAAAAA MMM MMMMM MMM
; GGGGGGGGGGGG RRR RRR AAAAAAAAAAAA MMM MMM MMM
; GGGGGGGGGG ======== RRR RRR AAA AAA MMM MMM MMM
;[]-----------------------------------------------------------------------[]
G_RAM SEGMENT USE16 AT 0
ORG 04H*4
include SEG_0.INC
ORG 400H
include G_RAM.INC
G_RAM ENDS
;R37 - starts
ifdef Notebook_Power_Management
SM_RAM SEGMENT USE16 AT 0
INCLUDE SM_RAM.INC
SM_RAM ENDS
;R49 - starts
ZV_Temp_Stack SEGMENT USE16 AT 0
org 1000h
VIDEO_BUFFER LABEL WORD
org 2000h
VMode_BUFFER LABEL WORD
org 0FFF0h
ZV_STACK_TOP LABEL DWORD
ZV_Temp_Stack ENDS
;R49 - ends
endif; Notebook_Power_Management
;R37 - ends
;R11 SMI_STRUCT STRUC
;R11 dd ?
;R11 _SpSave dw 1 dup (?)
;R11 _EspSave dd 1 dup (?)
;R11 _EaxSave dd 1 dup (?)
;R11 _EbxSave dd 1 dup (?)
;R11 _Cr2Save dd 1 dup (?)
;R11 _Cr3Save dd 1 dup (?)
;R11 _Gdt dq 1 dup (0)
;R11 dw 1 dup (?)
;R11 dw 1 dup (?)
;R11 db 1 dup (?)
;R11 db 1 dup (?)
;R11 db 1 dup (?)
;R11 db 1 dup (?)
;R11 dw 1 dup (?)
;R11 dw 1 dup (?)
;R11 db 1 dup (?)
;R11 db 1 dup (?)
;R11 db 1 dup (?)
;R11 db 1 dup (?)
;R11 _DsSave dt 1 dup (?)
;R11 _EsSave dt 1 dup (?)
;R11 _SsSave dt 1 dup (?)
;R11 _FsSave dt 1 dup (?)
;R11 _GsSave dt 1 dup (?)
;R11 _LdtSave dt 1 dup (?)
;R11 _TskSave dt 1 dup (?)
;R11 _Dstemp db 10 dup (?)
;R11 _GdtSave df 1 dup (?)
;R11 _GdtNew dw 1 dup (?)
;R11 dd 1 dup (?)
;R11 _IdtSave df 1 dup (?)
;R11 _RealModeIdt dw 1 dup (?)
;R11 dd 1 dup (?)
;R11 SMI_STRUCT ENDS
;[]-----------------------------------------------------------------------[]
; PPPPPPPPP MMM MMM RRRRRRRR AA MMM MMM
; PPP PPP MMMMM MMMMM RRRRRRRRR AAAA MMMMM MMMMM
; PPPPPPPPP MMMMMM MMMMMM RRR RRR AAAAAA MMMMMM MMMMMM
; PPPPPPPP MMM MMMMM MMM RRRRRRRRR AAA AAA MMM MMMMM MMM
; PPP MMM MMMMM MMM RRRRRRRR AAAAAAAAAA MMM MMMMM MMM
; PPP MMM MMM MMM RRR RRR AAAAAAAAAAAA MMM MMM MMM
; PPP MMM MMM MMM ===== RRR RRR AAA AAA MMM MMM MMM
;[]-----------------------------------------------------------------------[]
PM_RAM SEGMENT USE16 AT 0
ORG 0
PM_RAM_START LABEL BYTE
include PM_RAM.INC
include CT_PMRAM.INC
PM_RAM_LEN EQU $-Offset PM_RAM:PM_RAM_START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -