Files
kernel-tenderloin-3.0/include/linux
Dave Airlie 6a9ee8af34 vga_switcheroo: initial implementation (v15)
Many new laptops now come with 2 gpus, one to be used for low power
modes and one for gaming/on-ac applications. These GPUs are typically
wired to the laptop panel and VGA ports via a multiplexer unit which
is controlled via ACPI methods.

4 combinations of systems typically exist - with 2 ACPI methods.
Intel/ATI - Lenovo W500/T500 - use ATPX ACPI method
ATI/ATI - some ASUS - use ATPX ACPI Method
Intel/Nvidia - - use _DSM ACPI method
Nvidia/Nvidia -  - use _DSM ACPI method.

TODO:
This patch adds support for the ATPX method and initial bits
for the _DSM methods that need to written by someone with
access to the hardware.
Add a proper non-debugfs interface - need to get some proper
testing first.

v2: add power up/down support for both devices
on W500 puts i915/radeon into D3 and cuts power to radeon.

v3: redo probing methods, no DMI list, drm devices call to
register with switcheroo, it tries to find an ATPX method on
any device and once there is two devices + ATPX it inits the
switcher.

v4: ATPX msg handling using buffers - should work on more machines

v5: rearchitect after more mjg59 discussion - move ATPX handling to
    radeon driver.

v6: add file headers + initial nouveau bits (to be filled out).

v7: merge delayed switcher code.

v8: avoid suspend/resume of gpu that is off

v9: rearchitect - mjg59 is always right. - move all ATPX code to
radeon, should allow simpler DSM also proper ATRM handling

v10: add ATRM support for radeon BIOS, add mutex to lock vgasr_priv

v11: fix bug in resuming Intel for 2nd time.

v12: start fixing up nvidia code blindly.

v13: blindly guess at finishing nvidia code

v14: remove radeon audio hacks - fix up intel resume more like upstream

v15: clean up printks + remove unnecessary igd/dis pointers

mount debugfs

/sys/kernel/debug/vgaswitcheroo/switch - should exist if ATPX detected
 + 2 cards.

DIS - immediate change to discrete
IGD - immediate change to IGD
DDIS - delayed change to discrete
DIGD - delayed change to IGD
ON - turn on not in use
OFF - turn off not in use

Tested on W500 (Intel/ATI) and T500 (Intel/ATI)

Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-03-01 16:20:37 +10:00
..
2010-01-13 09:04:53 +00:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-12-16 07:20:13 -08:00
2009-11-10 12:31:43 +01:00
2009-11-08 20:57:03 -08:00
2010-02-05 07:35:05 -08:00
2009-12-06 21:10:56 +01:00
2009-12-10 23:52:01 +00:00
2009-11-04 09:50:58 -08:00
2009-12-15 08:53:33 -08:00
2009-11-04 09:50:58 -08:00
2009-12-10 15:02:53 +01:00
2009-12-23 13:33:54 +01:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2010-01-11 14:32:44 +01:00
2009-12-03 11:58:47 +00:00
2009-11-05 14:08:03 +01:00
2009-12-14 23:55:34 +01:00
2009-12-14 21:17:29 +01:00
2009-12-21 11:32:27 -05:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-12-25 17:30:22 -08:00
2010-02-18 02:08:16 -08:00
2009-11-04 09:50:58 -08:00
2009-12-16 06:56:12 -08:00
2009-12-03 09:32:17 +02:00
2009-12-09 17:14:38 +11:00
2009-12-15 08:53:36 -08:00
2009-12-15 08:53:20 -08:00
2009-12-12 13:08:15 +01:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-11-28 15:05:05 -05:00
2009-12-09 12:12:44 +02:00
2009-11-04 09:50:58 -08:00
2009-11-04 09:50:58 -08:00
2009-12-15 08:53:25 -08:00
2009-12-03 11:43:23 +00:00
2009-12-02 09:55:33 +01:00
2009-11-10 22:26:29 -08:00
2009-10-30 15:06:37 -07:00
2009-12-15 08:53:20 -08:00
2009-11-04 09:50:58 -08:00
2009-11-30 12:02:53 +09:00
2009-12-02 19:57:15 -08:00
2009-11-18 14:52:25 +01:00
2009-12-16 22:32:29 -05:00
2010-01-14 22:38:09 -05:00
2009-12-15 08:53:16 -08:00
2009-12-25 17:30:22 -08:00
2009-11-13 20:46:24 +01:00
2010-01-16 12:15:38 -08:00
2009-11-10 20:54:38 -08:00
2009-12-16 12:16:49 -05:00