MFC Radeon KMS driver

FreeBSD 9 already had modern Intel GPUs support, now this is the case for
Radeon GPUs too. This will ease the work on ports, where there won't be a
need to distinguish between FreeBSD 9/10 and different hardware vendors.

Help from:	jhb@, jkim@, kan@, kib@,
		J.R. Oldroyd <fbsd@opal.com> (previous version of the patch)

The following revisions were merged in this single commit:

r254885:
  drm/radeon: Import the Radeon KMS driver

  This driver is based on Linux 3.8 and a previous effort by kan@.

  More informations about this project can be found on the FreeBSD wiki:
      https://wiki.freebsd.org/AMD_GPU

  The driver is split into:

    sys/dev/drm2:
      The driver sources.

    sys/modules/drm2/radeonkmw:
      The driver main kernel module's Makefile.

    sys/modules/drm2/radeonkmsfw:
      All firmware kernel module Makefiles. There's one directory and one
      Makefile for each firmware.

    sys/contrib/dev/drm2/radeonkmsfw:
      All firmware binary sources.

    tools/tools/drm/radeon
      Tools to update firmwares or regenerate some headers.

  Merging the driver to FreeBSD 9.x may be possible but not a priority for
  now.

  Help from:	kib@, kan@
  Tested by:	avg@, kwm@, ray@,
		Alexander Yerenkow <yerenkow@gmail.com>,
		Anders Bolt-Evensen <andersbo87@me.com>,
		Denis Djubajlo <stdedjub@googlemail.com>,
		J.R. Oldroyd <fbsd@opal.com>,
		Mikaël Urankar <mikael.urankar@gmail.com>,
		Pierre-Emmanuel Pédron <pepcitron@gmail.com>,
		Sam Fourman Jr. <sfourman@gmail.com>,
		Wade <wade-is-great@live.com>,
		(probably other I forgot...)
  HW donations:	kyzh, Yakaz

r254894:
  drm/radeon: Rename the (S)DEBUG macros in atom.c to avoid conflicts

  For instance, DEBUG is already defined in the LINT kernel configuration.
  This fixes the build of LINT.

r254899:
  drm/radeon: Disable build on i386/pc98

r255572:
  drm/radeon: Fix usage of vga_pci_map_bios()

  vga_pci_(un)map_bios() takes a vgapci device as argument, not a drmn
  one. This fixes a bug where the BIOS couldn't be mapped if the device
  wasn't the boot display.

  Approved by:	re (kib; blanket for following drm2/radeon commits)

r255573:
  drm/radeon: Fix usage of pci_save_state() and pci_restore_state()

  Calling those functions with the drmn device as argument causes a panic,
  because it's not a direct child of pci$N. They must be called with the
  vgapci device instead.

  This fix is not enough to make suspend/resume work reliably.

  Approved by:	re (blanket)

r255587:
  drm/radeon: Add missing "return false" after unmapping invalid BIOS

  Without that, we would try to copy the unmapped BIOS.

  Submitted by:	Christoph Mallon <christoph.mallon@gmx.de>
  Approved by:	re (blanket)

r256771:
  drm/radeon: radeonkms depends on firmware(9)

  Submitted by:	tijl@

r257869:
  drm: Initialize "handle" to 0 before calling drm_gem_handle_create()

  This is variable is being checked in drm_gem_name_create() before being
  set.

r257870:
  drm/radeon: Wake up userland after page flip

  For instance, this caused issues in KDE, such as stuttered animations
  (with desktop effects enabled).

r259003:
  Initialize modesetting sysctls in radeonkms.

  This is intended for MFC if re@ permits.

  Reviewed by:	kib, dumbbell
  Tested by:	Steven Chamberlain <steven@pyro.eu.org>
  MFC after:	3 days

r259101:
  drm/radeon: agp_info->ai_aperture_size is in bytes, not Mbytes

  This fixes radeon_agp_init() and gtt_size is now correct. However, this
  is not enough to make Radeon AGP cards work: ttm_agp_backend.c isn't
  implemented yet.

  Submitted by:	tijl@

r259104:
  drm/radeon: radeon_dp_i2c_aux_ch() must return 0 on FreeBSD

  The code was unmodified compared to Linux and returned the amount of
  received bytes from the i2c bus. This led to non-working i2c bus and
  failure to eg. read monitor's EDID, if connected to DisplayPort.

  MFC after:	3 days
  Tested by:	Mikaël Urankar <mikael.urankar@gmail.com>

r259684:
  drm/ttm, drm/radeon: Replace EINTR/ERESTART by ERESTARTSYS...

  ... for msleep/cv_*wait() return values, where wait_event*() is used
  on Linux. ERESTARTSYS is the return code expected by callers when the
  operation was interrupted.

  For instance, this is the case of radeon_cs_ioctl() (radeon_cs.c): if
  an error occurs, and the code isn't ERESTARTSYS (eg. EINTR), it logs an
  error.

  Note that ERESTARTSYS is defined as ERESTART, but this keeps callers'
  code close to Linux.

  Submitted by:	avg@ (previous version)

r261497:
  Abort when firmware isn't present in R600+ models.

  More details at:
  http://anonscm.debian.org/viewvc/kernel/dists/trunk/linux/debian/patches/bugfix/all/radeon-firmware-is-required-for-drm-and-kms-on-r600-onward.patch?revision=20909&view=co

  Reviewed by:	dumbbell
  MFC after:	1 week