]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 17 Jan 2016 21:40:25 +0000 (13:40 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 17 Jan 2016 21:40:25 +0000 (13:40 -0800)
Pull drm updates from Dave Airlie:
 "This is the main drm pull request for 4.5.  I don't think I've missed
  anything too major, I'm mostly back at work now but I'll probably get
  some sleep in 5 years time.

  Summary:

  New drivers:
   - etnaviv:

     GPU driver for the 3D core on the Vivante core used in numerous
     ARM boards.

  Highlights:

  Core:
   - Atomic suspend/resume helpers
   - Move the headers to using userspace friendlier types.
   - Documentation updates
   - Lots of struct_mutex removal.
   - Bunch of DP MST fixes from AMD.

  Panel:
   - More DSI helpers
   - Support for some new basic panels

  i915:
   - Basic Kabylake support
   - DP link training and detect code refactoring
   - fbc/psr fixes
   - FIFO underrun fixes
   - SDE interrupt handling fixes
   - dma-buf/fence support in pageflip path.
   - GPU side for MST audio support

  radeon/amdgpu:
   - Drop UMS support
   - GPUVM/Scheduler optimisations
   - Initial Powerplay support for Tonga/Fiji/CZ/ST
   - ACP audio prerequisites

  nouveau:
   - GK20a instmem improvements
   - PCIE link speed change support

  msm:
   - DSI support for msm8960/apq8064

  tegra:
   - Host1X support for Tegra210 SoC

  vc4:
   - 3D acceleration support

  armada:
   - Get rid of struct mutex

  tda998x:
   - Atomic modesetting support
   - TMDS clock limitations

  omapdrm:
   - Atomic modesetting support
   - improved TILER performance

  rockchip:
   - RK3036 VOP support
   - Atomic modesetting support
   - Synopsys DW MIPI DSI support

  exynos:
   - Runtime PM support
   - of_graph binding for DP panels
   - Cleanup of IPP code
   - Configurable plane support
   - Kernel panic fixes at release time"

* 'drm-next' of git://people.freedesktop.org/~airlied/linux: (711 commits)
  drm/fb_cma_helper: Remove implicit call to disable_unused_functions
  drm/amdgpu: add missing irq.h include
  drm/vmwgfx: Fix a width / pitch mismatch on framebuffer updates
  drm/vmwgfx: Fix an incorrect lock check
  drm: nouveau: fix nouveau_debugfs_init prototype
  drm/nouveau/pci: fix check in nvkm_pcie_set_link
  drm/amdgpu: validate duplicates first
  drm/amdgpu: move VM page tables to the LRU end on CS v2
  drm/ttm: add ttm_bo_move_to_lru_tail function v2
  drm/ttm: fix adding foreign BOs to the swap LRU
  drm/ttm: fix adding foreign BOs to the LRU during init v2
  drm/radeon: use kobj_to_dev()
  drm/amdgpu: use kobj_to_dev()
  drm/amdgpu/cz: force vce clocks when sclks are forced
  drm/amdgpu/cz: force uvd clocks when sclks are forced
  drm/amdgpu/cz: add code to enable forcing VCE clocks
  drm/amdgpu/cz: add code to enable forcing UVD clocks
  drm/amdgpu: fix lost sync_to if scheduler is enabled.
  drm/amd/powerplay: fix static checker warning for return meaningless value.
  drm/sysfs: use kobj_to_dev()
  ...

1  2 
Documentation/devicetree/bindings/vendor-prefixes.txt
MAINTAINERS
drivers/gpu/drm/exynos/exynos_drm_fb.h
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_hdmi.c
drivers/gpu/drm/omapdrm/omap_gem.c
include/uapi/drm/drm_fourcc.h

index a4f2035569ce7257ea0601a4f75c41a9e1d54c6e,b123731b2dca3e200ee816864d31e7d22e3754a9..084439d357475669c216394097e86faa5c7efd7d
@@@ -33,6 -33,7 +33,7 @@@ auo   AU Optronics Corporatio
  avago Avago Technologies
  avic  Shanghai AVIC Optoelectronics Co., Ltd.
  axis  Axis Communications AB
+ boe   BOE Technology Group Co., Ltd.
  bosch Bosch Sensortec GmbH
  boundary      Boundary Devices Inc.
  brcm  Broadcom Corporation
@@@ -123,6 -124,7 +124,7 @@@ jedec      JEDEC Solid State Technology Asso
  karo  Ka-Ro electronics GmbH
  keymile       Keymile GmbH
  kinetic Kinetic Technologies
+ kyo   Kyocera Corporation
  lacie LaCie
  lantiq        Lantiq Semiconductor
  lenovo        Lenovo Group Ltd.
@@@ -161,7 -163,6 +163,7 @@@ nuvoton    Nuvoton Technology Corporatio
  nvidia        NVIDIA
  nxp   NXP Semiconductors
  okaya Okaya Electric America, Inc.
 +olimex        OLIMEX Ltd.
  onnn  ON Semiconductor Corp.
  opencores     OpenCores.org
  option        Option NV
@@@ -181,6 -182,7 +183,7 @@@ qca        Qualcomm Atheros, Inc
  qcom  Qualcomm Technologies, Inc
  qemu  QEMU, a generic and open source machine emulator and virtualizer
  qi    Qi Hardware
+ qiaodian      QiaoDian XianShi Corporation
  qnap  QNAP Systems, Inc.
  radxa Radxa
  raidsonic     RaidSonic Technology GmbH
@@@ -239,6 -241,7 +242,7 @@@ v3 V3 Semiconducto
  variscite     Variscite Ltd.
  via   VIA Technologies, Inc.
  virtio        Virtual I/O Device Specification, developed by the OASIS consortium
+ vivante       Vivante Corporation
  voipac        Voipac Technologies s.r.o.
  wexler        Wexler
  winbond Winbond Electronics corp.
diff --combined MAINTAINERS
index d38c324191dec8f6b709d5819a186097bff20be6,32eda9d0be0c63b8e1e4cab529c392ee81a3ace3..1d23f701489c7e6f395cf4b503b11af263f97c57
@@@ -206,7 -206,7 +206,7 @@@ F: include/trace/events/9p.
  A8293 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -240,12 -240,6 +240,12 @@@ L:       lm-sensors@lm-sensors.or
  S:    Maintained
  F:    drivers/hwmon/abituguru3.c
  
 +ACCES 104-IDI-48 GPIO DRIVER
 +M:    "William Breathitt Gray" <vilhelm.gray@gmail.com>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-104-idi-48.c
 +
  ACCES 104-IDIO-16 GPIO DRIVER
  M:    "William Breathitt Gray" <vilhelm.gray@gmail.com>
  L:    linux-gpio@vger.kernel.org
@@@ -377,15 -371,6 +377,15 @@@ ADDRESS SPACE LAYOUT RANDOMIZATION (ASL
  M:    Jiri Kosina <jikos@kernel.org>
  S:    Maintained
  
 +ADF7242 IEEE 802.15.4 RADIO DRIVER
 +M:    Michael Hennerich <michael.hennerich@analog.com>
 +W:    https://wiki.analog.com/ADF7242
 +W:    http://ez.analog.com/community/linux-device-drivers
 +L:    linux-wpan@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/ieee802154/adf7242.c
 +F:    Documentation/devicetree/bindings/net/ieee802154/adf7242.txt
 +
  ADM1025 HARDWARE MONITOR DRIVER
  M:    Jean Delvare <jdelvare@suse.com>
  L:    lm-sensors@lm-sensors.org
@@@ -403,14 -388,14 +403,14 @@@ ADM8211 WIRELESS DRIVE
  L:    linux-wireless@vger.kernel.org
  W:    http://wireless.kernel.org/
  S:    Orphan
 -F:    drivers/net/wireless/adm8211.*
 +F:    drivers/net/wireless/admtek/adm8211.*
  
  ADP1653 FLASH CONTROLLER DRIVER
  M:    Sakari Ailus <sakari.ailus@iki.fi>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/adp1653.c
 -F:    include/media/adp1653.h
 +F:    include/media/i2c/adp1653.h
  
  ADP5520 BACKLIGHT DRIVER WITH IO EXPANDER (ADP5520/ADP5501)
  M:    Michael Hennerich <michael.hennerich@analog.com>
@@@ -481,7 -466,7 +481,7 @@@ F: sound/oss/aedsp16.
  AF9013 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -491,7 -476,7 +491,7 @@@ F: drivers/media/dvb-frontends/af9013
  AF9033 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -537,7 -522,7 +537,7 @@@ AIMSLAB FM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-aimslab*
  
@@@ -551,7 -536,7 +551,7 @@@ F: include/linux/*aio*.
  AIRSPY MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -629,9 -614,9 +629,9 @@@ F: drivers/crypto/ccp
  F:    include/linux/ccp.h
  
  AMD FAM15H PROCESSOR POWER MONITORING DRIVER
 -M:    Andreas Herrmann <herrmann.der.user@googlemail.com>
 +M:    Huang Rui <ray.huang@amd.com>
  L:    lm-sensors@lm-sensors.org
 -S:    Maintained
 +S:    Supported
  F:    Documentation/hwmon/fam15h_power
  F:    drivers/hwmon/fam15h_power.c
  
@@@ -1788,7 -1773,7 +1788,7 @@@ L:      linux-media@vger.kernel.or
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/i2c/as3645a.c
 -F:    include/media/as3645a.h
 +F:    include/media/i2c/as3645a.h
  
  ASC7621 HARDWARE MONITOR DRIVER
  M:    George Joseph <george.joseph@fairview5.com>
@@@ -1911,6 -1896,7 +1911,6 @@@ ATMEL AT91 / AT32 MCI DRIVE
  M:    Ludovic Desroches <ludovic.desroches@atmel.com>
  S:    Maintained
  F:    drivers/mmc/host/atmel-mci.c
 -F:    drivers/mmc/host/atmel-mci-regs.h
  
  ATMEL AT91 / AT32 SERIAL DRIVER
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
@@@ -2007,7 -1993,7 +2007,7 @@@ L:      linux-wireless@vger.kernel.or
  W:    http://www.thekelleys.org.uk/atmel
  W:    http://atmelwlandriver.sourceforge.net/
  S:    Maintained
 -F:    drivers/net/wireless/atmel*
 +F:    drivers/net/wireless/atmel/atmel*
  
  ATMEL MAXTOUCH DRIVER
  M:    Nick Dyer <nick.dyer@itdev.co.uk>
@@@ -2078,7 -2064,7 +2078,7 @@@ F:      net/ax25
  AZ6007 DVB DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/usb/dvb-usb-v2/az6007.c
@@@ -2087,7 -2073,7 +2087,7 @@@ AZTECH FM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-aztech*
  
@@@ -2096,7 -2082,7 +2096,7 @@@ L:      linux-wireless@vger.kernel.or
  L:    b43-dev@lists.infradead.org
  W:    http://wireless.kernel.org/en/users/Drivers/b43
  S:    Odd Fixes
 -F:    drivers/net/wireless/b43/
 +F:    drivers/net/wireless/broadcom/b43/
  
  B43LEGACY WIRELESS DRIVER
  M:    Larry Finger <Larry.Finger@lwfinger.net>
@@@ -2104,7 -2090,7 +2104,7 @@@ L:      linux-wireless@vger.kernel.or
  L:    b43-dev@lists.infradead.org
  W:    http://wireless.kernel.org/en/users/Drivers/b43
  S:    Maintained
 -F:    drivers/net/wireless/b43legacy/
 +F:    drivers/net/wireless/broadcom/b43legacy/
  
  BACKLIGHT CLASS/SUBSYSTEM
  M:    Jingoo Han <jingoohan1@gmail.com>
@@@ -2116,7 -2102,7 +2116,7 @@@ F:      include/linux/backlight.
  BATMAN ADVANCED
  M:    Marek Lindner <mareklindner@neomailbox.ch>
  M:    Simon Wunderlich <sw@simonwunderlich.de>
 -M:    Antonio Quartulli <antonio@meshcoding.com>
 +M:    Antonio Quartulli <a@unstable.cc>
  L:    b.a.t.m.a.n@lists.open-mesh.org
  W:    http://www.open-mesh.org/
  S:    Maintained
@@@ -2140,7 -2126,7 +2140,7 @@@ BDISP ST MEDIA DRIVE
  M:    Fabien Dessenne <fabien.dessenne@st.com>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Supported
  F:    drivers/media/platform/sti/bdisp
  
@@@ -2406,7 -2392,7 +2406,7 @@@ M:      Hante Meuleman <meuleman@broadcom.co
  L:    linux-wireless@vger.kernel.org
  L:    brcm80211-dev-list@broadcom.com
  S:    Supported
 -F:    drivers/net/wireless/brcm80211/
 +F:    drivers/net/wireless/broadcom/brcm80211/
  
  BROADCOM BNX2FC 10 GIGABIT FCOE DRIVER
  M:    QLogic-Storage-Upstream@qlogic.com
@@@ -2533,7 -2519,7 +2533,7 @@@ F:      fs/btrfs
  BTTV VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    Documentation/video4linux/bttv/
@@@ -2572,7 -2558,7 +2572,7 @@@ CADET FM/AM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-cadet*
  
@@@ -2773,7 -2759,7 +2773,7 @@@ S:      Maintaine
  F:    Documentation/zh_CN/
  
  CHIPIDEA USB HIGH SPEED DUAL ROLE CONTROLLER
 -M:    Peter Chen <Peter.Chen@freescale.com>
 +M:    Peter Chen <Peter.Chen@nxp.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git
  L:    linux-usb@vger.kernel.org
  S:    Maintained
@@@ -2865,7 -2851,7 +2865,7 @@@ COBALT MEDIA DRIVE
  M:    Hans Verkuil <hans.verkuil@cisco.com>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Supported
  F:    drivers/media/pci/cobalt/
  
@@@ -2953,8 -2939,7 +2953,8 @@@ F:      drivers/usb/atm/cxacru.
  
  CONFIGFS
  M:    Joel Becker <jlbec@evilplan.org>
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/configfs.git
 +M:    Christoph Hellwig <hch@lst.de>
 +T:    git git://git.infradead.org/users/hch/configfs.git
  S:    Supported
  F:    fs/configfs/
  F:    include/linux/configfs.h
@@@ -3111,15 -3096,6 +3111,15 @@@ S:    Maintaine
  F:    crypto/ansi_cprng.c
  F:    crypto/rng.c
  
 +CS3308 MEDIA DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Odd Fixes
 +F:    drivers/media/i2c/cs3308.c
 +F:    drivers/media/i2c/cs3308.h
 +
  CS5535 Audio ALSA driver
  M:    Jaya Kumar <jayakumar.alsa@gmail.com>
  S:    Maintained
@@@ -3128,14 -3104,14 +3128,14 @@@ F:   sound/pci/cs5535audio
  CW1200 WLAN driver
  M:    Solomon Peachy <pizza@shaftnet.org>
  S:    Maintained
 -F:    drivers/net/wireless/cw1200/
 +F:    drivers/net/wireless/st/cw1200/
  
  CX18 VIDEO4LINUX DRIVER
  M:    Andy Walls <awalls@md.metrocast.net>
  L:    ivtv-devel@ivtvdriver.org (subscribers-only)
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  W:    http://www.ivtvdriver.org/index.php/Cx18
  S:    Maintained
  F:    Documentation/video4linux/cx18.txt
@@@ -3146,7 -3122,7 +3146,7 @@@ CX2341X MPEG ENCODER HELPER MODUL
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/common/cx2341x*
  F:    include/media/cx2341x*
@@@ -3155,7 -3131,7 +3155,7 @@@ CX24120 MEDIA DRIVE
  M:    Jemma Denson <jdenson@gmail.com>
  M:    Patrick Boettcher <patrick.boettcher@posteo.de>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  S:    Maintained
  F:    drivers/media/dvb-frontends/cx24120*
  CX88 VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    Documentation/video4linux/cx88/
@@@ -3172,7 -3148,7 +3172,7 @@@ F:      drivers/media/pci/cx88
  CXD2820R MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3278,7 -3254,7 +3278,7 @@@ F:      drivers/net/wan/pc300
  CYPRESS_FIRMWARE MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3768,6 -3744,15 +3768,15 @@@ S:    Maintaine
  F:    drivers/gpu/drm/sti
  F:    Documentation/devicetree/bindings/display/st,stih4xx.txt
  
+ DRM DRIVERS FOR VIVANTE GPU IP
+ M:    Lucas Stach <l.stach@pengutronix.de>
+ R:    Russell King <linux+etnaviv@arm.linux.org.uk>
+ R:    Christian Gmeiner <christian.gmeiner@gmail.com>
+ L:    dri-devel@lists.freedesktop.org
+ S:    Maintained
+ F:    drivers/gpu/drm/etnaviv
+ F:    Documentation/devicetree/bindings/display/etnaviv
  DSBR100 USB FM RADIO DRIVER
  M:    Alexey Klimov <klimov.linux@gmail.com>
  L:    linux-media@vger.kernel.org
@@@ -3785,14 -3770,14 +3794,14 @@@ DT3155 MEDIA DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/pci/dt3155/
  
  DVB_USB_AF9015 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3802,7 -3787,7 +3811,7 @@@ F:      drivers/media/usb/dvb-usb-v2/af9015
  DVB_USB_AF9035 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3812,7 -3797,7 +3821,7 @@@ F:      drivers/media/usb/dvb-usb-v2/af9035
  DVB_USB_ANYSEE MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3822,7 -3807,7 +3831,7 @@@ F:      drivers/media/usb/dvb-usb-v2/anysee
  DVB_USB_AU6610 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3832,7 -3817,7 +3841,7 @@@ F:      drivers/media/usb/dvb-usb-v2/au6610
  DVB_USB_CE6230 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3842,7 -3827,7 +3851,7 @@@ F:      drivers/media/usb/dvb-usb-v2/ce6230
  DVB_USB_CXUSB MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/media_tree.git
@@@ -3852,7 -3837,7 +3861,7 @@@ F:      drivers/media/usb/dvb-usb/cxusb
  DVB_USB_EC168 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3862,7 -3847,7 +3871,7 @@@ F:      drivers/media/usb/dvb-usb-v2/ec168
  DVB_USB_GL861 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
  S:    Maintained
@@@ -3871,7 -3856,7 +3880,7 @@@ F:      drivers/media/usb/dvb-usb-v2/gl861
  DVB_USB_MXL111SF MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/mxl111sf.git
@@@ -3881,7 -3866,7 +3890,7 @@@ F:      drivers/media/usb/dvb-usb-v2/mxl111s
  DVB_USB_RTL28XXU MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3891,7 -3876,7 +3900,7 @@@ F:      drivers/media/usb/dvb-usb-v2/rtl28xx
  DVB_USB_V2 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3921,7 -3906,7 +3930,7 @@@ F:      Documentation/devicetree/bindings/in
  E4000 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3937,7 -3922,7 +3946,7 @@@ F:      drivers/scsi/eata.
  EC100 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -3958,8 -3943,9 +3967,8 @@@ M:      Doug Thompson <dougthompson@xmission
  M:    Borislav Petkov <bp@alien8.de>
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
 -T:    git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git#for-next
 -T:    git://git.kernel.org/pub/linux/kernel/git/mchehab/linux-edac.git#linux_next
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git for-next
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac.git linux_next
  S:    Supported
  F:    Documentation/edac.txt
  F:    drivers/edac/
@@@ -3969,6 -3955,7 +3978,6 @@@ EDAC-AMD6
  M:    Doug Thompson <dougthompson@xmission.com>
  M:    Borislav Petkov <bp@alien8.de>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/amd64_edac*
  
@@@ -3976,6 -3963,7 +3985,6 @@@ EDAC-CALXED
  M:    Doug Thompson <dougthompson@xmission.com>
  M:    Robert Richter <rric@kernel.org>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/highbank*
  
@@@ -3984,6 -3972,7 +3993,6 @@@ M:      Ralf Baechle <ralf@linux-mips.org
  M:    David Daney <david.daney@cavium.com>
  L:    linux-edac@vger.kernel.org
  L:    linux-mips@linux-mips.org
 -W:    bluesmoke.sourceforge.net
  S:    Supported
  F:    drivers/edac/octeon_edac*
  
@@@ -3991,54 -3980,63 +4000,54 @@@ EDAC-E752
  M:    Mark Gross <mark.gross@intel.com>
  M:    Doug Thompson <dougthompson@xmission.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/e752x_edac.c
  
  EDAC-E7XXX
  M:    Doug Thompson <dougthompson@xmission.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/e7xxx_edac.c
  
  EDAC-GHES
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/ghes_edac.c
  
  EDAC-I82443BXGX
  M:    Tim Small <tim@buttersideup.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i82443bxgx_edac.c
  
  EDAC-I3000
  M:    Jason Uhlenkott <juhlenko@akamai.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i3000_edac.c
  
  EDAC-I5000
  M:    Doug Thompson <dougthompson@xmission.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i5000_edac.c
  
  EDAC-I5400
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i5400_edac.c
  
  EDAC-I7300
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i7300_edac.c
  
  EDAC-I7CORE
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i7core_edac.c
  
@@@ -4046,36 -4044,42 +4055,36 @@@ EDAC-I82975
  M:    Ranganathan Desikan <ravi@jetztechnologies.com>
  M:    "Arvind R." <arvino55@gmail.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i82975x_edac.c
  
  EDAC-IE31200
  M:    Jason Baron <jbaron@akamai.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/ie31200_edac.c
  
  EDAC-MPC85XX
  M:    Johannes Thumshirn <morbidrsa@gmail.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/mpc85xx_edac.[ch]
  
  EDAC-PASEMI
  M:    Egor Martovetsky <egor@pasemi.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/pasemi_edac.c
  
  EDAC-R82600
  M:    Tim Small <tim@buttersideup.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/r82600_edac.c
  
  EDAC-SBRIDGE
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
 -W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/sb_edac.c
  
@@@ -4142,7 -4146,7 +4151,7 @@@ F:      drivers/net/ethernet/ibm/ehea
  EM28XX VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/usb/em28xx/
@@@ -4282,7 -4286,7 +4291,7 @@@ F:      drivers/media/tuners/fc0011.
  FC2580 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -4496,9 -4500,8 +4505,9 @@@ F:      include/linux/fs_enet_pd.
  FREESCALE QUICC ENGINE LIBRARY
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Orphan
 -F:    arch/powerpc/sysdev/qe_lib/
 -F:    arch/powerpc/include/asm/*qe.h
 +F:    drivers/soc/fsl/qe/
 +F:    include/soc/fsl/*qe*.h
 +F:    include/soc/fsl/*ucc*.h
  
  FREESCALE USB PERIPHERAL DRIVERS
  M:    Li Yang <leoli@freescale.com>
@@@ -4606,7 -4609,7 +4615,7 @@@ M:      Heungjun Kim <riverful.kim@samsung.c
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/m5mols/
 -F:    include/media/m5mols.h
 +F:    include/media/i2c/m5mols.h
  
  FUJITSU TABLET EXTRAS
  M:    Robert Gerlach <khnz@gmx.de>
@@@ -4652,7 -4655,7 +4661,7 @@@ GEMTEK FM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-gemtek*
  
@@@ -4860,7 -4863,7 +4869,7 @@@ HDPVR USB VIDEO ENCODER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/usb/hdpvr/
  
@@@ -4879,7 -4882,7 +4888,7 @@@ F:      drivers/tty/hvc
  HACKRF MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -4922,7 -4925,7 +4931,7 @@@ F:      sound/parisc/harmony.
  HD29L2 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -4991,7 -4994,6 +5000,7 @@@ F:      arch/*/include/asm/suspend*.
  
  HID CORE LAYER
  M:    Jiri Kosina <jikos@kernel.org>
 +R:    Benjamin Tissoires <benjamin.tissoires@redhat.com>
  L:    linux-input@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
  S:    Maintained
@@@ -5046,20 -5048,13 +5055,20 @@@ F:   include/uapi/linux/if_hippi.
  F:    net/802/hippi.c
  F:    drivers/net/hippi/
  
 +HISILICON SAS Controller
 +M:    John Garry <john.garry@huawei.com>
 +W:    http://www.hisilicon.com
 +S:    Supported
 +F:    drivers/scsi/hisi_sas/
 +F:    Documentation/devicetree/bindings/scsi/hisilicon-sas.txt
 +
  HOST AP DRIVER
  M:    Jouni Malinen <j@w1.fi>
  L:    hostap@shmoo.com (subscribers-only)
  L:    linux-wireless@vger.kernel.org
  W:    http://hostap.epitest.fi/
  S:    Maintained
 -F:    drivers/net/wireless/hostap/
 +F:    drivers/net/wireless/intersil/hostap/
  
  HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER
  L:    platform-driver-x86@vger.kernel.org
@@@ -5297,13 -5292,6 +5306,13 @@@ L:    netdev@vger.kernel.or
  S:    Supported
  F:    drivers/net/ethernet/ibm/ibmveth.*
  
 +IBM Power SRIOV Virtual NIC Device Driver
 +M:    Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
 +M:    John Allen <jallen@linux.vnet.ibm.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/ethernet/ibm/ibmvnic.*
 +
  IBM Power Virtual SCSI Device Drivers
  M:    Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
  L:    linux-scsi@vger.kernel.org
@@@ -5634,7 -5622,7 +5643,7 @@@ L:      linux-wireless@vger.kernel.or
  S:    Maintained
  F:    Documentation/networking/README.ipw2100
  F:    Documentation/networking/README.ipw2200
 -F:    drivers/net/wireless/ipw2x00/
 +F:    drivers/net/wireless/intel/ipw2x00/
  
  INTEL(R) TRACE HUB
  M:    Alexander Shishkin <alexander.shishkin@linux.intel.com>
@@@ -5643,7 -5631,9 +5652,7 @@@ F:      Documentation/trace/intel_th.tx
  F:    drivers/hwtracing/intel_th/
  
  INTEL(R) TRUSTED EXECUTION TECHNOLOGY (TXT)
 -M:    Richard L Maliszewski <richard.l.maliszewski@intel.com>
 -M:    Gang Wei <gang.wei@intel.com>
 -M:    Shane Wang <shane.wang@intel.com>
 +M:    Ning Sun <ning.sun@intel.com>
  L:    tboot-devel@lists.sourceforge.net
  W:    http://tboot.sourceforge.net
  T:    hg http://tboot.hg.sourceforge.net:8000/hgroot/tboot/tboot
@@@ -5666,7 -5656,7 +5675,7 @@@ INTEL WIRELESS 3945ABG/BG, 4965AGN (iwl
  M:    Stanislaw Gruszka <sgruszka@redhat.com>
  L:    linux-wireless@vger.kernel.org
  S:    Supported
 -F:    drivers/net/wireless/iwlegacy/
 +F:    drivers/net/wireless/intel/iwlegacy/
  
  INTEL WIRELESS WIFI LINK (iwlwifi)
  M:    Johannes Berg <johannes.berg@intel.com>
@@@ -5676,7 -5666,7 +5685,7 @@@ L:      linux-wireless@vger.kernel.or
  W:    http://intellinuxwireless.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi.git
  S:    Supported
 -F:    drivers/net/wireless/iwlwifi/
 +F:    drivers/net/wireless/intel/iwlwifi/
  
  INTEL MANAGEMENT ENGINE (mei)
  M:    Tomas Winkler <tomas.winkler@intel.com>
@@@ -5841,7 -5831,7 +5850,7 @@@ ISA RADIO MODUL
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-isa*
  
@@@ -5911,7 -5901,7 +5920,7 @@@ F:      drivers/hwmon/it87.
  IT913X MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -5932,7 -5922,7 +5941,7 @@@ F:      include/uapi/linux/ivtv
  IX2505V MEDIA DRIVER
  M:    Malcolm Priestley <tvboxspy@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  S:    Maintained
  F:    drivers/media/dvb-frontends/ix2505v*
@@@ -6021,7 -6011,7 +6030,7 @@@ KEENE FM RADIO TRANSMITTER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-keene*
  
@@@ -6121,7 -6111,6 +6130,7 @@@ M:      Marc Zyngier <marc.zyngier@arm.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    kvmarm@lists.cs.columbia.edu
  W:    http://systems.cs.columbia.edu/projects/kvm-arm
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git
  S:    Supported
  F:    arch/arm/include/uapi/asm/kvm*
  F:    arch/arm/include/asm/kvm*
@@@ -6274,7 -6263,7 +6283,7 @@@ F:      drivers/usb/misc/legousbtower.
  LG2160 MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -6284,7 -6273,7 +6293,7 @@@ F:      drivers/media/dvb-frontends/lg2160.
  LGDT3305 MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -6451,7 -6440,7 +6460,7 @@@ S:      Maintaine
  F:    arch/powerpc/platforms/8xx/
  
  LINUX FOR POWERPC EMBEDDED PPC83XX AND PPC85XX
 -M:    Scott Wood <scottwood@freescale.com>
 +M:    Scott Wood <oss@buserror.net>
  M:    Kumar Gala <galak@kernel.crashing.org>
  W:    http://www.penguinppc.org/
  L:    linuxppc-dev@lists.ozlabs.org
@@@ -6541,7 -6530,7 +6550,7 @@@ F:      drivers/hwmon/lm95234.
  LME2510 MEDIA DRIVER
  M:    Malcolm Priestley <tvboxspy@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  S:    Maintained
  F:    drivers/media/usb/dvb-usb-v2/lmedm04*
@@@ -6647,7 -6636,7 +6656,7 @@@ F:      arch/m68k/hp300
  M88DS3103 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -6657,7 -6646,7 +6666,7 @@@ F:      drivers/media/dvb-frontends/m88ds310
  M88RS2000 MEDIA DRIVER
  M:    Malcolm Priestley <tvboxspy@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  S:    Maintained
  F:    drivers/media/dvb-frontends/m88rs2000*
@@@ -6728,7 -6717,7 +6737,7 @@@ F:      drivers/net/ethernet/marvell/sk
  MARVELL LIBERTAS WIRELESS DRIVER
  L:    libertas-dev@lists.infradead.org
  S:    Orphan
 -F:    drivers/net/wireless/libertas/
 +F:    drivers/net/wireless/marvell/libertas/
  
  MARVELL MV643XX ETHERNET DRIVER
  M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
@@@ -6748,13 -6737,13 +6757,13 @@@ M:   Amitkumar Karwar <akarwar@marvell.co
  M:    Nishant Sarmukadam <nishants@marvell.com>
  L:    linux-wireless@vger.kernel.org
  S:    Maintained
 -F:    drivers/net/wireless/mwifiex/
 +F:    drivers/net/wireless/marvell/mwifiex/
  
  MARVELL MWL8K WIRELESS DRIVER
  M:    Lennert Buytenhek <buytenh@wantstofly.org>
  L:    linux-wireless@vger.kernel.org
  S:    Odd Fixes
 -F:    drivers/net/wireless/mwl8k.c
 +F:    drivers/net/wireless/marvell/mwl8k.c
  
  MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER
  M:    Nicolas Pitre <nico@fluxnic.net>
@@@ -6836,7 -6825,7 +6845,7 @@@ MAXIRADIO FM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-maxiradio*
  
@@@ -6858,7 -6847,7 +6867,7 @@@ F:      drivers/media/platform/vsp1
  MEDIA DRIVERS FOR ASCOT2E
  M:    Sergey Kozlov <serjk@netup.ru>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  W:    http://netup.tv/
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
@@@ -6867,7 -6856,7 +6876,7 @@@ F:      drivers/media/dvb-frontends/ascot2e
  MEDIA DRIVERS FOR CXD2841ER
  M:    Sergey Kozlov <serjk@netup.ru>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://netup.tv/
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
@@@ -6876,7 -6865,7 +6885,7 @@@ F:      drivers/media/dvb-frontends/cxd2841e
  MEDIA DRIVERS FOR HORUS3A
  M:    Sergey Kozlov <serjk@netup.ru>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://netup.tv/
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
@@@ -6885,7 -6874,7 +6894,7 @@@ F:      drivers/media/dvb-frontends/horus3a
  MEDIA DRIVERS FOR LNBH25
  M:    Sergey Kozlov <serjk@netup.ru>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://netup.tv/
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
@@@ -6894,7 -6883,7 +6903,7 @@@ F:      drivers/media/dvb-frontends/lnbh25
  MEDIA DRIVERS FOR NETUP PCI UNIVERSAL DVB devices
  M:    Sergey Kozlov <serjk@netup.ru>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://netup.tv/
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
@@@ -6904,7 -6893,7 +6913,7 @@@ MEDIA INPUT INFRASTRUCTURE (V4L/DVB
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  P:    LinuxTV.org Project
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  Q:    http://patchwork.kernel.org/project/linux-media/list/
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
@@@ -6913,7 -6902,6 +6922,7 @@@ F:      Documentation/video4linux
  F:    Documentation/DocBook/media/
  F:    drivers/media/
  F:    drivers/staging/media/
 +F:    include/linux/platform_data/media/
  F:    include/media/
  F:    include/uapi/linux/dvb/
  F:    include/uapi/linux/videodev2.h
@@@ -7065,7 -7053,7 +7074,7 @@@ MIROSOUND PCM20 FM RADIO RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/radio/radio-miropcm20*
  
@@@ -7101,7 -7089,7 +7110,7 @@@ F:      drivers/iio/temperature/mlx90614.
  MN88472 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -7112,7 -7100,7 +7121,7 @@@ F:      drivers/media/dvb-frontends/mn88472.
  MN88473 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -7167,7 -7155,7 +7176,7 @@@ F:      drivers/platform/x86/msi-wmi.
  MSI001 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -7177,7 -7165,7 +7186,7 @@@ F:      drivers/media/tuners/msi001
  MSI2500 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -7196,7 -7184,7 +7205,7 @@@ L:      linux-media@vger.kernel.or
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/i2c/mt9m032.c
 -F:    include/media/mt9m032.h
 +F:    include/media/i2c/mt9m032.h
  
  MT9P031 APTINA CAMERA SENSOR
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
@@@ -7204,7 -7192,7 +7213,7 @@@ L:      linux-media@vger.kernel.or
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/i2c/mt9p031.c
 -F:    include/media/mt9p031.h
 +F:    include/media/i2c/mt9p031.h
  
  MT9T001 APTINA CAMERA SENSOR
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
@@@ -7212,7 -7200,7 +7221,7 @@@ L:      linux-media@vger.kernel.or
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/i2c/mt9t001.c
 -F:    include/media/mt9t001.h
 +F:    include/media/i2c/mt9t001.h
  
  MT9V032 APTINA CAMERA SENSOR
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
@@@ -7221,7 -7209,7 +7230,7 @@@ T:      git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/i2c/mt9v032.txt
  F:    drivers/media/i2c/mt9v032.c
 -F:    include/media/mt9v032.h
 +F:    include/media/i2c/mt9v032.h
  
  MULTIFUNCTION DEVICES (MFD)
  M:    Lee Jones <lee.jones@linaro.org>
@@@ -7265,7 -7253,7 +7274,7 @@@ F:      drivers/usb/musb
  MXL5007T MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -7390,13 -7378,6 +7399,13 @@@ F:    include/net/netrom.
  F:    include/uapi/linux/netrom.h
  F:    net/netrom/
  
 +NETRONOME ETHERNET DRIVERS
 +M:    Jakub Kicinski <jakub.kicinski@netronome.com>
 +M:    Rolf Neugebauer <rolf.neugebauer@netronome.com>
 +L:    oss-drivers@netronome.com
 +S:    Maintained
 +F:    drivers/net/ethernet/netronome/
 +
  NETWORK BLOCK DEVICE (NBD)
  M:    Markus Pargmann <mpa@pengutronix.de>
  S:    Maintained
@@@ -7528,12 -7509,7 +7537,12 @@@ F:    net/nfc
  F:    include/net/nfc/
  F:    include/uapi/linux/nfc.h
  F:    drivers/nfc/
 +F:    include/linux/platform_data/microread.h
 +F:    include/linux/platform_data/nfcmrvl.h
 +F:    include/linux/platform_data/nxp-nci.h
  F:    include/linux/platform_data/pn544.h
 +F:    include/linux/platform_data/st21nfca.h
 +F:    include/linux/platform_data/st-nci.h
  F:    Documentation/devicetree/bindings/net/nfc/
  
  NFS, SUNRPC, AND LOCKD CLIENTS
@@@ -7827,12 -7803,11 +7836,12 @@@ F:   drivers/usb/*/*omap
  F:    arch/arm/*omap*/usb*
  
  OMAP GPIO DRIVER
 -M:    Javier Martinez Canillas <javier@dowhile0.org>
 +M:    Grygorii Strashko <grygorii.strashko@ti.com>
  M:    Santosh Shilimkar <ssantosh@kernel.org>
  M:    Kevin Hilman <khilman@deeprootsystems.com>
  L:    linux-omap@vger.kernel.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/gpio/gpio-omap.txt
  F:    drivers/gpio/gpio-omap.c
  
  OMAP/NEWFLOW NANOBONE MACHINE SUPPORT
@@@ -7984,7 -7959,7 +7993,7 @@@ L:      linux-wireless@vger.kernel.or
  W:    http://wireless.kernel.org/en/users/Drivers/orinoco
  W:    http://www.nongnu.org/orinoco/
  S:    Orphan
 -F:    drivers/net/wireless/orinoco/
 +F:    drivers/net/wireless/intersil/orinoco/
  
  OSD LIBRARY and FILESYSTEM
  M:    Boaz Harrosh <ooo@electrozaur.com>
@@@ -8010,7 -7985,7 +8019,7 @@@ M:      Christian Lamparter <chunkeey@google
  L:    linux-wireless@vger.kernel.org
  W:    http://wireless.kernel.org/en/users/Drivers/p54
  S:    Maintained
 -F:    drivers/net/wireless/p54/
 +F:    drivers/net/wireless/intersil/p54/
  
  PA SEMI ETHERNET DRIVER
  M:    Olof Johansson <olof@lixom.net>
@@@ -8403,7 -8378,6 +8412,7 @@@ F:      drivers/pinctrl/intel
  
  PIN CONTROLLER - RENESAS
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 +M:    Geert Uytterhoeven <geert+renesas@glider.be>
  L:    linux-sh@vger.kernel.org
  S:    Maintained
  F:    drivers/pinctrl/sh-pfc/
@@@ -8482,17 -8456,6 +8491,17 @@@ F:    fs/timerfd.
  F:    include/linux/timer*
  F:    kernel/time/*timer*
  
 +POWER MANAGEMENT CORE
 +M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
 +L:    linux-pm@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
 +S:    Supported
 +F:    drivers/base/power/
 +F:    include/linux/pm.h
 +F:    include/linux/pm_*
 +F:    include/linux/powercap.h
 +F:    drivers/powercap/
 +
  POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS
  M:    Sebastian Reichel <sre@kernel.org>
  M:    Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
@@@ -8572,7 -8535,7 +8581,7 @@@ M:      "Luis R. Rodriguez" <mcgrof@gmail.co
  L:    linux-wireless@vger.kernel.org
  W:    http://wireless.kernel.org/en/users/Drivers/p54
  S:    Obsolete
 -F:    drivers/net/wireless/prism54/
 +F:    drivers/net/wireless/intersil/prism54/
  
  PS3 NETWORK SUPPORT
  M:    Geoff Levand <geoff@infradead.org>
@@@ -8685,19 -8648,12 +8694,19 @@@ S:   Maintaine
  F:    arch/arm/mach-pxa/
  F:    drivers/dma/pxa*
  F:    drivers/pcmcia/pxa2xx*
 +F:    drivers/pinctrl/pxa/
  F:    drivers/spi/spi-pxa2xx*
  F:    drivers/usb/gadget/udc/pxa2*
  F:    include/sound/pxa2xx-lib.h
  F:    sound/arm/pxa*
  F:    sound/soc/pxa/
  
 +PXA GPIO DRIVER
 +M:    Robert Jarzmik <robert.jarzmik@free.fr>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-pxa.c
 +
  PXA3xx NAND FLASH DRIVER
  M:    Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
  L:    linux-mtd@lists.infradead.org
@@@ -8798,7 -8754,7 +8807,7 @@@ F:      include/uapi/linux/qnxtypes.
  QT1010 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -8882,7 -8838,7 +8891,7 @@@ M:      Stanislaw Gruszka <sgruszka@redhat.c
  M:    Helmut Schaa <helmut.schaa@googlemail.com>
  L:    linux-wireless@vger.kernel.org
  S:    Maintained
 -F:    drivers/net/wireless/rt2x00/
 +F:    drivers/net/wireless/ralink/rt2x00/
  
  RAMDISK RAM BLOCK DEVICE DRIVER
  M:    Jens Axboe <axboe@kernel.dk>
@@@ -9014,12 -8970,6 +9023,12 @@@ L:    linux-sh@vger.kernel.or
  F:    drivers/net/ethernet/renesas/
  F:    include/linux/sh_eth.h
  
 +RENESAS USB2 PHY DRIVER
 +M:    Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
 +L:    linux-sh@vger.kernel.org
 +S:    Maintained
 +F:    drivers/phy/phy-rcar-gen3-usb2.c
 +
  RESET CONTROLLER FRAMEWORK
  M:    Philipp Zabel <p.zabel@pengutronix.de>
  S:    Maintained
@@@ -9097,7 -9047,7 +9106,7 @@@ F:      net/rose
  RTL2830 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -9107,7 -9057,7 +9116,7 @@@ F:      drivers/media/dvb-frontends/rtl2830
  RTL2832 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -9117,7 -9067,7 +9126,7 @@@ F:      drivers/media/dvb-frontends/rtl2832
  RTL2832_SDR MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -9129,7 -9079,7 +9138,7 @@@ L:      linux-wireless@vger.kernel.or
  W:    http://wireless.kernel.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
  S:    Orphan
 -F:    drivers/net/wireless/rtl818x/rtl8180/
 +F:    drivers/net/wireless/realtek/rtl818x/rtl8180/
  
  RTL8187 WIRELESS DRIVER
  M:    Herton Ronaldo Krzesinski <herton@canonical.com>
@@@ -9139,7 -9089,7 +9148,7 @@@ L:      linux-wireless@vger.kernel.or
  W:    http://wireless.kernel.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
  S:    Maintained
 -F:    drivers/net/wireless/rtl818x/rtl8187/
 +F:    drivers/net/wireless/realtek/rtl818x/rtl8187/
  
  RTL8192CE WIRELESS DRIVER
  M:    Larry Finger <Larry.Finger@lwfinger.net>
@@@ -9148,8 -9098,8 +9157,8 @@@ L:      linux-wireless@vger.kernel.or
  W:    http://wireless.kernel.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
  S:    Maintained
 -F:    drivers/net/wireless/rtlwifi/
 -F:    drivers/net/wireless/rtlwifi/rtl8192ce/
 +F:    drivers/net/wireless/realtek/rtlwifi/
 +F:    drivers/net/wireless/realtek/rtlwifi/rtl8192ce/
  
  RTL8XXXU WIRELESS DRIVER (rtl8xxxu)
  M:    Jes Sorensen <Jes.Sorensen@redhat.com>
@@@ -9193,7 -9143,7 +9202,7 @@@ F:      drivers/s390/block/dasd
  F:    block/partitions/ibm.c
  
  S390 NETWORK DRIVERS
 -M:    Ursula Braun <ursula.braun@de.ibm.com>
 +M:    Ursula Braun <ubraun@linux.vnet.ibm.com>
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -9223,7 -9173,7 +9232,7 @@@ S:      Supporte
  F:    drivers/s390/scsi/zfcp_*
  
  S390 IUCV NETWORK LAYER
 -M:    Ursula Braun <ursula.braun@de.ibm.com>
 +M:    Ursula Braun <ubraun@linux.vnet.ibm.com>
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -9248,14 -9198,14 +9257,14 @@@ SAA6588 RDS RECEIVER DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/i2c/saa6588*
  
  SAA7134 VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    Documentation/video4linux/*.saa7134
@@@ -9300,10 -9250,8 +9309,10 @@@ F:    drivers/regulator/s5m*.
  F:    drivers/clk/clk-s2mps11.c
  F:    drivers/rtc/rtc-s5m.c
  F:    include/linux/mfd/samsung/
 -F:    Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt
 -F:    Documentation/devicetree/bindings/mfd/s2mp*.txt
 +F:    Documentation/devicetree/bindings/mfd/samsung,sec-core.txt
 +F:    Documentation/devicetree/bindings/regulator/samsung,s2m*.txt
 +F:    Documentation/devicetree/bindings/regulator/samsung,s5m*.txt
 +F:    Documentation/devicetree/bindings/clock/samsung,s2mps11.txt
  
  SAMSUNG S5P/EXYNOS4 SOC SERIES CAMERA SUBSYSTEM DRIVERS
  M:    Kyungmin Park <kyungmin.park@samsung.com>
@@@ -9319,7 -9267,7 +9328,7 @@@ L:      linux-media@vger.kernel.or
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
  S:    Maintained
  F:    drivers/media/platform/s3c-camif/
 -F:    include/media/s3c_camif.h
 +F:    include/media/drv-intf/s3c_camif.h
  
  SAMSUNG S5C73M3 CAMERA DRIVER
  M:    Kyungmin Park <kyungmin.park@samsung.com>
@@@ -9427,7 -9375,7 +9436,7 @@@ M:      Andreas Noever <andreas.noever@gmail
  S:    Maintained
  F:    drivers/thunderbolt/
  
 -TIMEKEEPING, CLOCKSOURCE CORE, NTP
 +TIMEKEEPING, CLOCKSOURCE CORE, NTP, ALARMTIMER
  M:    John Stultz <john.stultz@linaro.org>
  M:    Thomas Gleixner <tglx@linutronix.de>
  L:    linux-kernel@vger.kernel.org
@@@ -9440,7 -9388,6 +9449,7 @@@ F:      include/uapi/linux/time.
  F:    include/uapi/linux/timex.h
  F:    kernel/time/clocksource.c
  F:    kernel/time/time*.c
 +F:    kernel/time/alarmtimer.c
  F:    kernel/time/ntp.c
  F:    tools/testing/selftests/timers/
  
@@@ -9695,7 -9642,7 +9704,7 @@@ F:      drivers/misc/sgi-xp
  SI2157 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -9705,7 -9652,7 +9714,7 @@@ F:      drivers/media/tuners/si2157
  SI2168 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -9716,7 -9663,7 +9725,7 @@@ SI470X FM RADIO RECEIVER I2C DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/radio/si470x/radio-si470x-i2c.c
  
@@@ -9724,7 -9671,7 +9733,7 @@@ SI470X FM RADIO RECEIVER USB DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/si470x/radio-si470x-common.c
  F:    drivers/media/radio/si470x/radio-si470x.h
@@@ -9734,7 -9681,7 +9743,7 @@@ SI4713 FM RADIO TRANSMITTER I2C DRIVE
  M:    Eduardo Valentin <edubezval@gmail.com>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/radio/si4713/si4713.?
  
@@@ -9742,7 -9689,7 +9751,7 @@@ SI4713 FM RADIO TRANSMITTER PLATFORM DR
  M:    Eduardo Valentin <edubezval@gmail.com>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/radio/si4713/radio-platform-si4713.c
  
@@@ -9750,14 -9697,14 +9759,14 @@@ SI4713 FM RADIO TRANSMITTER USB DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/si4713/radio-usb-si4713.c
  
  SIANO DVB DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    drivers/media/common/siano/
@@@ -9782,7 -9729,7 +9791,7 @@@ SH_VOU V4L2 OUTPUT DRIVE
  L:    linux-media@vger.kernel.org
  S:    Orphan
  F:    drivers/media/platform/sh_vou.c
 -F:    include/media/sh_vou.h
 +F:    include/media/drv-intf/sh_vou.h
  
  SIMPLE FIRMWARE INTERFACE (SFI)
  M:    Len Brown <lenb@kernel.org>
@@@ -9823,7 -9770,7 +9832,7 @@@ F:      drivers/i2c/busses/i2c-davinci.
  TI DAVINCI SERIES MEDIA DRIVER
  M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
  S:    Maintained
@@@ -9833,7 -9780,7 +9842,7 @@@ F:      include/media/davinci
  TI AM437X VPFE DRIVER
  M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
  S:    Maintained
@@@ -9842,12 -9789,12 +9851,12 @@@ F:   drivers/media/platform/am437x
  OV2659 OMNIVISION SENSOR DRIVER
  M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
  S:    Maintained
  F:    drivers/media/i2c/ov2659.c
 -F:    include/media/ov2659.h
 +F:    include/media/i2c/ov2659.h
  
  SILICON MOTION SM712 FRAME BUFFER DRIVER
  M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
@@@ -9936,7 -9883,7 +9945,7 @@@ M:      Sakari Ailus <sakari.ailus@iki.fi
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/smiapp/
 -F:    include/media/smiapp.h
 +F:    include/media/i2c/smiapp.h
  F:    drivers/media/i2c/smiapp-pll.c
  F:    drivers/media/i2c/smiapp-pll.h
  F:    include/uapi/linux/smiapp.h
@@@ -10013,6 -9960,7 +10022,6 @@@ S:    Supporte
  F:    drivers/media/pci/solo6x10/
  
  SOFTWARE RAID (Multiple Disks) SUPPORT
 -M:    Neil Brown <neilb@suse.com>
  L:    linux-raid@vger.kernel.org
  S:    Supported
  F:    drivers/md/
@@@ -10099,7 -10047,7 +10108,7 @@@ F:   sound/soc/soc-generic-dmaengine-pcm.
  SP2 MEDIA DRIVER
  M:    Olli Salonen <olli.salonen@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  S:    Maintained
  F:    drivers/media/dvb-frontends/sp2*
@@@ -10461,7 -10409,7 +10470,7 @@@ F:   net/ipv4/tcp_lp.
  TDA10071 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -10471,7 -10419,7 +10480,7 @@@ F:   drivers/media/dvb-frontends/tda10071
  TDA18212 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -10481,7 -10429,7 +10490,7 @@@ F:   drivers/media/tuners/tda18212
  TDA18218 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -10491,7 -10439,7 +10500,7 @@@ F:   drivers/media/tuners/tda18218
  TDA18271 MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -10501,7 -10449,7 +10510,7 @@@ F:   drivers/media/tuners/tda18271
  TDA827x MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -10511,7 -10459,7 +10520,7 @@@ F:   drivers/media/tuners/tda8290.
  TDA8290 MEDIA DRIVER
  M:    Michael Krufky <mkrufky@linuxtv.org>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://github.com/mkrufky
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mkrufky/tuners.git
@@@ -10522,14 -10470,14 +10531,14 @@@ TDA9840 MEDIA DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/i2c/tda9840*
  
  TEA5761 TUNER DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    drivers/media/tuners/tea5761.*
  TEA5767 TUNER DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/tuners/tea5767.*
@@@ -10546,7 -10494,7 +10555,7 @@@ TEA6415C MEDIA DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/i2c/tea6415c*
  
@@@ -10554,7 -10502,7 +10563,7 @@@ TEA6420 MEDIA DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/i2c/tea6420*
  
@@@ -10652,7 -10600,7 +10661,7 @@@ THANKO'S RAREMONO AM/FM/SW RADIO RECEIV
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/radio/radio-raremono.c
  
@@@ -10876,7 -10824,7 +10885,7 @@@ M:   Mats Randgaard <matrandg@cisco.com
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/i2c/tc358743*
 -F:    include/media/tc358743.h
 +F:    include/media/i2c/tc358743.h
  
  TMIO MMC DRIVER
  M:    Ian Molton <ian@mnementh.co.uk>
@@@ -10904,7 -10852,7 +10913,7 @@@ F:   mm/shmem.
  TM6000 VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Odd fixes
  F:    drivers/media/usb/tm6000/
@@@ -10913,7 -10861,7 +10922,7 @@@ TW68 VIDEO4LINUX DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/pci/tw68/
  
@@@ -10974,7 -10922,7 +10983,7 @@@ F:   include/uapi/linux/tty.
  TUA9001 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org/
 +W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/anttip/media_tree.git
@@@ -11176,7 -11124,6 +11185,7 @@@ F:   include/linux/usb/gadget
  
  USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
  M:    Jiri Kosina <jikos@kernel.org>
 +R:    Benjamin Tissoires <benjamin.tissoires@redhat.com>
  L:    linux-usb@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
  S:    Maintained
@@@ -11218,7 -11165,7 +11227,7 @@@ F:   Documentation/usb/ohci.tx
  F:    drivers/usb/host/ohci*
  
  USB OTG FSM (Finite State Machine)
 -M:    Peter Chen <Peter.Chen@freescale.com>
 +M:    Peter Chen <Peter.Chen@nxp.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git
  L:    linux-usb@vger.kernel.org
  S:    Maintained
@@@ -11254,13 -11201,6 +11263,13 @@@ L: linux-usb@vger.kernel.or
  S:    Supported
  F:    drivers/usb/class/usblp.c
  
 +USB QMI WWAN NETWORK DRIVER
 +M:    Bjørn Mork <bjorn@mork.no>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-class-net-qmi
 +F:    drivers/net/usb/qmi_wwan.c
 +
  USB RTL8150 DRIVER
  M:    Petko Manolov <petkan@nucleusys.com>
  L:    linux-usb@vger.kernel.org
@@@ -11329,7 -11269,7 +11338,7 @@@ USB VISION DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Odd Fixes
  F:    drivers/media/usb/usbvision/
  
@@@ -11357,7 -11297,7 +11366,7 @@@ USB ZD1201 DRIVE
  L:    linux-wireless@vger.kernel.org
  W:    http://linux-lc100020.sourceforge.net
  S:    Orphan
 -F:    drivers/net/wireless/zd1201.*
 +F:    drivers/net/wireless/zydas/zd1201.*
  
  USB ZR364XX DRIVER
  M:    Antoine Jacquet <royale@zerezo.com>
@@@ -11543,7 -11483,7 +11552,7 @@@ VIVID VIRTUAL VIDEO DRIVE
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  S:    Maintained
  F:    drivers/media/platform/vivid/*
  
@@@ -11689,7 -11629,6 +11698,7 @@@ F:   drivers/input/tablet/wacom_serial4.
  
  WATCHDOG DEVICE DRIVERS
  M:    Wim Van Sebroeck <wim@iguana.be>
 +R:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-watchdog@vger.kernel.org
  W:    http://www.linux-watchdog.org/
  T:    git git://www.linux-watchdog.org/linux-watchdog.git
@@@ -11761,7 -11700,6 +11770,7 @@@ F:   drivers/input/touchscreen/wm831x-ts.
  F:    drivers/input/touchscreen/wm97*.c
  F:    drivers/mfd/arizona*
  F:    drivers/mfd/wm*.c
 +F:    drivers/mfd/cs47l24*
  F:    drivers/power/wm83*.c
  F:    drivers/rtc/rtc-wm83*.c
  F:    drivers/regulator/wm8*.c
@@@ -11775,7 -11713,6 +11784,7 @@@ F:   include/linux/wm97xx.
  F:    include/sound/wm????.h
  F:    sound/soc/codecs/arizona.?
  F:    sound/soc/codecs/wm*
 +F:    sound/soc/codecs/cs47l24*
  
  WORKQUEUE
  M:    Tejun Heo <tj@kernel.org>
@@@ -11835,7 -11772,7 +11844,7 @@@ F:   arch/x86/entry/vdso
  XC2028/3028 TUNER DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
 -W:    http://linuxtv.org
 +W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/tuners/tuner-xc2028.*
@@@ -11991,7 -11928,7 +12000,7 @@@ W:   http://zd1211.ath.cx/wiki/DriverRewr
  L:    linux-wireless@vger.kernel.org
  L:    zd1211-devs@lists.sourceforge.net (subscribers-only)
  S:    Maintained
 -F:    drivers/net/wireless/zd1211rw/
 +F:    drivers/net/wireless/zydas/zd1211rw/
  
  ZPOOL COMPRESSED PAGE STORAGE API
  M:    Dan Streetman <ddstreet@ieee.org>
@@@ -12004,7 -11941,7 +12013,7 @@@ ZR36067 VIDEO FOR LINUX DRIVE
  L:    mjpeg-users@lists.sourceforge.net
  L:    linux-media@vger.kernel.org
  W:    http://mjpeg.sourceforge.net/driver-zoran/
 -T:    hg http://linuxtv.org/hg/v4l-dvb
 +T:    hg https://linuxtv.org/hg/v4l-dvb
  S:    Odd Fixes
  F:    drivers/media/pci/zoran/
  
index 6fa0e47a14153a5198c0b6f3d4ae284733223fda,4aae9dd2b0d18daaf8b9b3922c938404dfe31c7b..3a9e75b2cf6b773415da6fd3cf42da3f28d2a43e
@@@ -12,7 -12,7 +12,7 @@@
   */
  
  #ifndef _EXYNOS_DRM_FB_H_
 -#define _EXYNOS_DRM_FB_H
 +#define _EXYNOS_DRM_FB_H_
  
  #include "exynos_drm_gem.h"
  
@@@ -22,8 -22,7 +22,7 @@@ exynos_drm_framebuffer_init(struct drm_
                            struct exynos_drm_gem **exynos_gem,
                            int count);
  
- /* get gem object of a drm framebuffer */
- struct exynos_drm_gem *exynos_drm_fb_gem(struct drm_framebuffer *fb, int index);
+ dma_addr_t exynos_drm_fb_dma_addr(struct drm_framebuffer *fb, int index);
  
  void exynos_drm_mode_config_init(struct drm_device *dev);
  
index 622d30c6c37f3438164273ea2753c8349f410f0d,580d094bfc1e1fc7426a937b721b29062ac9fe8e..2f00828ccc6e923a65447424c716d9cc5ee0e99b
@@@ -44,6 -44,8 +44,8 @@@
  #include <drm/drm_plane_helper.h>
  #include <drm/drm_rect.h>
  #include <linux/dma_remapping.h>
+ #include <linux/reservation.h>
+ #include <linux/dma-buf.h>
  
  /* Primary plane formats for gen <= 3 */
  static const uint32_t i8xx_primary_formats[] = {
@@@ -186,7 -188,7 +188,7 @@@ int intel_hrawclk(struct drm_device *de
        uint32_t clkcfg;
  
        /* There is no CLKCFG reg in Valleyview. VLV hrawclk is 200 MHz */
-       if (IS_VALLEYVIEW(dev))
+       if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
                return 200;
  
        clkcfg = I915_READ(CLKCFG);
  
  static void intel_update_czclk(struct drm_i915_private *dev_priv)
  {
-       if (!IS_VALLEYVIEW(dev_priv))
+       if (!(IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)))
                return;
  
        dev_priv->czclk_freq = vlv_get_cck_clock_hpll(dev_priv, "czclk",
@@@ -715,11 -717,12 +717,12 @@@ static bool intel_PLL_is_valid(struct d
        if (clock->m1  < limit->m1.min  || limit->m1.max  < clock->m1)
                INTELPllInvalid("m1 out of range\n");
  
-       if (!IS_PINEVIEW(dev) && !IS_VALLEYVIEW(dev) && !IS_BROXTON(dev))
+       if (!IS_PINEVIEW(dev) && !IS_VALLEYVIEW(dev) &&
+           !IS_CHERRYVIEW(dev) && !IS_BROXTON(dev))
                if (clock->m1 <= clock->m2)
                        INTELPllInvalid("m1 <= m2\n");
  
-       if (!IS_VALLEYVIEW(dev) && !IS_BROXTON(dev)) {
+       if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) && !IS_BROXTON(dev)) {
                if (clock->p < limit->p.min || limit->p.max < clock->p)
                        INTELPllInvalid("p out of range\n");
                if (clock->m < limit->m.min || limit->m.max < clock->m)
@@@ -1304,7 -1307,7 +1307,7 @@@ void assert_panel_unlocked(struct drm_i
                    I915_READ(PCH_LVDS) & LVDS_PIPEB_SELECT)
                        panel_pipe = PIPE_B;
                /* XXX: else fix for eDP */
-       } else if (IS_VALLEYVIEW(dev)) {
+       } else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
                /* presumably write lock depends on pipe, not port select */
                pp_reg = VLV_PIPE_PP_CONTROL(pipe);
                panel_pipe = pipe;
@@@ -1422,7 -1425,7 +1425,7 @@@ static void assert_sprites_disabled(str
                             "plane %d assertion failure, should be off on pipe %c but is still active\n",
                             sprite, pipe_name(pipe));
                }
-       } else if (IS_VALLEYVIEW(dev)) {
+       } else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
                for_each_sprite(dev_priv, pipe, sprite) {
                        u32 val = I915_READ(SPCNTR(pipe, sprite));
                        I915_STATE_WARN(val & SP_ENABLE,
@@@ -1605,9 -1608,6 +1608,6 @@@ static void vlv_enable_pll(struct intel
  
        assert_pipe_disabled(dev_priv, crtc->pipe);
  
-       /* No really, not for ILK+ */
-       BUG_ON(!IS_VALLEYVIEW(dev_priv->dev));
        /* PLL is protected by panel, make sure we can write it */
        if (IS_MOBILE(dev_priv->dev))
                assert_panel_unlocked(dev_priv, crtc->pipe);
@@@ -1645,8 -1645,6 +1645,6 @@@ static void chv_enable_pll(struct intel
  
        assert_pipe_disabled(dev_priv, crtc->pipe);
  
-       BUG_ON(!IS_CHERRYVIEW(dev_priv->dev));
        mutex_lock(&dev_priv->sb_lock);
  
        /* Enable back the 10bit clock to display controller */
@@@ -2131,7 -2129,7 +2129,7 @@@ static void intel_enable_pipe(struct in
         * need the check.
         */
        if (HAS_GMCH_DISPLAY(dev_priv->dev))
-               if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DSI))
+               if (crtc->config->has_dsi_encoder)
                        assert_dsi_pll_enabled(dev_priv);
                else
                        assert_pll_enabled(dev_priv, pipe);
@@@ -2318,7 -2316,7 +2316,7 @@@ static unsigned int intel_linear_alignm
        if (INTEL_INFO(dev_priv)->gen >= 9)
                return 256 * 1024;
        else if (IS_BROADWATER(dev_priv) || IS_CRESTLINE(dev_priv) ||
-                IS_VALLEYVIEW(dev_priv))
+                IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
                return 128 * 1024;
        else if (INTEL_INFO(dev_priv)->gen >= 4)
                return 4 * 1024;
@@@ -3189,8 -3187,8 +3187,8 @@@ intel_pipe_set_base_atomic(struct drm_c
        struct drm_device *dev = crtc->dev;
        struct drm_i915_private *dev_priv = dev->dev_private;
  
-       if (dev_priv->fbc.disable_fbc)
-               dev_priv->fbc.disable_fbc(dev_priv);
+       if (dev_priv->fbc.deactivate)
+               dev_priv->fbc.deactivate(dev_priv);
  
        dev_priv->display.update_primary_plane(crtc, fb, x, y);
  
@@@ -3953,6 -3951,21 +3951,21 @@@ static int intel_crtc_wait_for_pending_
        return 0;
  }
  
+ static void lpt_disable_iclkip(struct drm_i915_private *dev_priv)
+ {
+       u32 temp;
+       I915_WRITE(PIXCLK_GATE, PIXCLK_GATE_GATE);
+       mutex_lock(&dev_priv->sb_lock);
+       temp = intel_sbi_read(dev_priv, SBI_SSCCTL6, SBI_ICLK);
+       temp |= SBI_SSCCTL_DISABLE;
+       intel_sbi_write(dev_priv, SBI_SSCCTL6, temp, SBI_ICLK);
+       mutex_unlock(&dev_priv->sb_lock);
+ }
  /* Program iCLKIP clock to the desired frequency */
  static void lpt_program_iclkip(struct drm_crtc *crtc)
  {
        u32 divsel, phaseinc, auxdiv, phasedir = 0;
        u32 temp;
  
-       mutex_lock(&dev_priv->sb_lock);
-       /* It is necessary to ungate the pixclk gate prior to programming
-        * the divisors, and gate it back when it is done.
-        */
-       I915_WRITE(PIXCLK_GATE, PIXCLK_GATE_GATE);
-       /* Disable SSCCTL */
-       intel_sbi_write(dev_priv, SBI_SSCCTL6,
-                       intel_sbi_read(dev_priv, SBI_SSCCTL6, SBI_ICLK) |
-                               SBI_SSCCTL_DISABLE,
-                       SBI_ICLK);
+       lpt_disable_iclkip(dev_priv);
  
        /* 20MHz is a corner case which is out of range for the 7-bit divisor */
        if (clock == 20000) {
                u32 iclk_pi_range = 64;
                u32 desired_divisor, msb_divisor_value, pi_value;
  
-               desired_divisor = (iclk_virtual_root_freq / clock);
+               desired_divisor = DIV_ROUND_CLOSEST(iclk_virtual_root_freq, clock);
                msb_divisor_value = desired_divisor / iclk_pi_range;
                pi_value = desired_divisor % iclk_pi_range;
  
                        phasedir,
                        phaseinc);
  
+       mutex_lock(&dev_priv->sb_lock);
        /* Program SSCDIVINTPHASE6 */
        temp = intel_sbi_read(dev_priv, SBI_SSCDIVINTPHASE6, SBI_ICLK);
        temp &= ~SBI_SSCDIVINTPHASE_DIVSEL_MASK;
        temp &= ~SBI_SSCCTL_DISABLE;
        intel_sbi_write(dev_priv, SBI_SSCCTL6, temp, SBI_ICLK);
  
+       mutex_unlock(&dev_priv->sb_lock);
        /* Wait for initialization time */
        udelay(24);
  
        I915_WRITE(PIXCLK_GATE, PIXCLK_GATE_UNGATE);
-       mutex_unlock(&dev_priv->sb_lock);
  }
  
  static void ironlake_pch_transcoder_set_timings(struct intel_crtc *crtc,
@@@ -4152,6 -4156,12 +4156,12 @@@ static void ironlake_pch_enable(struct 
        I915_WRITE(FDI_RX_TUSIZE1(pipe),
                   I915_READ(PIPE_DATA_M1(pipe)) & TU_SIZE_MASK);
  
+       /*
+        * Sometimes spurious CPU pipe underruns happen during FDI
+        * training, at least with VGA+HDMI cloning. Suppress them.
+        */
+       intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, false);
        /* For PCH output, training FDI link */
        dev_priv->display.fdi_link_train(crtc);
  
  
        intel_fdi_normal_train(crtc);
  
+       intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, true);
        /* For PCH DP, enable TRANS_DP_CTL */
        if (HAS_PCH_CPT(dev) && intel_crtc->config->has_dp_encoder) {
                const struct drm_display_mode *adjusted_mode =
@@@ -4643,7 -4655,7 +4655,7 @@@ static void intel_crtc_load_lut(struct 
                return;
  
        if (HAS_GMCH_DISPLAY(dev_priv->dev)) {
-               if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DSI))
+               if (intel_crtc->config->has_dsi_encoder)
                        assert_dsi_pll_enabled(dev_priv);
                else
                        assert_pll_enabled(dev_priv, pipe);
@@@ -4713,14 -4725,6 +4725,6 @@@ intel_post_enable_primary(struct drm_cr
        struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
        int pipe = intel_crtc->pipe;
  
-       /*
-        * BDW signals flip done immediately if the plane
-        * is disabled, even if the plane enable is already
-        * armed to occur at the next vblank :(
-        */
-       if (IS_BROADWELL(dev))
-               intel_wait_for_vblank(dev, pipe);
        /*
         * FIXME IPS should be fine as long as one plane is
         * enabled, but in practice it seems to have problems
@@@ -4798,22 -4802,22 +4802,22 @@@ intel_pre_disable_primary(struct drm_cr
  static void intel_post_plane_update(struct intel_crtc *crtc)
  {
        struct intel_crtc_atomic_commit *atomic = &crtc->atomic;
+       struct intel_crtc_state *pipe_config =
+               to_intel_crtc_state(crtc->base.state);
        struct drm_device *dev = crtc->base.dev;
-       struct drm_i915_private *dev_priv = dev->dev_private;
  
        if (atomic->wait_vblank)
                intel_wait_for_vblank(dev, crtc->pipe);
  
        intel_frontbuffer_flip(dev, atomic->fb_bits);
  
-       if (atomic->disable_cxsr)
-               crtc->wm.cxsr_allowed = true;
+       crtc->wm.cxsr_allowed = true;
  
-       if (crtc->atomic.update_wm_post)
+       if (pipe_config->wm_changed && pipe_config->base.active)
                intel_update_watermarks(&crtc->base);
  
        if (atomic->update_fbc)
-               intel_fbc_update(dev_priv);
+               intel_fbc_update(crtc);
  
        if (atomic->post_enable_primary)
                intel_post_enable_primary(&crtc->base);
@@@ -4826,9 -4830,11 +4830,11 @@@ static void intel_pre_plane_update(stru
        struct drm_device *dev = crtc->base.dev;
        struct drm_i915_private *dev_priv = dev->dev_private;
        struct intel_crtc_atomic_commit *atomic = &crtc->atomic;
+       struct intel_crtc_state *pipe_config =
+               to_intel_crtc_state(crtc->base.state);
  
        if (atomic->disable_fbc)
-               intel_fbc_disable_crtc(crtc);
+               intel_fbc_deactivate(crtc);
  
        if (crtc->atomic.disable_ips)
                hsw_disable_ips(crtc);
        if (atomic->pre_disable_primary)
                intel_pre_disable_primary(&crtc->base);
  
-       if (atomic->disable_cxsr) {
+       if (pipe_config->disable_cxsr) {
                crtc->wm.cxsr_allowed = false;
                intel_set_memory_cxsr(dev_priv, false);
        }
+       if (!needs_modeset(&pipe_config->base) && pipe_config->wm_changed)
+               intel_update_watermarks(&crtc->base);
  }
  
  static void intel_crtc_disable_planes(struct drm_crtc *crtc, unsigned plane_mask)
@@@ -4936,6 -4945,8 +4945,8 @@@ static void ironlake_crtc_enable(struc
        if (intel_crtc->config->has_pch_encoder)
                intel_wait_for_vblank(dev, pipe);
        intel_set_pch_fifo_underrun_reporting(dev_priv, pipe, true);
+       intel_fbc_enable(intel_crtc);
  }
  
  /* IPS only exists on ULT machines and is tied to pipe A. */
@@@ -4953,7 -4964,6 +4964,6 @@@ static void haswell_crtc_enable(struct 
        int pipe = intel_crtc->pipe, hsw_workaround_pipe;
        struct intel_crtc_state *pipe_config =
                to_intel_crtc_state(crtc->state);
-       bool is_dsi = intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DSI);
  
        if (WARN_ON(intel_crtc->active))
                return;
  
        intel_crtc->active = true;
  
-       intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, true);
+       if (intel_crtc->config->has_pch_encoder)
+               intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, false);
+       else
+               intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, true);
        for_each_encoder_on_crtc(dev, crtc, encoder) {
-               if (encoder->pre_pll_enable)
-                       encoder->pre_pll_enable(encoder);
                if (encoder->pre_enable)
                        encoder->pre_enable(encoder);
        }
        if (intel_crtc->config->has_pch_encoder)
                dev_priv->display.fdi_link_train(crtc);
  
-       if (!is_dsi)
+       if (!intel_crtc->config->has_dsi_encoder)
                intel_ddi_enable_pipe_clock(intel_crtc);
  
        if (INTEL_INFO(dev)->gen >= 9)
        intel_crtc_load_lut(crtc);
  
        intel_ddi_set_pipe_settings(crtc);
-       if (!is_dsi)
+       if (!intel_crtc->config->has_dsi_encoder)
                intel_ddi_enable_transcoder_func(crtc);
  
        intel_update_watermarks(crtc);
        if (intel_crtc->config->has_pch_encoder)
                lpt_pch_enable(crtc);
  
-       if (intel_crtc->config->dp_encoder_is_mst && !is_dsi)
+       if (intel_crtc->config->dp_encoder_is_mst)
                intel_ddi_set_vc_payload_alloc(crtc, true);
  
        assert_vblank_disabled(crtc);
                intel_opregion_notify_encoder(encoder, true);
        }
  
-       if (intel_crtc->config->has_pch_encoder)
+       if (intel_crtc->config->has_pch_encoder) {
+               intel_wait_for_vblank(dev, pipe);
+               intel_wait_for_vblank(dev, pipe);
+               intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, true);
                intel_set_pch_fifo_underrun_reporting(dev_priv, TRANSCODER_A,
                                                      true);
+       }
  
        /* If we change the relative order between pipe/planes enabling, we need
         * to change the workaround. */
                intel_wait_for_vblank(dev, hsw_workaround_pipe);
                intel_wait_for_vblank(dev, hsw_workaround_pipe);
        }
+       intel_fbc_enable(intel_crtc);
  }
  
  static void ironlake_pfit_disable(struct intel_crtc *crtc, bool force)
@@@ -5077,12 -5095,22 +5095,22 @@@ static void ironlake_crtc_disable(struc
        drm_crtc_vblank_off(crtc);
        assert_vblank_disabled(crtc);
  
+       /*
+        * Sometimes spurious CPU pipe underruns happen when the
+        * pipe is already disabled, but FDI RX/TX is still enabled.
+        * Happens at least with VGA+HDMI cloning. Suppress them.
+        */
+       if (intel_crtc->config->has_pch_encoder)
+               intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, false);
        intel_disable_pipe(intel_crtc);
  
        ironlake_pfit_disable(intel_crtc, false);
  
-       if (intel_crtc->config->has_pch_encoder)
+       if (intel_crtc->config->has_pch_encoder) {
                ironlake_fdi_disable(crtc);
+               intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, true);
+       }
  
        for_each_encoder_on_crtc(dev, crtc, encoder)
                if (encoder->post_disable)
        }
  
        intel_set_pch_fifo_underrun_reporting(dev_priv, pipe, true);
+       intel_fbc_disable_crtc(intel_crtc);
  }
  
  static void haswell_crtc_disable(struct drm_crtc *crtc)
        struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
        struct intel_encoder *encoder;
        enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder;
