OpenCloudOS-Kernel/drivers/gpu/drm/radeon
Daniel Vetter 1bf6ad622b drm/vblank: drop the mode argument from drm_calc_vbltimestamp_from_scanoutpos
If we restrict this helper to only kms drivers (which is the case) we
can look up the correct mode easily ourselves. But it's a bit tricky:

- All legacy drivers look at crtc->hwmode. But that is updated already
  at the beginning of the modeset helper, which means when we disable
  a pipe. Hence the final timestamps might be a bit off. But since
  this is an existing bug I'm not going to change it, but just try to
  be bug-for-bug compatible with the current code. This only applies
  to radeon&amdgpu.

- i915 tries to get it perfect by updating crtc->hwmode when the pipe
  is off (i.e. vblank->enabled = false).

- All other atomic drivers look at crtc->state->adjusted_mode. Those
  that look at state->requested_mode simply don't adjust their mode,
  so it's the same. That has two problems: Accessing crtc->state from
  interrupt handling code is unsafe, and it's updated before we shut
  down the pipe. For nonblocking modesets it's even worse.

For atomic drivers try to implement what i915 does. To do that we add
a new hwmode field to the vblank structure, and update it from
drm_calc_timestamping_constants(). For atomic drivers that's called
from the right spot by the helper library already, so all fine. But
for safety let's enforce that.

For legacy driver this function is only called at the end (oh the
fun), which is broken, so again let's not bother and just stay
bug-for-bug compatible.

The  benefit is that we can use drm_calc_vbltimestamp_from_scanoutpos
directly to implement ->get_vblank_timestamp in every driver, deleting
a lot of code.

v2: Completely new approach, trying to mimick the i915 solution.

v3: Fixup kerneldoc.

v4: Drop the WARN_ON to check that the vblank is off, atomic helpers
currently unconditionally call this. Recomputing the same stuff should
be harmless.

v5: Fix typos and move misplaced hunks to the right patches (Neil).

v6: Undo hunk movement (kbuild).

Cc: Mario Kleiner <mario.kleiner@tuebingen.mpg.de>
Cc: Eric Anholt <eric@anholt.net>
Cc: Rob Clark <robdclark@gmail.com>
Cc: linux-arm-msm@vger.kernel.org
Cc: freedreno@lists.freedesktop.org
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170509140329.24114-4-daniel.vetter@ffwll.ch
2017-05-10 10:21:31 +02:00
..
reg_srcs drm/radeon: allow geom rings to be setup on r600/r700 (v2) 2014-02-06 12:13:52 +10:00
.gitignore
Kconfig drm/radeon: remove UMS support 2015-12-02 12:45:54 -05:00
Makefile drm/radeon: remove UMS support 2015-12-02 12:45:54 -05:00
ObjectID.h
atom-bits.h
atom-names.h
atom-types.h
atom.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
atom.h drm/radeon: add locking around atombios scratch space usage 2014-11-11 17:22:26 -05:00
atombios.h scripts/spelling.txt: add "aligment" pattern and fix typo instances 2017-02-27 18:43:46 -08:00
atombios_crtc.c drm: Nuke fb->pixel_format 2016-12-15 14:55:34 +02:00
atombios_dp.c drm/radeon: Don't retry 7 times in radeon_dp_dpcd() 2016-08-08 13:28:26 -04:00
atombios_encoders.c drm/radeon: add missing header dependencies 2016-10-25 14:38:18 -04:00
atombios_i2c.c drm/radeon: add locking around atombios scratch space usage 2014-11-11 17:22:26 -05:00
avivod.h
btc_dpm.c drm/radeon: fix indentation. 2016-03-16 18:08:06 -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 add comment to document intentionally unreachable code 2016-07-29 14:36:45 -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: fix indentation. 2016-03-16 18:08:06 -04:00
cik.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
cik_blit_shaders.c
cik_blit_shaders.h
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: Avoid double gpu reset by adding a timeout on IB ring tests. 2016-02-10 14:17:15 -05:00
cikd.h drm/amd: Spelling s/SDMA_WRTIE_SUB_OPCODE_TILED/SDMA_WRITE_SUB_OPCODE_TILED/ 2017-03-29 23:53:21 -04: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
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: fix indentation. 2016-03-16 18:08:06 -04:00
cypress_dpm.h
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.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
evergreen_blit_shaders.c drm: fix trivial typos 2015-10-21 11:35:11 -04:00
evergreen_blit_shaders.h
evergreen_cs.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -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 indentation. 2016-03-16 18:08:06 -04:00
evergreen_reg.h drm/radeon: fix vertical bars appear on monitor (v2) 2016-04-27 12:27:08 -04:00
evergreen_smc.h drm/radeon/dpm: fix typo in EVERGREEN_SMC_FIRMWARE_HEADER_softRegisters 2014-03-06 16:46:58 -05:00
evergreend.h drm/radeon: switch UVD code to use UVD_NO_OP for padding 2016-08-24 16:25:05 -04:00
kv_dpm.c drm/radeon: fix array out of bounds 2016-05-16 10:25:13 -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
mkregtable.c Replace mentions of "list_struct" to "list_head" 2014-11-20 14:45:15 +01:00
ni.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04: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: fix indentation. 2016-03-16 18:08:06 -04:00
ni_dpm.h
ni_reg.h drm/radeon/mst: port some MST setup code from DAL. 2016-04-06 14:57:46 -04:00
nid.h drm/radeon: switch UVD code to use UVD_NO_OP for padding 2016-08-24 16:25:05 -04:00
nislands_smc.h
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.c drm/radeon: fix typo in bandwidth calculation 2017-04-07 12:20:41 -04:00
r100_track.h
r100d.h
r200.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
r300.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
r300_reg.h
r300d.h
r420.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -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 gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
r520d.h
r600.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
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 gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
r600_dma.c drm/radeon: Avoid double gpu reset by adding a timeout on IB ring tests. 2016-02-10 14:17:15 -05:00
r600_dpm.c drm: Use pr_cont where appropriate 2017-03-29 23:53:24 -04: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 indentation. 2016-03-16 18:08:06 -04:00
r600_reg.h
r600d.h drm/radeon: add support for UVD_NO_OP register 2016-08-24 16:25:04 -04:00
radeon.h drm/radeon: Maintain prime import/export refcount for BOs 2017-04-07 12:20:40 -04:00
radeon_acpi.c drm/radeon/atif: Send a hotplug event when we get dgpu display request 2016-09-22 10:30:58 -04:00
radeon_acpi.h drm/radeon: add new ATIF ACPI method 2017-03-29 23:53:49 -04:00
radeon_agp.c add blacklist for thinkpad T40p 2015-11-30 14:44:34 -05:00
radeon_asic.c drm/radeon: add driver option to disable vce block. 2016-05-02 13:08:53 -04:00
radeon_asic.h drm/radeon: Support DRM_MODE_PAGE_FLIP_ASYNC 2016-05-04 20:19:03 -04:00
radeon_atombios.c drm/radeon: add missing header dependencies 2016-10-25 14:38:18 -04:00
radeon_atpx_handler.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
radeon_audio.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04: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: remove some dead code 2017-02-08 21:04:29 -05:00
radeon_clocks.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
radeon_combios.c PCI: Remove includes of asm/pci-bridge.h 2016-02-05 16:29:28 -06:00
radeon_connectors.c drm/radeon: Fix kernel panic on shutdown 2016-10-31 12:19:39 -04:00
radeon_cs.c drm/radeon: Refuse to migrate a prime BO to VRAM. (v2) 2017-04-07 12:20:41 -04:00
radeon_cursor.c drm/radeon: Use mode h/vdisplay fields to hide out of bounds HW cursor 2017-02-16 11:03:03 -05:00
radeon_device.c Merge tag 'drm-misc-next-2017-03-31' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-04-03 16:30:24 +10:00
radeon_display.c Merge tag 'drm-misc-next-2017-04-07' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-04-11 07:41:10 +10:00
radeon_dp_auxch.c drm/radeon/dp_auxch: Ratelimit aux transfer debug messages 2017-03-29 23:53:21 -04:00
radeon_dp_mst.c drm/dp: Split drm_dp_mst_allocate_vcpi 2017-03-22 21:47:44 +01:00
radeon_drv.c drm/vblank: drop the mode argument from drm_calc_vbltimestamp_from_scanoutpos 2017-05-10 10:21:31 +02: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 gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
radeon_fence.c dma-buf: Rename struct fence to dma_fence 2016-10-25 14:40:39 +02: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: Refuse to migrate a prime BO to VRAM. (v2) 2017-04-07 12:20:41 -04:00
radeon_i2c.c drm/radeon: fix up dp aux tear down (v2) 2016-10-12 15:44:13 -04:00
radeon_ib.c drm/radeon: fix indentation. 2016-03-16 18:08:06 -04: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|amdgpu: Remove redundant num_connectors check 2016-12-18 14:18:12 +01:00
radeon_kfd.c drm/radeon: Return -EPROBE_DEFER when amdkfd not loaded 2016-02-27 22:52:40 +02:00
radeon_kfd.h drm/radeon: Return -EPROBE_DEFER when amdkfd not loaded 2016-02-27 22:52:40 +02:00
radeon_kms.c drm/vblank: drop the mode argument from drm_calc_vbltimestamp_from_scanoutpos 2017-05-10 10:21:31 +02:00
radeon_legacy_crtc.c drm: Nuke fb->bits_per_pixel 2016-12-15 14:55:34 +02:00
radeon_legacy_encoders.c drm/radeon: add missing header dependencies 2016-10-25 14:38:18 -04:00
radeon_legacy_tv.c
radeon_mn.c drm/radeon: make radeon_mn_get wait for mmap_sem killable 2016-05-23 17:04:14 -07:00
radeon_mode.h drm/vblank: drop the mode argument from drm_calc_vbltimestamp_from_scanoutpos 2017-05-10 10:21:31 +02:00
radeon_object.c drm/radeon: Refuse to migrate a prime BO to VRAM. (v2) 2017-04-07 12:20:41 -04:00
radeon_object.h drm/ttm: add evict parameter to ttm_bo_driver::move_notify 2017-01-27 11:13:15 -05:00
radeon_pm.c drm/radeon/pm: autoswitch power state when in balanced mode 2016-10-25 14:44:03 -04:00
radeon_prime.c drm/radeon: Maintain prime import/export refcount for BOs 2017-04-07 12:20:40 -04:00
radeon_reg.h
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: hold reference to fences in radeon_sa_bo_new 2016-02-10 14:07:44 -05:00
radeon_semaphore.c drm/radeon: fix indentation. 2016-03-16 18:08:06 -04:00
radeon_sync.c dma-buf: Rename struct fence to dma_fence 2016-10-25 14:40:39 +02:00
radeon_test.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
radeon_trace.h tracing/drm: Remove unused TRACE_SYSTEM_STRING define 2015-04-07 12:29:23 -04:00
radeon_trace_points.c
radeon_ttm.c Linux 4.11-rc6 2017-04-11 07:40:42 +10: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 dma-buf: Rename struct fence to dma_fence 2016-10-25 14:40:39 +02:00
radeon_vce.c drm/radeon: fix indentation. 2016-03-16 18:08:06 -04:00
radeon_vm.c drm/radeon: fix indentation. 2016-03-16 18:08:06 -04:00
rs100d.h
rs400.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
rs400d.h
rs600.c drm/radeon: Support DRM_MODE_PAGE_FLIP_ASYNC 2016-05-04 20:19:03 -04:00
rs600d.h
rs690.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
rs690d.h
rs780_dpm.c drm/radeon: fix indentation. 2016-03-16 18:08:06 -04:00
rs780_dpm.h
rs780d.h
rv6xx_dpm.c drm/radeon: fix indentation. 2016-03-16 18:08:06 -04:00
rv6xx_dpm.h
rv6xxd.h
rv200d.h
rv250d.h
rv350d.h
rv515.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
rv515d.h
rv730_dpm.c drm/radeon: make some dpm errors debug only 2015-11-25 11:28:42 -05:00
rv730d.h
rv740_dpm.c drm/radeon: fix indentation. 2016-03-16 18:08:06 -04:00
rv740d.h
rv770.c drm/radeon: switch UVD code to use UVD_NO_OP for padding 2016-08-24 16:25:05 -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: fix indentation. 2016-03-16 18:08:06 -04: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
rv770d.h drm/radeon: switch UVD code to use UVD_NO_OP for padding 2016-08-24 16:25:05 -04:00
si.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -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: reinstate oland workaround for sclk 2017-03-16 10:06:11 -04: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
si_smc.c drm/radeon/si: Add support for new ucode format (v3) 2014-08-05 08:53:23 -04:00
sid.h drm/radeon: allow TA_CS_BC_BASE_ADDR on SI 2016-10-12 15:44:15 -04:00
sislands_smc.h drm/radeon/si/dpm: fix phase shedding setup 2016-09-28 16:13:16 -04:00
smu7.h drm/radeon/kms: add dpm support for KB/KV 2013-08-30 16:30:28 -04: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
sumo_dpm.c drm/radeon: fix indentation. 2016-03-16 18:08:06 -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
trinity_dpm.c drm/radeon: fix indentation. 2016-03-16 18:08:06 -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
uvd_v1_0.c drm/radeon: handle more than 10 UVD sessions 2016-05-04 20:19:43 -04:00
uvd_v2_2.c drm/radeon: handle more than 10 UVD sessions 2016-05-04 20:19:43 -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: handle more than 10 UVD sessions 2016-05-04 20:19:43 -04:00
vce_v1_0.c drm/radeon: avoid kernel segfault in vce when gpu fails to resume 2017-02-08 20:59:16 -05:00
vce_v2_0.c drm/radeon: fix indentation. 2016-03-16 18:08:06 -04:00