← Back to team overview

hybrid-graphics-linux team mailing list archive

asus switcheroo

 

I've been poking around at getting switcheroo working on my Asus
UL30VT and decided to drop it into a stand alone kernel module so that
it's portable among various distributions and usable with existing
kernels.  This is really pretty generic, so I expect eventually we can
incorporate it into nouveau_acpi.  You can find the source tree here:

git://github.com/awilliam/asus-switcheroo.git

If all you want to do is switch the discrete graphics off to save
battery, it does that perfectly (note the included suspend/resume
script).  It's also able to switch the discrete graphics on with
nouveau.  This still has several issues (mostly with the remaining
Intel driver).  See the README for details.  Also, if you're dead set
on using the proprietary nvidia driver, there's a hack included for
that... see the README.  So far this is only tested on x86_64 Fedora
14.  Standard disclaimers apply, this works for me, but use at your
own risk.

The theory of using a separate switcheroo module is simply that the
switcheroo code only accepts one "handler", first come, first served.
So, all we need to do is register before nouveau and take that slot.
I really don't know what some of these MX ACPI method calls do (if
anyone can share the MXM spec, please do), but I spent a while looking
at the DSDT and poking things with acpi_call to figure out what works.
 When enabling the dummy client support for nvidia, we switch over the
mux and power up the device, leaving it enabled and unclaimed by
drivers for the nvidia driver to take over.  Good luck, patches
welcome.  Please report if it works on other Asus laptops.  Thanks,

Alex



Follow ups