* [Devel] Reserved method has too many arguments (_OSC requires 4)
@ 2010-03-12 14:00 Thomas Renninger
0 siblings, 0 replies; 10+ messages in thread
From: Thomas Renninger @ 2010-03-12 14:00 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 1580 bytes --]
Hi,
I have a laptop freezing early, acpi=off and noapic helps.
I wonder whether this could have to do with the broken _OSC method.
I cannot access the machine myself, eventually I can get more info
if needed, but the machine is freezing really early (after ACPI
initialization, somewhere around bringing up CPUs (possibly when
starting PCI init already?).
This is not the first time I see this message.
It would be great to get (from include/linux/kernel.h):
#define FW_BUG "[Firmware Bug]: "
#define FW_WARN "[Firmware Warn]: "
#define FW_INFO "[Firmware Info]: "
marked messages into ACPICA and blame the guys who are responsible
for that.
My other concern/question is: what exactly happens in such a case?
Will _OSC get invoked at all?
If yes, what will be the last argument, zero, -1?
Hmm, I doubt it has to do with the freeze, but it would still be
great if someone knowing these parts could comment what people
with such a BIOS could expect to happen.
Thanks,
Thomas
Method (_OSC, 5, NotSerialized)
{
Store (Arg3, Local0)
Multiply (Local0, 0x04, Local1)
Name (BUF1, Buffer (Local1) {})
Store (Arg4, BUF1)
Store (Zero, Local1)
Store (Zero, Local2)
While (Local0)
{
Multiply (Local1, 0x04, Local2)
CreateDWordField (BUF1, Local2, CAPB)
If (Arg2)
{
If (LEqual (Local1, Zero))
{
And (CAPB, 0xFFFFFFFC)
}
}
Increment (Local1)
Decrement (Local0)
}
Return (BUF1)
}
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [Devel] Reserved method has too many arguments (_OSC requires 4) 2010-03-12 14:00 Thomas Renninger @ 2010-03-12 15:58 ` Moore, Robert -1 siblings, 0 replies; 10+ messages in thread From: Moore, Robert @ 2010-03-12 15:58 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 3179 bytes --] >My other concern/question is: what exactly happens in such a case? >Will _OSC get invoked at all? >If yes, what will be the last argument, zero, -1? The method will be invoked with the 4 arguments, the correct number. What will happen then is one of three things: 1) The method attempts to access the phantom fifth argument and it will then be aborted with an AE_AML_UNINITIALIZED_ARG exception. 2) The method has some other confusion about the first four arguments (given that it is already confused about the number of arguments in the first place), and does something unpredictable. 2) The method does not attempt to access the fifth argument, understands the first four arguments correctly and runs to completion correctly. >This is not the first time I see this message. >It would be great to get (from include/linux/kernel.h): I've seen this suggestion before, I'll add it as something to look at -- since it goes far beyond one or two error messages. In the meantime, the existing error message could use some improvement to clarify it, any suggestions? Bob >-----Original Message----- >From: devel-bounces(a)acpica.org [mailto:devel-bounces(a)acpica.org] On Behalf >Of Thomas Renninger >Sent: Friday, March 12, 2010 6:01 AM >To: linux-acpi(a)vger.kernel.org >Cc: devel(a)acpica.org >Subject: [Devel] Reserved method has too many arguments (_OSC requires 4) > >Hi, > >I have a laptop freezing early, acpi=off and noapic helps. >I wonder whether this could have to do with the broken _OSC method. > >I cannot access the machine myself, eventually I can get more info >if needed, but the machine is freezing really early (after ACPI >initialization, somewhere around bringing up CPUs (possibly when >starting PCI init already?). > >This is not the first time I see this message. >It would be great to get (from include/linux/kernel.h): >#define FW_BUG "[Firmware Bug]: " >#define FW_WARN "[Firmware Warn]: " >#define FW_INFO "[Firmware Info]: " >marked messages into ACPICA and blame the guys who are responsible >for that. > >My other concern/question is: what exactly happens in such a case? >Will _OSC get invoked at all? >If yes, what will be the last argument, zero, -1? > >Hmm, I doubt it has to do with the freeze, but it would still be >great if someone knowing these parts could comment what people >with such a BIOS could expect to happen. > >Thanks, > > Thomas > >Method (_OSC, 5, NotSerialized) >{ > Store (Arg3, Local0) > Multiply (Local0, 0x04, Local1) > Name (BUF1, Buffer (Local1) {}) > Store (Arg4, BUF1) > Store (Zero, Local1) > Store (Zero, Local2) > While (Local0) > { > Multiply (Local1, 0x04, Local2) > CreateDWordField (BUF1, Local2, CAPB) > If (Arg2) > { > If (LEqual (Local1, Zero)) > { > And (CAPB, 0xFFFFFFFC) > } > } > Increment (Local1) > Decrement (Local0) > } > Return (BUF1) >} >_______________________________________________ >Devel mailing list >Devel(a)acpica.org >http://lists.acpica.org/listinfo/devel ^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [Devel] Reserved method has too many arguments (_OSC requires 4) @ 2010-03-12 15:58 ` Moore, Robert 0 siblings, 0 replies; 10+ messages in thread From: Moore, Robert @ 2010-03-12 15:58 UTC (permalink / raw) To: Thomas Renninger, linux-acpi@vger.kernel.org; +Cc: devel@acpica.org >My other concern/question is: what exactly happens in such a case? >Will _OSC get invoked at all? >If yes, what will be the last argument, zero, -1? The method will be invoked with the 4 arguments, the correct number. What will happen then is one of three things: 1) The method attempts to access the phantom fifth argument and it will then be aborted with an AE_AML_UNINITIALIZED_ARG exception. 2) The method has some other confusion about the first four arguments (given that it is already confused about the number of arguments in the first place), and does something unpredictable. 2) The method does not attempt to access the fifth argument, understands the first four arguments correctly and runs to completion correctly. >This is not the first time I see this message. >It would be great to get (from include/linux/kernel.h): I've seen this suggestion before, I'll add it as something to look at -- since it goes far beyond one or two error messages. In the meantime, the existing error message could use some improvement to clarify it, any suggestions? Bob >-----Original Message----- >From: devel-bounces@acpica.org [mailto:devel-bounces@acpica.org] On Behalf >Of Thomas Renninger >Sent: Friday, March 12, 2010 6:01 AM >To: linux-acpi@vger.kernel.org >Cc: devel@acpica.org >Subject: [Devel] Reserved method has too many arguments (_OSC requires 4) > >Hi, > >I have a laptop freezing early, acpi=off and noapic helps. >I wonder whether this could have to do with the broken _OSC method. > >I cannot access the machine myself, eventually I can get more info >if needed, but the machine is freezing really early (after ACPI >initialization, somewhere around bringing up CPUs (possibly when >starting PCI init already?). > >This is not the first time I see this message. >It would be great to get (from include/linux/kernel.h): >#define FW_BUG "[Firmware Bug]: " >#define FW_WARN "[Firmware Warn]: " >#define FW_INFO "[Firmware Info]: " >marked messages into ACPICA and blame the guys who are responsible >for that. > >My other concern/question is: what exactly happens in such a case? >Will _OSC get invoked at all? >If yes, what will be the last argument, zero, -1? > >Hmm, I doubt it has to do with the freeze, but it would still be >great if someone knowing these parts could comment what people >with such a BIOS could expect to happen. > >Thanks, > > Thomas > >Method (_OSC, 5, NotSerialized) >{ > Store (Arg3, Local0) > Multiply (Local0, 0x04, Local1) > Name (BUF1, Buffer (Local1) {}) > Store (Arg4, BUF1) > Store (Zero, Local1) > Store (Zero, Local2) > While (Local0) > { > Multiply (Local1, 0x04, Local2) > CreateDWordField (BUF1, Local2, CAPB) > If (Arg2) > { > If (LEqual (Local1, Zero)) > { > And (CAPB, 0xFFFFFFFC) > } > } > Increment (Local1) > Decrement (Local0) > } > Return (BUF1) >} >_______________________________________________ >Devel mailing list >Devel@acpica.org >http://lists.acpica.org/listinfo/devel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Devel] Reserved method has too many arguments (_OSC requires 4) 2010-03-12 15:58 ` Moore, Robert @ 2010-03-15 9:30 ` Thomas Renninger -1 siblings, 0 replies; 10+ messages in thread From: Thomas Renninger @ 2010-03-15 9:30 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 4747 bytes --] On Friday 12 March 2010 16:58:41 Moore, Robert wrote: > > >My other concern/question is: what exactly happens in such a case? > >Will _OSC get invoked at all? > >If yes, what will be the last argument, zero, -1? > > The method will be invoked with the 4 arguments, the correct number. > What will happen then is one of three things: > > 1) The method attempts to access the phantom fifth argument and it > will then be aborted with an AE_AML_UNINITIALIZED_ARG exception. > > 2) The method has some other confusion about the first four arguments > (given that it is already confused about the number of arguments in > the first place), and does something unpredictable. > > 3) The method does not attempt to access the fifth argument, understands > the first four arguments correctly and runs to completion correctly. I expect I have the first with acpiexec I get: execute \_SB_.PCI0._OSC 1 1 1 1 Executing \_SB_.PCI0._OSC ACPI Error: Uninitialized Arg[4] at node 0x6c9648 (20100304/dsmthdat-544) ACPI Exception: AE_AML_UNINITIALIZED_ARG, While resolving operands for [Store] (20100304/dswexec-554) [AcpiExec] Exception AE_AML_UNINITIALIZED_ARG during execution of method [_OSC] Opcode [Store] @12 **** Exception AE_AML_UNINITIALIZED_ARG during execution of method [\_SB_.PCI0._OSC] (Node 0x67b7c0) Thanks! > >This is not the first time I see this message. > >It would be great to get (from include/linux/kernel.h): > > I've seen this suggestion before, I'll add it as something to look at > -- since it goes far beyond one or two error messages. Great, would be the possibilty/interface, first for now. This would help with most important/upcoming messages and newly written code. No need to go through all files and adjust every potential message. > In the meantime, the existing error message could use some improvement > to clarify it, any suggestions? Hm, not sure if this is necessary or possible. More important would be to find out what the fifth argument is for and how to solve this if Linux has to be able to differ _OSC 4 vs 5 arguments? As this is the 2nd OEM (maybe only one BIOS devel company?) making use of this... It's always the PCI root bridge _OSC method with 5 arguments, there are other _OSC methods (e.g. processor capabilities) which still have 4 args. This should be the first kind of such differentiation and probably is really ugly to implement? With the one vendor we are a bit in touch, I try to find out more. Thanks, Thomas > >-----Original Message----- > >From: devel-bounces(a)acpica.org [mailto:devel-bounces(a)acpica.org] On Behalf > >Of Thomas Renninger > >Sent: Friday, March 12, 2010 6:01 AM > >To: linux-acpi(a)vger.kernel.org > >Cc: devel(a)acpica.org > >Subject: [Devel] Reserved method has too many arguments (_OSC requires 4) > > > >Hi, > > > >I have a laptop freezing early, acpi=off and noapic helps. > >I wonder whether this could have to do with the broken _OSC method. > > > >I cannot access the machine myself, eventually I can get more info > >if needed, but the machine is freezing really early (after ACPI > >initialization, somewhere around bringing up CPUs (possibly when > >starting PCI init already?). > > > >This is not the first time I see this message. > >It would be great to get (from include/linux/kernel.h): > >#define FW_BUG "[Firmware Bug]: " > >#define FW_WARN "[Firmware Warn]: " > >#define FW_INFO "[Firmware Info]: " > >marked messages into ACPICA and blame the guys who are responsible > >for that. > > > >My other concern/question is: what exactly happens in such a case? > >Will _OSC get invoked at all? > >If yes, what will be the last argument, zero, -1? > > > >Hmm, I doubt it has to do with the freeze, but it would still be > >great if someone knowing these parts could comment what people > >with such a BIOS could expect to happen. > > > >Thanks, > > > > Thomas > > > >Method (_OSC, 5, NotSerialized) > >{ > > Store (Arg3, Local0) > > Multiply (Local0, 0x04, Local1) > > Name (BUF1, Buffer (Local1) {}) > > Store (Arg4, BUF1) > > Store (Zero, Local1) > > Store (Zero, Local2) > > While (Local0) > > { > > Multiply (Local1, 0x04, Local2) > > CreateDWordField (BUF1, Local2, CAPB) > > If (Arg2) > > { > > If (LEqual (Local1, Zero)) > > { > > And (CAPB, 0xFFFFFFFC) > > } > > } > > Increment (Local1) > > Decrement (Local0) > > } > > Return (BUF1) > >} > >_______________________________________________ > >Devel mailing list > >Devel(a)acpica.org > >http://lists.acpica.org/listinfo/devel > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Devel] Reserved method has too many arguments (_OSC requires 4) @ 2010-03-15 9:30 ` Thomas Renninger 0 siblings, 0 replies; 10+ messages in thread From: Thomas Renninger @ 2010-03-15 9:30 UTC (permalink / raw) To: Moore, Robert; +Cc: linux-acpi@vger.kernel.org, devel@acpica.org On Friday 12 March 2010 16:58:41 Moore, Robert wrote: > > >My other concern/question is: what exactly happens in such a case? > >Will _OSC get invoked at all? > >If yes, what will be the last argument, zero, -1? > > The method will be invoked with the 4 arguments, the correct number. > What will happen then is one of three things: > > 1) The method attempts to access the phantom fifth argument and it > will then be aborted with an AE_AML_UNINITIALIZED_ARG exception. > > 2) The method has some other confusion about the first four arguments > (given that it is already confused about the number of arguments in > the first place), and does something unpredictable. > > 3) The method does not attempt to access the fifth argument, understands > the first four arguments correctly and runs to completion correctly. I expect I have the first with acpiexec I get: execute \_SB_.PCI0._OSC 1 1 1 1 Executing \_SB_.PCI0._OSC ACPI Error: Uninitialized Arg[4] at node 0x6c9648 (20100304/dsmthdat-544) ACPI Exception: AE_AML_UNINITIALIZED_ARG, While resolving operands for [Store] (20100304/dswexec-554) [AcpiExec] Exception AE_AML_UNINITIALIZED_ARG during execution of method [_OSC] Opcode [Store] @12 **** Exception AE_AML_UNINITIALIZED_ARG during execution of method [\_SB_.PCI0._OSC] (Node 0x67b7c0) Thanks! > >This is not the first time I see this message. > >It would be great to get (from include/linux/kernel.h): > > I've seen this suggestion before, I'll add it as something to look at > -- since it goes far beyond one or two error messages. Great, would be the possibilty/interface, first for now. This would help with most important/upcoming messages and newly written code. No need to go through all files and adjust every potential message. > In the meantime, the existing error message could use some improvement > to clarify it, any suggestions? Hm, not sure if this is necessary or possible. More important would be to find out what the fifth argument is for and how to solve this if Linux has to be able to differ _OSC 4 vs 5 arguments? As this is the 2nd OEM (maybe only one BIOS devel company?) making use of this... It's always the PCI root bridge _OSC method with 5 arguments, there are other _OSC methods (e.g. processor capabilities) which still have 4 args. This should be the first kind of such differentiation and probably is really ugly to implement? With the one vendor we are a bit in touch, I try to find out more. Thanks, Thomas > >-----Original Message----- > >From: devel-bounces@acpica.org [mailto:devel-bounces@acpica.org] On Behalf > >Of Thomas Renninger > >Sent: Friday, March 12, 2010 6:01 AM > >To: linux-acpi@vger.kernel.org > >Cc: devel@acpica.org > >Subject: [Devel] Reserved method has too many arguments (_OSC requires 4) > > > >Hi, > > > >I have a laptop freezing early, acpi=off and noapic helps. > >I wonder whether this could have to do with the broken _OSC method. > > > >I cannot access the machine myself, eventually I can get more info > >if needed, but the machine is freezing really early (after ACPI > >initialization, somewhere around bringing up CPUs (possibly when > >starting PCI init already?). > > > >This is not the first time I see this message. > >It would be great to get (from include/linux/kernel.h): > >#define FW_BUG "[Firmware Bug]: " > >#define FW_WARN "[Firmware Warn]: " > >#define FW_INFO "[Firmware Info]: " > >marked messages into ACPICA and blame the guys who are responsible > >for that. > > > >My other concern/question is: what exactly happens in such a case? > >Will _OSC get invoked at all? > >If yes, what will be the last argument, zero, -1? > > > >Hmm, I doubt it has to do with the freeze, but it would still be > >great if someone knowing these parts could comment what people > >with such a BIOS could expect to happen. > > > >Thanks, > > > > Thomas > > > >Method (_OSC, 5, NotSerialized) > >{ > > Store (Arg3, Local0) > > Multiply (Local0, 0x04, Local1) > > Name (BUF1, Buffer (Local1) {}) > > Store (Arg4, BUF1) > > Store (Zero, Local1) > > Store (Zero, Local2) > > While (Local0) > > { > > Multiply (Local1, 0x04, Local2) > > CreateDWordField (BUF1, Local2, CAPB) > > If (Arg2) > > { > > If (LEqual (Local1, Zero)) > > { > > And (CAPB, 0xFFFFFFFC) > > } > > } > > Increment (Local1) > > Decrement (Local0) > > } > > Return (BUF1) > >} > >_______________________________________________ > >Devel mailing list > >Devel@acpica.org > >http://lists.acpica.org/listinfo/devel > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Devel] Reserved method has too many arguments (_OSC requires 4)
2010-03-15 9:30 ` Thomas Renninger
@ 2010-03-15 16:59 ` Moore, Robert
-1 siblings, 0 replies; 10+ messages in thread
From: Moore, Robert @ 2010-03-15 16:59 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 5252 bytes --]
Please send the acpidump for this machine, we'd like to take a look at this.
Thanks,
Bob
>-----Original Message-----
>From: Thomas Renninger [mailto:trenn(a)suse.de]
>Sent: Monday, March 15, 2010 2:31 AM
>To: Moore, Robert
>Cc: linux-acpi(a)vger.kernel.org; devel(a)acpica.org
>Subject: Re: [Devel] Reserved method has too many arguments (_OSC requires
>4)
>
>On Friday 12 March 2010 16:58:41 Moore, Robert wrote:
>>
>> >My other concern/question is: what exactly happens in such a case?
>> >Will _OSC get invoked at all?
>> >If yes, what will be the last argument, zero, -1?
>>
>> The method will be invoked with the 4 arguments, the correct number.
>> What will happen then is one of three things:
>>
>> 1) The method attempts to access the phantom fifth argument and it
>> will then be aborted with an AE_AML_UNINITIALIZED_ARG exception.
>>
>> 2) The method has some other confusion about the first four arguments
>> (given that it is already confused about the number of arguments in
>> the first place), and does something unpredictable.
>>
>> 3) The method does not attempt to access the fifth argument, understands
>> the first four arguments correctly and runs to completion correctly.
>
>I expect I have the first with acpiexec I get:
>execute \_SB_.PCI0._OSC 1 1 1 1
>Executing \_SB_.PCI0._OSC
>ACPI Error: Uninitialized Arg[4] at node 0x6c9648 (20100304/dsmthdat-544)
>ACPI Exception: AE_AML_UNINITIALIZED_ARG, While resolving operands for
>[Store] (20100304/dswexec-554)
>[AcpiExec] Exception AE_AML_UNINITIALIZED_ARG during execution of method
>[_OSC] Opcode [Store] @12
>
>**** Exception AE_AML_UNINITIALIZED_ARG during execution of method
>[\_SB_.PCI0._OSC] (Node 0x67b7c0)
>
>Thanks!
>
>> >This is not the first time I see this message.
>> >It would be great to get (from include/linux/kernel.h):
>>
>> I've seen this suggestion before, I'll add it as something to look at
>> -- since it goes far beyond one or two error messages.
>Great, would be the possibilty/interface, first for now.
>This would help with most important/upcoming messages and newly written
>code.
>No need to go through all files and adjust every potential message.
>
>> In the meantime, the existing error message could use some improvement
>> to clarify it, any suggestions?
>Hm, not sure if this is necessary or possible.
>More important would be to find out what the fifth argument is for and how
>to solve this if Linux has to be able to differ _OSC 4 vs 5 arguments?
>As this is the 2nd OEM (maybe only one BIOS devel company?) making use of
>this...
>It's always the PCI root bridge _OSC method with 5 arguments, there are
>other _OSC methods (e.g. processor capabilities) which still have 4 args.
>This should be the first kind of such differentiation and probably is
>really
>ugly to implement?
>
>With the one vendor we are a bit in touch, I try to find out more.
>
>Thanks,
>
> Thomas
>
>> >-----Original Message-----
>> >From: devel-bounces(a)acpica.org [mailto:devel-bounces(a)acpica.org] On
>Behalf
>> >Of Thomas Renninger
>> >Sent: Friday, March 12, 2010 6:01 AM
>> >To: linux-acpi(a)vger.kernel.org
>> >Cc: devel(a)acpica.org
>> >Subject: [Devel] Reserved method has too many arguments (_OSC requires
>4)
>> >
>> >Hi,
>> >
>> >I have a laptop freezing early, acpi=off and noapic helps.
>> >I wonder whether this could have to do with the broken _OSC method.
>> >
>> >I cannot access the machine myself, eventually I can get more info
>> >if needed, but the machine is freezing really early (after ACPI
>> >initialization, somewhere around bringing up CPUs (possibly when
>> >starting PCI init already?).
>> >
>> >This is not the first time I see this message.
>> >It would be great to get (from include/linux/kernel.h):
>> >#define FW_BUG "[Firmware Bug]: "
>> >#define FW_WARN "[Firmware Warn]: "
>> >#define FW_INFO "[Firmware Info]: "
>> >marked messages into ACPICA and blame the guys who are responsible
>> >for that.
>> >
>> >My other concern/question is: what exactly happens in such a case?
>> >Will _OSC get invoked at all?
>> >If yes, what will be the last argument, zero, -1?
>> >
>> >Hmm, I doubt it has to do with the freeze, but it would still be
>> >great if someone knowing these parts could comment what people
>> >with such a BIOS could expect to happen.
>> >
>> >Thanks,
>> >
>> > Thomas
>> >
>> >Method (_OSC, 5, NotSerialized)
>> >{
>> > Store (Arg3, Local0)
>> > Multiply (Local0, 0x04, Local1)
>> > Name (BUF1, Buffer (Local1) {})
>> > Store (Arg4, BUF1)
>> > Store (Zero, Local1)
>> > Store (Zero, Local2)
>> > While (Local0)
>> > {
>> > Multiply (Local1, 0x04, Local2)
>> > CreateDWordField (BUF1, Local2, CAPB)
>> > If (Arg2)
>> > {
>> > If (LEqual (Local1, Zero))
>> > {
>> > And (CAPB, 0xFFFFFFFC)
>> > }
>> > }
>> > Increment (Local1)
>> > Decrement (Local0)
>> > }
>> > Return (BUF1)
>> >}
>> >_______________________________________________
>> >Devel mailing list
>> >Devel(a)acpica.org
>> >http://lists.acpica.org/listinfo/devel
>>
^ permalink raw reply [flat|nested] 10+ messages in thread* RE: [Devel] Reserved method has too many arguments (_OSC requires 4)
@ 2010-03-15 16:59 ` Moore, Robert
0 siblings, 0 replies; 10+ messages in thread
From: Moore, Robert @ 2010-03-15 16:59 UTC (permalink / raw)
To: Thomas Renninger; +Cc: linux-acpi@vger.kernel.org, devel@acpica.org
Please send the acpidump for this machine, we'd like to take a look at this.
Thanks,
Bob
>-----Original Message-----
>From: Thomas Renninger [mailto:trenn@suse.de]
>Sent: Monday, March 15, 2010 2:31 AM
>To: Moore, Robert
>Cc: linux-acpi@vger.kernel.org; devel@acpica.org
>Subject: Re: [Devel] Reserved method has too many arguments (_OSC requires
>4)
>
>On Friday 12 March 2010 16:58:41 Moore, Robert wrote:
>>
>> >My other concern/question is: what exactly happens in such a case?
>> >Will _OSC get invoked at all?
>> >If yes, what will be the last argument, zero, -1?
>>
>> The method will be invoked with the 4 arguments, the correct number.
>> What will happen then is one of three things:
>>
>> 1) The method attempts to access the phantom fifth argument and it
>> will then be aborted with an AE_AML_UNINITIALIZED_ARG exception.
>>
>> 2) The method has some other confusion about the first four arguments
>> (given that it is already confused about the number of arguments in
>> the first place), and does something unpredictable.
>>
>> 3) The method does not attempt to access the fifth argument, understands
>> the first four arguments correctly and runs to completion correctly.
>
>I expect I have the first with acpiexec I get:
>execute \_SB_.PCI0._OSC 1 1 1 1
>Executing \_SB_.PCI0._OSC
>ACPI Error: Uninitialized Arg[4] at node 0x6c9648 (20100304/dsmthdat-544)
>ACPI Exception: AE_AML_UNINITIALIZED_ARG, While resolving operands for
>[Store] (20100304/dswexec-554)
>[AcpiExec] Exception AE_AML_UNINITIALIZED_ARG during execution of method
>[_OSC] Opcode [Store] @12
>
>**** Exception AE_AML_UNINITIALIZED_ARG during execution of method
>[\_SB_.PCI0._OSC] (Node 0x67b7c0)
>
>Thanks!
>
>> >This is not the first time I see this message.
>> >It would be great to get (from include/linux/kernel.h):
>>
>> I've seen this suggestion before, I'll add it as something to look at
>> -- since it goes far beyond one or two error messages.
>Great, would be the possibilty/interface, first for now.
>This would help with most important/upcoming messages and newly written
>code.
>No need to go through all files and adjust every potential message.
>
>> In the meantime, the existing error message could use some improvement
>> to clarify it, any suggestions?
>Hm, not sure if this is necessary or possible.
>More important would be to find out what the fifth argument is for and how
>to solve this if Linux has to be able to differ _OSC 4 vs 5 arguments?
>As this is the 2nd OEM (maybe only one BIOS devel company?) making use of
>this...
>It's always the PCI root bridge _OSC method with 5 arguments, there are
>other _OSC methods (e.g. processor capabilities) which still have 4 args.
>This should be the first kind of such differentiation and probably is
>really
>ugly to implement?
>
>With the one vendor we are a bit in touch, I try to find out more.
>
>Thanks,
>
> Thomas
>
>> >-----Original Message-----
>> >From: devel-bounces@acpica.org [mailto:devel-bounces@acpica.org] On
>Behalf
>> >Of Thomas Renninger
>> >Sent: Friday, March 12, 2010 6:01 AM
>> >To: linux-acpi@vger.kernel.org
>> >Cc: devel@acpica.org
>> >Subject: [Devel] Reserved method has too many arguments (_OSC requires
>4)
>> >
>> >Hi,
>> >
>> >I have a laptop freezing early, acpi=off and noapic helps.
>> >I wonder whether this could have to do with the broken _OSC method.
>> >
>> >I cannot access the machine myself, eventually I can get more info
>> >if needed, but the machine is freezing really early (after ACPI
>> >initialization, somewhere around bringing up CPUs (possibly when
>> >starting PCI init already?).
>> >
>> >This is not the first time I see this message.
>> >It would be great to get (from include/linux/kernel.h):
>> >#define FW_BUG "[Firmware Bug]: "
>> >#define FW_WARN "[Firmware Warn]: "
>> >#define FW_INFO "[Firmware Info]: "
>> >marked messages into ACPICA and blame the guys who are responsible
>> >for that.
>> >
>> >My other concern/question is: what exactly happens in such a case?
>> >Will _OSC get invoked at all?
>> >If yes, what will be the last argument, zero, -1?
>> >
>> >Hmm, I doubt it has to do with the freeze, but it would still be
>> >great if someone knowing these parts could comment what people
>> >with such a BIOS could expect to happen.
>> >
>> >Thanks,
>> >
>> > Thomas
>> >
>> >Method (_OSC, 5, NotSerialized)
>> >{
>> > Store (Arg3, Local0)
>> > Multiply (Local0, 0x04, Local1)
>> > Name (BUF1, Buffer (Local1) {})
>> > Store (Arg4, BUF1)
>> > Store (Zero, Local1)
>> > Store (Zero, Local2)
>> > While (Local0)
>> > {
>> > Multiply (Local1, 0x04, Local2)
>> > CreateDWordField (BUF1, Local2, CAPB)
>> > If (Arg2)
>> > {
>> > If (LEqual (Local1, Zero))
>> > {
>> > And (CAPB, 0xFFFFFFFC)
>> > }
>> > }
>> > Increment (Local1)
>> > Decrement (Local0)
>> > }
>> > Return (BUF1)
>> >}
>> >_______________________________________________
>> >Devel mailing list
>> >Devel@acpica.org
>> >http://lists.acpica.org/listinfo/devel
>>
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [Devel] Reserved method has too many arguments (_OSC requires 4) 2010-03-12 14:00 Thomas Renninger @ 2010-03-15 17:28 ` Moore, Robert -1 siblings, 0 replies; 10+ messages in thread From: Moore, Robert @ 2010-03-15 17:28 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 3766 bytes --] Thomas, Looking closely at the ASL code for _OSC that you provided, I'm afraid that the control method is botched beyond all hope. Here is the definition of _OSC: Arguments: (4) Arg0 - A Buffer containing a UUID Arg1 - An Integer containing a Revision ID of the buffer format Arg2 - An Integer containing a count of entries in Arg3 Arg3 - A Buffer containing a list of DWORD capabilities Analyzing the method: >Method (_OSC, 5, NotSerialized) >{ > Store (Arg3, Local0) > Multiply (Local0, 0x04, Local1) Attempting to convert a DWORD count to a BYTE count. It is Arg2 that contains the count, not Arg3. > Name (BUF1, Buffer (Local1) {}) > Store (Arg4, BUF1) Attempting to copy the input buffer. It is Arg3 that contains the input buffer, not Arg4. > Store (Zero, Local1) > Store (Zero, Local2) > While (Local0) > { Attempt to walk the entire input buffer, by DWORDs. Local0 incorrectly contains Arg3, should the count -- Arg2. > Multiply (Local1, 0x04, Local2) > CreateDWordField (BUF1, Local2, CAPB) Create a named object (CAPB) within a loop. This will fail on the second iteration of the loop -- i.e., on the second DWORD. > If (Arg2) > { > If (LEqual (Local1, Zero)) > { > And (CAPB, 0xFFFFFFFC) gr.asl 20: And (CAPB, 0xFFFFFFFC) Warning 1106 - ^ Result is not used, operator has no effect > } > } > Increment (Local1) > Decrement (Local0) > } > Return (BUF1) >} Even if the code would actually execute, it doesn't do anything. Also, the UUID is never checked. Bob >-----Original Message----- >From: devel-bounces(a)acpica.org [mailto:devel-bounces(a)acpica.org] On Behalf >Of Thomas Renninger >Sent: Friday, March 12, 2010 6:01 AM >To: linux-acpi(a)vger.kernel.org >Cc: devel(a)acpica.org >Subject: [Devel] Reserved method has too many arguments (_OSC requires 4) > >Hi, > >I have a laptop freezing early, acpi=off and noapic helps. >I wonder whether this could have to do with the broken _OSC method. > >I cannot access the machine myself, eventually I can get more info >if needed, but the machine is freezing really early (after ACPI >initialization, somewhere around bringing up CPUs (possibly when >starting PCI init already?). > >This is not the first time I see this message. >It would be great to get (from include/linux/kernel.h): >#define FW_BUG "[Firmware Bug]: " >#define FW_WARN "[Firmware Warn]: " >#define FW_INFO "[Firmware Info]: " >marked messages into ACPICA and blame the guys who are responsible >for that. > >My other concern/question is: what exactly happens in such a case? >Will _OSC get invoked at all? >If yes, what will be the last argument, zero, -1? > >Hmm, I doubt it has to do with the freeze, but it would still be >great if someone knowing these parts could comment what people >with such a BIOS could expect to happen. > >Thanks, > > Thomas > >Method (_OSC, 5, NotSerialized) >{ > Store (Arg3, Local0) > Multiply (Local0, 0x04, Local1) > Name (BUF1, Buffer (Local1) {}) > Store (Arg4, BUF1) > Store (Zero, Local1) > Store (Zero, Local2) > While (Local0) > { > Multiply (Local1, 0x04, Local2) > CreateDWordField (BUF1, Local2, CAPB) > If (Arg2) > { > If (LEqual (Local1, Zero)) > { > And (CAPB, 0xFFFFFFFC) > } > } > Increment (Local1) > Decrement (Local0) > } > Return (BUF1) >} >_______________________________________________ >Devel mailing list >Devel(a)acpica.org >http://lists.acpica.org/listinfo/devel ^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [Devel] Reserved method has too many arguments (_OSC requires 4) @ 2010-03-15 17:28 ` Moore, Robert 0 siblings, 0 replies; 10+ messages in thread From: Moore, Robert @ 2010-03-15 17:28 UTC (permalink / raw) To: Thomas Renninger, linux-acpi@vger.kernel.org Cc: devel@acpica.org, Lin, Ming M Thomas, Looking closely at the ASL code for _OSC that you provided, I'm afraid that the control method is botched beyond all hope. Here is the definition of _OSC: Arguments: (4) Arg0 - A Buffer containing a UUID Arg1 - An Integer containing a Revision ID of the buffer format Arg2 - An Integer containing a count of entries in Arg3 Arg3 - A Buffer containing a list of DWORD capabilities Analyzing the method: >Method (_OSC, 5, NotSerialized) >{ > Store (Arg3, Local0) > Multiply (Local0, 0x04, Local1) Attempting to convert a DWORD count to a BYTE count. It is Arg2 that contains the count, not Arg3. > Name (BUF1, Buffer (Local1) {}) > Store (Arg4, BUF1) Attempting to copy the input buffer. It is Arg3 that contains the input buffer, not Arg4. > Store (Zero, Local1) > Store (Zero, Local2) > While (Local0) > { Attempt to walk the entire input buffer, by DWORDs. Local0 incorrectly contains Arg3, should the count -- Arg2. > Multiply (Local1, 0x04, Local2) > CreateDWordField (BUF1, Local2, CAPB) Create a named object (CAPB) within a loop. This will fail on the second iteration of the loop -- i.e., on the second DWORD. > If (Arg2) > { > If (LEqual (Local1, Zero)) > { > And (CAPB, 0xFFFFFFFC) gr.asl 20: And (CAPB, 0xFFFFFFFC) Warning 1106 - ^ Result is not used, operator has no effect > } > } > Increment (Local1) > Decrement (Local0) > } > Return (BUF1) >} Even if the code would actually execute, it doesn't do anything. Also, the UUID is never checked. Bob >-----Original Message----- >From: devel-bounces@acpica.org [mailto:devel-bounces@acpica.org] On Behalf >Of Thomas Renninger >Sent: Friday, March 12, 2010 6:01 AM >To: linux-acpi@vger.kernel.org >Cc: devel@acpica.org >Subject: [Devel] Reserved method has too many arguments (_OSC requires 4) > >Hi, > >I have a laptop freezing early, acpi=off and noapic helps. >I wonder whether this could have to do with the broken _OSC method. > >I cannot access the machine myself, eventually I can get more info >if needed, but the machine is freezing really early (after ACPI >initialization, somewhere around bringing up CPUs (possibly when >starting PCI init already?). > >This is not the first time I see this message. >It would be great to get (from include/linux/kernel.h): >#define FW_BUG "[Firmware Bug]: " >#define FW_WARN "[Firmware Warn]: " >#define FW_INFO "[Firmware Info]: " >marked messages into ACPICA and blame the guys who are responsible >for that. > >My other concern/question is: what exactly happens in such a case? >Will _OSC get invoked at all? >If yes, what will be the last argument, zero, -1? > >Hmm, I doubt it has to do with the freeze, but it would still be >great if someone knowing these parts could comment what people >with such a BIOS could expect to happen. > >Thanks, > > Thomas > >Method (_OSC, 5, NotSerialized) >{ > Store (Arg3, Local0) > Multiply (Local0, 0x04, Local1) > Name (BUF1, Buffer (Local1) {}) > Store (Arg4, BUF1) > Store (Zero, Local1) > Store (Zero, Local2) > While (Local0) > { > Multiply (Local1, 0x04, Local2) > CreateDWordField (BUF1, Local2, CAPB) > If (Arg2) > { > If (LEqual (Local1, Zero)) > { > And (CAPB, 0xFFFFFFFC) > } > } > Increment (Local1) > Decrement (Local0) > } > Return (BUF1) >} >_______________________________________________ >Devel mailing list >Devel@acpica.org >http://lists.acpica.org/listinfo/devel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Devel] Reserved method has too many arguments (_OSC requires 4)
@ 2011-02-08 10:38 lxl
0 siblings, 0 replies; 10+ messages in thread
From: lxl @ 2011-02-08 10:38 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 2 bytes --]
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: dsdt.dsl --]
[-- Type: text/x-dsl, Size: 189118 bytes --]
/*
* Intel ACPI Component Architecture
* AML Disassembler version 20090521
*
* Disassembly of dsdt.dat, Tue Feb 8 18:38:17 2011
*
*
* Original Table Header:
* Signature "DSDT"
* Length 0x00004F05 (20229)
* Revision 0x01 **** ACPI 1.0, no 64-bit math support
* Checksum 0x31
* OEM ID "BenQ "
* OEM Table ID "Joybook "
* OEM Revision 0x00000001 (1)
* Compiler ID "MSFT"
* Compiler Version 0x01000013 (16777235)
*/
DefinitionBlock ("dsdt.aml", "DSDT", 1, "BenQ ", "Joybook ", 0x00000001)
{
External (PDC0)
Name (REGS, Buffer (0x05)
{
0x00, 0x00, 0x00, 0x00, 0x00
})
OperationRegion (ECPO, SystemIO, 0x66, One)
Field (ECPO, ByteAcc, NoLock, Preserve)
{
P66H, 8
}
OperationRegion (ECP1, SystemIO, 0x62, One)
Field (ECP1, ByteAcc, NoLock, Preserve)
{
P62H, 8
}
OperationRegion (PORT, SystemIO, 0x80, One)
Field (PORT, ByteAcc, NoLock, Preserve)
{
P80H, 8
}
OperationRegion (POR1, SystemIO, 0x0378, One)
Field (POR1, ByteAcc, NoLock, Preserve)
{
P378, 8
}
OperationRegion (GPIO, SystemIO, 0x0500, 0x3C)
Field (GPIO, ByteAcc, NoLock, Preserve)
{
Offset (0x0E),
GP16, 1,
GP17, 1,
GP18, 1,
GP19, 1,
, 3,
GP23, 1,
GP24, 1,
GP25, 1,
GP26, 1,
GP27, 1,
GP28, 1,
Offset (0x10),
Offset (0x38),
, 1,
GP33, 1,
CPEN, 1,
Offset (0x39)
}
OperationRegion (RCRB, SystemMemory, 0xFED1C000, 0x4000)
Field (RCRB, DWordAcc, Lock, Preserve)
{
Offset (0x1000),
Offset (0x3000),
Offset (0x3404),
HPAS, 2,
, 5,
HPAE, 1,
Offset (0x3418),
, 1,
PATD, 1,
SATD, 1,
SMBD, 1,
AZAD, 1,
A97D, 1,
Offset (0x341A),
RP1D, 1,
RP2D, 1,
RP3D, 1,
RP4D, 1
}
OperationRegion (MBOX, SystemMemory, 0x5FEBCF10, 0x0000009C)
Field (MBOX, AnyAcc, NoLock, Preserve)
{
PCI1, 8,
PCI2, 8,
PCI3, 8,
PCI4, 8,
PCI5, 8,
PCI6, 8,
PCI7, 8,
PCI8, 8,
NLCK, 8,
ZIPE, 8,
COMA, 8,
CAIO, 8,
CAIP, 8,
CAMD, 8,
CADA, 8,
COMB, 8,
CBIO, 8,
CBIP, 8,
CBMD, 8,
CBDA, 8,
COMC, 8,
CCIO, 8,
CCIP, 8,
CCMD, 8,
CCDA, 8,
COMD, 8,
CDIO, 8,
CDIP, 8,
CDMD, 8,
CDDA, 8,
LPT1, 8,
L1IO, 8,
L1IP, 8,
L1MD, 8,
L1DA, 8,
LPT2, 8,
L2IO, 8,
L2IP, 8,
L2MD, 8,
L2DA, 8,
LPT3, 8,
L3IO, 8,
L3IP, 8,
L3MD, 8,
L3DA, 8,
FDDC, 8,
FDWP, 8,
HGMP, 8,
LGMP, 8,
MIDI, 8,
AZLA, 8,
AUDO, 8,
MODM, 8,
IDEC, 8,
SSED, 8,
PACT, 8,
SCFG, 8,
AIBT, 8,
AMOD, 8,
IMOD, 8,
LCFG, 8,
IDLY, 8,
PMTP, 8,
PMIO, 8,
PMBM, 8,
PMTM, 8,
PSTP, 8,
PSIO, 8,
PSBM, 8,
PSTM, 8,
IDE0, 8,
IDE1, 8,
IDE2, 8,
IDE3, 8,
IDE4, 8,
IDE5, 8,
IDE6, 8,
IDE7, 8,
PEGS, 8,
D2F1, 8,
IGMT, 8,
DTSZ, 8,
CLKC, 8,
CKSC, 8,
BOTT, 8,
PANT, 8,
TVTP, 8,
HIUB, 8,
LUBS, 8,
PLYT, 8,
EDCG, 8,
SDFY, 8,
SDTC, 8,
SDRP, 8,
SDCL, 8,
SDRC, 8,
SDRE, 8,
FC2L, 8,
FC3L, 8,
FCS4, 8,
APIM, 8,
HPTS, 8,
HPTA, 8,
EMAS, 8,
ISTC, 8,
TRML, 8,
FNON, 8,
TRON, 8,
NXMD, 8,
PCRR, 8,
C4EN, 8,
C43D, 8,
DAS1, 8,
DAS3, 8,
WKPM, 8,
WKMD, 8,
WKS5, 8,
HOUR, 8,
MINS, 8,
SECS, 8,
DOFM, 8,
NXFE, 8,
VTST, 8,
VTFE, 8,
S5FG, 8,
CSTS, 8,
ENCS, 8,
CSTR, 8,
CMPE, 8,
CSMD, 8,
QBOT, 8,
PBOT, 8
}
OperationRegion (CMS1, SystemIO, 0x72, 0x02)
Field (CMS1, ByteAcc, NoLock, Preserve)
{
CMSI, 8,
CMSD, 8
}
Method (CMSW, 2, NotSerialized)
{
Store (Arg0, CMSI)
Store (Arg1, CMSD)
}
OperationRegion (BTT0, SystemMemory, 0x04C0, 0x30)
Field (BTT0, ByteAcc, NoLock, Preserve)
{
Offset (0x15),
OSFG, 4,
RTCF, 1,
Offset (0x16),
Offset (0x25),
POST, 1,
SCUA, 1,
LDIM, 1,
DOFF, 1,
HOFF, 1,
Offset (0x26)
}
OperationRegion (BTT1, SystemMemory, 0x04F0, 0x0F)
Field (BTT1, ByteAcc, NoLock, Preserve)
{
LCDO, 1,
CRTO, 1,
TVON, 1,
DFPO, 1,
LCAT, 1,
CRTA, 1,
TVAT, 1,
DFPA, 1,
SWTF, 1,
Offset (0x02)
}
OperationRegion (IO_T, SystemIO, 0x0800, 0x10)
Field (IO_T, ByteAcc, NoLock, Preserve)
{
Offset (0x02),
Offset (0x04),
Offset (0x06),
Offset (0x08),
TRP0, 8,
Offset (0x0A),
Offset (0x0B),
Offset (0x0C),
Offset (0x0D),
Offset (0x0E),
Offset (0x0F),
Offset (0x10)
}
OperationRegion (NVST, SystemMemory, 0x5FEBCFAC, 0x0000002D)
Field (NVST, AnyAcc, Lock, Preserve)
{
SMIF, 8,
PRM0, 8,
PRM1, 8,
BRTL, 8,
Offset (0x05),
IGDS, 8,
LCDA, 16,
Offset (0x0A),
Offset (0x0C),
CADL, 16,
PADL, 16,
LIDS, 8,
PWRS, 8,
BVAL, 32,
CMPF, 8,
CSTF, 8,
GTF0, 56,
GTF2, 56,
IDEM, 8,
NIST, 8,
ECID, 8,
ECDA, 8
}
Method (SMIR, 2, Serialized)
{
Store (Arg1, APMD)
Store (Arg0, APMC)
Stall (0xFF)
Stall (0xFF)
Stall (0xFF)
Stall (0xFF)
Store (APMD, Local0)
Return (Local0)
}
Scope (\_PR)
{
Processor (CPU0, 0x01, 0x00000410, 0x06)
{
Method (_CST, 0, NotSerialized)
{
If (LEqual (And (PDC0, 0x10), 0x10))
{
If (CSMD) {}
Else
{
If (CSTS)
{
If (LOr (PWRS, LNot (C4EN)))
{
Return (Package (0x04)
{
0x03,
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x00, // Bit Width
0x00, // Bit Offset
0x0000000000000000, // Address
,)
},
One,
0x14,
0x03E8
},
Package (0x04)
{
ResourceTemplate ()
{
Register (SystemIO,
0x08, // Bit Width
0x00, // Bit Offset
0x0000000000000414, // Address
,)
},
0x02,
0x28,
0x02EE
},
Package (0x04)
{
ResourceTemplate ()
{
Register (SystemIO,
0x08, // Bit Width
0x00, // Bit Offset
0x0000000000000415, // Address
,)
},
0x03,
0x3C,
0x01F4
}
})
}
Else
{
Return (Package (0x05)
{
0x04,
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x00, // Bit Width
0x00, // Bit Offset
0x0000000000000000, // Address
,)
},
One,
0x14,
0x03E8
},
Package (0x04)
{
ResourceTemplate ()
{
Register (SystemIO,
0x08, // Bit Width
0x00, // Bit Offset
0x0000000000000414, // Address
,)
},
0x02,
0x28,
0x02EE
},
Package (0x04)
{
ResourceTemplate ()
{
Register (SystemIO,
0x08, // Bit Width
0x00, // Bit Offset
0x0000000000000415, // Address
,)
},
0x03,
0x3C,
0x01F4
},
Package (0x04)
{
ResourceTemplate ()
{
Register (SystemIO,
0x08, // Bit Width
0x00, // Bit Offset
0x0000000000000416, // Address
,)
},
0x03,
0x64,
0xFA
}
})
}
}
Else
{
Return (Package (0x02)
{
One,
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x00, // Bit Width
0x00, // Bit Offset
0x0000000000000000, // Address
,)
},
One,
0x14,
0x03E8
}
})
}
}
}
}
}
Processor (CPU1, 0x02, 0x00000410, 0x06)
{
Method (_CST, 0, NotSerialized)
{
If (CSMD) {}
Else
{
Return (\_PR.CPU0._CST ())
}
}
}
}
Name (ECON, Zero)
Name (CTYP, Zero)
Name (DSEN, One)
Name (ACFG, Zero)
Name (REC, Zero)
Name (NIMH, "NiMH")
Name (LION, "Lion")
Method (_PTS, 1, NotSerialized)
{
Store (One, GP27)
Sleep (0x01F4)
Store (Zero, ACFG)
If (LEqual (Arg0, One))
{
Store (0x51, P80H)
}
If (LEqual (Arg0, 0x03))
{
Store (0x53, P80H)
}
If (LEqual (Arg0, 0x04))
{
CMSW (0x3F, 0x3F)
SMIR (0xB0, 0x64)
}
Return (Zero)
}
Method (_WAK, 1, NotSerialized)
{
If (LEqual (RTCF, Zero))
{
Store (Zero, GP27)
Sleep (0x01F4)
Notify (\_SB.PCI0.EXP1, Zero)
Notify (\_SB.SLPB, 0x02)
}
If (LEqual (Arg0, One))
{
Store (0xE1, P80H)
If (LEqual (HIUB, One))
{
Notify (\_SB.PCI0.ECHI, One)
}
}
If (LEqual (Arg0, 0x03))
{
Store (0xE3, P80H)
}
If (LEqual (Arg0, 0x04))
{
Store (0xE4, P80H)
If (REC)
{
If (LNot (\_SB.PCI0.LPC.EC0.BAT))
{
Notify (\_SB.BAT0, One)
}
}
}
Return (Zero)
}
Name (\_S0, Package (0x04)
{
Zero,
Zero,
Zero,
Zero
})
If (LEqual (DAS1, One))
{
Name (\_S1, Package (0x04)
{
One,
One,
Zero,
Zero
})
}
If (LEqual (DAS3, One))
{
Name (\_S3, Package (0x04)
{
0x05,
0x05,
Zero,
Zero
})
}
Name (\_S4, Package (0x04)
{
0x06,
0x06,
Zero,
Zero
})
Name (\_S5, Package (0x04)
{
0x07,
0x07,
Zero,
Zero
})
Name (OSSD, Zero)
Scope (_GPE)
{
Method (_L01, 0, NotSerialized)
{
Sleep (0x80)
If (LNotEqual (\_SB.PCI0.EXP4.HPCS, Zero))
{
Store (One, \_SB.PCI0.EXP4.HPCS)
Store (One, \_SB.PCI0.EXP4.PDC4)
Notify (\_SB.PCI0.EXP4, Zero)
}
If (LNotEqual (\_SB.PCI0.EXP1.HPCS, Zero))
{
Store (One, \_SB.PCI0.EXP1.HPCS)
Store (One, \_SB.PCI0.EXP1.PDC1)
Notify (\_SB.PCI0.EXP1, Zero)
}
}
Method (_L03, 0, NotSerialized)
{
Notify (\_SB.PCI0.UHC1, 0x02)
}
Method (_L04, 0, NotSerialized)
{
Notify (\_SB.PCI0.UHC2, 0x02)
}
Method (_L05, 0, NotSerialized)
{
Notify (\_SB.PCI0.AZAL, 0x02)
Notify (\_SB.PCI0.MODM, 0x02)
}
Method (_L09, 0, NotSerialized)
{
Notify (\_SB.PCI0.EXP1, 0x02)
Notify (\_SB.PCI0.EXP2, 0x02)
Notify (\_SB.PCI0.EXP3, 0x02)
Notify (\_SB.PCI0.EXP4, 0x02)
}
Method (_L0B, 0, NotSerialized)
{
Notify (\_SB.PCI0.P32.LANC, 0x02)
}
Method (_L0C, 0, NotSerialized)
{
Notify (\_SB.PCI0.UHC3, 0x02)
}
Method (_L0D, 0, NotSerialized)
{
Notify (\_SB.PCI0.ECHI, 0x02)
}
Method (_L0E, 0, NotSerialized)
{
Notify (\_SB.PCI0.UHC4, 0x02)
}
}
Name (\GPIC, Zero)
Method (\_PIC, 1, NotSerialized)
{
Store (Arg0, \GPIC)
}
Scope (\_TZ)
{
ThermalZone (TZ0)
{
Method (_TMP, 0, NotSerialized)
{
Store (0x32, Local0)
If (REC)
{
Store (\_SB.PCI0.LPC.EC0.CTMP, Local0)
}
Store (KELV (Local0), Local0)
Return (Local0)
}
Method (_CRT, 0, NotSerialized)
{
Store (0x64, Local0)
If (REC)
{
Store (\_SB.PCI0.LPC.EC0.CRTT, Local0)
}
Store (KELV (Local0), Local0)
Return (Local0)
}
Name (_PSL, Package (0x01)
{
\_PR.CPU0
})
Name (_TSP, 0x32)
}
Method (KELV, 1, NotSerialized)
{
Store (Arg0, Local0)
Multiply (Local0, 0x0A, Local0)
Add (Local0, 0x0AAC, Local0)
Return (Local0)
}
}
Method (SCMP, 2, NotSerialized)
{
Name (STG1, Buffer (0x50) {})
Name (STG2, Buffer (0x50) {})
Store (Arg0, STG1)
Store (Arg1, STG2)
If (LNotEqual (SizeOf (Arg0), SizeOf (Arg1)))
{
Return (Zero)
}
Store (Zero, Local0)
While (LLess (Local0, SizeOf (Arg0)))
{
If (LNotEqual (DerefOf (Index (STG1, Local0)), DerefOf (Index (
STG2, Local0))))
{
Return (Zero)
}
Increment (Local0)
}
Return (One)
}
Name (WNOS, Zero)
Method (CKOS, 0, NotSerialized)
{
If (LEqual (WNOS, Zero))
{
If (SCMP (\_OS, "Microsoft Windows"))
{
Store (One, WNOS)
}
If (SCMP (\_OS, "Microsoft Windows NT"))
{
Store (0x02, WNOS)
}
If (SCMP (\_OS, "Microsoft WindowsME: Millennium Edition"))
{
Store (0x03, WNOS)
}
If (CondRefOf (\_OSI, Local0))
{
Store (0x04, WNOS)
}
}
Return (WNOS)
}
Method (GETP, 1, Serialized)
{
If (LEqual (And (Arg0, 0x09), Zero))
{
Return (Ones)
}
If (LEqual (And (Arg0, 0x09), 0x08))
{
Return (0x0384)
}
ShiftRight (And (Arg0, 0x0300), 0x08, Local0)
ShiftRight (And (Arg0, 0x3000), 0x0C, Local1)
Return (Multiply (0x1E, Subtract (0x09, Add (Local0, Local1))
))
}
Method (GDMA, 5, Serialized)
{
If (Arg0)
{
If (LAnd (Arg1, Arg4))
{
Return (0x14)
}
If (LAnd (Arg2, Arg4))
{
Return (Multiply (Subtract (0x04, Arg3), 0x0F))
}
Return (Multiply (Subtract (0x04, Arg3), 0x1E))
}
Return (Ones)
}
Method (GETT, 1, Serialized)
{
Return (Multiply (0x1E, Subtract (0x09, Add (And (ShiftRight (Arg0, 0x02
), 0x03), And (Arg0, 0x03)))))
}
Method (GETF, 3, Serialized)
{
Name (TMPF, Zero)
If (Arg0)
{
Or (TMPF, One, TMPF)
}
If (And (Arg2, 0x02))
{
Or (TMPF, 0x02, TMPF)
}
If (Arg1)
{
Or (TMPF, 0x04, TMPF)
}
If (And (Arg2, 0x20))
{
Or (TMPF, 0x08, TMPF)
}
If (And (Arg2, 0x4000))
{
Or (TMPF, 0x10, TMPF)
}
Return (TMPF)
}
Method (SETP, 3, Serialized)
{
If (LGreater (Arg0, 0xF0))
{
Return (0x08)
}
Else
{
If (And (Arg1, 0x02))
{
If (LAnd (LLessEqual (Arg0, 0x78), And (Arg2, 0x02)))
{
Return (0x2301)
}
If (LAnd (LLessEqual (Arg0, 0xB4), And (Arg2, One)))
{
Return (0x2101)
}
}
Return (0x1001)
}
}
Method (SDMA, 1, Serialized)
{
If (LLessEqual (Arg0, 0x14))
{
Return (One)
}
If (LLessEqual (Arg0, 0x1E))
{
Return (0x02)
}
If (LLessEqual (Arg0, 0x2D))
{
Return (One)
}
If (LLessEqual (Arg0, 0x3C))
{
Return (0x02)
}
If (LLessEqual (Arg0, 0x5A))
{
Return (One)
}
Return (Zero)
}
Method (SETT, 3, Serialized)
{
If (And (Arg1, 0x02))
{
If (LAnd (LLessEqual (Arg0, 0x78), And (Arg2, 0x02)))
{
Return (0x0B)
}
If (LAnd (LLessEqual (Arg0, 0xB4), And (Arg2, One)))
{
Return (0x09)
}
}
Return (0x04)
}
OperationRegion (SMIO, SystemIO, 0xB2, 0x02)
Field (SMIO, ByteAcc, NoLock, Preserve)
{
APMC, 8,
APMD, 8
}
Scope (\_SB)
{
Method (SMIR, 2, Serialized)
{
Store (Arg1, APMD)
Store (Arg0, APMC)
Stall (0xFF)
Stall (0xFF)
Stall (0xFF)
Stall (0xFF)
Store (APMD, Local0)
Return (Local0)
}
Name (OSOW, Zero)
Device (LID0)
{
Name (_HID, EisaId ("PNP0C0D"))
Method (_LID, 0, NotSerialized)
{
Store (One, Local0)
If (REC)
{
XOr (\_SB.PCI0.LPC.EC0.LIDS, One, Local0)
}
Return (Local0)
}
}
Device (SLPB)
{
Name (_HID, EisaId ("PNP0C0E"))
}
Device (BAT0)
{
Name (_HID, EisaId ("PNP0C0A"))
Name (_PCL, Package (0x01)
{
\_SB
})
Method (_STA, 0, NotSerialized)
{
If (REC)
{
Sleep (0x78)
If (\_SB.PCI0.LPC.EC0.BAT)
{
Store (0x1F, Local0)
}
Else
{
Store (0x0F, Local0)
}
And (Local0, 0x1F, Local0)
Store (Local0, Debug)
Return (Local0)
}
Else
{
Return (0x0F)
}
}
Method (_BIF, 0, NotSerialized)
{
Name (BIFP, Package (0x0D)
{
One,
0x0FA0,
0x0FA0,
One,
0x2EE0,
0x012C,
0x96,
One,
One,
"Battery",
"",
"LIon",
"BenQ"
})
Store (\_SB.BAT0._STA (), Local0)
And (Local0, 0x10, Local0)
If (LNot (Local0))
{
Return (BIFP)
}
If (REC)
{
Store (\_SB.PCI0.LPC.EC0.BDC0, Index (BIFP, One))
Store (\_SB.PCI0.LPC.EC0.BDV0, Index (BIFP, 0x04))
Store (\_SB.PCI0.LPC.EC0.BFC0, Local0)
Store (Local0, Index (BIFP, 0x02))
Divide (Local0, 0x0A, Local1, Local2)
Store (Local2, Index (BIFP, 0x05))
Divide (Local0, 0x21, Local1, Local2)
Store (Local2, Index (BIFP, 0x06))
If (\_SB.PCI0.LPC.EC0.BTYP)
{
Store (NIMH, Index (BIFP, 0x0B))
}
Else
{
Store (LION, Index (BIFP, 0x0B))
}
}
Store (BIFP, Debug)
Return (BIFP)
}
Name (BSTP, Package (0x04)
{
Zero,
0x04B0,
0x0BB8,
0x03E8
})
Method (_BST, 0, Serialized)
{
If (REC)
{
If (\_SB.PCI0.LPC.EC0.BAT)
{
Store (\_SB.PCI0.LPC.EC0.BPV0, Index (BSTP, 0x03))
Multiply (\_SB.PCI0.LPC.EC0.BRC0, 0x64, Local3)
Divide (Local3, \_SB.PCI0.LPC.EC0.BFC0, Local3, Local0)
Multiply (\_SB.PCI0.LPC.EC0.BFC0, Local0, Local3)
Divide (Local3, 0x64, Local3, Local0)
Increment (Local0)
Store (Local0, Index (BSTP, 0x02))
Store (\_SB.PCI0.LPC.EC0.BRC0, Local3)
Store (\_SB.PCI0.LPC.EC0.BPR0, Local0)
If (LGreaterEqual (Local0, 0x8000))
{
And (Not (Local0), 0xFFFF, Local0)
}
Store (Local0, Index (BSTP, One))
If (\_SB.PCI0.LPC.EC0.ADP)
{
If (\_SB.PCI0.LPC.EC0.CHRG)
{
Store (0x02, Index (BSTP, Zero))
}
Else
{
Store (Zero, Index (BSTP, Zero))
}
}
Else
{
If (LLess (Local3, 0x19))
{
Store (0x05, Index (BSTP, Zero))
}
Else
{
Store (One, Index (BSTP, Zero))
}
}
}
}
Store (BSTP, Debug)
Return (BSTP)
}
}
Device (AC)
{
Name (_HID, "ACPI0003")
Name (ACST, Zero)
Name (_PCL, Package (0x02)
{
\_SB,
BAT0
})
Method (_PSR, 0, NotSerialized)
{
If (REC)
{
If (ACFG)
{
Store (ACST, Local0)
}
Else
{
Store (\_SB.PCI0.LPC.EC0.ADP, Local0)
Store (Local0, ACST)
Store (One, ACFG)
}
}
Else
{
Store (One, Local0)
}
Sleep (0x78)
Store (Local0, Debug)
Return (Local0)
}
}
Device (PCI0)
{
Name (_HID, EisaId ("PNP0A08"))
Name (_CID, EisaId ("PNP0A03"))
Name (_ADR, Zero)
Method (_OSC, 5, NotSerialized)
{
Store (Arg3, Local0)
Multiply (Local0, 0x04, Local1)
Name (BUF1, Buffer (Local1) {})
Store (Arg4, BUF1)
Store (Zero, Local1)
Store (Zero, Local2)
While (Local0)
{
Multiply (Local1, 0x04, Local2)
CreateDWordField (BUF1, Local2, CAPB)
If (Arg2)
{
If (LEqual (Local1, Zero))
{
And (CAPB, 0xFFFFFFFC)
}
}
Else
{
}
Increment (Local1)
Decrement (Local0)
}
Return (BUF1)
}
Name (_BBN, Zero)
OperationRegion (HBUS, PCI_Config, 0x40, 0xC0)
Field (HBUS, DWordAcc, NoLock, Preserve)
{
Offset (0x50),
, 4,
PM0H, 2,
Offset (0x51),
PM1L, 2,
, 2,
PM1H, 2,
Offset (0x52),
PM2L, 2,
, 2,
PM2H, 2,
Offset (0x53),
PM3L, 2,
, 2,
PM3H, 2,
Offset (0x54),
PM4L, 2,
, 2,
PM4H, 2,
Offset (0x55),
PM5L, 2,
, 2,
PM5H, 2,
Offset (0x56),
PM6L, 2,
, 2,
PM6H, 2,
Offset (0x57),
, 7,
HENA, 1,
Offset (0x5C),
, 3,
TOUD, 5
}
Name (BUF0, ResourceTemplate ()
{
WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
0x0000, // Granularity
0x0000, // Range Minimum
0x00FF, // Range Maximum
0x0000, // Translation Offset
0x0100, // Length
0x00,, )
DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
0x00000000, // Granularity
0x00000000, // Range Minimum
0x00000CF7, // Range Maximum
0x00000000, // Translation Offset
0x00000CF8, // Length
0x00,, , TypeStatic)
IO (Decode16,
0x0CF8, // Range Minimum
0x0CF8, // Range Maximum
0x01, // Alignment
0x08, // Length
)
DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
0x00000000, // Granularity
0x00000D00, // Range Minimum
0x0000FFFF, // Range Maximum
0x00000000, // Translation Offset
0x0000F300, // Length
0x00,, , TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000A0000, // Range Minimum
0x000BFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00020000, // Length
0x00,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000C0000, // Range Minimum
0x000C3FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, _Y00, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000C4000, // Range Minimum
0x000C7FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, _Y01, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000C8000, // Range Minimum
0x000CBFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, _Y02, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000CC000, // Range Minimum
0x000CFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, _Y03, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000D0000, // Range Minimum
0x000D3FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, _Y04, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000D4000, // Range Minimum
0x000D7FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, _Y05, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000D8000, // Range Minimum
0x000DBFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, _Y06, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000DC000, // Range Minimum
0x000DFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, _Y07, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000E0000, // Range Minimum
0x000E3FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, _Y08, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000E4000, // Range Minimum
0x000E7FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, _Y09, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000E8000, // Range Minimum
0x000EBFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, _Y0A, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000EC000, // Range Minimum
0x000EFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
0x00,, _Y0B, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000F0000, // Range Minimum
0x000FFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00010000, // Length
0x00,, _Y0C, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x00000000, // Range Minimum
0xFEBFFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00000000, // Length
0x00,, _Y0D, AddressRangeMemory, TypeStatic)
})
Method (_CRS, 0, Serialized)
{
If (PM1L)
{
CreateDWordField (BUF0, \_SB.PCI0._Y00._LEN, C0LN)
Store (Zero, C0LN)
}
If (LEqual (PM1L, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y00._RW, C0RW)
Store (Zero, C0RW)
}
If (PM1H)
{
CreateDWordField (BUF0, \_SB.PCI0._Y01._LEN, C4LN)
Store (Zero, C4LN)
}
If (LEqual (PM1H, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y01._RW, C4RW)
Store (Zero, C4RW)
}
If (PM2L)
{
CreateDWordField (BUF0, \_SB.PCI0._Y02._LEN, C8LN)
Store (Zero, C8LN)
}
If (LEqual (PM2L, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y02._RW, C8RW)
Store (Zero, C8RW)
}
If (PM2H)
{
CreateDWordField (BUF0, \_SB.PCI0._Y03._LEN, CCLN)
Store (Zero, CCLN)
}
If (LEqual (PM2H, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y03._RW, CCRW)
Store (Zero, CCRW)
}
If (PM3L)
{
CreateDWordField (BUF0, \_SB.PCI0._Y04._LEN, D0LN)
Store (Zero, D0LN)
}
If (LEqual (PM3L, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y04._RW, D0RW)
Store (Zero, D0RW)
}
If (PM3H)
{
CreateDWordField (BUF0, \_SB.PCI0._Y05._LEN, D4LN)
Store (Zero, D4LN)
}
If (LEqual (PM3H, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y05._RW, D4RW)
Store (Zero, D4RW)
}
If (PM4L)
{
CreateDWordField (BUF0, \_SB.PCI0._Y06._LEN, D8LN)
Store (Zero, D8LN)
}
If (LEqual (PM4L, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y06._RW, D8RW)
Store (Zero, D8RW)
}
If (PM4H)
{
CreateDWordField (BUF0, \_SB.PCI0._Y07._LEN, DCLN)
Store (Zero, DCLN)
}
If (LEqual (PM4H, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y07._RW, DCRW)
Store (Zero, DCRW)
}
If (PM5L)
{
CreateDWordField (BUF0, \_SB.PCI0._Y08._LEN, E0LN)
Store (Zero, E0LN)
}
If (LEqual (PM5L, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y08._RW, E0RW)
Store (Zero, E0RW)
}
If (PM5H)
{
CreateDWordField (BUF0, \_SB.PCI0._Y09._LEN, E4LN)
Store (Zero, E4LN)
}
If (LEqual (PM5H, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y09._RW, E4RW)
Store (Zero, E4RW)
}
If (PM6L)
{
CreateDWordField (BUF0, \_SB.PCI0._Y0A._LEN, E8LN)
Store (Zero, E8LN)
}
If (LEqual (PM6L, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y0A._RW, E8RW)
Store (Zero, E8RW)
}
If (PM6H)
{
CreateDWordField (BUF0, \_SB.PCI0._Y0B._LEN, ECLN)
Store (Zero, ECLN)
}
If (LEqual (PM6H, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y0B._RW, ECRW)
Store (Zero, ECRW)
}
If (PM0H)
{
CreateDWordField (BUF0, \_SB.PCI0._Y0C._LEN, F0LN)
Store (Zero, F0LN)
}
If (LEqual (PM0H, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y0C._RW, F0RW)
Store (Zero, F0RW)
}
CreateDWordField (BUF0, \_SB.PCI0._Y0D._MIN, M1MN)
CreateDWordField (BUF0, \_SB.PCI0._Y0D._MAX, M1MX)
CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, M1LN)
ShiftLeft (TOUD, 0x1B, M1MN)
Add (Subtract (M1MX, M1MN), One, M1LN)
Return (BUF0)
}
Method (_PRT, 0, NotSerialized)
{
If (LEqual (\GPIC, Zero))
{
Return (Package (0x0F)
{
Package (0x04)
{
0x0001FFFF,
Zero,
\_SB.PCI0.LPC.LNKA,
Zero
},
Package (0x04)
{
0x0002FFFF,
Zero,
\_SB.PCI0.LPC.LNKA,
Zero
},
Package (0x04)
{
0x001BFFFF,
Zero,
\_SB.PCI0.LPC.LNKH,
Zero
},
Package (0x04)
{
0x001CFFFF,
Zero,
\_SB.PCI0.LPC.LNKA,
Zero
},
Package (0x04)
{
0x001CFFFF,
One,
\_SB.PCI0.LPC.LNKB,
Zero
},
Package (0x04)
{
0x001CFFFF,
0x02,
\_SB.PCI0.LPC.LNKC,
Zero
},
Package (0x04)
{
0x001CFFFF,
0x03,
\_SB.PCI0.LPC.LNKD,
Zero
},
Package (0x04)
{
0x001DFFFF,
Zero,
\_SB.PCI0.LPC.LNKG,
Zero
},
Package (0x04)
{
0x001DFFFF,
One,
\_SB.PCI0.LPC.LNKB,
Zero
},
Package (0x04)
{
0x001DFFFF,
0x02,
\_SB.PCI0.LPC.LNKC,
Zero
},
Package (0x04)
{
0x001DFFFF,
0x03,
\_SB.PCI0.LPC.LNKD,
Zero
},
Package (0x04)
{
0x001EFFFF,
Zero,
\_SB.PCI0.LPC.LNKA,
Zero
},
Package (0x04)
{
0x001EFFFF,
One,
\_SB.PCI0.LPC.LNKB,
Zero
},
Package (0x04)
{
0x001FFFFF,
Zero,
\_SB.PCI0.LPC.LNKA,
Zero
},
Package (0x04)
{
0x001FFFFF,
One,
\_SB.PCI0.LPC.LNKB,
Zero
}
})
}
Else
{
Return (Package (0x0F)
{
Package (0x04)
{
0x0001FFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x0002FFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x001BFFFF,
Zero,
Zero,
0x17
},
Package (0x04)
{
0x001CFFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x001CFFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0x001CFFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0x001CFFFF,
0x03,
Zero,
0x13
},
Package (0x04)
{
0x001DFFFF,
Zero,
Zero,
0x16
},
Package (0x04)
{
0x001DFFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0x001DFFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0x001DFFFF,
0x03,
Zero,
0x13
},
Package (0x04)
{
0x001EFFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x001EFFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0x001FFFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x001FFFFF,
One,
Zero,
0x11
}
})
}
}
Device (PEGP)
{
Name (_ADR, 0x00010000)
Device (VGA0)
{
Name (_ADR, Zero)
Method (_STA, 0, NotSerialized)
{
Return (0x0F)
}
Device (LCD)
{
Name (_ADR, 0x0110)
Method (_PS0, 0, NotSerialized)
{
Store (Zero, DOFF)
Store (Zero, HOFF)
}
Method (_PS3, 0, NotSerialized)
{
Store (One, DOFF)
}
Name (_DCS, 0x1F)
Name (_DGS, One)
Method (_DSS, 1, NotSerialized)
{
If (And (Arg0, 0x40000000))
{
If (And (Arg0, One))
{
Store (0x1F, _DCS)
}
Else
{
Store (0x1F, _DCS)
}
}
Else
{
}
^^NEXT ()
}
Name (BRIG, Package (0x10)
{
0x64,
0x07,
0x5A,
0x06,
0x50,
0x05,
0x46,
0x04,
0x3C,
0x03,
0x32,
0x02,
0x1E,
One,
Zero,
Zero
})
Name (BLST, Zero)
Method (_BCL, 0, NotSerialized)
{
Return (Package (0x0A)
{
0x64,
0x50,
Zero,
0x1E,
0x32,
0x3C,
0x46,
0x50,
0x5A,
0x64
})
}
Method (_BCM, 1, NotSerialized)
{
Store (Zero, Local1)
While (LNotEqual (DerefOf (Index (BRIG, Local1)), Arg0))
{
Increment (Local1)
}
Add (Local1, One, Local1)
Store (DerefOf (Index (BRIG, Local1)), Local1)
Store (P66H, Local0)
While (LEqual (And (Local0, 0x02), 0x02))
{
Sleep (0x05)
Store (P66H, Local0)
}
Store (0x22, P66H)
Store (P66H, Local0)
While (LEqual (And (Local0, 0x02), 0x02))
{
Stall (One)
Store (P66H, Local0)
}
Store (Local1, P62H)
Store (Local1, BLST)
Notify (VGA0, 0x85)
}
Method (_BQC, 0, NotSerialized)
{
Return (BLST)
}
}
Device (CRT)
{
Name (_ADR, 0x0100)
Name (_DCS, 0x1F)
Name (_DGS, One)
Method (_DSS, 1, NotSerialized)
{
If (And (Arg0, 0x40000000))
{
If (And (Arg0, One))
{
Store (0x1F, _DCS)
}
Else
{
Store (0x1D, _DCS)
}
}
Else
{
}
^^NEXT ()
}
}
Device (TV)
{
Name (_ADR, 0x0200)
Name (_DCS, 0x0D)
Name (_DGS, Zero)
Method (_DSS, 1, NotSerialized)
{
If (And (Arg0, 0x40000000))
{
If (And (Arg0, One))
{
Store (0x1F, _DCS)
}
Else
{
Store (0x1D, _DCS)
}
}
Else
{
}
^^NEXT ()
}
}
Device (DFP1)
{
Name (_ADR, 0x0210)
Name (_DCS, 0x1F)
Name (_DGS, One)
Method (_DSS, 1, NotSerialized)
{
If (And (Arg0, 0x40000000))
{
If (And (Arg0, One))
{
Store (0x1F, _DCS)
}
Else
{
Store (0x1D, _DCS)
}
}
Else
{
}
^^NEXT ()
}
}
Name (SWIT, One)
Name (GDGS, One)
Name (BGDS, One)
Method (INCS, 1, NotSerialized)
{
If (LEqual (Arg0, One))
{
Store (0x03, Local0)
Return (Local0)
}
If (LEqual (Arg0, 0x03))
{
Store (0x02, Local0)
Return (Local0)
}
If (LEqual (Arg0, 0x02))
{
Store (0x05, Local0)
Return (Local0)
}
If (LEqual (Arg0, 0x05))
{
Store (0x04, Local0)
Return (Local0)
}
If (LEqual (Arg0, 0x04))
{
Store (0x09, Local0)
Return (Local0)
}
If (LEqual (Arg0, 0x09))
{
Store (0x08, Local0)
Return (Local0)
}
Store (One, Local0)
Return (Local0)
}
Method (NEXT, 0, NotSerialized)
{
Store (GDGS, Local1)
Or (ShiftLeft (CRTA, One), ShiftLeft (TVAT, 0x02), Local0)
Or (Local0, ShiftLeft (DFPA, 0x03), Local0)
Or (Local0, One, Local0)
Store (Zero, Local2)
While (LNot (Local2))
{
Store (INCS (Local1), Local1)
Store (LGreater (And (Local1, Local0), One), Local2)
Or (Local2, LEqual (Local1, One), Local2)
}
Store (Local1, GDGS)
And (GDGS, One, ^LCD._DGS)
ShiftRight (And (GDGS, 0x02), One, ^CRT._DGS)
ShiftRight (And (GDGS, 0x04), 0x02, ^TV._DGS)
ShiftRight (And (GDGS, 0x08), 0x03, ^DFP1._DGS)
}
Method (PCHG, 0, NotSerialized)
{
If (HOFF)
{
Store (GDGS, BGDS)
Store (One, GDGS)
}
Else
{
Store (BGDS, GDGS)
}
Store (0x0D, Local0)
Or (Local0, 0x02, Local0)
Or (Local0, ShiftLeft (LCAT, 0x04), Local0)
Store (Local0, ^LCD._DCS)
Store (0x0D, Local0)
Or (Local0, ShiftRight (And (GDGS, 0x02), Zero), Local0)
Or (Local0, ShiftLeft (CRTA, 0x04), Local0)
Store (Local0, ^CRT._DCS)
Store (0x0D, Local0)
Or (Local0, ShiftRight (And (GDGS, 0x04), One), Local0)
Or (Local0, ShiftLeft (TVAT, 0x04), Local0)
Store (Local0, ^TV._DCS)
Store (0x0D, Local0)
Or (Local0, ShiftRight (And (GDGS, 0x08), 0x02), Local0)
Or (Local0, ShiftLeft (DFPA, 0x04), Local0)
Store (Local0, ^DFP1._DCS)
And (GDGS, One, ^LCD._DGS)
ShiftRight (And (GDGS, 0x02), One, ^CRT._DGS)
ShiftRight (And (GDGS, 0x04), 0x02, ^TV._DGS)
ShiftRight (And (GDGS, 0x08), 0x03, ^DFP1._DGS)
}
Method (GDCS, 0, NotSerialized)
{
Store (0x0D, Local0)
Or (Local0, ShiftLeft (LCDO, One), Local0)
Or (Local0, ShiftLeft (LCAT, 0x04), Local0)
Store (Local0, ^LCD._DCS)
Store (0x0D, Local0)
Or (Local0, ShiftLeft (CRTO, One), Local0)
Or (Local0, ShiftLeft (CRTA, 0x04), Local0)
Store (Local0, ^CRT._DCS)
Store (0x0D, Local0)
Or (Local0, ShiftLeft (TVON, One), Local0)
Or (Local0, ShiftLeft (TVAT, 0x04), Local0)
Store (Local0, ^TV._DCS)
Store (0x0D, Local0)
Or (Local0, ShiftLeft (DFPO, One), Local0)
Or (Local0, ShiftLeft (DFPA, 0x04), Local0)
Store (Local0, ^DFP1._DCS)
}
Method (_DOS, 1, NotSerialized)
{
And (Arg0, 0x03, SWIT)
If (LEqual (SWIT, One))
{
Store (Zero, SWTF)
}
Else
{
Store (One, SWTF)
}
}
Name (_DOD, Package (0x04)
{
0x00010100,
0x00010110,
0x00010200,
0x00010210
})
}
Method (_PRT, 0, NotSerialized)
{
If (LEqual (\GPIC, Zero))
{
Return (Package (0x01)
{
Package (0x04)
{
0xFFFF,
Zero,
\_SB.PCI0.LPC.LNKA,
Zero
}
})
}
Else
{
Return (Package (0x01)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x10
}
})
}
}
}
Device (P32)
{
Name (_ADR, 0x001E0000)
Device (LANC)
{
Name (_ADR, 0x00080000)
Name (_PRW, Package (0x02)
{
0x0B,
0x03
})
}
Device (CRDR)
{
Name (_ADR, 0x00050000)
Method (_STA, 0, NotSerialized)
{
Return (0x1B)
}
}
Method (_PRT, 0, NotSerialized)
{
If (LEqual (\GPIC, Zero))
{
Return (Package (0x06)
{
Package (0x04)
{
0x0002FFFF,
Zero,
\_SB.PCI0.LPC.LNKA,
Zero
},
Package (0x04)
{
0x0002FFFF,
One,
\_SB.PCI0.LPC.LNKB,
Zero
},
Package (0x04)
{
0x0005FFFF,
Zero,
\_SB.PCI0.LPC.LNKA,
Zero
},
Package (0x04)
{
0x0005FFFF,
One,
\_SB.PCI0.LPC.LNKB,
Zero
},
Package (0x04)
{
0x0005FFFF,
0x02,
\_SB.PCI0.LPC.LNKC,
Zero
},
Package (0x04)
{
0x0008FFFF,
Zero,
\_SB.PCI0.LPC.LNKE,
Zero
}
})
}
Else
{
Return (Package (0x07)
{
Package (0x04)
{
0x0002FFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x0002FFFF,
One,
Zero,
0x10
},
Package (0x04)
{
0x0005FFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x0005FFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0x0005FFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0x0005FFFF,
0x03,
Zero,
0x13
},
Package (0x04)
{
0x0008FFFF,
Zero,
Zero,
0x14
}
})
}
}
}
Device (LPC)
{
Name (_ADR, 0x001F0000)
OperationRegion (PRR0, PCI_Config, 0x60, 0x04)
Field (PRR0, AnyAcc, NoLock, Preserve)
{
PIRA, 8,
PIRB, 8,
PIRC, 8,
PIRD, 8
}
OperationRegion (PRR1, PCI_Config, 0x68, 0x04)
Field (PRR1, AnyAcc, NoLock, Preserve)
{
PIRE, 8,
PIRF, 8,
PIRG, 8,
PIRH, 8
}
OperationRegion (PRR2, PCI_Config, 0x80, 0x02)
Field (PRR2, AnyAcc, NoLock, Preserve)
{
IODL, 8,
IODH, 8
}
Device (LNKA)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, One)
Method (_STA, 0, NotSerialized)
{
If (And (PIRA, 0x80))
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
Method (_DIS, 0, NotSerialized)
{
Or (PIRA, 0x80, PIRA)
}
Method (_CRS, 0, NotSerialized)
{
Name (BUF0, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{0}
})
CreateWordField (BUF0, One, IRQW)
If (And (PIRA, 0x80))
{
Store (Zero, Local0)
}
Else
{
Store (One, Local0)
}
ShiftLeft (Local0, And (PIRA, 0x0F), IRQW)
Return (BUF0)
}
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{3,4,5,7,9,10,11,12}
})
Method (_SRS, 1, NotSerialized)
{
CreateWordField (Arg0, One, IRQW)
FindSetRightBit (IRQW, Local0)
If (LNotEqual (IRQW, Zero))
{
And (Local0, 0x7F, Local0)
Decrement (Local0)
}
Else
{
Or (Local0, 0x80, Local0)
}
Store (Local0, PIRA)
}
}
Device (LNKB)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x02)
Method (_STA, 0, NotSerialized)
{
If (And (PIRB, 0x80))
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
Method (_DIS, 0, NotSerialized)
{
Or (PIRB, 0x80, PIRB)
}
Method (_CRS, 0, NotSerialized)
{
Name (BUF0, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{0}
})
CreateWordField (BUF0, One, IRQW)
If (And (PIRB, 0x80))
{
Store (Zero, Local0)
}
Else
{
Store (One, Local0)
}
ShiftLeft (Local0, And (PIRB, 0x0F), IRQW)
Return (BUF0)
}
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{3,4,5,7,9,10,11,12}
})
Method (_SRS, 1, NotSerialized)
{
CreateWordField (Arg0, One, IRQW)
FindSetRightBit (IRQW, Local0)
If (LNotEqual (IRQW, Zero))
{
And (Local0, 0x7F, Local0)
Decrement (Local0)
}
Else
{
Or (Local0, 0x80, Local0)
}
Store (Local0, PIRB)
}
}
Device (LNKC)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x03)
Method (_STA, 0, NotSerialized)
{
If (And (PIRC, 0x80))
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
Method (_DIS, 0, NotSerialized)
{
Or (PIRC, 0x80, PIRC)
}
Method (_CRS, 0, NotSerialized)
{
Name (BUF0, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{0}
})
CreateWordField (BUF0, One, IRQW)
If (And (PIRC, 0x80))
{
Store (Zero, Local0)
}
Else
{
Store (One, Local0)
}
ShiftLeft (Local0, And (PIRC, 0x0F), IRQW)
Return (BUF0)
}
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{3,4,5,7,9,10,11,12}
})
Method (_SRS, 1, NotSerialized)
{
CreateWordField (Arg0, One, IRQW)
FindSetRightBit (IRQW, Local0)
If (LNotEqual (IRQW, Zero))
{
And (Local0, 0x7F, Local0)
Decrement (Local0)
}
Else
{
Or (Local0, 0x80, Local0)
}
Store (Local0, PIRC)
}
}
Device (LNKD)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x04)
Method (_STA, 0, NotSerialized)
{
If (And (PIRD, 0x80))
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
Method (_DIS, 0, NotSerialized)
{
Or (PIRD, 0x80, PIRD)
}
Method (_CRS, 0, NotSerialized)
{
Name (BUF0, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{0}
})
CreateWordField (BUF0, One, IRQW)
If (And (PIRD, 0x80))
{
Store (Zero, Local0)
}
Else
{
Store (One, Local0)
}
ShiftLeft (Local0, And (PIRD, 0x0F), IRQW)
Return (BUF0)
}
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{3,4,5,7,9,10,11,12}
})
Method (_SRS, 1, NotSerialized)
{
CreateWordField (Arg0, One, IRQW)
FindSetRightBit (IRQW, Local0)
If (LNotEqual (IRQW, Zero))
{
And (Local0, 0x7F, Local0)
Decrement (Local0)
}
Else
{
Or (Local0, 0x80, Local0)
}
Store (Local0, PIRD)
}
}
Device (LNKE)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x05)
Method (_STA, 0, NotSerialized)
{
If (And (PIRE, 0x80))
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
Method (_DIS, 0, NotSerialized)
{
Or (PIRE, 0x80, PIRE)
}
Method (_CRS, 0, NotSerialized)
{
Name (BUF0, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{0}
})
CreateWordField (BUF0, One, IRQW)
If (And (PIRE, 0x80))
{
Store (Zero, Local0)
}
Else
{
Store (One, Local0)
}
ShiftLeft (Local0, And (PIRE, 0x0F), IRQW)
Return (BUF0)
}
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{3,4,5,7,9,10,11,12}
})
Method (_SRS, 1, NotSerialized)
{
CreateWordField (Arg0, One, IRQW)
FindSetRightBit (IRQW, Local0)
If (LNotEqual (IRQW, Zero))
{
And (Local0, 0x7F, Local0)
Decrement (Local0)
}
Else
{
Or (Local0, 0x80, Local0)
}
Store (Local0, PIRE)
}
}
Device (LNKF)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x06)
Method (_STA, 0, NotSerialized)
{
If (And (PIRF, 0x80))
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
Method (_DIS, 0, NotSerialized)
{
Or (PIRF, 0x80, PIRF)
}
Method (_CRS, 0, NotSerialized)
{
Name (BUF0, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{0}
})
CreateWordField (BUF0, One, IRQW)
If (And (PIRF, 0x80))
{
Store (Zero, Local0)
}
Else
{
Store (One, Local0)
}
ShiftLeft (Local0, And (PIRF, 0x0F), IRQW)
Return (BUF0)
}
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{3,4,5,7,9,10,11,12}
})
Method (_SRS, 1, NotSerialized)
{
CreateWordField (Arg0, One, IRQW)
FindSetRightBit (IRQW, Local0)
If (LNotEqual (IRQW, Zero))
{
And (Local0, 0x7F, Local0)
Decrement (Local0)
}
Else
{
Or (Local0, 0x80, Local0)
}
Store (Local0, PIRF)
}
}
Device (LNKG)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x07)
Method (_STA, 0, NotSerialized)
{
If (And (PIRG, 0x80))
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
Method (_DIS, 0, NotSerialized)
{
Or (PIRG, 0x80, PIRG)
}
Method (_CRS, 0, NotSerialized)
{
Name (BUF0, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{0}
})
CreateWordField (BUF0, One, IRQW)
If (And (PIRG, 0x80))
{
Store (Zero, Local0)
}
Else
{
Store (One, Local0)
}
ShiftLeft (Local0, And (PIRG, 0x0F), IRQW)
Return (BUF0)
}
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{3,4,5,7,9,10,11,12}
})
Method (_SRS, 1, NotSerialized)
{
CreateWordField (Arg0, One, IRQW)
FindSetRightBit (IRQW, Local0)
If (LNotEqual (IRQW, Zero))
{
And (Local0, 0x7F, Local0)
Decrement (Local0)
}
Else
{
Or (Local0, 0x80, Local0)
}
Store (Local0, PIRG)
}
}
Device (LNKH)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x08)
Method (_STA, 0, NotSerialized)
{
If (And (PIRH, 0x80))
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
Method (_DIS, 0, NotSerialized)
{
Or (PIRH, 0x80, PIRH)
}
Method (_CRS, 0, NotSerialized)
{
Name (BUF0, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{0}
})
CreateWordField (BUF0, One, IRQW)
If (And (PIRH, 0x80))
{
Store (Zero, Local0)
}
Else
{
Store (One, Local0)
}
ShiftLeft (Local0, And (PIRH, 0x0F), IRQW)
Return (BUF0)
}
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{3,4,5,7,9,10,11,12}
})
Method (_SRS, 1, NotSerialized)
{
CreateWordField (Arg0, One, IRQW)
FindSetRightBit (IRQW, Local0)
If (LNotEqual (IRQW, Zero))
{
And (Local0, 0x7F, Local0)
Decrement (Local0)
}
Else
{
Or (Local0, 0x80, Local0)
}
Store (Local0, PIRH)
}
}
Device (SYSR)
{
Name (_HID, EisaId ("PNP0C02"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x164E, // Range Minimum
0x164E, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x002E, // Range Minimum
0x002E, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x004E, // Range Minimum
0x004E, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0061, // Range Minimum
0x0061, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0080, // Range Minimum
0x0080, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0092, // Range Minimum
0x0092, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x00B2, // Range Minimum
0x00B2, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0063, // Range Minimum
0x0063, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0065, // Range Minimum
0x0065, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0067, // Range Minimum
0x0067, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0600, // Range Minimum
0x0600, // Range Maximum
0x01, // Alignment
0x10, // Length
)
IO (Decode16,
0x0610, // Range Minimum
0x0610, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0800, // Range Minimum
0x0800, // Range Maximum
0x01, // Alignment
0x10, // Length
)
IO (Decode16,
0x0400, // Range Minimum
0x0400, // Range Maximum
0x01, // Alignment
0x80, // Length
)
IO (Decode16,
0x0500, // Range Minimum
0x0500, // Range Maximum
0x01, // Alignment
0x40, // Length
)
IO (Decode16,
0x0378, // Range Minimum
0x0378, // Range Maximum
0x01, // Alignment
0x08, // Length
)
IO (Decode16,
0x0778, // Range Minimum
0x0778, // Range Maximum
0x01, // Alignment
0x08, // Length
)
Memory32Fixed (ReadWrite,
0xE0000000, // Address Base
0x10000000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED1C000, // Address Base
0x00004000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED14000, // Address Base
0x00004000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED18000, // Address Base
0x00001000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED19000, // Address Base
0x00001000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFEC00000, // Address Base
0x00001000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFEE00000, // Address Base
0x00001000, // Address Length
)
})
}
Device (DMAC)
{
Name (_HID, EisaId ("PNP0200"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0000, // Range Minimum
0x0000, // Range Maximum
0x01, // Alignment
0x20, // Length
)
IO (Decode16,
0x0081, // Range Minimum
0x0081, // Range Maximum
0x01, // Alignment
0x11, // Length
)
IO (Decode16,
0x0093, // Range Minimum
0x0093, // Range Maximum
0x01, // Alignment
0x0D, // Length
)
IO (Decode16,
0x00C0, // Range Minimum
0x00C0, // Range Maximum
0x01, // Alignment
0x20, // Length
)
DMA (Compatibility, NotBusMaster, Transfer8_16, )
{4}
})
}
Device (RTC)
{
Name (_HID, EisaId ("PNP0B00"))
Name (BUF0, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x01, // Alignment
0x08, // Length
)
})
Name (BUF1, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x01, // Alignment
0x08, // Length
)
IRQNoFlags ()
{8}
})
Method (_CRS, 0, Serialized)
{
If (LEqual (HPTS, One))
{
Return (BUF0)
}
Else
{
Return (BUF1)
}
}
}
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
Name (BUF0, ResourceTemplate ()
{
IRQNoFlags ()
{0}
IRQNoFlags ()
{8}
Memory32Fixed (ReadOnly,
0xFED00000, // Address Base
0x00000400, // Address Length
_Y0E)
})
Method (_STA, 0, NotSerialized)
{
If (LEqual (CKOS (), 0x04))
{
If (LEqual (HPTS, One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Else
{
If (HPTS)
{
Return (0x0B)
}
Else
{
Return (Zero)
}
}
}
Method (_CRS, 0, Serialized)
{
If (LEqual (HPTS, One))
{
CreateDWordField (BUF0, \_SB.PCI0.LPC.HPET._Y0E._BAS, HPT0)
If (LEqual (HPTA, One))
{
Store (0xFED01000, HPT0)
}
If (LEqual (HPTA, 0x02))
{
Store (0xFED02000, HPT0)
}
If (LEqual (HPTA, 0x03))
{
Store (0xFED03000, HPT0)
}
}
Return (BUF0)
}
}
Device (PIC)
{
Name (_HID, EisaId ("PNP0000"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0020, // Range Minimum
0x0020, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0024, // Range Minimum
0x0024, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0028, // Range Minimum
0x0028, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x002C, // Range Minimum
0x002C, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0030, // Range Minimum
0x0030, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0034, // Range Minimum
0x0034, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0038, // Range Minimum
0x0038, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x003C, // Range Minimum
0x003C, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00A0, // Range Minimum
0x00A0, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00A4, // Range Minimum
0x00A4, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00A8, // Range Minimum
0x00A8, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00AC, // Range Minimum
0x00AC, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00B0, // Range Minimum
0x00B0, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00B4, // Range Minimum
0x00B4, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00B8, // Range Minimum
0x00B8, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00BC, // Range Minimum
0x00BC, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x04D0, // Range Minimum
0x04D0, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IRQNoFlags ()
{2}
})
}
Device (FPU)
{
Name (_HID, EisaId ("PNP0C04"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x00F0, // Range Minimum
0x00F0, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IRQNoFlags ()
{13}
})
}
Device (TIMR)
{
Name (_HID, EisaId ("PNP0100"))
Name (BUF0, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x01, // Alignment
0x04, // Length
)
IO (Decode16,
0x0050, // Range Minimum
0x0050, // Range Maximum
0x10, // Alignment
0x04, // Length
)
})
Name (BUF1, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x01, // Alignment
0x04, // Length
)
IO (Decode16,
0x0050, // Range Minimum
0x0050, // Range Maximum
0x10, // Alignment
0x04, // Length
)
IRQNoFlags ()
{0}
})
Method (_CRS, 0, Serialized)
{
If (HPTS)
{
Return (BUF0)
}
Return (BUF1)
}
}
Device (FWHD)
{
Name (_HID, EisaId ("INT0800"))
Name (_CRS, ResourceTemplate ()
{
Memory32Fixed (ReadOnly,
0xFF800000, // Address Base
0x00800000, // Address Length
)
})
}
Device (KBC)
{
Name (_HID, EisaId ("PNP0303"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0060, // Range Minimum
0x0060, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0064, // Range Minimum
0x0064, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IRQ (Edge, ActiveHigh, Exclusive, )
{1}
})
Method (_STA, 0, NotSerialized)
{
Return (0x0F)
}
}
Device (MCIR)
{
Name (_HID, EisaId ("MTC0301"))
}
Device (MOUE)
{
Name (_CID, Package (0x02)
{
EisaId ("SYN0C00"),
EisaId ("PNP0F13")
})
Name (_HID, EisaId ("SYN0C0A"))
Name (_CRS, ResourceTemplate ()
{
IRQ (Edge, ActiveHigh, Exclusive, )
{12}
})
Method (_STA, 0, NotSerialized)
{
Return (0x0F)
}
}
Device (EC0)
{
Name (_HID, EisaId ("PNP0C09"))
Name (_UID, One)
Method (_CRS, 0, NotSerialized)
{
Name (BFFR, ResourceTemplate ()
{
IO (Decode16,
0x0062, // Range Minimum
0x0062, // Range Maximum
0x00, // Alignment
0x01, // Length
)
IO (Decode16,
0x0066, // Range Minimum
0x0066, // Range Maximum
0x00, // Alignment
0x01, // Length
)
})
Store (One, REC)
Return (BFFR)
}
Name (_GPE, 0x17)
Method (_STA, 0, NotSerialized)
{
Return (0x0F)
}
OperationRegion (RAM, EmbeddedControl, Zero, 0x37)
Field (RAM, ByteAcc, NoLock, Preserve)
{
MODE, 1,
FAN, 1,
LIDS, 1,
LSW0, 1,
BTYP, 1,
MWKE, 1,
ADP, 1,
BAT, 1,
SLPT, 3,
CHRG, 1,
RI_W, 1,
KB_W, 1,
BATW, 1,
PMEW, 1,
BDC0, 16,
BFC0, 16,
BDV0, 16,
BPR0, 16,
BRC0, 16,
BPV0, 16,
BTP0, 16,
Offset (0x31),
CTMP, 8,
Offset (0x36),
CRTT, 8
}
Method (_Q01, 0, NotSerialized)
{
Notify (\_PR.CPU0, 0x80)
If (\_SB.PCI0.LPC.EC0.ADP)
{
Store (One, \_SB.AC.ACST)
Notify (\_SB.AC, Zero)
}
Else
{
Store (Zero, \_SB.AC.ACST)
Notify (\_SB.AC, 0x80)
Notify (\_SB.BAT0, 0x80)
}
}
Method (_Q02, 0, NotSerialized)
{
If (\_SB.PCI0.LPC.EC0.BAT)
{
Notify (\_SB.BAT0, Zero)
Notify (\_SB.AC, 0x80)
}
Else
{
Notify (\_SB.AC, 0x80)
Notify (\_SB.BAT0, One)
}
}
Method (_Q05, 0, NotSerialized)
{
Notify (\_SB.SLPB, 0x80)
}
Method (_Q07, 0, NotSerialized)
{
Notify (\_SB.LID0, 0x80)
}
Method (_Q09, 0, NotSerialized)
{
Notify (\_SB.BAT0, 0x80)
}
Method (_Q0A, 0, NotSerialized)
{
Store (0x0100, OSSD)
Notify (\_TZ.TZ0, 0x80)
}
Method (_Q23, 0, NotSerialized)
{
Notify (\_SB.PCI0.PEGP.VGA0.LCD, 0x87)
}
Method (_Q24, 0, NotSerialized)
{
Notify (\_SB.PCI0.PEGP.VGA0.LCD, 0x86)
}
Name (DFLG, Zero)
Method (_Q30, 0, NotSerialized)
{
SMIR (0xB0, 0x61)
If (LEqual (\_SB.PCI0.PEGP.VGA0.SWIT, Zero))
{
If (And (DFLG, One))
{
Store (One, CRTA)
}
If (And (DFLG, 0x04))
{
Store (One, DFPA)
}
\_SB.PCI0.PEGP.VGA0.GDCS ()
Or (ShiftLeft (CRTO, One), ShiftLeft (TVON, 0x02), Local0)
Or (Local0, ShiftLeft (DFPO, 0x03), Local0)
Or (Local0, ShiftLeft (LCDO, Zero), \_SB.PCI0.PEGP.VGA0.GDGS)
Store (\_SB.PCI0.PEGP.VGA0.GDGS, Local0)
\_SB.PCI0.PEGP.VGA0.NEXT ()
If (LNotEqual (Local0, \_SB.PCI0.PEGP.VGA0.GDGS))
{
Notify (\_SB.PCI0.PEGP.VGA0, 0x80)
}
}
}
Method (_Q31, 0, NotSerialized)
{
Or (One, DFLG, DFLG)
Sleep (0x0100)
Store (One, CRTA)
Store (One, CRTO)
Store (0x1F, \_SB.PCI0.PEGP.VGA0.CRT._DCS)
Store (One, \_SB.PCI0.PEGP.VGA0.CRT._DGS)
Store (One, \_SB.PCI0.PEGP.VGA0.LCD._DGS)
Store (Zero, \_SB.PCI0.PEGP.VGA0.DFP1._DGS)
Notify (\_SB.PCI0.PEGP.VGA0, 0x80)
}
Method (_Q32, 0, NotSerialized)
{
And (0x0E, DFLG, DFLG)
Sleep (0x0100)
Store (Zero, CRTA)
Store (Zero, CRTO)
Store (Zero, \_SB.PCI0.PEGP.VGA0.CRT._DCS)
If (LEqual (DFPA, One))
{
Store (One, \_SB.PCI0.PEGP.VGA0.DFP1._DGS)
Store (0x1F, \_SB.PCI0.PEGP.VGA0.CRT._DCS)
}
Store (One, \_SB.PCI0.PEGP.VGA0.LCD._DGS)
Store (0x1F, \_SB.PCI0.PEGP.VGA0.LCD._DCS)
Notify (\_SB.PCI0.PEGP.VGA0, 0x80)
}
Method (_Q33, 0, NotSerialized)
{
Or (0x04, DFLG, DFLG)
Sleep (0x0100)
Store (One, DFPA)
Store (One, DFPO)
Store (0x1F, \_SB.PCI0.PEGP.VGA0.DFP1._DCS)
Store (One, \_SB.PCI0.PEGP.VGA0.DFP1._DGS)
Store (One, \_SB.PCI0.PEGP.VGA0.LCD._DGS)
Store (Zero, \_SB.PCI0.PEGP.VGA0.CRT._DGS)
Notify (\_SB.PCI0.PEGP.VGA0, 0x80)
}
Method (_Q34, 0, NotSerialized)
{
And (0x0B, DFLG, DFLG)
Sleep (0x0100)
Store (Zero, DFPA)
Store (Zero, DFPO)
Store (Zero, \_SB.PCI0.PEGP.VGA0.DFP1._DCS)
If (LEqual (CRTA, One))
{
Store (One, \_SB.PCI0.PEGP.VGA0.CRT._DGS)
Store (0x1F, \_SB.PCI0.PEGP.VGA0.CRT._DCS)
}
Store (One, \_SB.PCI0.PEGP.VGA0.LCD._DGS)
Store (0x1F, \_SB.PCI0.PEGP.VGA0.LCD._DCS)
Notify (\_SB.PCI0.PEGP.VGA0, 0x80)
}
}
}
Device (UHC1)
{
Name (_ADR, 0x001D0000)
Name (_PRW, Package (0x02)
{
0x03,
0x03
})
OperationRegion (USBR, PCI_Config, 0xC4, One)
Field (USBR, AnyAcc, NoLock, Preserve)
{
URES, 8
}
Method (_PSW, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (Zero, URES)
}
If (LEqual (Arg0, One))
{
Store (0x03, URES)
}
}
}
Device (UHC2)
{
Name (_ADR, 0x001D0001)
Name (_PRW, Package (0x02)
{
0x04,
0x03
})
OperationRegion (USBR, PCI_Config, 0xC4, One)
Field (USBR, AnyAcc, NoLock, Preserve)
{
URES, 8
}
Method (_PSW, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (Zero, URES)
}
If (LEqual (Arg0, One))
{
Store (0x03, URES)
}
}
}
Device (UHC3)
{
Name (_ADR, 0x001D0002)
Name (_PRW, Package (0x02)
{
0x0C,
0x03
})
OperationRegion (USBR, PCI_Config, 0xC4, One)
Field (USBR, AnyAcc, NoLock, Preserve)
{
URES, 8
}
Method (_PSW, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (Zero, URES)
}
If (LEqual (Arg0, One))
{
Store (0x03, URES)
}
}
}
Device (UHC4)
{
Name (_ADR, 0x001D0003)
Name (_PRW, Package (0x02)
{
0x0E,
0x03
})
OperationRegion (USBR, PCI_Config, 0xC4, One)
Field (USBR, AnyAcc, NoLock, Preserve)
{
URES, 8
}
Method (_PSW, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (Zero, URES)
}
If (LEqual (Arg0, One))
{
Store (0x03, URES)
}
}
}
Device (ECHI)
{
Name (_ADR, 0x001D0007)
Name (_PRW, Package (0x02)
{
0x0D,
0x03
})
OperationRegion (USBR, PCI_Config, 0xC4, One)
Field (USBR, AnyAcc, NoLock, Preserve)
{
URES, 8
}
Method (_PSW, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (Zero, URES)
}
If (LEqual (Arg0, One))
{
Store (0x03, URES)
}
}
}
Device (EXP1)
{
Name (_ADR, 0x001C0000)
OperationRegion (P1CS, PCI_Config, 0x40, 0x0100)
Field (P1CS, AnyAcc, NoLock, Preserve)
{
Offset (0x10),
, 4,
LKD1, 1,
Offset (0x1A),
ABP1, 1,
, 2,
PDC1, 1,
, 2,
PDS1, 1,
Offset (0x20),
RID1, 16,
PSP1, 1,
PPP1, 1,
Offset (0x9C),
, 30,
HPCS, 1,
PMCS, 1
}
Device (PXS1)
{
Name (_ADR, Zero)
Method (_RMV, 0, NotSerialized)
{
Return (One)
}
}
Name (_PRW, Package (0x02)
{
0x09,
0x04
})
Method (_PRT, 0, NotSerialized)
{
If (LEqual (\GPIC, Zero))
{
Return (Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
\_SB.PCI0.LPC.LNKA,
Zero
},
Package (0x04)
{
0xFFFF,
One,
\_SB.PCI0.LPC.LNKB,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
\_SB.PCI0.LPC.LNKC,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
\_SB.PCI0.LPC.LNKD,
Zero
}
})
}
Else
{
Return (Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x13
}
})
}
}
}
Device (EXP2)
{
Name (_ADR, 0x001C0001)
OperationRegion (P2CS, PCI_Config, 0x40, 0x0100)
Field (P2CS, AnyAcc, NoLock, Preserve)
{
Offset (0x10),
, 4,
LKD2, 1,
Offset (0x1A),
ABP2, 1,
, 2,
PDC2, 1,
, 2,
PDS2, 1,
Offset (0x20),
RID2, 16,
PSP2, 1,
PPP2, 1,
Offset (0x9C),
, 30,
HPCS, 1,
PMCS, 1
}
Device (PXS2)
{
Name (_ADR, Zero)
}
Method (_PRT, 0, NotSerialized)
{
If (LEqual (\GPIC, Zero))
{
Return (Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
\_SB.PCI0.LPC.LNKB,
Zero
},
Package (0x04)
{
0xFFFF,
One,
\_SB.PCI0.LPC.LNKC,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
\_SB.PCI0.LPC.LNKD,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
\_SB.PCI0.LPC.LNKA,
Zero
}
})
}
Else
{
Return (Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x11
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x12
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x13
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x10
}
})
}
}
}
Device (EXP3)
{
Name (_ADR, 0x001C0002)
OperationRegion (P3CS, PCI_Config, 0x40, 0x0100)
Field (P3CS, AnyAcc, NoLock, Preserve)
{
Offset (0x10),
, 4,
LKD3, 1,
Offset (0x1A),
ABP3, 1,
, 2,
PDC3, 1,
, 2,
PDS3, 1,
Offset (0x20),
RID3, 16,
PSP3, 1,
PPP3, 1,
Offset (0x9C),
, 30,
HPCS, 1,
PMCS, 1
}
Device (PXS3)
{
Name (_ADR, Zero)
}
Name (_PRW, Package (0x02)
{
0x09,
0x04
})
Method (_PRT, 0, NotSerialized)
{
If (LEqual (\GPIC, Zero))
{
Return (Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
\_SB.PCI0.LPC.LNKC,
Zero
},
Package (0x04)
{
0xFFFF,
One,
\_SB.PCI0.LPC.LNKD,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
\_SB.PCI0.LPC.LNKA,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
\_SB.PCI0.LPC.LNKB,
Zero
}
})
}
Else
{
Return (Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x12
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x13
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x10
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x11
}
})
}
}
}
Device (EXP4)
{
Name (_ADR, 0x001C0003)
OperationRegion (P4CS, PCI_Config, 0x40, 0x0100)
Field (P4CS, AnyAcc, NoLock, Preserve)
{
Offset (0x10),
, 4,
LKD4, 1,
Offset (0x1A),
ABP4, 1,
, 2,
PDC4, 1,
, 2,
PDS4, 1,
Offset (0x20),
RID4, 16,
PSP4, 1,
PPP4, 1,
Offset (0x9C),
, 30,
HPCS, 1,
PMCS, 1
}
Device (PXS4)
{
Name (_ADR, Zero)
}
Name (_PRW, Package (0x02)
{
0x09,
0x04
})
Method (_PRT, 0, NotSerialized)
{
If (LEqual (\GPIC, Zero))
{
Return (Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
\_SB.PCI0.LPC.LNKD,
Zero
},
Package (0x04)
{
0xFFFF,
One,
\_SB.PCI0.LPC.LNKA,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
\_SB.PCI0.LPC.LNKB,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
\_SB.PCI0.LPC.LNKC,
Zero
}
})
}
Else
{
Return (Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x13
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x10
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x11
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x12
}
})
}
}
}
Device (AZAL)
{
Name (_ADR, 0x001B0000)
Name (_PRW, Package (0x02)
{
0x05,
0x04
})
Method (_PS0, 0, NotSerialized)
{
Store (Zero, GP27)
Store (0x43, P66H)
Store (P66H, Local0)
While (LEqual (And (Local0, 0x02), 0x02))
{
Store (P66H, Local0)
}
Store (0xFF, P62H)
}
Method (_PS3, 0, NotSerialized)
{
Store (One, GP27)
Sleep (0x01F4)
Store (0x43, P66H)
Store (P66H, Local0)
While (LEqual (And (Local0, 0x02), 0x02))
{
Stall (One)
Store (P66H, Local0)
}
Store (Zero, P62H)
}
}
Device (AUDO)
{
Name (_ADR, 0x001E0002)
}
Device (MODM)
{
Name (_ADR, 0x001E0003)
Method (_PRW, 0, NotSerialized)
{
If (LEqual (WKMD, One))
{
Return (Package (0x02)
{
0x05,
0x04
})
}
Else
{
Return (Package (0x02)
{
0x05,
Zero
})
}
}
}
Device (IDEC)
{
Name (_ADR, 0x001F0001)
OperationRegion (PACS, PCI_Config, 0x40, 0xC0)
Field (PACS, DWordAcc, NoLock, Preserve)
{
PRIT, 16,
Offset (0x04),
PSIT, 4,
Offset (0x08),
SYNC, 4,
Offset (0x0A),
SDT0, 2,
, 2,
SDT1, 2,
Offset (0x14),
ICR0, 4,
ICR1, 4,
ICR2, 4,
ICR3, 4,
ICR4, 4,
ICR5, 4
}
Device (PRID)
{
Name (_ADR, Zero)
Method (_GTM, 0, NotSerialized)
{
Name (PBUF, Buffer (0x14)
{
/* 0000 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0010 */ 0x00, 0x00, 0x00, 0x00
})
CreateDWordField (PBUF, Zero, PIO0)
CreateDWordField (PBUF, 0x04, DMA0)
CreateDWordField (PBUF, 0x08, PIO1)
CreateDWordField (PBUF, 0x0C, DMA1)
CreateDWordField (PBUF, 0x10, FLAG)
Store (GETP (PRIT), PIO0)
Store (GDMA (And (SYNC, One), And (ICR3, One),
And (ICR0, One), SDT0, And (ICR1, One)), DMA0)
If (LEqual (DMA0, Ones))
{
Store (PIO0, DMA0)
}
If (And (PRIT, 0x4000))
{
If (LEqual (And (PRIT, 0x90), 0x80))
{
Store (0x0384, PIO1)
}
Else
{
Store (GETT (PSIT), PIO1)
}
}
Else
{
Store (Ones, PIO1)
}
Store (GDMA (And (SYNC, 0x02), And (ICR3, 0x02),
And (ICR0, 0x02), SDT1, And (ICR1, 0x02)), DMA1)
If (LEqual (DMA1, Ones))
{
Store (PIO1, DMA1)
}
Store (GETF (And (SYNC, One), And (SYNC, 0x02),
PRIT), FLAG)
If (And (LEqual (PIO0, Ones), LEqual (DMA0, Ones)))
{
Store (0x78, PIO0)
Store (0x14, DMA0)
Store (0x03, FLAG)
}
Return (PBUF)
}
Method (_STM, 3, NotSerialized)
{
CreateDWordField (Arg0, Zero, PIO0)
CreateDWordField (Arg0, 0x04, DMA0)
CreateDWordField (Arg0, 0x08, PIO1)
CreateDWordField (Arg0, 0x0C, DMA1)
CreateDWordField (Arg0, 0x10, FLAG)
If (LEqual (SizeOf (Arg1), 0x0200))
{
And (PRIT, 0x40F0, PRIT)
And (SYNC, 0x02, SYNC)
Store (Zero, SDT0)
And (ICR0, 0x02, ICR0)
And (ICR1, 0x02, ICR1)
And (ICR3, 0x02, ICR3)
And (ICR5, 0x02, ICR5)
CreateWordField (Arg1, 0x62, W490)
CreateWordField (Arg1, 0x6A, W530)
CreateWordField (Arg1, 0x7E, W630)
CreateWordField (Arg1, 0x80, W640)
CreateWordField (Arg1, 0xB0, W880)
CreateWordField (Arg1, 0xBA, W930)
Or (PRIT, 0x8004, PRIT)
If (LAnd (And (FLAG, 0x02), And (W490, 0x0800)))
{
Or (PRIT, 0x02, PRIT)
}
Or (PRIT, SETP (PIO0, W530, W640), PRIT)
If (And (FLAG, One))
{
Or (SYNC, One, SYNC)
Store (SDMA (DMA0), SDT0)
If (LLess (DMA0, 0x1E))
{
Or (ICR3, One, ICR3)
}
If (LLess (DMA0, 0x3C))
{
Or (ICR0, One, ICR0)
}
If (And (W930, 0x2000))
{
Or (ICR1, One, ICR1)
}
}
}
If (LEqual (SizeOf (Arg2), 0x0200))
{
And (PRIT, 0x3F0F, PRIT)
Store (Zero, PSIT)
And (SYNC, One, SYNC)
Store (Zero, SDT1)
And (ICR0, One, ICR0)
And (ICR1, One, ICR1)
And (ICR3, One, ICR3)
And (ICR5, One, ICR5)
CreateWordField (Arg2, 0x62, W491)
CreateWordField (Arg2, 0x6A, W531)
CreateWordField (Arg2, 0x7E, W631)
CreateWordField (Arg2, 0x80, W641)
CreateWordField (Arg2, 0xB0, W881)
CreateWordField (Arg2, 0xBA, W931)
Or (PRIT, 0x8040, PRIT)
If (LAnd (And (FLAG, 0x08), And (W491, 0x0800)))
{
Or (PRIT, 0x20, PRIT)
}
If (And (FLAG, 0x10))
{
Or (PRIT, 0x4000, PRIT)
If (LGreater (PIO1, 0xF0))
{
Or (PRIT, 0x80, PRIT)
}
Else
{
Or (PRIT, 0x10, PRIT)
Store (SETT (PIO1, W531, W641), PSIT)
}
}
If (And (FLAG, 0x04))
{
Or (SYNC, 0x02, SYNC)
Store (SDMA (DMA1), SDT1)
If (LLess (DMA1, 0x1E))
{
Or (ICR3, 0x02, ICR3)
}
If (LLess (DMA1, 0x3C))
{
Or (ICR0, 0x02, ICR0)
}
If (And (W931, 0x2000))
{
Or (ICR1, 0x02, ICR1)
}
}
}
}
Device (P_D0)
{
Name (_ADR, Zero)
Method (_GTF, 0, NotSerialized)
{
Name (PIB0, Buffer (0x0E)
{
/* 0000 */ 0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x03,
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
})
CreateByteField (PIB0, One, PMD0)
CreateByteField (PIB0, 0x08, DMD0)
If (And (PRIT, 0x02))
{
If (LEqual (And (PRIT, 0x09), 0x08))
{
Store (0x08, PMD0)
}
Else
{
Store (0x0A, PMD0)
ShiftRight (And (PRIT, 0x0300), 0x08, Local0)
ShiftRight (And (PRIT, 0x3000), 0x0C, Local1)
Add (Local0, Local1, Local2)
If (LEqual (0x03, Local2))
{
Store (0x0B, PMD0)
}
If (LEqual (0x05, Local2))
{
Store (0x0C, PMD0)
}
}
}
Else
{
Store (One, PMD0)
}
If (And (SYNC, One))
{
Store (Or (SDT0, 0x40), DMD0)
If (And (ICR1, One))
{
If (And (ICR0, One))
{
Add (DMD0, 0x02, DMD0)
}
If (And (ICR3, One))
{
Store (0x45, DMD0)
}
}
}
Else
{
Or (Subtract (And (PMD0, 0x07), 0x02), 0x20, DMD0)
}
Return (PIB0)
}
}
Device (P_D1)
{
Name (_ADR, One)
Method (_GTF, 0, NotSerialized)
{
Name (PIB1, Buffer (0x0E)
{
/* 0000 */ 0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x03,
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
})
CreateByteField (PIB1, One, PMD1)
CreateByteField (PIB1, 0x08, DMD1)
If (And (PRIT, 0x20))
{
If (LEqual (And (PRIT, 0x90), 0x80))
{
Store (0x08, PMD1)
}
Else
{
Add (And (PSIT, 0x03), ShiftRight (And (PSIT, 0x0C),
0x02), Local0)
If (LEqual (0x05, Local0))
{
Store (0x0C, PMD1)
}
Else
{
If (LEqual (0x03, Local0))
{
Store (0x0B, PMD1)
}
Else
{
Store (0x0A, PMD1)
}
}
}
}
Else
{
Store (One, PMD1)
}
If (And (SYNC, 0x02))
{
Store (Or (SDT1, 0x40), DMD1)
If (And (ICR1, 0x02))
{
If (And (ICR0, 0x02))
{
Add (DMD1, 0x02, DMD1)
}
If (And (ICR3, 0x02))
{
Store (0x45, DMD1)
}
}
}
Else
{
Or (Subtract (And (PMD1, 0x07), 0x02), 0x20, DMD1)
}
Return (PIB1)
}
}
}
}
Device (SATA)
{
Name (_ADR, 0x001F0002)
OperationRegion (SACS, PCI_Config, 0x40, 0xC0)
Field (SACS, DWordAcc, NoLock, Preserve)
{
PRIT, 16,
SECT, 16,
PSIT, 4,
SSIT, 4,
Offset (0x08),
SYNC, 4,
Offset (0x0A),
SDT0, 2,
, 2,
SDT1, 2,
Offset (0x0B),
SDT2, 2,
, 2,
SDT3, 2,
Offset (0x14),
ICR0, 4,
ICR1, 4,
ICR2, 4,
ICR3, 4,
ICR4, 4,
ICR5, 4,
Offset (0x50),
MAPV, 2
}
Device (PRID)
{
Name (_ADR, Zero)
Method (_GTM, 0, NotSerialized)
{
If (LNotEqual (SCFG, 0x02))
{
Name (PBUF, Buffer (0x14)
{
/* 0000 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0010 */ 0x00, 0x00, 0x00, 0x00
})
CreateDWordField (PBUF, Zero, PIO0)
CreateDWordField (PBUF, 0x04, DMA0)
CreateDWordField (PBUF, 0x08, PIO1)
CreateDWordField (PBUF, 0x0C, DMA1)
CreateDWordField (PBUF, 0x10, FLAG)
Store (GETP (PRIT), PIO0)
Store (GDMA (And (SYNC, One), And (ICR3, One),
And (ICR0, One), SDT0, And (ICR1, One)), DMA0)
If (LEqual (DMA0, Ones))
{
Store (PIO0, DMA0)
}
If (And (PRIT, 0x4000))
{
If (LEqual (And (PRIT, 0x90), 0x80))
{
Store (0x0384, PIO1)
}
Else
{
Store (GETT (PSIT), PIO1)
}
}
Else
{
Store (Ones, PIO1)
}
Store (GDMA (And (SYNC, 0x02), And (ICR3, 0x02),
And (ICR0, 0x02), SDT1, And (ICR1, 0x02)), DMA1)
If (LEqual (DMA1, Ones))
{
Store (PIO1, DMA1)
}
Store (GETF (And (SYNC, One), And (SYNC, 0x02),
PRIT), FLAG)
Return (PBUF)
}
}
Method (_STM, 3, NotSerialized)
{
If (LNotEqual (SCFG, 0x02))
{
CreateDWordField (Arg0, Zero, PIO0)
CreateDWordField (Arg0, 0x04, DMA0)
CreateDWordField (Arg0, 0x08, PIO1)
CreateDWordField (Arg0, 0x0C, DMA1)
CreateDWordField (Arg0, 0x10, FLAG)
If (LEqual (SizeOf (Arg1), 0x0200))
{
And (PRIT, 0x40F0, PRIT)
And (SYNC, 0x0E, SYNC)
Store (Zero, SDT0)
And (ICR0, 0x0E, ICR0)
And (ICR1, 0x0E, ICR1)
And (ICR3, 0x0E, ICR3)
And (ICR5, 0x0E, ICR5)
CreateWordField (Arg1, 0x62, W490)
CreateWordField (Arg1, 0x6A, W530)
CreateWordField (Arg1, 0x7E, W630)
CreateWordField (Arg1, 0x80, W640)
CreateWordField (Arg1, 0xB0, W880)
CreateWordField (Arg1, 0xBA, W930)
Or (PRIT, 0x8004, PRIT)
If (LAnd (And (FLAG, 0x02), And (W490, 0x0800)))
{
Or (PRIT, 0x02, PRIT)
}
Or (PRIT, SETP (PIO0, W530, W640), PRIT)
If (And (FLAG, One))
{
Or (SYNC, One, SYNC)
Store (SDMA (DMA0), SDT0)
If (LLess (DMA0, 0x1E))
{
Or (ICR3, One, ICR3)
}
If (LLess (DMA0, 0x3C))
{
Or (ICR0, One, ICR0)
}
Or (ICR1, One, ICR1)
}
}
If (LEqual (SizeOf (Arg2), 0x0200))
{
And (PRIT, 0x3F0F, PRIT)
Store (Zero, PSIT)
And (SYNC, 0x0D, SYNC)
Store (Zero, SDT1)
And (ICR0, 0x0D, ICR0)
And (ICR1, 0x0D, ICR1)
And (ICR3, 0x0D, ICR3)
And (ICR5, 0x0D, ICR5)
CreateWordField (Arg2, 0x62, W491)
CreateWordField (Arg2, 0x6A, W531)
CreateWordField (Arg2, 0x7E, W631)
CreateWordField (Arg2, 0x80, W641)
CreateWordField (Arg2, 0xB0, W881)
CreateWordField (Arg2, 0xBA, W931)
Or (PRIT, 0x8040, PRIT)
If (LAnd (And (FLAG, 0x08), And (W491, 0x0800)))
{
Or (PRIT, 0x20, PRIT)
}
If (And (FLAG, 0x10))
{
Or (PRIT, 0x4000, PRIT)
If (LGreater (PIO1, 0xF0))
{
Or (PRIT, 0x80, PRIT)
}
Else
{
Or (PRIT, 0x10, PRIT)
Store (SETT (PIO1, W531, W641), PSIT)
}
}
If (And (FLAG, 0x04))
{
Or (SYNC, 0x02, SYNC)
Store (SDMA (DMA1), SDT1)
If (LLess (DMA1, 0x1E))
{
Or (ICR3, 0x02, ICR3)
}
If (LLess (DMA1, 0x3C))
{
Or (ICR0, 0x02, ICR0)
}
Or (ICR1, 0x02, ICR1)
}
}
}
}
Device (P_D0)
{
Name (_ADR, Zero)
Method (_GTF, 0, NotSerialized)
{
If (LNotEqual (SCFG, 0x02))
{
Name (PIB0, Buffer (0x0E)
{
/* 0000 */ 0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x03,
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
})
CreateByteField (PIB0, One, PMD0)
CreateByteField (PIB0, 0x08, DMD0)
If (And (PRIT, 0x02))
{
If (LEqual (And (PRIT, 0x09), 0x08))
{
Store (0x08, PMD0)
}
Else
{
Store (0x0A, PMD0)
ShiftRight (And (PRIT, 0x0300), 0x08, Local0)
ShiftRight (And (PRIT, 0x3000), 0x0C, Local1)
Add (Local0, Local1, Local2)
If (LEqual (0x03, Local2))
{
Store (0x0B, PMD0)
}
If (LEqual (0x05, Local2))
{
Store (0x0C, PMD0)
}
}
}
Else
{
Store (One, PMD0)
}
If (And (SYNC, One))
{
Store (Or (SDT0, 0x40), DMD0)
If (And (ICR1, One))
{
If (And (ICR0, One))
{
Add (DMD0, 0x02, DMD0)
}
If (And (ICR3, One))
{
Store (0x45, DMD0)
}
}
}
Else
{
Or (Subtract (And (PMD0, 0x07), 0x02), 0x20, DMD0)
}
Return (PIB0)
}
}
}
Device (P_D1)
{
Name (_ADR, One)
Method (_GTF, 0, NotSerialized)
{
If (LNotEqual (SCFG, 0x02))
{
Name (PIB1, Buffer (0x0E)
{
/* 0000 */ 0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x03,
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
})
CreateByteField (PIB1, One, PMD1)
CreateByteField (PIB1, 0x08, DMD1)
If (And (PRIT, 0x20))
{
If (LEqual (And (PRIT, 0x90), 0x80))
{
Store (0x08, PMD1)
}
Else
{
Add (And (PSIT, 0x03), ShiftRight (And (PSIT, 0x0C),
0x02), Local0)
If (LEqual (0x05, Local0))
{
Store (0x0C, PMD1)
}
Else
{
If (LEqual (0x03, Local0))
{
Store (0x0B, PMD1)
}
Else
{
Store (0x0A, PMD1)
}
}
}
}
Else
{
Store (One, PMD1)
}
If (And (SYNC, 0x02))
{
Store (Or (SDT1, 0x40), DMD1)
If (And (ICR1, 0x02))
{
If (And (ICR0, 0x02))
{
Add (DMD1, 0x02, DMD1)
}
If (And (ICR3, 0x02))
{
Store (0x45, DMD1)
}
}
}
Else
{
Or (Subtract (And (PMD1, 0x07), 0x02), 0x20, DMD1)
}
Return (PIB1)
}
}
}
}
Device (SECD)
{
Name (_ADR, One)
Method (_GTM, 0, NotSerialized)
{
If (LNotEqual (SCFG, 0x02))
{
Name (SBUF, Buffer (0x14)
{
/* 0000 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0010 */ 0x00, 0x00, 0x00, 0x00
})
CreateDWordField (SBUF, Zero, PIO0)
CreateDWordField (SBUF, 0x04, DMA0)
CreateDWordField (SBUF, 0x08, PIO1)
CreateDWordField (SBUF, 0x0C, DMA1)
CreateDWordField (SBUF, 0x10, FLAG)
Store (GETP (SECT), PIO0)
Store (GDMA (And (SYNC, 0x04), And (ICR3, 0x04),
And (ICR0, 0x04), SDT2, And (ICR1, 0x04)), DMA0)
If (LEqual (DMA0, Ones))
{
Store (PIO0, DMA0)
}
If (And (SECT, 0x4000))
{
If (LEqual (And (SECT, 0x90), 0x80))
{
Store (0x0384, PIO1)
}
Else
{
Store (GETT (SSIT), PIO1)
}
}
Else
{
Store (Ones, PIO1)
}
Store (GDMA (And (SYNC, 0x08), And (ICR3, 0x08),
And (ICR0, 0x08), SDT3, And (ICR1, 0x08)), DMA1)
If (LEqual (DMA1, Ones))
{
Store (PIO1, DMA1)
}
Store (GETF (And (SYNC, 0x04), And (SYNC, 0x08),
SECT), FLAG)
If (And (LEqual (PIO0, Ones), LEqual (DMA0, Ones)))
{
Store (0x78, PIO0)
Store (0x14, DMA0)
Store (0x03, FLAG)
}
Return (SBUF)
}
}
Method (_STM, 3, NotSerialized)
{
If (LNotEqual (SCFG, 0x02))
{
CreateDWordField (Arg0, Zero, PIO0)
CreateDWordField (Arg0, 0x04, DMA0)
CreateDWordField (Arg0, 0x08, PIO1)
CreateDWordField (Arg0, 0x0C, DMA1)
CreateDWordField (Arg0, 0x10, FLAG)
If (LEqual (SizeOf (Arg1), 0x0200))
{
And (SECT, 0x40F0, SECT)
And (SYNC, 0x0B, SYNC)
Store (Zero, SDT2)
And (ICR0, 0x0B, ICR0)
And (ICR1, 0x0B, ICR1)
And (ICR3, 0x0B, ICR3)
And (ICR5, 0x0B, ICR5)
CreateWordField (Arg1, 0x62, W490)
CreateWordField (Arg1, 0x6A, W530)
CreateWordField (Arg1, 0x7E, W630)
CreateWordField (Arg1, 0x80, W640)
CreateWordField (Arg1, 0xB0, W880)
CreateWordField (Arg1, 0xBA, W930)
Or (SECT, 0x8004, SECT)
If (LAnd (And (FLAG, 0x02), And (W490, 0x0800)))
{
Or (SECT, 0x02, SECT)
}
Or (SECT, SETP (PIO0, W530, W640), SECT)
If (And (FLAG, One))
{
Or (SYNC, 0x04, SYNC)
Store (SDMA (DMA0), SDT2)
If (LLess (DMA0, 0x1E))
{
Or (ICR3, 0x04, ICR3)
}
If (LLess (DMA0, 0x3C))
{
Or (ICR0, 0x04, ICR0)
}
If (And (W930, 0x2000))
{
Or (ICR1, 0x04, ICR1)
}
}
}
If (LEqual (SizeOf (Arg2), 0x0200))
{
And (SECT, 0x3F0F, SECT)
Store (Zero, SSIT)
And (SYNC, 0x07, SYNC)
Store (Zero, SDT3)
And (ICR0, 0x07, ICR0)
And (ICR1, 0x07, ICR1)
And (ICR3, 0x07, ICR3)
And (ICR5, 0x07, ICR5)
CreateWordField (Arg2, 0x62, W491)
CreateWordField (Arg2, 0x6A, W531)
CreateWordField (Arg2, 0x7E, W631)
CreateWordField (Arg2, 0x80, W641)
CreateWordField (Arg2, 0xB0, W881)
CreateWordField (Arg2, 0xBA, W931)
Or (SECT, 0x8040, SECT)
If (LAnd (And (FLAG, 0x08), And (W491, 0x0800)))
{
Or (SECT, 0x20, SECT)
}
If (And (FLAG, 0x10))
{
Or (SECT, 0x4000, SECT)
If (LGreater (PIO1, 0xF0))
{
Or (SECT, 0x80, SECT)
}
Else
{
Or (SECT, 0x10, SECT)
Store (SETT (PIO1, W531, W641), SSIT)
}
}
If (And (FLAG, 0x04))
{
Or (SYNC, 0x08, SYNC)
Store (SDMA (DMA1), SDT3)
If (LLess (DMA1, 0x1E))
{
Or (ICR3, 0x08, ICR3)
}
If (LLess (DMA1, 0x3C))
{
Or (ICR0, 0x08, ICR0)
}
If (And (W931, 0x2000))
{
Or (ICR1, 0x08, ICR1)
}
}
}
}
}
Device (S_D0)
{
Name (_ADR, Zero)
Method (_GTF, 0, NotSerialized)
{
If (LNotEqual (SCFG, 0x02))
{
Name (SIB0, Buffer (0x0E)
{
/* 0000 */ 0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x03,
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
})
CreateByteField (SIB0, One, PMD0)
CreateByteField (SIB0, 0x08, DMD0)
If (And (SECT, 0x02))
{
If (LEqual (And (SECT, 0x09), 0x08))
{
Store (0x08, PMD0)
}
Else
{
Store (0x0A, PMD0)
ShiftRight (And (SECT, 0x0300), 0x08, Local0)
ShiftRight (And (SECT, 0x3000), 0x0C, Local1)
Add (Local0, Local1, Local2)
If (LEqual (0x03, Local2))
{
Store (0x0B, PMD0)
}
If (LEqual (0x05, Local2))
{
Store (0x0C, PMD0)
}
}
}
Else
{
Store (One, PMD0)
}
If (And (SYNC, 0x04))
{
Store (Or (SDT2, 0x40), DMD0)
If (And (ICR1, 0x04))
{
If (And (ICR0, 0x04))
{
Add (DMD0, 0x02, DMD0)
}
If (And (ICR3, 0x04))
{
Store (0x45, DMD0)
}
}
}
Else
{
Or (Subtract (And (PMD0, 0x07), 0x02), 0x20, DMD0)
}
Return (SIB0)
}
}
}
Device (S_D1)
{
Name (_ADR, One)
Method (_GTF, 0, NotSerialized)
{
If (LNotEqual (SCFG, 0x02))
{
Name (SIB1, Buffer (0x0E)
{
/* 0000 */ 0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x03,
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
})
CreateByteField (SIB1, One, PMD1)
CreateByteField (SIB1, 0x08, DMD1)
If (And (SECT, 0x20))
{
If (LEqual (And (SECT, 0x90), 0x80))
{
Store (0x08, PMD1)
}
Else
{
Add (And (SSIT, 0x03), ShiftRight (And (SSIT, 0x0C),
0x02), Local0)
If (LEqual (0x05, Local0))
{
Store (0x0C, PMD1)
}
Else
{
If (LEqual (0x03, Local0))
{
Store (0x0B, PMD1)
}
Else
{
Store (0x0A, PMD1)
}
}
}
}
Else
{
Store (One, PMD1)
}
If (And (SYNC, 0x08))
{
Store (Or (SDT3, 0x40), DMD1)
If (And (ICR1, 0x08))
{
If (And (ICR0, 0x08))
{
Add (DMD1, 0x02, DMD1)
}
If (And (ICR3, 0x08))
{
Store (0x45, DMD1)
}
}
}
Else
{
Or (Subtract (And (PMD1, 0x07), 0x02), 0x20, DMD1)
}
Return (SIB1)
}
}
}
}
Device (PRT0)
{
Name (_ADR, 0xFFFF)
Method (_SDD, 1, NotSerialized)
{
If (LEqual (SCFG, 0x02))
{
Name (GBU0, Buffer (0x07)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00
})
CreateByteField (GBU0, Zero, GB00)
CreateByteField (GBU0, One, GB01)
CreateByteField (GBU0, 0x02, GB02)
CreateByteField (GBU0, 0x03, GB03)
CreateByteField (GBU0, 0x04, GB04)
CreateByteField (GBU0, 0x05, GB05)
CreateByteField (GBU0, 0x06, GB06)
If (LEqual (SizeOf (Arg0), 0x0200))
{
CreateWordField (Arg0, 0x9C, W780)
CreateWordField (Arg0, 0x9E, W790)
If (LAnd (W780, 0x04))
{
If (LEqual (And (W790, 0x04), Zero))
{
Store (0x10, GB00)
Store (0x03, GB01)
Store (0xEF, GB06)
}
}
}
Store (GBU0, GTF0)
}
}
Method (_GTF, 0, NotSerialized)
{
If (LAnd (LEqual (SCFG, 0x02), LEqual (AIBT, Zero)))
{
Return (GTF0)
}
}
}
Device (PRT2)
{
Name (_ADR, 0x0002FFFF)
Method (_SDD, 1, NotSerialized)
{
If (LEqual (SCFG, 0x02))
{
Name (GBU2, Buffer (0x07)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00
})
CreateByteField (GBU2, Zero, GB20)
CreateByteField (GBU2, One, GB21)
CreateByteField (GBU2, 0x02, GB22)
CreateByteField (GBU2, 0x03, GB23)
CreateByteField (GBU2, 0x04, GB24)
CreateByteField (GBU2, 0x05, GB25)
CreateByteField (GBU2, 0x06, GB26)
If (LEqual (SizeOf (Arg0), 0x0200))
{
CreateWordField (Arg0, 0x9C, W782)
CreateWordField (Arg0, 0x9E, W792)
If (LAnd (W782, 0x04))
{
If (LEqual (And (W792, 0x04), Zero))
{
Store (0x10, GB20)
Store (0x03, GB21)
Store (0xEF, GB26)
}
}
}
Store (GBU2, GTF2)
}
}
Method (_GTF, 0, NotSerialized)
{
If (LAnd (LEqual (SCFG, 0x02), LEqual (AIBT, Zero)))
{
Return (GTF2)
}
}
}
}
}
}
}
^ permalink raw reply [flat|nested] 10+ messages in threadend of thread, other threads:[~2011-02-08 10:38 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-02-08 10:38 [Devel] Reserved method has too many arguments (_OSC requires 4) lxl -- strict thread matches above, loose matches on Subject: below -- 2010-03-15 17:28 Moore, Robert 2010-03-15 17:28 ` Moore, Robert 2010-03-15 16:59 Moore, Robert 2010-03-15 16:59 ` Moore, Robert 2010-03-15 9:30 Thomas Renninger 2010-03-15 9:30 ` Thomas Renninger 2010-03-12 15:58 Moore, Robert 2010-03-12 15:58 ` Moore, Robert 2010-03-12 14:00 Thomas Renninger
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.