drm/radeon: Update to Linux 3.17 (v2)
authorFrançois Tigeot <ftigeot@wolfpond.org>
Sat, 22 Aug 2015 16:20:38 +0000 (18:20 +0200)
committerFrançois Tigeot <ftigeot@wolfpond.org>
Sat, 22 Aug 2015 20:37:28 +0000 (22:37 +0200)
commitc6f73aab61fac8c404b25589bb53548913079bc6
tree8b56ae824e87994531b01e036050c7d50e4f41ad
parent0554239fef014d8a727f47ad061c9c1a3eb07afc
drm/radeon: Update to Linux 3.17 (v2)

Catch up with recent updates in i915kms driver.
While there perform some cleaning in drm and drm/ttm too.

This smallish(1.2MB) diff between Linux v3.12..v3.17 brings
few improvements for radeon cards support on DragonFly BSD.

Driver is VERY experimental even if FF 720p "Hey Mamma"
looks much more pleasing to the eyes on my Xeon box.

Me being Fortran developer(who wants to run OpenCL on BSDs too)
was literally throwing diffs at the fan to see what sticks on.
After cleaning up the mess a bit, these features seems to behave:
  kms-syscons switching on R7 240 and 5770 JUNIPER;
  current DPorts Xorg;
  Xorg-next(1.17.2) + Mesa-next(glamor for radeonsi);
  2D tiling now works out of the box on OLAND;
  glxgears/cubemap/cuberender mesa demos;
  firefox youtube videos(still some blinking on overlays);
  mpv -vo vdpau --hwdec=vdpau bsd-0088.mp4 (--vo=opengl too);
  UVD (decoding limited to 1080p frame streams);
  fragging in OpenArena maxed-out(even ttys[0-8] to quickly check mail);
  hdmi audio;
  DPM (enabled by default);
  gpu temperature monitoring through hw.sensors framework;
  automatic firmware loading.

TODO:
  update drm/ttm, any help would be really appreciated;
  ww_mutex, yep still good old "homegrown" locks;
  vma, newer shrinker api;
  dma_buf/prime;
  iic/i2c rework;
  kldunload radeonkms;
  better gart sizes support;
  newer firmware format support;
  fix failing ring sync test to ring-5(UVD);
  check how driver supports X2 and IGP cards;
  better OpenCL through Clover;
  many more.

Thanks goes to:
  ftigeot@efnet for opportunity and i915 work
  YRabbit@efnet for extensive testing of hdmi A/V on TURKS
  ivadasz@efnet for temperature sensors support
  mneumann@efnet for testing on HAWAII

  AMD for investing time and effort in opensource drivers
  NetBSD and Linux gpu developers

Special thanks to:
  everyone behind freebsd-ports-graphics/opencl (keep pushing the mngt!)

  and that Sweet special girl out there.
169 files changed:
sys/dev/drm/drm/Makefile
sys/dev/drm/drm_buffer.c
sys/dev/drm/drm_bufs.c
sys/dev/drm/drm_crtc.c
sys/dev/drm/drm_drv.c
sys/dev/drm/drm_edid.c
sys/dev/drm/drm_fb_helper.c
sys/dev/drm/drm_fops.c
sys/dev/drm/drm_ioctl.c
sys/dev/drm/drm_lock.c
sys/dev/drm/drm_vm.c
sys/dev/drm/i915/intel_crt.c
sys/dev/drm/i915/intel_display.c
sys/dev/drm/i915/intel_dp.c
sys/dev/drm/i915/intel_dsi.c
sys/dev/drm/i915/intel_dvo.c
sys/dev/drm/i915/intel_fbdev.c
sys/dev/drm/i915/intel_hdmi.c
sys/dev/drm/i915/intel_lvds.c
sys/dev/drm/i915/intel_sdvo.c
sys/dev/drm/i915/intel_tv.c
sys/dev/drm/include/drm/drmP.h
sys/dev/drm/include/drm/drm_crtc.h
sys/dev/drm/include/drm/drm_fb_helper.h
sys/dev/drm/include/drm/drm_os_linux.h
sys/dev/drm/include/drm/drm_pciids.h
sys/dev/drm/include/drm/ttm/ttm_bo_api.h
sys/dev/drm/include/drm/ttm/ttm_bo_driver.h
sys/dev/drm/include/drm/ttm/ttm_lock.h
sys/dev/drm/include/drm/ttm/ttm_placement.h
sys/dev/drm/include/linux/pci.h
sys/dev/drm/include/uapi_drm/drm.h
sys/dev/drm/include/uapi_drm/radeon_drm.h
sys/dev/drm/radeon/Makefile
sys/dev/drm/radeon/atombios.h
sys/dev/drm/radeon/atombios_crtc.c
sys/dev/drm/radeon/atombios_dp.c
sys/dev/drm/radeon/atombios_encoders.c
sys/dev/drm/radeon/atombios_i2c.c
sys/dev/drm/radeon/btc_dpm.c
sys/dev/drm/radeon/btcd.h
sys/dev/drm/radeon/cayman_reg_safe.h
sys/dev/drm/radeon/ci_dpm.c
sys/dev/drm/radeon/ci_smc.c
sys/dev/drm/radeon/cik.c
sys/dev/drm/radeon/cik_sdma.c
sys/dev/drm/radeon/cikd.h
sys/dev/drm/radeon/clearstate_cayman.h
sys/dev/drm/radeon/clearstate_ci.h
sys/dev/drm/radeon/clearstate_si.h
sys/dev/drm/radeon/cypress_dpm.c
sys/dev/drm/radeon/dce3_1_afmt.c [new file with mode: 0644]
sys/dev/drm/radeon/dce6_afmt.c
sys/dev/drm/radeon/evergreen.c
sys/dev/drm/radeon/evergreen_cs.c
sys/dev/drm/radeon/evergreen_dma.c
sys/dev/drm/radeon/evergreen_hdmi.c
sys/dev/drm/radeon/evergreen_reg.h
sys/dev/drm/radeon/evergreen_reg_safe.h
sys/dev/drm/radeon/evergreen_smc.h
sys/dev/drm/radeon/evergreend.h
sys/dev/drm/radeon/kv_dpm.c
sys/dev/drm/radeon/ni.c
sys/dev/drm/radeon/ni_dma.c
sys/dev/drm/radeon/ni_dpm.c
sys/dev/drm/radeon/nid.h
sys/dev/drm/radeon/pptable.h
sys/dev/drm/radeon/r100.c
sys/dev/drm/radeon/r200.c
sys/dev/drm/radeon/r300.c
sys/dev/drm/radeon/r300_cmdbuf.c
sys/dev/drm/radeon/r420.c
sys/dev/drm/radeon/r500_reg.h
sys/dev/drm/radeon/r520.c
sys/dev/drm/radeon/r600.c
sys/dev/drm/radeon/r600_audio.c
sys/dev/drm/radeon/r600_cp.c
sys/dev/drm/radeon/r600_cs.c
sys/dev/drm/radeon/r600_dma.c
sys/dev/drm/radeon/r600_dpm.c
sys/dev/drm/radeon/r600_dpm.h
sys/dev/drm/radeon/r600_hdmi.c
sys/dev/drm/radeon/r600_reg_safe.h
sys/dev/drm/radeon/r600d.h
sys/dev/drm/radeon/radeon.h
sys/dev/drm/radeon/radeon_agp.c
sys/dev/drm/radeon/radeon_asic.c
sys/dev/drm/radeon/radeon_asic.h
sys/dev/drm/radeon/radeon_atombios.c
sys/dev/drm/radeon/radeon_benchmark.c
sys/dev/drm/radeon/radeon_bios.c
sys/dev/drm/radeon/radeon_combios.c
sys/dev/drm/radeon/radeon_connectors.c
sys/dev/drm/radeon/radeon_cp.c
sys/dev/drm/radeon/radeon_cs.c
sys/dev/drm/radeon/radeon_device.c
sys/dev/drm/radeon/radeon_display.c
sys/dev/drm/radeon/radeon_drv.c
sys/dev/drm/radeon/radeon_drv.h
sys/dev/drm/radeon/radeon_encoders.c
sys/dev/drm/radeon/radeon_family.h
sys/dev/drm/radeon/radeon_fb.c
sys/dev/drm/radeon/radeon_fence.c
sys/dev/drm/radeon/radeon_gart.c
sys/dev/drm/radeon/radeon_gem.c
sys/dev/drm/radeon/radeon_gem.h
sys/dev/drm/radeon/radeon_i2c.c
sys/dev/drm/radeon/radeon_ib.c [new file with mode: 0644]
sys/dev/drm/radeon/radeon_irq.c
sys/dev/drm/radeon/radeon_irq_kms.c
sys/dev/drm/radeon/radeon_irq_kms.h
sys/dev/drm/radeon/radeon_kms.c
sys/dev/drm/radeon/radeon_kms.h
sys/dev/drm/radeon/radeon_legacy_crtc.c
sys/dev/drm/radeon/radeon_legacy_encoders.c
sys/dev/drm/radeon/radeon_mem.c
sys/dev/drm/radeon/radeon_mode.h
sys/dev/drm/radeon/radeon_object.c
sys/dev/drm/radeon/radeon_object.h
sys/dev/drm/radeon/radeon_pm.c
sys/dev/drm/radeon/radeon_prime.c
sys/dev/drm/radeon/radeon_ring.c
sys/dev/drm/radeon/radeon_sa.c
sys/dev/drm/radeon/radeon_semaphore.c
sys/dev/drm/radeon/radeon_state.c
sys/dev/drm/radeon/radeon_test.c
sys/dev/drm/radeon/radeon_trace.h
sys/dev/drm/radeon/radeon_ttm.c
sys/dev/drm/radeon/radeon_ucode.h
sys/dev/drm/radeon/radeon_uvd.c
sys/dev/drm/radeon/radeon_vce.c [new file with mode: 0644]
sys/dev/drm/radeon/radeon_vm.c [new file with mode: 0644]
sys/dev/drm/radeon/reg_srcs/cayman
sys/dev/drm/radeon/reg_srcs/evergreen
sys/dev/drm/radeon/reg_srcs/r600
sys/dev/drm/radeon/rs400.c
sys/dev/drm/radeon/rs600.c
sys/dev/drm/radeon/rs690.c
sys/dev/drm/radeon/rs780_dpm.c
sys/dev/drm/radeon/rv515.c
sys/dev/drm/radeon/rv6xx_dpm.c
sys/dev/drm/radeon/rv770.c
sys/dev/drm/radeon/rv770_dma.c
sys/dev/drm/radeon/rv770_dpm.c
sys/dev/drm/radeon/rv770_dpm.h
sys/dev/drm/radeon/rv770_smc.c
sys/dev/drm/radeon/rv770_smc.h
sys/dev/drm/radeon/rv770d.h
sys/dev/drm/radeon/si.c
sys/dev/drm/radeon/si_dma.c
sys/dev/drm/radeon/si_dpm.c
sys/dev/drm/radeon/si_dpm.h
sys/dev/drm/radeon/si_smc.c
sys/dev/drm/radeon/sid.h
sys/dev/drm/radeon/sislands_smc.h
sys/dev/drm/radeon/sumo_dpm.c
sys/dev/drm/radeon/sumo_smc.c
sys/dev/drm/radeon/trinity_dpm.c
sys/dev/drm/radeon/trinity_smc.c
sys/dev/drm/radeon/uvd_v1_0.c
sys/dev/drm/radeon/uvd_v2_2.c
sys/dev/drm/radeon/uvd_v3_1.c
sys/dev/drm/radeon/vce_v1_0.c [new file with mode: 0644]
sys/dev/drm/radeon/vce_v2_0.c [new file with mode: 0644]
sys/dev/drm/ttm/ttm_bo.c
sys/dev/drm/ttm/ttm_bo_manager.c
sys/dev/drm/ttm/ttm_bo_util.c
sys/dev/drm/ttm/ttm_lock.c
sys/dev/drm/ttm/ttm_page_alloc.c