Okay, apparantly the Integers in ACPI are little-endian, meaning that the
final argument is not {0x0,0x0,0x0,0x1} but {0x1,0x0,0x0,0x0}. See this
image from Wikipedia:
http://upload.wikimedia.org/wikipedia/commons/e/ed/Little-Endian.svgRegards, Lekensteyn On Sun, Oct 23, 2011 at 1:30 PM, Lekensteyn <[email protected]> wrote: > Hi Eric, > > I'm attaching my notes for digging in my own tables as well as the > disassembled tables you sent me before. > The TableID of SSDT5.dsl is OptTabl (OptimusTable?) and the methods and > devices in it suggests that it is relevant. > > A quick overview on that views revealed some interesting methods: > > - \_SB.PCI0.PEG0.PEGP._DSM calls \_SB.PCI0.GFX0.HDSM (Arg0, Arg1, Arg2, > Arg3) and returns the return value from that method > - \_SB.PCI0.GFX0.HDSM > If arg 0 equals to the buffer > 0xF8, 0xD8, 0x86, 0xA4, 0xDA, 0x0B, 0x1B, 0x47, 0xA7, 0x2B, 0x60, 0x42, > 0xA6, 0xB5, 0xBE, 0xE0 > then OPCI becomes One. > > If OPCI is One OR if SGCI or NBCI are One (which is never the case), the > next continues: > > If arg1 (the revision number) does not equal 0x100 0x80000002 is returned > (which is btw the value returned on errors). > > Arg 2 is the function, func 0 returns a 4-byte buffer depending on some > register values > func 1 returns a buffer with four 0x0 (in this case) > ... there are other methods but I'm not going to analyse all of them for > now.. > func 0x03 is what we're looking for. > > Arg3 is converted to an integer, taking the first 8 bytes of the buffer as > an integer (forming a 64-bit one). On that integer, the least two bits are > significant. > if it's 0, \_SB.PCI0.PEG0.PEGP.SGST is called (status?), > if it's 1, \_SB.PCI0.PEG0.PEGP.SGON is called (turn something on?), > if it's 2, \_SB.PCI0.PEG0.PEGP.SGOFF is called (turn sth. off?) > > After that, if the result of \_SB.PCI0.PEG0.PEGP.SGST equals 0x0F, a buffer > of 0x0, 0x2, 0x0, 0x0 is returned. Otherwise, a buffer of 4 zeros is > returned. > > The method becomes: > \_SB.PCI0.PEG0.PEGP._DSM > {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0} > 0x100 0x3 {0x00,0x00,0x0,0x1} > The above is for turning it n, replace the last 0x1 by 0x2 for turning it > off (theoretically) > > Some methods may return a Package as result ("Object type 0x4"). If you > encounter that, use acpi_call from > https://github.com/Bumblebee-Project/acpi_call. I'll soon make it > available in the bumblebee/testing PPA. > > I wish there was a register/ method documentation somewhere, that would > help a lot with analysing. > > Regards, > Lekensteyn > > On Sun, Oct 23, 2011 at 5:56 AM, Eric Appleman <[email protected]>wrote: > >> Consult the following for background and logs: >> https://github.com/Bumblebee-**Project/Bumblebee/issues/133<https://github.com/Bumblebee-Project/Bumblebee/issues/133> >> >> Is there anyone here who is well-versed in ACPI who'd be willing to look >> at my tables as well as those of similarly arranged machines? >> >> Thanks in advance. >> >> - Eric Appleman, Bumblebee Project >> >> ______________________________**_________________ >> Mailing list: >> https://launchpad.net/~hybrid-**graphics-linux<https://launchpad.net/%7Ehybrid-graphics-linux> >> Post to : >> hybrid-graphics-linux@lists.**launchpad.net<[email protected]> >> Unsubscribe : >> https://launchpad.net/~hybrid-**graphics-linux<https://launchpad.net/%7Ehybrid-graphics-linux> >> More help : >> https://help.launchpad.net/**ListHelp<https://help.launchpad.net/ListHelp> >> > >
_______________________________________________ Mailing list: https://launchpad.net/~hybrid-graphics-linux Post to : [email protected] Unsubscribe : https://launchpad.net/~hybrid-graphics-linux More help : https://help.launchpad.net/ListHelp

