?? link.asl
字號:
Device(LNKA) {
Name(_HID, EISAID("PNP0C0F")) // PCI interrupt link
Name(_UID, 1)
Method(_STA, 0) {
And(PIRA, 0x80, Local0)
If(LEqual(Local0, 0x80)) {
Return(0x09) //R01 disabled
}
Else {
Return(0x0B) //R01 enabled, but no UI
}
}
Method(_PRS) {
Name(BUFA, ResourceTemplate() {
IRQ(Level, ActiveLow, Shared) {
3,4,5,6,7,9,10,11,12,14,15}
}) // Name(BUFA, ...)
Return(BUFA)
} // Method(_PRS)
Method(_DIS) {
Store(1, Local3)
And(PIRA, 0x0F, Local1)
Store(Local1, Local2)
If(LGreater(Local1, 8)) {
Subtract(Local1, 8, Local1)
}
ShiftLeft(Local3, Local1, Local3)
Not(Local3, Local3)
If(LGreater(Local2, 8)) {
And(ELC2, Local3, ELC2)}
Else {
And(ELC1, Local3, ELC1)}
Or(PIRA, 0x80, PIRA)
}
Method(_CRS) {
Name(BUFA, Buffer(){
0x23, 0x00, 0x00, 0x18,
0x79, 0})
CreateByteField(BUFA, 0x01, IRA1) // IRQ mask 1
CreateByteField(BUFA, 0x02, IRA2) // IRQ mask 2
Store(0x00, Local3)
Store(0x00, Local4)
And(PIRA, 0x8F, Local1)
If(LLess(Local1, 0x80)) { // Routing enable
And(Local1, 0x0F, Local1) // Mask off enable bit
If(LGreater(Local1, 0x07)) { // For upper byte mask
Subtract(Local1, 8, Local2) // Adjust it
ShiftLeft(One, Local2, Local4)} // Convert to bit mask
Else {If(LGreater(Local1, 0)) { // For lower byte mask
ShiftLeft(One, Local1, Local3)}} // Convert to bit mask
Store(Local3, IRA1) // update buffer
Store(Local4, IRA2)
}
Return(BUFA)
} // Method(_CRS)
Method(_SRS, 1) {
CreateByteField(ARG0, 0x01, IRA1) // IRQ mask 1
CreateByteField(ARG0, 0x02, IRA2) // IRQ mask 2
ShiftLeft(IRA2, 8, Local0) // Shift into upper byte
Or(Local0, IRA1, Local0) // Convert to word
Store(0, Local1)
ShiftRight(Local0, 1, Local0) // Adjust for zero based
While(LGreater(Local0, 0)) { // Convert bit position to number
Increment(Local1)
ShiftRight(Local0, 1, Local0)
}
And(PIRA, 0x70, Local0)
Or(Local1, Local0, PIRA)
} // Method(_SRS)
}
Device(LNKB) {
Name(_HID, EISAID("PNP0C0F")) // PCI interrupt link
Name(_UID, 2)
Method(_STA, 0) {
And(PIRB, 0x80, Local0)
If(LEqual(Local0, 0x80)) {
Return(0x09) //R01 disabled
}
Else {
Return(0x0B) //R01 enabled, but no UI
}
}
Method(_PRS) {
Name(BUFB, ResourceTemplate() {
IRQ(Level, ActiveLow, Shared) {
3,4,5,6,7,9,10,11,12,14,15}
}) // Name(BUFB, ...)
Return(BUFB)
} // Method(_PRS)
Method(_DIS) {
Store(1, Local3)
And(PIRB, 0x0F, Local1)
Store(Local1, Local2)
If(LGreater(Local1, 8)) {
Subtract(Local1, 8, Local1)
}
ShiftLeft(Local3, Local1, Local3)
Not(Local3, Local3)
If(LGreater(Local2, 8)) {
And(ELC2, Local3, ELC2)}
Else {
And(ELC1, Local3, ELC1)}
Or(PIRB, 0x80, PIRB)
}
Method(_CRS) {
Name(BUFB, Buffer(){
0x23, 0x00, 0x00, 0x18,
0x79, 0})
CreateByteField(BUFB, 0x01, IRB1) // IRQ mask 1
CreateByteField(BUFB, 0x02, IRB2) // IRQ mask 2
Store(0x00, Local3)
Store(0x00, Local4)
And(PIRB, 0x8F, Local1)
If(LLess(Local1, 0x80)) { // Routing enable
And(Local1, 0x0F, Local1) // Mask off enable bit
If(LGreater(Local1, 0x07)) { // For upper byte mask
Subtract(Local1, 8, Local2) // Adjust it
ShiftLeft(One, Local2, Local4)} // Convert to bit mask
Else {If(LGreater(Local1, 0)) { // For lower byte mask
ShiftLeft(One, Local1, Local3)}} // Convert to bit mask
Store(Local3, IRB1) // update buffer
Store(Local4, IRB2)
}
Return(BUFB)
} // Method(_CRS)
Method(_SRS, 1) {
CreateByteField(ARG0, 0x01, IRB1) // IRQ mask 1
CreateByteField(ARG0, 0x02, IRB2) // IRQ mask 2
ShiftLeft(IRB2, 8, Local0) // Shift into upper byte
Or(Local0, IRB1, Local0) // Convert to word
Store(0, Local1)
ShiftRight(Local0, 1, Local0) // Adjust for zero based
While(LGreater(Local0, 0)) { // Convert bit position to number
Increment(Local1)
ShiftRight(Local0, 1, Local0)
}
And(PIRB, 0x70, Local0)
Or(Local1, Local0, PIRB)
} // Method(_SRS)
}
Device(LNKC) {
Name(_HID, EISAID("PNP0C0F")) // PCI interrupt link
Name(_UID, 3)
Method(_STA, 0) {
And(PIRC, 0x80, Local0)
If(LEqual(Local0, 0x80)) {
Return(0x09) //R01 disabled
}
Else {
Return(0x0B) //R01 enabled, but no UI
}
}
Name(_PRS, ResourceTemplate() {
IRQ(Level, ActiveLow, Shared) {
3,4,5,6,7,9,10,11,12,14,15}
}) // Name(_PRS, ...)
Method(_DIS) {
Store(1, Local3)
And(PIRC, 0x0F, Local1)
Store(Local1, Local2)
If(LGreater(Local1, 8)) {
Subtract(Local1, 8, Local1)
}
ShiftLeft(Local3, Local1, Local3)
Not(Local3, Local3)
If(LGreater(Local2, 8)) {
And(ELC2, Local3, ELC2)}
Else {
And(ELC1, Local3, ELC1)}
Or(PIRC, 0x80, PIRC)
}
Method(_CRS) {
Name(BUFC, Buffer(){
0x23, 0x00, 0x00, 0x18,
0x79, 0})
CreateByteField(BUFC, 0x01, IRC1) // IRQ mask 1
CreateByteField(BUFC, 0x02, IRC2) // IRQ mask 2
Store(0, Local3)
Store(0, Local4)
And(PIRC, 0x8F, Local0) // Get register value
If(LLess(Local0, 0x80)) { // Routing enable
And(Local0, 0x0F, Local0) // Mask off enable bit
If(LGreater(Local0, 0x07)) { // For upper byte mask
Subtract(Local0, 8, Local2) // Adjust it
ShiftLeft(One, Local2, Local4)} // Convert to bit mask
Else {If(LGreater(Local0, 0)) { // For lower byte mask
ShiftLeft(One, Local0, Local3)}} // Convert to bit mask
Store(Local3, IRC1) // update buffer
Store(Local4, IRC2)
}
Return(BUFC)
} // Method(_CRS)
Method(_SRS, 1) {
CreateByteField(ARG0, 0x01, IRC1) // IRQ mask 1
CreateByteField(ARG0, 0x02, IRC2) // IRQ mask 2
ShiftLeft(IRC2, 8, Local0) // Shift into upper byte
Or(Local0, IRC1, Local0) // Convert to word
Store(0, Local1)
ShiftRight(Local0, 1, Local0) // Adjust for zero based
While(LGreater(Local0, 0)) { // Convert bit position to number
Increment(Local1)
ShiftRight(Local0, 1, Local0)
}
And(PIRC, 0x70, Local0)
Or(Local1, Local0, PIRC)
} // Method(_SRS)
}
Device(LNKD) {
Name(_HID, EISAID("PNP0C0F")) // PCI interrupt link
Name(_UID, 4)
Method(_STA, 0) {
And(PIRD, 0x80, Local0)
If(LEqual(Local0, 0x80)) {
Return(0x09) //R01 disabled
}
Else {
Return(0x0B) //R01 enabled, but no UI
}
}
Name(_PRS, ResourceTemplate() {
IRQ(Level, ActiveLow, Shared) {
3,4,5,6,7,9,10,11,12,14,15}
}) // Name(_PRS, ...)
Method(_DIS) {
Store(1, Local3)
And(PIRD, 0x0F, Local1)
Store(Local1, Local2)
If(LGreater(Local1, 8)) {
Subtract(Local1, 8, Local1)
}
ShiftLeft(Local3, Local1, Local3)
Not(Local3, Local3)
If(LGreater(Local2, 8)) {
And(ELC2, Local3, ELC2)}
Else {
And(ELC1, Local3, ELC1)}
Or(PIRD, 0x80, PIRD)
}
Method(_CRS) {
Name(BUFD, Buffer(){
0x23, 0x00, 0x00, 0x18,
0x79, 0})
CreateByteField(BUFD, 0x01, IRD1) // IRQ mask 1
CreateByteField(BUFD, 0x02, IRD2) // IRQ mask 2
Store(0, Local3)
Store(0, Local4)
And(PIRD, 0x8F, Local0) // Get register value
If(LLess(Local0, 0x80)) { // Routing enable
And(Local0, 0x0F, Local0) // Mask off enable bit
If(LGreater(Local0, 0x07)) { // For upper byte mask
Subtract(Local0, 8, Local2) // Adjust it
ShiftLeft(One, Local2, Local4)} // Convert to bit mask
Else {If(LGreater(Local0, 0)) { // For lower byte mask
ShiftLeft(One, Local0, Local3)}} // Convert to bit mask
Store(Local3, IRD1) // update buffer
Store(Local4, IRD2)
}
Return(BUFD)
} // Method(_CRS)
Method(_SRS, 1) {
CreateByteField(ARG0, 0x01, IRD1) // IRQ mask 1
CreateByteField(ARG0, 0x02, IRD2) // IRQ mask 2
ShiftLeft(IRD2, 8, Local0) // Shift into upper byte
Or(Local0, IRD1, Local0) // Convert to word
Store(0, Local1)
ShiftRight(Local0, 1, Local0) // Adjust for zero based
While(LGreater(Local0, 0)) { // Convert bit position to number
Increment(Local1)
ShiftRight(Local0, 1, Local0)
}
And(PIRD, 0x70, Local0)
Or(Local1, Local0, PIRD)
} // Method(_SRS)
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -