📄 oemdsdt.asl
字号:
Include(".\\oemport\\acpi.asl\\irq-pci.asl")
//-----------------------------------------------------------------------
// Miscellaneous I/O Ports
//-----------------------------------------------------------------------
// This table should contain any I/O port that is not used by a specific
// device but does not return FFh when read. Some examples of I/O ports
// that should be reserved here are:
// The I/O peripheral chip's index/data ports
// Any I/O port in the range 00 - FF that is not used by any other dev node
// The IRQ edge/level control ports (4D0/4D1)
//-----------------------------------------------------------------------
// For example:
// ASL macro "FixedIO"
// FixedIO( WordConst, // _BAS, Address base
// ByteConst // _LEN, Range length
// )
// if SuperIO module Index/Data port address allocated in
// 0x3f0 / 0x3f1 we need to update "FixedIO" macro with
// "Address base" = 0x3f0 and "Range length" = 0x02
// FixedIO( 0x3f0, 0x02)
// ^^^ ^^ fields only to edit
//-----------------------------------------------------------------------
Device(SYSR) {
Name(_HID, EISAID("PNP0C02"))
Method(_STA, 0)
{
If(OSFL) // If running under Win98?
{
Return(0x0f) // Device present
}
Return(0x0) // Not present if NT 5.0
}
Name(IORG,
ResourceTemplate()
{
FixedIO(0x10, 0x10)
FixedIO(0x22, 0x1e)
FixedIO(0x44, 0x1c)
FixedIO(0x62, 0x02)
FixedIO(0x65, 0x0b)
FixedIO(0x72, 0x0E)
FixedIO(0x80, 0x01)
FixedIO(0x84, 0x03)
FixedIO(0x88, 0x01)
FixedIO(0x8C, 0x03)
FixedIO(0x90, 0x10)
FixedIO(0xa2, 0x1e)
FixedIO(0xe0, 0x10)
// LM78/79 or W8378x Hardware Monitor ICs
FixedIO(0x290, 0x8)
// Decoded but not used by FDC
// IO(Decode16, 0x3f3, 0x3f3, 0, 0x1)
// Abel Wu
// Reserve 480 - 48F for Extended DMA ports
IO(Decode16, 0x480, 0x480, 0, 0x10)
// Reserve 4D0 and 4D1 for IRQ edge/level control port
IO(Decode16, 0x4d0, 0x4d0, 0, 0x2)
// PM base address allocation
IO(Decode16, 0, 0, 0, 0x0, IO1)
// SMBus base address allocation
IO(Decode16, 0, 0, 0, 0x0, IO2)
// Index\Data for Super I/O
IO(Decode16, 0x3f0, 0x3f0, 0, 0x2)
// Abel Wu
// Reserve Unknow memory FFEF0000-FFEFFFFF
Memory32(ReadOnly, 0xffef0000, 0xffef0000, 0, 0x10000)
} // End of ResourceTemplate
) // end of IORG
Method(_CRS, 0)
{
CreateWordField(IORG, \_SB.PCI0.SBRG.SYSR.IO1._MIN, PM00) // PM Base
CreateWordField(IORG, \_SB.PCI0.SBRG.SYSR.IO1._MAX, PM01)
CreateByteField(IORG, \_SB.PCI0.SBRG.SYSR.IO1._LEN, PMLN) // PM Length
CreateWordField(IORG, \_SB.PCI0.SBRG.SYSR.IO2._MIN, SM00) // SMB Base
CreateWordField(IORG, \_SB.PCI0.SBRG.SYSR.IO2._MAX, SM01)
CreateByteField(IORG, \_SB.PCI0.SBRG.SYSR.IO2._LEN, SMLN) // SMB length
Store(\_SB.PCI0.PMU.PMBS(), PM00)
Store(PM00, PM01)
If(PM00) // If Base <> 0 : set length to 40
{ // Otherwise to 0
// Abel Wu
Store(0x40, PMLN)
}
Store(\_SB.PCI0.PMU.SMBS(), SM00)
Store(SM00, SM01)
If(SM00) // If Base <> 0 : set length to 10
{ // Otherwise to 0
// Abel Wu
Store(0x10, SMLN)
}
Return(IORG)
}
} // End System Resources SYSR
/////////////////////////////////////////////////////////////////////////
// System board extension for ACPI BIOS
// Place that device under \_SB scope, As per Msft the MEM
// Resources should not be declared neither in PCI0 nor in PCI-ISA Bus
/////////////////////////////////////////////////////////////////////////
Device(\_SB.MEM) { // Memory
Name(_HID, EISAID("PNP0C01")) // Hardware Device ID
Method (_STA, 0)
{
If(\_SB.PCI0.OSFL) // If running under Win98?
{
Return(0x0f) // Device present
}
Return(0x0) // Not present
}
Name(MEM1,
ResourceTemplate()
{
// Base Address 0 - 0x9FFFF , 640k DOS memory
Memory32Fixed(ReadWrite, 0x0000, 0xA0000 )//Writeable
// Base Address F000 - 1M , 64k BIOS
Memory32Fixed(ReadOnly, 0xF0000, 0x10000 )//Non-writeable
// Base Address 1M - Top of system present memory
Memory32Fixed(ReadWrite, 0x100000, 0x1FF00000, TOPM)//Writeable
Memory32Fixed(ReadOnly, 0xFFFF0000, 0x10000)//Non-Writeable, 64K ROM image
})
Method (_CRS, 0)
{
// Top of memory
// MDET Control Method returns available system memory
CreateDwordField(MEM1, \_SB.MEM.TOPM._LEN, TOP1)
// MDET defined in \_SB.PCI0 scope
Subtract(\_SB.PCI0.MDET(), 0x100000, TOP1)
Return(MEM1)
} // end of _CRS
} // End Memory
//-----------------------------------------------------------------------
// ONBOARD I/O Standard peripherals
// DMA, Keyboard, Timer, Speaker, CMOS...
//-----------------------------------------------------------------------
Include(".\\oemport\\acpi.asl\\sysstand.asl")
// Resume by key pressed
Name(PS2K._PRW, Package(){0x07, 0x01})
/* An example of resume code can be used on particular designs if event handler is needed
Method(PS2K._PSW, 1)
{
If(Arg0){ } // Enable resume by Keyboard
Else
{ } // Disable resume
}
Scope(\_GPE)
{
Method(_L07)
{
// OEM ASL code
Notify(\_SB.PCI0.SBRG.PS2K, 0x2) // Wake up event
}
}
*/
// Resume by key pressed
Name(PS2M._PRW, Package(){0x07, 0x01})
// Route and Release I/O, DMA resources to EIO Bus
// Dummy methods
Method(RRIO, 4) { NoOp }
Method(RGNR, 4) { NoOp }
Method(rDMA, 3) { NoOp }
Name(SPIO, 0x3f0) // Super I/O Index/Data base address
//-----------------------------------------------------------------------
// Super IO devices (FDC, UART1,2, LPT, ECP, IR)
//-----------------------------------------------------------------------
Include(".\\oemport\\acpi.asl\\superio.asl")
Name(UAR1._PR0, Package(){URP1}) // Reference to PowerResources
// Resume by modem Ring
Name(UAR1._PRW, Package(){0x01, 0x01})
} // End of SBRG
//-----------------------------------------------------------------------
// PCI Power Management Unit (PMU)
//-----------------------------------------------------------------------
Device(PMU) {
Name(_ADR, 0x010001)
// Contains the PMBS & SMBS control methods to return the PM & SMBus I/O base address
Method(PMBS,0) { // Return Power Management I/O base address
Or(ShiftLeft(0x004,8), 0x000, Local0)
Return(Local0)
}
Method(SMBS,0) { // Return SMBus I/O base address
Or(ShiftLeft(0x004,8), 0x040, Local0)
Return(Local0)
}
// PM controller IO space
OperationRegion(PWRG, SystemIO, PMBS, 0x40)
}
Device(USB) { // Device USB
Name(_ADR, 0x010002)
} // end USB
} // End of PCI0 Root Bus
} // End of _SB scope
//----------------------------------------------------------------------
// SYSTEM MANAGEMENT DEVICES
//----------------------------------------------------------------------
OperationRegion(FNOR, SystemIO, 0x434, 0x04)
OperationRegion(SIOR, SystemIO, 0x370, 0x02)
Field ( SIOR, ByteAcc, NoLock, Preserve)
{
SIND,8, //field named INDX is 8 bits wide
SDTA,8 //field DATA is 8 bits wide
}
//-----------------------------------------------------------------------
// System indication 1
//-----------------------------------------------------------------------
IndexField(SIND, SDTA,ByteAcc, NoLock, Preserve)
{
,25,
LEDW,1, // LED control bit 1
}
Name(LDON, 1)
Include(".\\oemport\\acpi.asl\\SI.asl")
//-----------------------------------------------------------------------
// _PTS METHOD CALLED JUST BEFORE OS GO TO SLEEP
//-----------------------------------------------------------------------
Method(_PTS, 1){
Store(Arg0, DBG8)
// Added by Abel Wu at 07/24/98 for Clear Wakeup IRQ Status
if (LEqual(Arg0,1)){
While(WAKS)
{
Stall(80)
Store(1,WAKS)
}
}
}
//-----------------------------------------------------------------------
// _WAK METHOD CALLED RIGHT AFTER OS WAKES UP FROM SLEEP
//-----------------------------------------------------------------------
Method(_WAK, 1) {
ShiftLeft(Arg0, 4, DBG8)
// Added by Abel Wu at 07/24/98 for Generate SCI
Store(1,BIOS)
}
//-----------------------------//
// For debug purpose only //
//-----------------------------//
OperationRegion (WAKP, SystemIO, 0x00414, 1)
Field (WAKP, ByteAcc,NoLock,Preserve)
{ ,7,WAKS,1}
OperationRegion (GBLE, SystemIO, 0x00413, 1)
Field (GBLE, ByteAcc,NoLock,Preserve)
{ ,1,BIOS,1,}
OperationRegion (TEMP, SystemIO, 0x80, 1)
Field (TEMP, ByteAcc,NoLock,Preserve)
{ DBG8,8,}
OperationRegion (DEB0, SystemIO, 0x90, 2)
Field (DEB0, WordAcc,NoLock,Preserve)
{ DBG9,16,}
} // End of ASL File
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -