mirror of
https://github.com/torvalds/linux.git
synced 2024-11-19 02:21:47 +00:00
6a9ee8af34
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>
63 lines
2.1 KiB
Makefile
63 lines
2.1 KiB
Makefile
#
|
|
# Makefile for the drm device driver. This driver provides support for the
|
|
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
|
|
|
|
ccflags-y := -Iinclude/drm
|
|
|
|
hostprogs-y := mkregtable
|
|
|
|
quiet_cmd_mkregtable = MKREGTABLE $@
|
|
cmd_mkregtable = $(obj)/mkregtable $< > $@
|
|
|
|
$(obj)/rn50_reg_safe.h: $(src)/reg_srcs/rn50 $(obj)/mkregtable
|
|
$(call if_changed,mkregtable)
|
|
|
|
$(obj)/r100_reg_safe.h: $(src)/reg_srcs/r100 $(obj)/mkregtable
|
|
$(call if_changed,mkregtable)
|
|
|
|
$(obj)/r200_reg_safe.h: $(src)/reg_srcs/r200 $(obj)/mkregtable
|
|
$(call if_changed,mkregtable)
|
|
|
|
$(obj)/rv515_reg_safe.h: $(src)/reg_srcs/rv515 $(obj)/mkregtable
|
|
$(call if_changed,mkregtable)
|
|
|
|
$(obj)/r300_reg_safe.h: $(src)/reg_srcs/r300 $(obj)/mkregtable
|
|
$(call if_changed,mkregtable)
|
|
|
|
$(obj)/r420_reg_safe.h: $(src)/reg_srcs/r420 $(obj)/mkregtable
|
|
$(call if_changed,mkregtable)
|
|
|
|
$(obj)/rs600_reg_safe.h: $(src)/reg_srcs/rs600 $(obj)/mkregtable
|
|
$(call if_changed,mkregtable)
|
|
|
|
$(obj)/r100.o: $(obj)/r100_reg_safe.h $(obj)/rn50_reg_safe.h
|
|
|
|
$(obj)/r200.o: $(obj)/r200_reg_safe.h
|
|
|
|
$(obj)/rv515.o: $(obj)/rv515_reg_safe.h
|
|
|
|
$(obj)/r300.o: $(obj)/r300_reg_safe.h
|
|
|
|
$(obj)/r420.o: $(obj)/r420_reg_safe.h
|
|
|
|
$(obj)/rs600.o: $(obj)/rs600_reg_safe.h
|
|
|
|
radeon-y := radeon_drv.o radeon_cp.o radeon_state.o radeon_mem.o \
|
|
radeon_irq.o r300_cmdbuf.o r600_cp.o
|
|
# add KMS driver
|
|
radeon-y += radeon_device.o radeon_kms.o \
|
|
radeon_atombios.o radeon_agp.o atombios_crtc.o radeon_combios.o \
|
|
atom.o radeon_fence.o radeon_ttm.o radeon_object.o radeon_gart.o \
|
|
radeon_legacy_crtc.o radeon_legacy_encoders.o radeon_connectors.o \
|
|
radeon_encoders.o radeon_display.o radeon_cursor.o radeon_i2c.o \
|
|
radeon_clocks.o radeon_fb.o radeon_gem.o radeon_ring.o radeon_irq_kms.o \
|
|
radeon_cs.o radeon_bios.o radeon_benchmark.o r100.o r300.o r420.o \
|
|
rs400.o rs600.o rs690.o rv515.o r520.o r600.o rv770.o radeon_test.o \
|
|
r200.o radeon_legacy_tv.o r600_cs.o r600_blit.o r600_blit_shaders.o \
|
|
r600_blit_kms.o radeon_pm.o atombios_dp.o r600_audio.o r600_hdmi.o \
|
|
radeon_atpx_handler.o
|
|
|
|
radeon-$(CONFIG_COMPAT) += radeon_ioc32.o
|
|
|
|
obj-$(CONFIG_DRM_RADEON)+= radeon.o
|