-       bool is_dsi = intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DSI);
  
        if (intel_crtc->config->has_pch_encoder)
                intel_set_pch_fifo_underrun_reporting(dev_priv, TRANSCODER_A,
        if (intel_crtc->config->dp_encoder_is_mst)
                intel_ddi_set_vc_payload_alloc(crtc, false);
  
-       if (!is_dsi)
+       if (!intel_crtc->config->has_dsi_encoder)
                intel_ddi_disable_transcoder_func(dev_priv, cpu_transcoder);
  
        if (INTEL_INFO(dev)->gen >= 9)
        else
                ironlake_pfit_disable(intel_crtc, false);
  
-       if (!is_dsi)
+       if (!intel_crtc->config->has_dsi_encoder)
                intel_ddi_disable_pipe_clock(intel_crtc);
  
-       if (intel_crtc->config->has_pch_encoder) {
-               lpt_disable_pch_transcoder(dev_priv);
-               intel_ddi_fdi_disable(crtc);
-       }
        for_each_encoder_on_crtc(dev, crtc, encoder)
                if (encoder->post_disable)
                        encoder->post_disable(encoder);
  
-       if (intel_crtc->config->has_pch_encoder)
+       if (intel_crtc->config->has_pch_encoder) {
+               lpt_disable_pch_transcoder(dev_priv);
+               lpt_disable_iclkip(dev_priv);
+               intel_ddi_fdi_disable(crtc);
                intel_set_pch_fifo_underrun_reporting(dev_priv, TRANSCODER_A,
                                                      true);
+       }
+       intel_fbc_disable_crtc(intel_crtc);
  }
  
  static void i9xx_pfit_enable(struct intel_crtc *crtc)
