← Back to team overview

hybrid-graphics-linux team mailing list archive

acpi_call on Lenovo IdeaPad Z360 - solved

 

Hello

After some fiddling around with parameters in my DSDT and trying to
understand what peberlein did to get it working with a Asus eeepc 1215n
( ==>
http://linux-hybrid-graphics.blogspot.com/2010/10/calling-acpicall-with-parameters.html
THANKS! ) I think that I have finally managed to switch off the Optimus
Graphics on my Lenovo Z360.

As with the 1215n, acpi_call needs to be called twice:

The first call is to \_SB.PCI0.P0P2.PEGP._DSM with 4 arguments:

arg0: 	{0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,
	0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0}
arg1: 	0x0100
arg2: 	0x1A
arg3:	{0x1,0x0,0x0,0x3}

I don't know if it is really necessary for arg3 to have exactly these
four values. Looking at the DSDT it seems as if any values could be
passed to arg3, they aren't even checked in the code (I think...). But
who cares, it works for me with those values.

The second call is to \_SB.PCI0.P0P2.PEGP._PS3 and doesn't need any
arguments. This will switch off the Optimus part.
If one wants to restart the discrete graphics chip, one has to call
\_SB.PCI0.P0P2.PEGP._PS0.

Ok, short form - switch off your Optimus graphics like this:

echo "\_SB.PCI0.P0P2.PEGP._DSM
{0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0xA7,0x2B,0x60,0x42,0xA6,0xB5,0xBE,0xE0}
0x0100 0x1A {0x1,0x0,0x0,0x3}" > /proc/acpi/call

echo "\_SB.PCI0.P0P2.PEGP._PS3" > proc/acpi/call

And back on like this:

echo "\_SB.PCI0.P0P2.PEGP._PS0" > /proc/acpi/call

By the way, the Z360 does not have a hardware switch built in, so
no nvidia graphics on linux. But at least power management is
optimized...

good luck,
Daniel



Follow ups