linux_dsm_epyc7002/drivers/gpu/drm/radeon
Lukas Wunner 47eb8f739e drm/radeon: Switch DDC when reading the EDID
The pre-retina MacBook Pro uses an LVDS panel and a gmux controller
to switch the panel between its two GPUs. The panel mode in VBIOS
is notoriously bogus on these machines.

Use drm_get_edid_switcheroo() in lieu of drm_get_edid() on LVDS
if the vga_switcheroo handler is capable of temporarily switching
the panel's DDC lines to the discrete GPU. This allows us to retrieve
the EDID if the panel is currently muxed to the integrated GPU.

This only enables EDID probing on the pre-retina MBP (2008 - 2013).
The retina MBP (2012 - present) uses eDP and gmux is not capable of
switching AUX separately from the main link on these models.
This will be addressed in later patches.

List of pre-retina MBPs with dual GPUs, one of them AMD:
    [MBP  8,2 2011  intel SNB + amd turks     pre-retina  15"]
    [MBP  8,3 2011  intel SNB + amd turks     pre-retina  17"]

v3: Commit newly added due to introduction of drm_get_edid_switcheroo()
    wrapper which drivers need to opt-in to.

v5: Rebase on "vga_switcheroo: Add handler flags infrastructure",
    i.e. call drm_get_edid_switcheroo() only if the handler
    indicates that DDC is switchable.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=61115
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/dae71655e8c484fbef492d3389c157975f9622c9.1452525860.git.lukas@wunner.de
2016-02-09 11:21:11 +01:00
..
reg_srcs drm/radeon: allow geom rings to be setup on r600/r700 (v2) 2014-02-06 12:13:52 +10:00
.gitignore
atom-bits.h
atom-names.h
atom-types.h
atom.c drm/radeon: add locking around atombios scratch space usage 2014-11-11 17:22:26 -05:00
atom.h drm/radeon: add locking around atombios scratch space usage 2014-11-11 17:22:26 -05:00
atombios_crtc.c drm: Move LEAVE/ENTER_ATOMIC_MODESET to fbdev helpers 2015-12-08 16:07:51 +01:00
atombios_dp.c drm/radeon: fix dp link rate selection (v2) 2015-12-21 16:39:02 -05:00
atombios_encoders.c drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
atombios_i2c.c drm/radeon: add locking around atombios scratch space usage 2014-11-11 17:22:26 -05:00
atombios.h drm/radeon: fix comment 2015-05-26 15:09:03 +02:00
avivod.h
btc_dpm.c drm/radeon: remove some rv7xx leftovers from btc dpm code 2015-03-19 12:26:31 -04:00
btc_dpm.h Revert "drm/radeon: drop btc_get_max_clock_from_voltage_dependency_table" 2014-10-13 11:34:13 -04:00
btcd.h drm/radeon/dpm: use the driver state for dpm debugfs 2014-02-06 12:22:46 -05:00
cayman_blit_shaders.c drm: fix trivial typos 2015-10-21 11:35:11 -04:00
cayman_blit_shaders.h
ci_dpm.c drm/radeon/ci: silence a harmless PCC warning 2015-07-16 12:39:43 -04:00
ci_dpm.h drm/radeon: bind fan control on CI cards to hwmon interface (v2) 2015-01-22 10:38:48 -05:00
ci_smc.c drm/radeon: comment out some currently unused ci dpm code 2015-01-22 10:38:53 -05:00
cik_blit_shaders.c drm/radeon: Add CP init for CIK (v7) 2013-06-25 17:50:28 -04:00
cik_blit_shaders.h drm/radeon: Add CP init for CIK (v7) 2013-06-25 17:50:28 -04:00
cik_reg.h drm/radeon: Add H/W debugger kfd->kgd functions 2015-06-03 11:31:12 +03:00
cik_sdma.c drm/radeon: SDMA fix hibernation (CI GPU family). 2015-06-29 11:21:41 -04:00
cik.c Backmerge drm-fixes merge into Linus's tree into drm-next. 2015-12-24 08:08:47 +10:00
cikd.h drm/radeon: Add ATC VMID<-->PASID functions to kfd->kgd 2015-06-03 11:34:46 +03:00
clearstate_cayman.h drm/radeon: use NULL instead of zero in clearstate headers 2014-06-02 10:25:07 -04:00
clearstate_ci.h drm/radeon: use NULL instead of zero in clearstate headers 2014-06-02 10:25:07 -04:00
clearstate_defs.h drm/radeon: properly set up the RLC on ON/LN/TN (v3) 2013-06-27 10:49:18 -04:00
clearstate_evergreen.h drm/radeon: convert SI,CIK to use sumo_rlc functions 2013-08-30 16:30:08 -04:00
clearstate_si.h drm/radeon: use NULL instead of zero in clearstate headers 2014-06-02 10:25:07 -04:00
cypress_dpm.c drm/radeon: comment out some currently unused eg dpm code 2015-01-22 10:38:58 -05:00
cypress_dpm.h drm/radeon/dpm: add pre/post_set_power_state callback (BTC) 2013-06-27 19:16:19 -04:00
dce3_1_afmt.c drm/radeon: use proper ACR regisiter for DCE3.2 2015-06-01 23:16:22 -04:00
dce6_afmt.c drm/radeon: Add a common function for DFS handling 2016-01-27 12:48:32 -05:00
evergreen_blit_shaders.c drm: fix trivial typos 2015-10-21 11:35:11 -04:00
evergreen_blit_shaders.h
evergreen_cs.c drm/radeon: remove volatile qualifier 2015-10-02 16:08:30 -04:00
evergreen_dma.c drm/radeon: split semaphore and sync object handling v2 2014-11-20 13:00:16 -05:00
evergreen_hdmi.c drm/radeon: fix DP audio support for APU with DCE4.1 display engine 2016-01-27 12:50:25 -05:00
evergreen_reg.h radeon/audio: enable DP audio 2015-01-22 10:42:19 -05:00
evergreen_smc.h drm/radeon/dpm: fix typo in EVERGREEN_SMC_FIRMWARE_HEADER_softRegisters 2014-03-06 16:46:58 -05:00
evergreen.c drm/radeon: Fixup hw vblank counter/ts for new drm_update_vblank_count() (v2) 2015-12-18 17:29:47 -05:00
evergreend.h drm/radeon: fix DP audio support for APU with DCE4.1 display engine 2016-01-27 12:50:25 -05:00
Kconfig drm/radeon: remove UMS support 2015-12-02 12:45:54 -05:00
kv_dpm.c drm/radeon/kv: implement get_current_sclk/mclk 2015-03-19 12:26:36 -04:00
kv_dpm.h drm/radeon/dpm: handle bapm on kb/kv 2013-09-11 11:44:38 -04:00
kv_smc.c drm/radeon/dpm: handle bapm on kb/kv 2013-09-11 11:44:38 -04:00
Makefile drm/radeon: remove UMS support 2015-12-02 12:45:54 -05:00
mkregtable.c Replace mentions of "list_struct" to "list_head" 2014-11-20 14:45:15 +01:00
ni_dma.c drm/radeon: Remove rdev->gart.pages_addr array 2015-01-22 11:48:03 -05:00
ni_dpm.c drm/radeon/ni: implement get_current_sclk/mclk 2015-03-19 12:26:32 -04:00
ni_dpm.h drm/radeon/dpm: implement vblank_too_short callback for si 2013-07-08 17:41:11 -04:00
ni_reg.h drm/radeon: add DisplayPort MST support (v2) 2015-03-19 12:26:51 -04:00
ni.c drm/radeon: disable vce init on cayman (v2) 2015-07-09 11:40:12 -04:00
nid.h drm/radeon: implement tn_set_vce_clocks 2015-05-26 10:31:21 -04:00
nislands_smc.h drm/radeon/kms: add dpm support for cayman (v5) 2013-06-27 19:16:10 -04:00
ObjectID.h drm/radeon: upstream ObjectID.h updates (v2) 2013-06-26 16:11:34 -04:00
ppsmc.h drm/radeon/dpm: add thermal dpm support for CI 2014-11-20 13:00:10 -05:00
pptable.h drm/radeon/dpm: add smc fan control for CI (v2) 2014-11-20 13:00:10 -05:00
r100_track.h drm/radeon: use common next_reloc function 2013-01-31 16:24:45 -05:00
r100.c radeon: r100: Silence 'may be used uninitialized' warnings 2016-01-08 15:39:28 -05:00
r100d.h drm/radeon: consolidate redundant macros and constants 2013-01-31 16:24:46 -05:00
r200.c drm/radeon: rename radeon_cs_reloc to radeon_bo_list 2014-12-03 14:26:47 -05:00
r300_reg.h
r300.c radeon: Deinline indirect register accessor functions 2015-05-28 14:52:40 -04:00
r300d.h drm/radeon: consolidate redundant macros and constants 2013-01-31 16:24:46 -05:00
r420.c drm/radeon: Only flush HDP cache for indirect buffers from userspace 2014-08-18 17:09:44 -04:00
r420d.h
r500_reg.h drm/radeon: Bypass hw lut's for > 8 bpc framebuffer scanout. 2014-06-13 12:22:30 -04:00
r520.c drm/radeon: resume old pm late 2014-03-06 16:46:56 -05:00
r520d.h
r600_blit_shaders.c drm: fix trivial typos 2015-10-21 11:35:11 -04:00
r600_blit_shaders.h drm/radeon/kms: remove r6xx+ blit copy routines 2013-08-30 16:29:57 -04:00
r600_cs.c drm/radeon: remove UMS support 2015-12-02 12:45:54 -05:00
r600_dma.c Linux 3.18-rc7 2014-12-02 10:58:33 +10:00
r600_dpm.c drm/radeon: use drm_mode_vrefresh() rather than mode->vrefresh 2015-02-25 16:06:05 -05:00
r600_dpm.h drm/radeon/dpm: add smc fan control for SI (v2) 2014-11-20 13:00:09 -05:00
r600_hdmi.c drm/radeon: fix ordering of AVI packet setup 2015-04-27 09:54:52 -04:00
r600_reg.h drm/radeon: add indirect accessors for UVD CTX registers 2013-06-27 19:16:30 -04:00
r600.c drm/radeon: Retry DDC probing on DVI on failure if we got an HPD interrupt 2015-12-04 13:09:12 -05:00
r600d.h Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-10-14 09:39:08 +02:00
radeon_acpi.c drm/radeon: Drop unnecessary #include <linux/vga_switcheroo.h> 2015-10-14 16:16:37 -04:00
radeon_acpi.h drm/radeon: implement handler for ACPI event 2012-09-20 13:10:36 -04:00
radeon_agp.c add blacklist for thinkpad T40p 2015-11-30 14:44:34 -05:00
radeon_asic.c drm/radeon: constify radeon_asic_ring structures 2015-12-02 12:45:56 -05:00
radeon_asic.h drm/radeon: add VCE 1.0 support v4 2015-05-26 10:31:23 -04:00
radeon_atombios.c drm/radeon: fix DP audio support for APU with DCE4.1 display engine 2016-01-27 12:50:25 -05:00
radeon_atpx_handler.c vga_switcheroo: Add handler flags infrastructure 2016-02-09 11:21:07 +01:00
radeon_audio.c drm/radeon: Add a common function for DFS handling 2016-01-27 12:48:32 -05:00
radeon_audio.h drm/radeon: Add a common function for DFS handling 2016-01-27 12:48:32 -05:00
radeon_benchmark.c drm/radeon: fix the crash in benchmark functions 2015-02-02 11:39:35 -05:00
radeon_bios.c drm/radeon: Drop unnecessary #include <linux/vga_switcheroo.h> 2015-10-14 16:16:37 -04:00
radeon_clocks.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
radeon_combios.c Add radeon suspend/resume quirk for HP Compaq dc5750. 2015-09-02 12:19:52 -04:00
radeon_connectors.c drm/radeon: Switch DDC when reading the EDID 2016-02-09 11:21:11 +01:00
radeon_cs.c drm/radeon: Use drm_calloc_ab for CS relocs 2015-04-27 09:54:50 -04:00
radeon_cursor.c drm/radeon: Fold radeon_set_cursor() into radeon_show_cursor() 2015-07-09 11:40:02 -04:00
radeon_device.c drm/radeon: fix trivial typo in warning message 2016-01-08 15:39:29 -05:00
radeon_display.c drm/radeon: only init fbdev if we have connectors 2016-01-26 00:35:49 -05:00
radeon_dp_auxch.c drm/radeon/native: Send out the full AUX address 2015-08-31 11:38:30 -04:00
radeon_dp_mst.c Merge tag 'topic/drm-misc-2016-01-17' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-01-18 07:01:16 +10:00
radeon_drv.c drm/radeon: remove UMS support 2015-12-02 12:45:54 -05:00
radeon_drv.h drm/radeon: remove UMS support 2015-12-02 12:45:54 -05:00
radeon_encoders.c drm/radeon: move bl encoder assignment into bl init 2015-10-29 11:13:18 -04:00
radeon_family.h drm/radeon: add Mullins chip family 2014-05-06 12:19:57 +02:00
radeon_fb.c drm/radeon: Use unlocked gem unreferencing 2015-12-02 12:46:00 -05:00
radeon_fence.c drm/radeon: only increment sync_seq when a fence is really emitted 2015-12-18 17:29:49 -05:00
radeon_gart.c drm/radeon: Don't flush the GART TLB if rdev->gart.ptr == NULL 2015-07-16 12:39:37 -04:00
radeon_gem.c drm/radeon: Ensure radeon bo is unreserved in radeon_gem_va_ioctl 2016-01-25 10:57:17 -05:00
radeon_i2c.c drm/radeon/radeon_i2c: Remove unused function 2015-01-22 10:38:51 -05:00
radeon_ib.c drm/radeon: track VM update fences separately 2014-11-20 13:00:17 -05:00
radeon_ioc32.c drm: Remove DRM_ARRAY_SIZE() for ARRAY_SIZE() 2014-06-10 09:36:17 +10:00
radeon_irq_kms.c drm/radeon: Retry DDC probing on DVI on failure if we got an HPD interrupt 2015-12-04 13:09:12 -05:00
radeon_kfd.c drm/radeon: Modify kgd_engine_type enum to match CZ 2015-07-20 09:16:47 +03:00
radeon_kfd.h drm/radeon: Don't use relative paths in #include 2015-01-02 23:32:49 +02:00
radeon_kms.c drm/radeon: Drop unnecessary unsigned int < 0 check 2016-01-04 12:30:46 -05:00
radeon_legacy_crtc.c drm: Move LEAVE/ENTER_ATOMIC_MODESET to fbdev helpers 2015-12-08 16:07:51 +01:00
radeon_legacy_encoders.c drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
radeon_legacy_tv.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
radeon_mn.c drm/radeon: fix userptr lockup 2015-05-07 11:00:15 -04:00
radeon_mode.h Merge branch 'drm-next-4.5' of git://people.freedesktop.org/~agd5f/linux into drm-next 2015-12-23 14:15:26 +10:00
radeon_object.c drm/radeon: mask out WC from BO on unsupported arches 2016-02-02 10:09:05 -05:00
radeon_object.h gpu: drm: radeon: radeon_object: Remove unused function 2015-01-22 10:38:52 -05:00
radeon_pm.c drm/radeon: use kobj_to_dev() 2016-01-13 12:15:53 -05:00
radeon_prime.c drm/radeon: export reservation_object from dmabuf to ttm 2014-10-03 09:19:17 -04:00
radeon_reg.h drm/radeon/cik: add hw cursor support (v2) 2013-06-26 16:11:38 -04:00
radeon_ring.c drm/radeon: always dump the ring content if it's available 2015-03-27 10:17:43 -04:00
radeon_sa.c drm/radeon: export reservation_object from dmabuf to ttm 2014-10-03 09:19:17 -04:00
radeon_semaphore.c drm/radeon: split semaphore and sync object handling v2 2014-11-20 13:00:16 -05:00
radeon_sync.c drm/radeon: track VM update fences separately 2014-11-20 13:00:17 -05:00
radeon_test.c drm/radeon: fix the crash in test functions 2015-02-02 11:39:36 -05:00
radeon_trace_points.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
radeon_trace.h tracing/drm: Remove unused TRACE_SYSTEM_STRING define 2015-04-07 12:29:23 -04:00
radeon_ttm.c drm: Remove __OS_HAS_AGP 2015-09-30 10:44:48 +02:00
radeon_ucode.c drm/radeon: add new firmware header definitions (v3) 2014-08-05 08:53:22 -04:00
radeon_ucode.h drm/radeon: add new firmware header definitions (v3) 2014-08-05 08:53:22 -04:00
radeon_uvd.c drm/radeon: stop trying to suspend UVD sessions 2015-05-07 11:00:18 -04:00
radeon_vce.c radeon: Fix VCE IB test on Big-Endian systems 2015-12-09 00:23:56 -05:00
radeon_vm.c drm/radeon: Fix off-by-one errors in radeon_vm_bo_set_addr 2015-12-21 16:39:14 -05:00
radeon.h drm/radeon: cleaned up VCO output settings for DP audio 2016-01-27 12:47:28 -05:00
rs100d.h
rs400.c drm/radeon: Split off gart_get_page_entry ASIC hook from set_page_entry 2015-01-22 11:46:17 -05:00
rs400d.h
rs600.c drm/radeon: Retry DDC probing on DVI on failure if we got an HPD interrupt 2015-12-04 13:09:12 -05:00
rs600d.h
rs690.c drm/radeon: Fixup hw vblank counter/ts for new drm_update_vblank_count() (v2) 2015-12-18 17:29:47 -05:00
rs690d.h drm/radeon: Use direct mapping for fast fb access on RS690 2013-04-09 10:31:31 -04:00
rs780_dpm.c drm/radeon/rs780: implement get_current_sclk/mclk 2015-03-19 12:26:29 -04:00
rs780_dpm.h drm/radeon/kms: add dpm support for rs780/rs880 2013-06-27 10:49:25 -04:00
rs780d.h drm/radeon/dpm: add debugfs support for RS780/RS880 (v3) 2013-07-17 16:47:52 -04:00
rv6xx_dpm.c drm/radeon/rv6xx: implement get_current_sclk/mclk 2015-03-19 12:26:29 -04:00
rv6xx_dpm.h drm/radeon/kms: add dpm support for rv6xx (v3) 2013-06-27 10:50:08 -04:00
rv6xxd.h drm/radeon/kms: add dpm support for rv6xx (v3) 2013-06-27 10:50:08 -04:00
rv200d.h
rv250d.h
rv350d.h
rv515.c drm/radeon: make sure mode init is complete in bandwidth_update 2014-11-06 15:42:44 -05:00
rv515d.h drm/radeon: consolidate redundant macros and constants 2013-01-31 16:24:46 -05:00
rv730_dpm.c drm/radeon: make some dpm errors debug only 2015-11-25 11:28:42 -05:00
rv730d.h drm/radeon/kms: add dpm support for rv7xx (v4) 2013-06-27 19:14:59 -04:00
rv740_dpm.c drm/radeon/dpm/rv7xx: restructure code 2013-06-27 19:16:12 -04:00
rv740d.h drm/radeon/kms: add dpm support for rv7xx (v4) 2013-06-27 19:14:59 -04:00
rv770_dma.c drm/radeon: split semaphore and sync object handling v2 2014-11-20 13:00:16 -05:00
rv770_dpm.c drm/radeon: make some dpm errors debug only 2015-11-25 11:28:42 -05:00
rv770_dpm.h drm/radeon: comment out some currently unused 7xx dpm code 2015-01-22 10:38:58 -05:00
rv770_smc.c drm/radeon: protect concurrent smc register access with a spinlock 2013-09-11 11:44:28 -04:00
rv770_smc.h drm/radeon: protect concurrent smc register access with a spinlock 2013-09-11 11:44:28 -04:00
rv770.c drm/radeon: partially revert "fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling" 2015-05-28 09:54:43 -04:00
rv770d.h drm/radeon: disable semaphores for UVD V1 (v2) 2015-05-04 15:03:56 -04:00
si_blit_shaders.c
si_blit_shaders.h
si_dma.c drm/radeon: Remove rdev->gart.pages_addr array 2015-01-22 11:48:03 -05:00
si_dpm.c drm/radeon: fix quirk for MSI R7 370 Armor 2X 2015-11-16 11:05:54 -05:00
si_dpm.h drm/radeon: bind fan control on SI cards to hwmon interface 2015-01-22 10:38:48 -05:00
si_reg.h drm/radeon: SI tiling fixes for display 2012-06-20 19:55:56 +01:00
si_smc.c drm/radeon/si: Add support for new ucode format (v3) 2014-08-05 08:53:23 -04:00
si.c drm/radeon: Fixup hw vblank counter/ts for new drm_update_vblank_count() (v2) 2015-12-18 17:29:47 -05:00
sid.h drm/radeon: Fix "slow" audio over DP on DCE8+ 2015-12-18 17:29:46 -05:00
sislands_smc.h drm/radeon/dpm: add smc fan control for SI (v2) 2014-11-20 13:00:09 -05:00
smu7_discrete.h drm/radeon/dpm: add smc fan control for CI (v2) 2014-11-20 13:00:10 -05:00
smu7_fusion.h drm/radeon/kms: add dpm support for KB/KV 2013-08-30 16:30:28 -04:00
smu7.h drm/radeon/kms: add dpm support for KB/KV 2013-08-30 16:30:28 -04:00
sumo_dpm.c drm/radeon/sumo: implement get_current_sclk/mclk 2015-03-19 12:26:34 -04:00
sumo_dpm.h drm/radeon: comment out some currently unused sumo dpm code 2015-01-22 10:38:57 -05:00
sumo_smc.c drm/radeon/dpm: make some functions static for sumo 2014-01-07 12:55:50 -05:00
sumod.h drm/radeon: add dpm UVD handling for sumo asics 2013-06-27 19:15:48 -04:00
trinity_dpm.c drm/radeon/tn/si: enable/disable vce cg when encoding v2 2015-05-26 10:31:25 -04:00
trinity_dpm.h drm/radeon/dpm: add bapm callback for trinity 2013-09-11 11:44:39 -04:00
trinity_smc.c drm/radeon/dpm: make some functions static for TN 2014-01-07 12:55:57 -05:00
trinityd.h drm/radeon: add dpm UVD handling for TN asics (v2) 2013-06-27 19:15:48 -04:00
uvd_v1_0.c drm/radeon: disable semaphores for UVD V1 (v2) 2015-05-04 15:03:56 -04:00
uvd_v2_2.c drm/radeon: disable semaphores for UVD V1 (v2) 2015-05-04 15:03:56 -04:00
uvd_v3_1.c drm/radeon: allow semaphore emission to fail 2013-11-15 15:56:09 -05:00
uvd_v4_2.c drm/radeon: split out radeon_uvd_resume from uvd_v4_2_resume 2013-08-30 16:31:12 -04:00
vce_v1_0.c drm/radeon: properly byte swap vce firmware setup 2016-01-22 10:50:24 -05:00
vce_v2_0.c drm/radeon: rework VCE FW size calculation 2015-05-26 10:31:20 -04:00