@@@ -5229,10 -5260,6 +5260,6 @@@ static enum intel_display_power_domain 
        }
  }
  
- #define for_each_power_domain(domain, mask)                           \
-       for ((domain) = 0; (domain) < POWER_DOMAIN_NUM; (domain)++)     \
-               if ((1 << (domain)) & (mask))
  enum intel_display_power_domain
  intel_display_port_power_domain(struct intel_encoder *intel_encoder)
  {
@@@ -5445,7 -5472,7 +5472,7 @@@ static void intel_update_cdclk(struct d
         * BSpec erroneously claims we should aim for 4MHz, but
         * in fact 1MHz is the correct frequency.
         */
-       if (IS_VALLEYVIEW(dev)) {
+       if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
                /*
                 * Program the gmbus_freq based on the cdclk frequency.
                 * BSpec erroneously claims we should aim for 4MHz, but
@@@ -6155,13 -6182,10 +6182,10 @@@ static void valleyview_crtc_enable(stru
        struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
        struct intel_encoder *encoder;
        int pipe = intel_crtc->pipe;
-       bool is_dsi;
  
        if (WARN_ON(intel_crtc->active))
                return;
  
-       is_dsi = intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DSI);
        if (intel_crtc->config->has_dp_encoder)
                intel_dp_set_m_n(intel_crtc, M1_N1);
  
                if (encoder->pre_pll_enable)
                        encoder->pre_pll_enable(encoder);
  
-       if (!is_dsi) {
+       if (!intel_crtc->config->has_dsi_encoder) {
                if (IS_CHERRYVIEW(dev)) {
                        chv_prepare_pll(intel_crtc, intel_crtc->config);
                        chv_enable_pll(intel_crtc, intel_crtc->config);
@@@ -6263,6 -6287,8 +6287,8 @@@ static void i9xx_crtc_enable(struct drm
  
        for_each_encoder_on_crtc(dev, crtc, encoder)
                encoder->enable(encoder);
+       intel_fbc_enable(intel_crtc);
  }
  
  static void i9xx_pfit_disable(struct intel_crtc *crtc)
@@@ -6310,7 -6336,7 +6336,7 @@@ static void i9xx_crtc_disable(struct dr
                if (encoder->post_disable)
                        encoder->post_disable(encoder);
  
-       if (!intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DSI)) {
+       if (!intel_crtc->config->has_dsi_encoder) {
                if (IS_CHERRYVIEW(dev))
                        chv_disable_pll(dev_priv, pipe);
                else if (IS_VALLEYVIEW(dev))
  
        if (!IS_GEN2(dev))
                intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, false);
+       intel_fbc_disable_crtc(intel_crtc);
  }
  
  static void intel_crtc_disable_noatomic(struct drm_crtc *crtc)
@@@ -6464,13 -6492,11 +6492,11 @@@ static void intel_connector_check_state
  
  int intel_connector_init(struct intel_connector *connector)
  {
-       struct drm_connector_state *connector_state;
+       drm_atomic_helper_connector_reset(&connector->base);
  
-       connector_state = kzalloc(sizeof *connector_state, GFP_KERNEL);
-       if (!connector_state)
+       if (!connector->base.state)
                return -ENOMEM;
  
-       connector->base.state = connector_state;
        return 0;
  }
  
@@@ -7171,7 -7197,7 +7197,7 @@@ static int i9xx_get_refclk(const struc
  
        WARN_ON(!crtc_state->base.state);
  
-       if (IS_VALLEYVIEW(dev) || IS_BROXTON(dev)) {
+       if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev) || IS_BROXTON(dev)) {
                refclk = 100000;
        } else if (intel_pipe_will_have_type(crtc_state, INTEL_OUTPUT_LVDS) &&
            intel_panel_use_ssc(dev_priv) && num_connectors < 2) {
@@@ -7870,7 -7896,7 +7896,7 @@@ static void i9xx_set_pipeconf(struct in
                pipeconf |= PIPECONF_DOUBLE_WIDE;
  
        /* only g4x and later have fancy bpc/dither controls */
-       if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) {
+       if (IS_G4X(dev) || IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
                /* Bspec claims that we can't use dithering for 30bpp pipes. */
                if (intel_crtc->config->dither && intel_crtc->config->pipe_bpp != 30)
                        pipeconf |= PIPECONF_DITHER_EN |
        } else
                pipeconf |= PIPECONF_PROGRESSIVE;
  
-       if (IS_VALLEYVIEW(dev) && intel_crtc->config->limited_color_range)
+       if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
+            intel_crtc->config->limited_color_range)
                pipeconf |= PIPECONF_COLOR_RANGE_SELECT;
  
        I915_WRITE(PIPECONF(intel_crtc->pipe), pipeconf);
@@@ -7925,8 -7952,6 +7952,6 @@@ static int i9xx_crtc_compute_clock(stru
        int refclk, num_connectors = 0;
        intel_clock_t clock;
        bool ok;
-       bool is_dsi = false;
-       struct intel_encoder *encoder;
        const intel_limit_t *limit;
        struct drm_atomic_state *state = crtc_state->base.state;
        struct drm_connector *connector;
        memset(&crtc_state->dpll_hw_state, 0,
               sizeof(crtc_state->dpll_hw_state));
  
-       for_each_connector_in_state(state, connector, connector_state, i) {
-               if (connector_state->crtc != &crtc->base)
-                       continue;
-               encoder = to_intel_encoder(connector_state->best_encoder);
-               switch (encoder->type) {
-               case INTEL_OUTPUT_DSI:
-                       is_dsi = true;
-                       break;
-               default:
-                       break;
-               }
+       if (crtc_state->has_dsi_encoder)
+               return 0;
  
-               num_connectors++;
+       for_each_connector_in_state(state, connector, connector_state, i) {
+               if (connector_state->crtc == &crtc->base)
+                       num_connectors++;
        }
  
-       if (is_dsi)
-               return 0;
        if (!crtc_state->clock_set) {
                refclk = i9xx_get_refclk(crtc_state, num_connectors);
  
@@@ -8171,7 -8184,7 +8184,7 @@@ static bool i9xx_get_pipe_config(struc
        if (!(tmp & PIPECONF_ENABLE))
                return false;
  
-       if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) {
+       if (IS_G4X(dev) || IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
                switch (tmp & PIPECONF_BPC_MASK) {
                case PIPECONF_6BPC:
                        pipe_config->pipe_bpp = 18;
                }
        }
  
-       if (IS_VALLEYVIEW(dev) && (tmp & PIPECONF_COLOR_RANGE_SELECT))
+       if ((IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) &&
+           (tmp & PIPECONF_COLOR_RANGE_SELECT))
                pipe_config->limited_color_range = true;
  
        if (INTEL_INFO(dev)->gen < 4)
                pipe_config->pixel_multiplier = 1;
        }
        pipe_config->dpll_hw_state.dpll = I915_READ(DPLL(crtc->pipe));
-       if (!IS_VALLEYVIEW(dev)) {
+       if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
                /*
                 * DPLL_DVO_2X_MODE must be enabled for both DPLLs
                 * on 830. Filter it out here so that we don't
@@@ -8567,6 -8581,67 +8581,67 @@@ static void lpt_disable_clkout_dp(struc
        mutex_unlock(&dev_priv->sb_lock);
  }
  
+ #define BEND_IDX(steps) ((50 + (steps)) / 5)
+ static const uint16_t sscdivintphase[] = {
+       [BEND_IDX( 50)] = 0x3B23,
+       [BEND_IDX( 45)] = 0x3B23,
+       [BEND_IDX( 40)] = 0x3C23,
+       [BEND_IDX( 35)] = 0x3C23,
+       [BEND_IDX( 30)] = 0x3D23,
+       [BEND_IDX( 25)] = 0x3D23,
+       [BEND_IDX( 20)] = 0x3E23,
+       [BEND_IDX( 15)] = 0x3E23,
+       [BEND_IDX( 10)] = 0x3F23,
+       [BEND_IDX(  5)] = 0x3F23,
+       [BEND_IDX(  0)] = 0x0025,
+       [BEND_IDX( -5)] = 0x0025,
+       [BEND_IDX(-10)] = 0x0125,
+       [BEND_IDX(-15)] = 0x0125,
+       [BEND_IDX(-20)] = 0x0225,
+       [BEND_IDX(-25)] = 0x0225,
+       [BEND_IDX(-30)] = 0x0325,
+       [BEND_IDX(-35)] = 0x0325,
+       [BEND_IDX(-40)] = 0x0425,
+       [BEND_IDX(-45)] = 0x0425,
+       [BEND_IDX(-50)] = 0x0525,
+ };
+ /*
+  * Bend CLKOUT_DP
+  * steps -50 to 50 inclusive, in steps of 5
+  * < 0 slow down the clock, > 0 speed up the clock, 0 == no bend (135MHz)
+  * change in clock period = -(steps / 10) * 5.787 ps
+  */
+ static void lpt_bend_clkout_dp(struct drm_i915_private *dev_priv, int steps)
+ {
+       uint32_t tmp;
+       int idx = BEND_IDX(steps);
+       if (WARN_ON(steps % 5 != 0))
+               return;
+       if (WARN_ON(idx >= ARRAY_SIZE(sscdivintphase)))
+               return;
+       mutex_lock(&dev_priv->sb_lock);
+       if (steps % 10 != 0)
+               tmp = 0xAAAAAAAB;
+       else
+               tmp = 0x00000000;
+       intel_sbi_write(dev_priv, SBI_SSCDITHPHASE, tmp, SBI_ICLK);
+       tmp = intel_sbi_read(dev_priv, SBI_SSCDIVINTPHASE, SBI_ICLK);
+       tmp &= 0xffff0000;
+       tmp |= sscdivintphase[idx];
+       intel_sbi_write(dev_priv, SBI_SSCDIVINTPHASE, tmp, SBI_ICLK);
+       mutex_unlock(&dev_priv->sb_lock);
+ }
+ #undef BEND_IDX
  static void lpt_init_pch_refclk(struct drm_device *dev)
  {
        struct intel_encoder *encoder;
                }
        }
  
-       if (has_vga)
+       if (has_vga) {
+               lpt_bend_clkout_dp(to_i915(dev), 0);
                lpt_enable_clkout_dp(dev, true, true);
-       else
+       } else {
                lpt_disable_clkout_dp(dev);
+       }
  }
  
  /*
@@@ -8948,7 -9025,7 +9025,7 @@@ static int ironlake_crtc_compute_clock(
        memset(&crtc_state->dpll_hw_state, 0,
               sizeof(crtc_state->dpll_hw_state));
  
-       is_lvds = intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS);
+       is_lvds = intel_pipe_will_have_type(crtc_state, INTEL_OUTPUT_LVDS);
  
        WARN(!(HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)),
             "Unexpected PCH type %d\n", INTEL_PCH_TYPE(dev));
@@@ -9722,14 -9799,10 +9799,10 @@@ static int broadwell_modeset_calc_cdclk
        else
                cdclk = 337500;
  
-       /*
-        * FIXME move the cdclk caclulation to
-        * compute_config() so we can fail gracegully.
-        */
        if (cdclk > dev_priv->max_cdclk_freq) {
-               DRM_ERROR("requested cdclk (%d kHz) exceeds max (%d kHz)\n",
-                         cdclk, dev_priv->max_cdclk_freq);
-               cdclk = dev_priv->max_cdclk_freq;
+               DRM_DEBUG_KMS("requested cdclk (%d kHz) exceeds max (%d kHz)\n",
+                             cdclk, dev_priv->max_cdclk_freq);
+               return -EINVAL;
        }
  
        to_intel_atomic_state(state)->cdclk = cdclk;
@@@ -9824,6 -9897,7 +9897,7 @@@ static void haswell_get_ddi_pll(struct 
                break;
        case PORT_CLK_SEL_SPLL:
                pipe_config->shared_dpll = DPLL_ID_SPLL;
+               break;
        }
  }
  
@@@ -11203,6 -11277,10 +11277,10 @@@ static bool use_mmio_flip(struct intel_
                return true;
        else if (i915.enable_execlists)
                return true;
+       else if (obj->base.dma_buf &&
+                !reservation_object_test_signaled_rcu(obj->base.dma_buf->resv,
+                                                      false))
+               return true;
        else
                return ring != i915_gem_request_get_ring(obj->last_write_req);
  }
@@@ -11317,6 -11395,9 +11395,9 @@@ static void intel_mmio_flip_work_func(s
  {
        struct intel_mmio_flip *mmio_flip =
                container_of(work, struct intel_mmio_flip, work);
+       struct intel_framebuffer *intel_fb =
+               to_intel_framebuffer(mmio_flip->crtc->base.primary->fb);
+       struct drm_i915_gem_object *obj = intel_fb->obj;
  
        if (mmio_flip->req) {
                WARN_ON(__i915_wait_request(mmio_flip->req,
                i915_gem_request_unreference__unlocked(mmio_flip->req);
        }
  
+       /* For framebuffer backed by dmabuf, wait for fence */
+       if (obj->base.dma_buf)
+               WARN_ON(reservation_object_wait_timeout_rcu(obj->base.dma_buf->resv,
+                                                           false, false,
+                                                           MAX_SCHEDULE_TIMEOUT) < 0);
        intel_do_mmio_flip(mmio_flip);
        kfree(mmio_flip);
  }
@@@ -11527,7 -11614,7 +11614,7 @@@ static int intel_crtc_page_flip(struct 
        if (INTEL_INFO(dev)->gen >= 5 || IS_G4X(dev))
                work->flip_count = I915_READ(PIPE_FLIPCOUNT_G4X(pipe)) + 1;
  
-       if (IS_VALLEYVIEW(dev)) {
+       if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
                ring = &dev_priv->ring[BCS];
                if (obj->tiling_mode != intel_fb_obj(work->old_fb)->tiling_mode)
                        /* vlv: DISPLAY_FLIP fails to change tiling */
                          to_intel_plane(primary)->frontbuffer_bit);
        mutex_unlock(&dev->struct_mutex);
  
-       intel_fbc_disable_crtc(intel_crtc);
+       intel_fbc_deactivate(intel_crtc);
        intel_frontbuffer_flip_prepare(dev,
                                       to_intel_plane(primary)->frontbuffer_bit);
  
@@@ -11683,9 -11770,14 +11770,14 @@@ static bool intel_wm_need_update(struc
        struct intel_plane_state *cur = to_intel_plane_state(plane->state);
  
        /* Update watermarks on tiling or size changes. */
-       if (!plane->state->fb || !state->fb ||
-           plane->state->fb->modifier[0] != state->fb->modifier[0] ||
-           plane->state->rotation != state->rotation ||
+       if (new->visible != cur->visible)
+               return true;
+       if (!cur->base.fb || !new->base.fb)
+               return false;
+       if (cur->base.fb->modifier[0] != new->base.fb->modifier[0] ||
+           cur->base.rotation != new->base.rotation ||
            drm_rect_width(&new->src) != drm_rect_width(&cur->src) ||
            drm_rect_height(&new->src) != drm_rect_height(&cur->src) ||
            drm_rect_width(&new->dst) != drm_rect_width(&cur->dst) ||
@@@ -11708,6 -11800,7 +11800,7 @@@ static bool needs_scaling(struct intel_
  int intel_plane_atomic_calc_changes(struct drm_crtc_state *crtc_state,
                                    struct drm_plane_state *plane_state)
  {
+       struct intel_crtc_state *pipe_config = to_intel_crtc_state(crtc_state);
        struct drm_crtc *crtc = crtc_state->crtc;
        struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
        struct drm_plane *plane = plane_state->plane;
                         plane->base.id, was_visible, visible,
                         turn_off, turn_on, mode_changed);
  
-       if (turn_on) {
-               intel_crtc->atomic.update_wm_pre = true;
-               /* must disable cxsr around plane enable/disable */
-               if (plane->type != DRM_PLANE_TYPE_CURSOR) {
-                       intel_crtc->atomic.disable_cxsr = true;
-                       /* to potentially re-enable cxsr */
-                       intel_crtc->atomic.wait_vblank = true;
-                       intel_crtc->atomic.update_wm_post = true;
-               }
-       } else if (turn_off) {
-               intel_crtc->atomic.update_wm_post = true;
+       if (turn_on || turn_off) {
+               pipe_config->wm_changed = true;
                /* must disable cxsr around plane enable/disable */
                if (plane->type != DRM_PLANE_TYPE_CURSOR) {
                        if (is_crtc_enabled)
                                intel_crtc->atomic.wait_vblank = true;
-                       intel_crtc->atomic.disable_cxsr = true;
+                       pipe_config->disable_cxsr = true;
                }
        } else if (intel_wm_need_update(plane, plane_state)) {
-               intel_crtc->atomic.update_wm_pre = true;
+               pipe_config->wm_changed = true;
        }
  
        if (visible || was_visible)
@@@ -11917,7 -12002,7 +12002,7 @@@ static int intel_crtc_atomic_check(stru
        }
  
        if (mode_changed && !crtc_state->active)
-               intel_crtc->atomic.update_wm_post = true;
+               pipe_config->wm_changed = true;
  
        if (mode_changed && crtc_state->enable &&
            dev_priv->display.crtc_compute_clock &&
@@@ -12008,7 -12093,7 +12093,7 @@@ compute_baseline_pipe_bpp(struct intel_
        struct drm_connector_state *connector_state;
        int bpp, i;
  
-       if ((IS_G4X(dev) || IS_VALLEYVIEW(dev)))
+       if ((IS_G4X(dev) || IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)))
                bpp = 10*3;
        else if (INTEL_INFO(dev)->gen >= 5)
                bpp = 12*3;
@@@ -12183,22 -12268,18 +12268,22 @@@ static void intel_dump_pipe_config(stru
  static bool check_digital_port_conflicts(struct drm_atomic_state *state)
  {
        struct drm_device *dev = state->dev;
 -      struct intel_encoder *encoder;
        struct drm_connector *connector;
 -      struct drm_connector_state *connector_state;
        unsigned int used_ports = 0;
 -      int i;
  
        /*
         * Walk the connector list instead of the encoder
         * list to detect the problem on ddi platforms
         * where there's just one encoder per digital port.
         */
 -      for_each_connector_in_state(state, connector, connector_state, i) {
 +      drm_for_each_connector(connector, dev) {
 +              struct drm_connector_state *connector_state;
 +              struct intel_encoder *encoder;
 +
 +              connector_state = drm_atomic_get_existing_connector_state(state, connector);
 +              if (!connector_state)
 +                      connector_state = connector->state;
 +
                if (!connector_state->best_encoder)
                        continue;
  
@@@ -12603,6 -12684,8 +12688,8 @@@ intel_pipe_config_compare(struct drm_de
        } else
                PIPE_CONF_CHECK_M_N_ALT(dp_m_n, dp_m2_n2);
  
+       PIPE_CONF_CHECK_I(has_dsi_encoder);
        PIPE_CONF_CHECK_I(base.adjusted_mode.crtc_hdisplay);
        PIPE_CONF_CHECK_I(base.adjusted_mode.crtc_htotal);
        PIPE_CONF_CHECK_I(base.adjusted_mode.crtc_hblank_start);
        PIPE_CONF_CHECK_I(pixel_multiplier);
        PIPE_CONF_CHECK_I(has_hdmi_sink);
        if ((INTEL_INFO(dev)->gen < 8 && !IS_HASWELL(dev)) ||
-           IS_VALLEYVIEW(dev))
+           IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
                PIPE_CONF_CHECK_I(limited_color_range);
        PIPE_CONF_CHECK_I(has_infoframe);
  
@@@ -13399,6 -13482,16 +13486,16 @@@ static int intel_atomic_commit(struct d
                        dev_priv->display.crtc_disable(crtc);
                        intel_crtc->active = false;
                        intel_disable_shared_dpll(intel_crtc);
+                       /*
+                        * Underruns don't always raise
+                        * interrupts, so check manually.
+                        */
+                       intel_check_cpu_fifo_underruns(dev_priv);
+                       intel_check_pch_fifo_underruns(dev_priv);
+                       if (!crtc->state->active)
+                               intel_update_watermarks(crtc);
                }
        }
  
@@@ -13668,6 -13761,19 +13765,19 @@@ intel_prepare_plane_fb(struct drm_plan
                        return ret;
        }
  
+       /* For framebuffer backed by dmabuf, wait for fence */
+       if (obj && obj->base.dma_buf) {
+               long lret;
+               lret = reservation_object_wait_timeout_rcu(obj->base.dma_buf->resv,
+                                                          false, true,
+                                                          MAX_SCHEDULE_TIMEOUT);
+               if (lret == -ERESTARTSYS)
+                       return lret;
+               WARN(lret < 0, "waiting returns %li\n", lret);
+       }
        if (!obj) {
                ret = 0;
        } else if (plane->type == DRM_PLANE_TYPE_CURSOR &&
@@@ -13823,9 -13929,6 +13933,6 @@@ static void intel_begin_crtc_commit(str
                to_intel_crtc_state(old_crtc_state);
        bool modeset = needs_modeset(crtc->state);
  
-       if (intel_crtc->atomic.update_wm_pre)
-               intel_update_watermarks(crtc);
        /* Perform vblank evasion around commit operation */
        intel_pipe_update_start(intel_crtc);
  
@@@ -13920,7 -14023,7 +14027,7 @@@ static struct drm_plane *intel_primary_
        drm_universal_plane_init(dev, &primary->base, 0,
                                 &intel_plane_funcs,
                                 intel_primary_formats, num_formats,
-                                DRM_PLANE_TYPE_PRIMARY);
+                                DRM_PLANE_TYPE_PRIMARY, NULL);
  
        if (INTEL_INFO(dev)->gen >= 4)
                intel_create_rotation_property(dev, primary);
@@@ -14072,7 -14175,7 +14179,7 @@@ static struct drm_plane *intel_cursor_p
                                 &intel_plane_funcs,
                                 intel_cursor_formats,
                                 ARRAY_SIZE(intel_cursor_formats),
-                                DRM_PLANE_TYPE_CURSOR);
+                                DRM_PLANE_TYPE_CURSOR, NULL);
  
        if (INTEL_INFO(dev)->gen >= 4) {
                if (!dev->mode_config.rotation_property)
@@@ -14149,7 -14252,7 +14256,7 @@@ static void intel_crtc_init(struct drm_
                goto fail;
  
        ret = drm_crtc_init_with_planes(dev, &intel_crtc->base, primary,
-                                       cursor, &intel_crtc_funcs);
+                                       cursor, &intel_crtc_funcs, NULL);
        if (ret)
                goto fail;
  
@@@ -14275,7 -14378,14 +14382,14 @@@ static bool intel_crt_present(struct dr
        if (IS_CHERRYVIEW(dev))
                return false;
  
-       if (IS_VALLEYVIEW(dev) && !dev_priv->vbt.int_crt_support)
+       if (HAS_PCH_LPT_H(dev) && I915_READ(SFUSE_STRAP) & SFUSE_STRAP_CRT_DISABLED)
+               return false;
+       /* DDI E can't be used if DDI A requires 4 lanes */
+       if (HAS_DDI(dev) && I915_READ(DDI_BUF_CTL(PORT_A)) & DDI_A_4_LANES)
+               return false;
+       if (!dev_priv->vbt.int_crt_support)
                return false;
  
        return true;
@@@ -14360,7 -14470,7 +14474,7 @@@ static void intel_setup_outputs(struct 
  
                if (I915_READ(PCH_DP_D) & DP_DETECTED)
                        intel_dp_init(dev, PCH_DP_D, PORT_D);
-       } else if (IS_VALLEYVIEW(dev)) {
+       } else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
                /*
                 * The DP_DETECTED bit is the latched state of the DDC
                 * SDA pin at boot. However since eDP doesn't require DDC
@@@ -14509,7 -14619,7 +14623,7 @@@ u32 intel_fb_pitch_limit(struct drm_dev
                 *  pixels and 32K bytes."
                 */
                 return min(8192*drm_format_plane_cpp(pixel_format, 0), 32768);
-       } else if (gen >= 5 && !IS_VALLEYVIEW(dev)) {
+       } else if (gen >= 5 && !IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
                return 32*1024;
        } else if (gen >= 4) {
                if (fb_modifier == I915_FORMAT_MOD_X_TILED)
@@@ -14613,7 -14723,8 +14727,8 @@@ static int intel_framebuffer_init(struc
                }
                break;
        case DRM_FORMAT_ABGR8888:
-               if (!IS_VALLEYVIEW(dev) && INTEL_INFO(dev)->gen < 9) {
+               if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) &&
+                   INTEL_INFO(dev)->gen < 9) {
                        DRM_DEBUG("unsupported pixel format: %s\n",
                                  drm_get_format_name(mode_cmd->pixel_format));
                        return -EINVAL;
                }
                break;
        case DRM_FORMAT_ABGR2101010:
-               if (!IS_VALLEYVIEW(dev)) {
+               if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
                        DRM_DEBUG("unsupported pixel format: %s\n",
                                  drm_get_format_name(mode_cmd->pixel_format));
                        return -EINVAL;
@@@ -14757,7 -14868,7 +14872,7 @@@ static void intel_init_display(struct d
                dev_priv->display.crtc_disable = ironlake_crtc_disable;
                dev_priv->display.update_primary_plane =
                        ironlake_update_primary_plane;
-       } else if (IS_VALLEYVIEW(dev)) {
+       } else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
                dev_priv->display.get_pipe_config = i9xx_get_pipe_config;
                dev_priv->display.get_initial_plane_config =
                        i9xx_get_initial_plane_config;
        else if (IS_HASWELL(dev))
                dev_priv->display.get_display_clock_speed =
                        haswell_get_display_clock_speed;
-       else if (IS_VALLEYVIEW(dev))
+       else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
                dev_priv->display.get_display_clock_speed =
                        valleyview_get_display_clock_speed;
        else if (IS_GEN5(dev))
        else if (IS_I945GM(dev) || IS_845G(dev))
                dev_priv->display.get_display_clock_speed =
                        i9xx_misc_get_display_clock_speed;
-       else if (IS_PINEVIEW(dev))
-               dev_priv->display.get_display_clock_speed =
-                       pnv_get_display_clock_speed;
        else if (IS_I915GM(dev))
                dev_priv->display.get_display_clock_speed =
                        i915gm_get_display_clock_speed;
                        dev_priv->display.modeset_calc_cdclk =
                                broadwell_modeset_calc_cdclk;
                }
-       } else if (IS_VALLEYVIEW(dev)) {
+       } else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
                dev_priv->display.modeset_commit_cdclk =
                        valleyview_modeset_commit_cdclk;
                dev_priv->display.modeset_calc_cdclk =
@@@ -15338,6 -15446,7 +15450,7 @@@ static void intel_sanitize_crtc(struct 
                WARN_ON(drm_atomic_set_mode_for_crtc(crtc->base.state, NULL) < 0);
                crtc->base.state->active = crtc->active;
                crtc->base.enabled = crtc->active;
+               crtc->base.state->connector_mask = 0;
  
                /* Because we only establish the connector -> encoder ->
                 * crtc links if something is active, this means the
@@@ -15540,7 -15649,21 +15653,21 @@@ static void intel_modeset_readout_hw_st
        for_each_intel_connector(dev, connector) {
                if (connector->get_hw_state(connector)) {
                        connector->base.dpms = DRM_MODE_DPMS_ON;
-                       connector->base.encoder = &connector->encoder->base;
+                       encoder = connector->encoder;
+                       connector->base.encoder = &encoder->base;
+                       if (encoder->base.crtc &&
+                           encoder->base.crtc->state->active) {
+                               /*
+                                * This has to be done during hardware readout
+                                * because anything calling .crtc_disable may
+                                * rely on the connector_mask being accurate.
+                                */
+                               encoder->base.crtc->state->connector_mask |=
+                                       1 << drm_connector_index(&connector->base);
+                       }
                } else {
                        connector->base.dpms = DRM_MODE_DPMS_OFF;
                        connector->base.encoder = NULL;
@@@ -15625,7 -15748,7 +15752,7 @@@ intel_modeset_setup_hw_state(struct drm
                pll->on = false;
        }
  
-       if (IS_VALLEYVIEW(dev))
+       if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev))
                vlv_wm_get_hw_state(dev);
        else if (IS_GEN9(dev))
                skl_wm_get_hw_state(dev);
@@@ -15748,7 -15871,7 +15875,7 @@@ void intel_connector_unregister(struct 
  void intel_modeset_cleanup(struct drm_device *dev)
  {
        struct drm_i915_private *dev_priv = dev->dev_private;
-       struct drm_connector *connector;
+       struct intel_connector *connector;
  
        intel_disable_gt_powersave(dev);
  
        flush_scheduled_work();
  
        /* destroy the backlight and sysfs files before encoders/connectors */
-       list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
-               struct intel_connector *intel_connector;
-               intel_connector = to_intel_connector(connector);
-               intel_connector->unregister(intel_connector);
-       }
+       for_each_intel_connector(dev, connector)
+               connector->unregister(connector);
  
        drm_mode_config_cleanup(dev);
  
        mutex_lock(&dev->struct_mutex);
        intel_cleanup_gt_powersave(dev);
        mutex_unlock(&dev->struct_mutex);
+       intel_teardown_gmbus(dev);
  }
  
  /*
index f16cd2a843b28ea6a4af3fc07494394111b4f85c,62141751c2f09c9578fc8e3c223142c9c7277a2c..4a77639a489dfcd67ff0937e6e3fa4da61fed461
@@@ -78,7 -78,7 +78,7 @@@ static u32 g4x_infoframe_index(enum hdm
        case HDMI_INFOFRAME_TYPE_VENDOR:
                return VIDEO_DIP_SELECT_VENDOR;
        default:
-               DRM_DEBUG_DRIVER("unknown info frame type %d\n", type);
+               MISSING_CASE(type);
                return 0;
        }
  }
@@@ -93,7 -93,7 +93,7 @@@ static u32 g4x_infoframe_enable(enum hd
        case HDMI_INFOFRAME_TYPE_VENDOR:
                return VIDEO_DIP_ENABLE_VENDOR;
        default:
-               DRM_DEBUG_DRIVER("unknown info frame type %d\n", type);
+               MISSING_CASE(type);
                return 0;
        }
  }
@@@ -108,7 -108,7 +108,7 @@@ static u32 hsw_infoframe_enable(enum hd
        case HDMI_INFOFRAME_TYPE_VENDOR:
                return VIDEO_DIP_ENABLE_VS_HSW;
        default:
-               DRM_DEBUG_DRIVER("unknown info frame type %d\n", type);
+               MISSING_CASE(type);
                return 0;
        }
  }
@@@ -127,7 -127,7 +127,7 @@@ hsw_dip_data_reg(struct drm_i915_privat
        case HDMI_INFOFRAME_TYPE_VENDOR:
                return HSW_TVIDEO_DIP_VS_DATA(cpu_transcoder, i);
        default:
-               DRM_DEBUG_DRIVER("unknown info frame type %d\n", type);
+               MISSING_CASE(type);
                return INVALID_MMIO_REG;
        }
  }
@@@ -169,10 -169,10 +169,10 @@@ static void g4x_write_infoframe(struct 
        POSTING_READ(VIDEO_DIP_CTL);
  }
  
- static bool g4x_infoframe_enabled(struct drm_encoder *encoder)
+ static bool g4x_infoframe_enabled(struct drm_encoder *encoder,
+                                 const struct intel_crtc_state *pipe_config)
  {
-       struct drm_device *dev = encoder->dev;
-       struct drm_i915_private *dev_priv = dev->dev_private;
+       struct drm_i915_private *dev_priv = to_i915(encoder->dev);
        struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder);
        u32 val = I915_READ(VIDEO_DIP_CTL);
  
@@@ -225,13 -225,13 +225,13 @@@ static void ibx_write_infoframe(struct 
        POSTING_READ(reg);
  }
  
- static bool ibx_infoframe_enabled(struct drm_encoder *encoder)
+ static bool ibx_infoframe_enabled(struct drm_encoder *encoder,
+                                 const struct intel_crtc_state *pipe_config)
  {
-       struct drm_device *dev = encoder->dev;
-       struct drm_i915_private *dev_priv = dev->dev_private;
-       struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
+       struct drm_i915_private *dev_priv = to_i915(encoder->dev);
        struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder);
-       i915_reg_t reg = TVIDEO_DIP_CTL(intel_crtc->pipe);
+       enum pipe pipe = to_intel_crtc(pipe_config->base.crtc)->pipe;
+       i915_reg_t reg = TVIDEO_DIP_CTL(pipe);
        u32 val = I915_READ(reg);
  
        if ((val & VIDEO_DIP_ENABLE) == 0)
@@@ -287,12 -287,12 +287,12 @@@ static void cpt_write_infoframe(struct 
        POSTING_READ(reg);
  }
  
- static bool cpt_infoframe_enabled(struct drm_encoder *encoder)
+ static bool cpt_infoframe_enabled(struct drm_encoder *encoder,
+                                 const struct intel_crtc_state *pipe_config)
  {
-       struct drm_device *dev = encoder->dev;
-       struct drm_i915_private *dev_priv = dev->dev_private;
-       struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
-       u32 val = I915_READ(TVIDEO_DIP_CTL(intel_crtc->pipe));
+       struct drm_i915_private *dev_priv = to_i915(encoder->dev);
+       enum pipe pipe = to_intel_crtc(pipe_config->base.crtc)->pipe;
+       u32 val = I915_READ(TVIDEO_DIP_CTL(pipe));
  
        if ((val & VIDEO_DIP_ENABLE) == 0)
                return false;
@@@ -341,13 -341,13 +341,13 @@@ static void vlv_write_infoframe(struct 
        POSTING_READ(reg);
  }
  
- static bool vlv_infoframe_enabled(struct drm_encoder *encoder)
+ static bool vlv_infoframe_enabled(struct drm_encoder *encoder,
+                                 const struct intel_crtc_state *pipe_config)
  {
-       struct drm_device *dev = encoder->dev;
-       struct drm_i915_private *dev_priv = dev->dev_private;
-       struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
+       struct drm_i915_private *dev_priv = to_i915(encoder->dev);
        struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder);
-       u32 val = I915_READ(VLV_TVIDEO_DIP_CTL(intel_crtc->pipe));
+       enum pipe pipe = to_intel_crtc(pipe_config->base.crtc)->pipe;
+       u32 val = I915_READ(VLV_TVIDEO_DIP_CTL(pipe));
  
        if ((val & VIDEO_DIP_ENABLE) == 0)
                return false;
@@@ -375,8 -375,6 +375,6 @@@ static void hsw_write_infoframe(struct 
        u32 val = I915_READ(ctl_reg);
  
        data_reg = hsw_dip_data_reg(dev_priv, cpu_transcoder, type, 0);
-       if (i915_mmio_reg_valid(data_reg))
-               return;
  
        val &= ~hsw_infoframe_enable(type);
        I915_WRITE(ctl_reg, val);
        POSTING_READ(ctl_reg);
  }
  
- static bool hsw_infoframe_enabled(struct drm_encoder *encoder)
+ static bool hsw_infoframe_enabled(struct drm_encoder *encoder,
+                                 const struct intel_crtc_state *pipe_config)
  {
-       struct drm_device *dev = encoder->dev;
-       struct drm_i915_private *dev_priv = dev->dev_private;
-       struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
-       u32 val = I915_READ(HSW_TVIDEO_DIP_CTL(intel_crtc->config->cpu_transcoder));
+       struct drm_i915_private *dev_priv = to_i915(encoder->dev);
+       u32 val = I915_READ(HSW_TVIDEO_DIP_CTL(pipe_config->cpu_transcoder));
  
        return val & (VIDEO_DIP_ENABLE_VSC_HSW | VIDEO_DIP_ENABLE_AVI_HSW |
                      VIDEO_DIP_ENABLE_GCP_HSW | VIDEO_DIP_ENABLE_VS_HSW |
@@@ -639,7 -636,7 +636,7 @@@ static bool intel_hdmi_set_gcp_infofram
  
        if (HAS_DDI(dev_priv))
                reg = HSW_TVIDEO_DIP_GCP(crtc->config->cpu_transcoder);
-       else if (IS_VALLEYVIEW(dev_priv))
+       else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
                reg = VLV_TVIDEO_DIP_GCP(crtc->pipe);
        else if (HAS_PCH_SPLIT(dev_priv->dev))
                reg = TVIDEO_DIP_GCP(crtc->pipe);
@@@ -927,7 -924,7 +924,7 @@@ static void intel_hdmi_get_config(struc
        if (tmp & HDMI_MODE_SELECT_HDMI)
                pipe_config->has_hdmi_sink = true;
  
-       if (intel_hdmi->infoframe_enabled(&encoder->base))
+       if (intel_hdmi->infoframe_enabled(&encoder->base, pipe_config))
                pipe_config->has_infoframe = true;
  
        if (tmp & SDVO_AUDIO_ENABLE)
@@@ -1395,7 -1392,7 +1392,7 @@@ intel_hdmi_detect(struct drm_connector 
  
        intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS);
  
 -      for (try = 0; !live_status && try < 4; try++) {
 +      for (try = 0; !live_status && try < 9; try++) {
                if (try)
                        msleep(10);
                live_status = intel_digital_port_connected(dev_priv,
@@@ -2102,7 -2099,7 +2099,7 @@@ void intel_hdmi_init_connector(struct i
                BUG();
        }
  
-       if (IS_VALLEYVIEW(dev)) {
+       if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
                intel_hdmi->write_infoframe = vlv_write_infoframe;
                intel_hdmi->set_infoframes = vlv_set_infoframes;
                intel_hdmi->infoframe_enabled = vlv_infoframe_enabled;
@@@ -2167,7 -2164,7 +2164,7 @@@ void intel_hdmi_init(struct drm_device 
        intel_encoder = &intel_dig_port->base;
  
        drm_encoder_init(dev, &intel_encoder->base, &intel_hdmi_enc_funcs,
-                        DRM_MODE_ENCODER_TMDS);
+                        DRM_MODE_ENCODER_TMDS, NULL);
  
        intel_encoder->compute_config = intel_hdmi_compute_config;
        if (HAS_PCH_SPLIT(dev)) {
index ceba5459ceb75b33bded69b6b56ffb9c5919a03c,984462622291d3f5fae2493d1234727d12fcc58d..8495a1a4b61745524dd04045616d859b2ac566bb
  
  #include <linux/shmem_fs.h>
  #include <linux/spinlock.h>
 +#include <linux/pfn_t.h>
  
  #include <drm/drm_vma_manager.h>
  
  #include "omap_drv.h"
  #include "omap_dmm_tiler.h"
  
- /* remove these once drm core helpers are merged */
- struct page **_drm_gem_get_pages(struct drm_gem_object *obj, gfp_t gfpmask);
- void _drm_gem_put_pages(struct drm_gem_object *obj, struct page **pages,
-               bool dirty, bool accessed);
- int _drm_gem_create_mmap_offset_size(struct drm_gem_object *obj, size_t size);
  /*
   * GEM buffer object implementation.
   */
  
- #define to_omap_bo(x) container_of(x, struct omap_gem_object, base)
  /* note: we use upper 8 bits of flags for driver-internal flags: */
- #define OMAP_BO_DMA                   0x01000000      /* actually is physically contiguous */
+ #define OMAP_BO_DMA           0x01000000      /* actually is physically contiguous */
  #define OMAP_BO_EXT_SYNC      0x02000000      /* externally allocated sync object */
  #define OMAP_BO_EXT_MEM               0x04000000      /* externally allocated memory */
  
  struct omap_gem_object {
        struct drm_gem_object base;
  
        } *sync;
  };
  
- static int get_pages(struct drm_gem_object *obj, struct page ***pages);
- static uint64_t mmap_offset(struct drm_gem_object *obj);
+ #define to_omap_bo(x) container_of(x, struct omap_gem_object, base)
  
  /* To deal with userspace mmap'ings of 2d tiled buffers, which (a) are
   * not necessarily pinned in TILER all the time, and (b) when they are
   * for later..
   */
  #define NUM_USERGART_ENTRIES 2
- struct usergart_entry {
+ struct omap_drm_usergart_entry {
        struct tiler_block *block;      /* the reserved tiler block */
        dma_addr_t paddr;
        struct drm_gem_object *obj;     /* the current pinned obj */
        pgoff_t obj_pgoff;              /* page offset of obj currently
                                           mapped in */
  };
- static struct {
-       struct usergart_entry entry[NUM_USERGART_ENTRIES];
+ struct omap_drm_usergart {
+       struct omap_drm_usergart_entry entry[NUM_USERGART_ENTRIES];
        int height;                             /* height in rows */
        int height_shift;               /* ilog2(height in rows) */
        int slot_shift;                 /* ilog2(width per slot) */
        int stride_pfn;                 /* stride in pages */
        int last;                               /* index of last used entry */
- } *usergart;
+ };
+ /* -----------------------------------------------------------------------------
+  * Helpers
+  */
+ /** get mmap offset */
+ static uint64_t mmap_offset(struct drm_gem_object *obj)
+ {
+       struct drm_device *dev = obj->dev;
+       int ret;
+       size_t size;
+       WARN_ON(!mutex_is_locked(&dev->struct_mutex));
+       /* Make it mmapable */
+       size = omap_gem_mmap_size(obj);
+       ret = drm_gem_create_mmap_offset_size(obj, size);
+       if (ret) {
+               dev_err(dev->dev, "could not allocate mmap offset\n");
+               return 0;
+       }
+       return drm_vma_node_offset_addr(&obj->vma_node);
+ }
+ /* GEM objects can either be allocated from contiguous memory (in which
+  * case obj->filp==NULL), or w/ shmem backing (obj->filp!=NULL).  But non
+  * contiguous buffers can be remapped in TILER/DMM if they need to be
+  * contiguous... but we don't do this all the time to reduce pressure
+  * on TILER/DMM space when we know at allocation time that the buffer
+  * will need to be scanned out.
+  */
+ static inline bool is_shmem(struct drm_gem_object *obj)
+ {
+       return obj->filp != NULL;
+ }
+ /* -----------------------------------------------------------------------------
+  * Eviction
+  */
  
  static void evict_entry(struct drm_gem_object *obj,
-               enum tiler_fmt fmt, struct usergart_entry *entry)
+               enum tiler_fmt fmt, struct omap_drm_usergart_entry *entry)
  {
        struct omap_gem_object *omap_obj = to_omap_bo(obj);
-       int n = usergart[fmt].height;
+       struct omap_drm_private *priv = obj->dev->dev_private;
+       int n = priv->usergart[fmt].height;
        size_t size = PAGE_SIZE * n;
        loff_t off = mmap_offset(obj) +
                        (entry->obj_pgoff << PAGE_SHIFT);
  static void evict(struct drm_gem_object *obj)
  {
        struct omap_gem_object *omap_obj = to_omap_bo(obj);
+       struct omap_drm_private *priv = obj->dev->dev_private;
  
        if (omap_obj->flags & OMAP_BO_TILED) {
                enum tiler_fmt fmt = gem2fmt(omap_obj->flags);
                int i;
  
-               if (!usergart)
-                       return;
                for (i = 0; i < NUM_USERGART_ENTRIES; i++) {
-                       struct usergart_entry *entry = &usergart[fmt].entry[i];
+                       struct omap_drm_usergart_entry *entry =
+                               &priv->usergart[fmt].entry[i];
                        if (entry->obj == obj)
                                evict_entry(obj, fmt, entry);
                }
        }
  }
  
- /* GEM objects can either be allocated from contiguous memory (in which
-  * case obj->filp==NULL), or w/ shmem backing (obj->filp!=NULL).  But non
-  * contiguous buffers can be remapped in TILER/DMM if they need to be
-  * contiguous... but we don't do this all the time to reduce pressure
-  * on TILER/DMM space when we know at allocation time that the buffer
-  * will need to be scanned out.
-  */
- static inline bool is_shmem(struct drm_gem_object *obj)
- {
-       return obj->filp != NULL;
- }
- /**
-  * shmem buffers that are mapped cached can simulate coherency via using
-  * page faulting to keep track of dirty pages
+ /* -----------------------------------------------------------------------------
+  * Page Management
   */
- static inline bool is_cached_coherent(struct drm_gem_object *obj)
- {
-       struct omap_gem_object *omap_obj = to_omap_bo(obj);
-       return is_shmem(obj) &&
-               ((omap_obj->flags & OMAP_BO_CACHE_MASK) == OMAP_BO_CACHED);
- }
- static DEFINE_SPINLOCK(sync_lock);
  
  /** ensure backing pages are allocated */
  static int omap_gem_attach_pages(struct drm_gem_object *obj)
@@@ -273,6 -283,28 +284,28 @@@ free_pages
        return ret;
  }
  
+ /* acquire pages when needed (for example, for DMA where physically
+  * contiguous buffer is not required
+  */
+ static int get_pages(struct drm_gem_object *obj, struct page ***pages)
+ {
+       struct omap_gem_object *omap_obj = to_omap_bo(obj);
+       int ret = 0;
+       if (is_shmem(obj) && !omap_obj->pages) {
+               ret = omap_gem_attach_pages(obj);
+               if (ret) {
+                       dev_err(obj->dev->dev, "could not attach pages\n");
+                       return ret;
+               }
+       }
+       /* TODO: even phys-contig.. we should have a list of pages? */
+       *pages = omap_obj->pages;
+       return 0;
+ }
  /** release backing pages */
  static void omap_gem_detach_pages(struct drm_gem_object *obj)
  {
@@@ -302,26 -334,6 +335,6 @@@ uint32_t omap_gem_flags(struct drm_gem_
        return to_omap_bo(obj)->flags;
  }
  
- /** get mmap offset */
- static uint64_t mmap_offset(struct drm_gem_object *obj)
- {
-       struct drm_device *dev = obj->dev;
-       int ret;
-       size_t size;
-       WARN_ON(!mutex_is_locked(&dev->struct_mutex));
-       /* Make it mmapable */
-       size = omap_gem_mmap_size(obj);
-       ret = drm_gem_create_mmap_offset_size(obj, size);
-       if (ret) {
-               dev_err(dev->dev, "could not allocate mmap offset\n");
-               return 0;
-       }
-       return drm_vma_node_offset_addr(&obj->vma_node);
- }
  uint64_t omap_gem_mmap_offset(struct drm_gem_object *obj)
  {
        uint64_t offset;
@@@ -363,6 -375,10 +376,10 @@@ int omap_gem_tiled_size(struct drm_gem_
        return -EINVAL;
  }
  
+ /* -----------------------------------------------------------------------------
+  * Fault Handling
+  */
  /* Normal handling for the case of faulting in non-tiled buffers */
  static int fault_1d(struct drm_gem_object *obj,
                struct vm_area_struct *vma, struct vm_fault *vmf)
        VERB("Inserting %p pfn %lx, pa %lx", vmf->virtual_address,
                        pfn, pfn << PAGE_SHIFT);
  
 -      return vm_insert_mixed(vma, (unsigned long)vmf->virtual_address, pfn);
 +      return vm_insert_mixed(vma, (unsigned long)vmf->virtual_address,
 +                      __pfn_to_pfn_t(pfn, PFN_DEV));
  }
  
  /* Special handling for the case of faulting in 2d tiled buffers */
@@@ -395,7 -410,8 +412,8 @@@ static int fault_2d(struct drm_gem_obje
                struct vm_area_struct *vma, struct vm_fault *vmf)
  {
        struct omap_gem_object *omap_obj = to_omap_bo(obj);
-       struct usergart_entry *entry;
+       struct omap_drm_private *priv = obj->dev->dev_private;
+       struct omap_drm_usergart_entry *entry;
        enum tiler_fmt fmt = gem2fmt(omap_obj->flags);
        struct page *pages[64];  /* XXX is this too much to have on stack? */
        unsigned long pfn;
         * that need to be mapped in to fill 4kb wide CPU page.  If the slot
         * height is 64, then 64 pages fill a 4kb wide by 64 row region.
         */
-       const int n = usergart[fmt].height;
-       const int n_shift = usergart[fmt].height_shift;
+       const int n = priv->usergart[fmt].height;
+       const int n_shift = priv->usergart[fmt].height_shift;
  
        /*
         * If buffer width in bytes > PAGE_SIZE then the virtual stride is
        base_pgoff = round_down(pgoff, m << n_shift);
  
        /* figure out buffer width in slots */
-       slots = omap_obj->width >> usergart[fmt].slot_shift;
+       slots = omap_obj->width >> priv->usergart[fmt].slot_shift;
  
        vaddr = vmf->virtual_address - ((pgoff - base_pgoff) << PAGE_SHIFT);
  
-       entry = &usergart[fmt].entry[usergart[fmt].last];
+       entry = &priv->usergart[fmt].entry[priv->usergart[fmt].last];
  
        /* evict previous buffer using this usergart entry, if any: */
        if (entry->obj)
                        pfn, pfn << PAGE_SHIFT);
  
        for (i = n; i > 0; i--) {
 -              vm_insert_mixed(vma, (unsigned long)vaddr, pfn);
 +              vm_insert_mixed(vma, (unsigned long)vaddr,
 +                              __pfn_to_pfn_t(pfn, PFN_DEV));
-               pfn += usergart[fmt].stride_pfn;
+               pfn += priv->usergart[fmt].stride_pfn;
                vaddr += PAGE_SIZE * m;
        }
  
        /* simple round-robin: */
-       usergart[fmt].last = (usergart[fmt].last + 1) % NUM_USERGART_ENTRIES;
+       priv->usergart[fmt].last = (priv->usergart[fmt].last + 1)
+                                % NUM_USERGART_ENTRIES;
  
        return 0;
  }
@@@ -599,6 -615,9 +618,9 @@@ int omap_gem_mmap_obj(struct drm_gem_ob
        return 0;
  }
  
+ /* -----------------------------------------------------------------------------
+  * Dumb Buffers
+  */
  
  /**
   * omap_gem_dumb_create       -       create a dumb buffer
@@@ -656,6 -675,7 +678,7 @@@ fail
        return ret;
  }
  
+ #ifdef CONFIG_DRM_FBDEV_EMULATION
  /* Set scrolling position.  This allows us to implement fast scrolling
   * for console.
   *
@@@ -692,6 -712,22 +715,22 @@@ fail
  
        return ret;
  }
+ #endif
+ /* -----------------------------------------------------------------------------
+  * Memory Management & DMA Sync
+  */
+ /**
+  * shmem buffers that are mapped cached can simulate coherency via using
+  * page faulting to keep track of dirty pages
+  */
+ static inline bool is_cached_coherent(struct drm_gem_object *obj)
+ {
+       struct omap_gem_object *omap_obj = to_omap_bo(obj);
+       return is_shmem(obj) &&
+               ((omap_obj->flags & OMAP_BO_CACHE_MASK) == OMAP_BO_CACHED);
+ }
  
  /* Sync the buffer for CPU access.. note pages should already be
   * attached, ie. omap_gem_get_pages()
@@@ -868,28 -904,6 +907,6 @@@ int omap_gem_tiled_stride(struct drm_ge
        return ret;
  }
  
- /* acquire pages when needed (for example, for DMA where physically
-  * contiguous buffer is not required
-  */
- static int get_pages(struct drm_gem_object *obj, struct page ***pages)
- {
-       struct omap_gem_object *omap_obj = to_omap_bo(obj);
-       int ret = 0;
-       if (is_shmem(obj) && !omap_obj->pages) {
-               ret = omap_gem_attach_pages(obj);
-               if (ret) {
-                       dev_err(obj->dev->dev, "could not attach pages\n");
-                       return ret;
-               }
-       }
-       /* TODO: even phys-contig.. we should have a list of pages? */
-       *pages = omap_obj->pages;
-       return 0;
- }
  /* if !remap, and we don't have pages backing, then fail, rather than
   * increasing the pin count (which we don't really do yet anyways,
   * because we don't support swapping pages back out).  And 'remap'
@@@ -927,6 -941,7 +944,7 @@@ int omap_gem_put_pages(struct drm_gem_o
        return 0;
  }
  
+ #ifdef CONFIG_DRM_FBDEV_EMULATION
  /* Get kernel virtual address for CPU access.. this more or less only
   * exists for omap_fbdev.  This should be called with struct_mutex
   * held.
@@@ -945,6 -960,11 +963,11 @@@ void *omap_gem_vaddr(struct drm_gem_obj
        }
        return omap_obj->vaddr;
  }
+ #endif
+ /* -----------------------------------------------------------------------------
+  * Power Management
+  */
  
  #ifdef CONFIG_PM
  /* re-pin objects in DMM in resume path: */
@@@ -974,6 -994,10 +997,10 @@@ int omap_gem_resume(struct device *dev
  }
  #endif
  
+ /* -----------------------------------------------------------------------------
+  * DebugFS
+  */
  #ifdef CONFIG_DEBUG_FS
  void omap_gem_describe(struct drm_gem_object *obj, struct seq_file *m)
  {
@@@ -1020,9 -1044,12 +1047,12 @@@ void omap_gem_describe_objects(struct l
  }
  #endif
  
- /* Buffer Synchronization:
+ /* -----------------------------------------------------------------------------
+  * Buffer Synchronization
   */
  
+ static DEFINE_SPINLOCK(sync_lock);
  struct omap_gem_sync_waiter {
        struct list_head list;
        struct omap_gem_object *omap_obj;
@@@ -1268,6 -1295,10 +1298,10 @@@ unlock
        return ret;
  }
  
+ /* -----------------------------------------------------------------------------
+  * Constructor & Destructor
+  */
  /* don't call directly.. called from GEM core when it is time to actually
   * free the object..
   */
@@@ -1285,8 -1316,6 +1319,6 @@@ void omap_gem_free_object(struct drm_ge
        list_del(&omap_obj->mm_list);
        spin_unlock(&priv->list_lock);
  
-       drm_gem_free_mmap_offset(obj);
        /* this means the object is still pinned.. which really should
         * not happen.  I think..
         */
  
        drm_gem_object_release(obj);
  
-       kfree(obj);
- }
- /* convenience method to construct a GEM buffer object, and userspace handle */
- int omap_gem_new_handle(struct drm_device *dev, struct drm_file *file,
-               union omap_gem_size gsize, uint32_t flags, uint32_t *handle)
- {
-       struct drm_gem_object *obj;
-       int ret;
-       obj = omap_gem_new(dev, gsize, flags);
-       if (!obj)
-               return -ENOMEM;
-       ret = drm_gem_handle_create(file, obj, handle);
-       if (ret) {
-               drm_gem_object_release(obj);
-               kfree(obj); /* TODO isn't there a dtor to call? just copying i915 */
-               return ret;
-       }
-       /* drop reference from allocate - handle holds it now */
-       drm_gem_object_unreference_unlocked(obj);
-       return 0;
+       kfree(omap_obj);
  }
  
  /* GEM buffer object constructor */
@@@ -1344,15 -1349,15 +1352,15 @@@ struct drm_gem_object *omap_gem_new(str
  {
        struct omap_drm_private *priv = dev->dev_private;
        struct omap_gem_object *omap_obj;
-       struct drm_gem_object *obj = NULL;
+       struct drm_gem_object *obj;
        struct address_space *mapping;
        size_t size;
        int ret;
  
        if (flags & OMAP_BO_TILED) {
-               if (!usergart) {
+               if (!priv->usergart) {
                        dev_err(dev->dev, "Tiled buffers require DMM\n");
-                       goto fail;
+                       return NULL;
                }
  
                /* tiled buffers are always shmem paged backed.. when they are
        return obj;
  
  fail:
-       if (obj)
+       omap_gem_free_object(obj);
+       return NULL;
+ }
+ /* convenience method to construct a GEM buffer object, and userspace handle */
+ int omap_gem_new_handle(struct drm_device *dev, struct drm_file *file,
+               union omap_gem_size gsize, uint32_t flags, uint32_t *handle)
+ {
+       struct drm_gem_object *obj;
+       int ret;
+       obj = omap_gem_new(dev, gsize, flags);
+       if (!obj)
+               return -ENOMEM;
+       ret = drm_gem_handle_create(file, obj, handle);
+       if (ret) {
                omap_gem_free_object(obj);
+               return ret;
+       }
  
-       return NULL;
+       /* drop reference from allocate - handle holds it now */
+       drm_gem_object_unreference_unlocked(obj);
+       return 0;
  }
  
- /* init/cleanup.. if DMM is used, we need to set some stuff up.. */
+ /* -----------------------------------------------------------------------------
+  * Init & Cleanup
+  */
+ /* If DMM is used, we need to set some stuff up.. */
  void omap_gem_init(struct drm_device *dev)
  {
        struct omap_drm_private *priv = dev->dev_private;
+       struct omap_drm_usergart *usergart;
        const enum tiler_fmt fmts[] = {
                        TILFMT_8BIT, TILFMT_16BIT, TILFMT_32BIT
        };
                usergart[i].stride_pfn = tiler_stride(fmts[i], 0) >> PAGE_SHIFT;
                usergart[i].slot_shift = ilog2((PAGE_SIZE / h) >> i);
                for (j = 0; j < NUM_USERGART_ENTRIES; j++) {
-                       struct usergart_entry *entry = &usergart[i].entry[j];
-                       struct tiler_block *block =
-                                       tiler_reserve_2d(fmts[i], w, h,
-                                                       PAGE_SIZE);
+                       struct omap_drm_usergart_entry *entry;
+                       struct tiler_block *block;
+                       entry = &usergart[i].entry[j];
+                       block = tiler_reserve_2d(fmts[i], w, h, PAGE_SIZE);
                        if (IS_ERR(block)) {
                                dev_err(dev->dev,
                                                "reserve failed: %d, %d, %ld\n",
                }
        }
  
+       priv->usergart = usergart;
        priv->has_dmm = true;
  }
  
  void omap_gem_deinit(struct drm_device *dev)
  {
+       struct omap_drm_private *priv = dev->dev_private;
        /* I believe we can rely on there being no more outstanding GEM
         * objects which could depend on usergart/dmm at this point.
         */
-       kfree(usergart);
+       kfree(priv->usergart);
  }
index ee2d542c65f5f91f9e7114900420bc391c0d6830,998bd253faadc438fff9b69e5de8aed32ae3ab68..4d8da699a62388e5f7753ba61bc12c3520ce97eb
@@@ -24,7 -24,7 +24,7 @@@
  #ifndef DRM_FOURCC_H
  #define DRM_FOURCC_H
  
- #include <linux/types.h>
+ #include "drm.h"
  
  #define fourcc_code(a, b, c, d) ((__u32)(a) | ((__u32)(b) << 8) | \
                                 ((__u32)(c) << 16) | ((__u32)(d) << 24))
   * - multiple of 128 pixels for the width
   * - multiple of  32 pixels for the height
   *
 - * For more information: see http://linuxtv.org/downloads/v4l-dvb-apis/re32.html
 + * For more information: see https://linuxtv.org/downloads/v4l-dvb-apis/re32.html
   */
  #define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE     fourcc_mod_code(SAMSUNG, 1)