]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
Merge tag 'media/v4.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 6 Sep 2015 01:21:14 +0000 (18:21 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 6 Sep 2015 01:21:14 +0000 (18:21 -0700)
Pull media updates from Mauro Carvalho Chehab:
 - new DVB frontend drivers: ascot2e, cxd2841er, horus3a, lnbh25
 - new HDMI capture driver: tc358743
 - new driver for NetUP DVB new boards (netup_unidvb)
 - IR support for DVBSky cards (smipcie-ir)
 - Coda driver has gain macroblock tiling support
 - Renesas R-Car gains JPEG codec driver
 - new DVB platform driver for STi boards: c8sectpfe
 - added documentation for the media core kABI to device-drivers DocBook
 - lots of driver fixups, cleanups and improvements

* tag 'media/v4.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (297 commits)
  [media] c8sectpfe: Remove select on undefined LIBELF_32
  [media] i2c: fix platform_no_drv_owner.cocci warnings
  [media] cx231xx: Use wake_up_interruptible() instead of wake_up_interruptible_nr()
  [media] tc358743: only queue subdev notifications if devnode is set
  [media] tc358743: add missing Kconfig dependency/select
  [media] c8sectpfe: Use %pad to print 'dma_addr_t'
  [media] DocBook media: Fix typo "the the" in xml files
  [media] tc358743: make reset gpio optional
  [media] tc358743: set direction of reset gpio using devm_gpiod_get
  [media] dvbdev: document most of the functions/data structs
  [media] dvb_frontend.h: document the struct dvb_frontend
  [media] dvb-frontend.h: document struct dtv_frontend_properties
  [media] dvb-frontend.h: document struct dvb_frontend_ops
  [media] dvb: Use DVBFE_ALGO_HW where applicable
  [media] dvb_frontend.h: document struct analog_demod_ops
  [media] dvb_frontend.h: Document struct dvb_tuner_ops
  [media] Docbook: Document struct analog_parameters
  [media] dvb_frontend.h: get rid of dvbfe_modcod
  [media] add documentation for struct dvb_tuner_info
  [media] dvb_frontend: document dvb_frontend_tune_settings
  ...

1  2 
Documentation/DocBook/device-drivers.tmpl
MAINTAINERS
drivers/media/platform/coda/coda-common.c
drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c
drivers/media/rc/rc-ir-raw.c
drivers/media/rc/rc-main.c
drivers/media/v4l2-core/videobuf2-core.c
include/media/rc-core.h
include/media/videobuf2-core.h

index bbc1d7ee9c764a61eb71615d0ea654e5ed8897a9,93b74884ae24269a6597297a9f223212d13ffd2d..abba93f9d64a5c3244d1a2ff710a837d1d243848
@@@ -66,7 -66,6 +66,7 @@@
  !Ekernel/time/hrtimer.c
       </sect1>
       <sect1><title>Workqueues and Kevents</title>
 +!Iinclude/linux/workqueue.h
  !Ekernel/workqueue.c
       </sect1>
       <sect1><title>Internal Functions</title>
@@@ -217,6 -216,40 +217,40 @@@ X!Isound/sound_firmware.
  -->
    </chapter>
  
+   <chapter id="mediadev">
+      <title>Media Devices</title>
+      <sect1><title>Video2Linux devices</title>
+ !Iinclude/media/v4l2-async.h
+ !Iinclude/media/v4l2-ctrls.h
+ !Iinclude/media/v4l2-dv-timings.h
+ !Iinclude/media/v4l2-event.h
+ !Iinclude/media/v4l2-flash-led-class.h
+ !Iinclude/media/v4l2-mediabus.h
+ !Iinclude/media/v4l2-mem2mem.h
+ !Iinclude/media/v4l2-of.h
+ !Iinclude/media/v4l2-subdev.h
+ !Iinclude/media/videobuf2-core.h
+ !Iinclude/media/videobuf2-memops.h
+      </sect1>
+      <sect1><title>Digital TV (DVB) devices</title>
+ !Idrivers/media/dvb-core/dvb_ca_en50221.h
+ !Idrivers/media/dvb-core/dvb_frontend.h
+ !Idrivers/media/dvb-core/dvb_math.h
+ !Idrivers/media/dvb-core/dvb_ringbuffer.h
+ !Idrivers/media/dvb-core/dvbdev.h
+      </sect1>
+      <sect1><title>Remote Controller devices</title>
+ !Iinclude/media/rc-core.h
+      </sect1>
+      <sect1><title>Media Controller devices</title>
+ !Iinclude/media/media-device.h
+ !Iinclude/media/media-devnode.h
+ !Iinclude/media/media-entity.h
+      </sect1>
+   </chapter>
    <chapter id="uart16x50">
       <title>16x50 UART Driver</title>
  !Edrivers/tty/serial/serial_core.c
diff --combined MAINTAINERS
index a9abe32f8e1479575dea5198548d15bd4bea1eb4,e0946a0ec6201227674d52aa8c26d8a79c5e7cee..4d8c8e10fb392f989fc79bb96d223bb079ff160b
@@@ -158,7 -158,6 +158,7 @@@ L: linux-wpan@vger.kernel.or
  S:    Maintained
  F:    net/6lowpan/
  F:    include/net/6lowpan.h
 +F:    Documentation/networking/6lowpan.txt
  
  6PACK NETWORK DRIVER FOR AX.25
  M:    Andreas Koensgen <ajk@comnets.uni-bremen.de>
@@@ -362,11 -361,11 +362,11 @@@ S:      Supporte
  F:    drivers/input/touchscreen/ad7879.c
  
  ADDRESS SPACE LAYOUT RANDOMIZATION (ASLR)
 -M:    Jiri Kosina <jkosina@suse.cz>
 +M:    Jiri Kosina <jikos@kernel.org>
  S:    Maintained
  
  ADM1025 HARDWARE MONITOR DRIVER
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  L:    lm-sensors@lm-sensors.org
  S:    Maintained
  F:    Documentation/hwmon/adm1025
@@@ -431,7 -430,7 +431,7 @@@ S: Maintaine
  F:    drivers/macintosh/therm_adt746x.c
  
  ADT7475 HARDWARE MONITOR DRIVER
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  L:    lm-sensors@lm-sensors.org
  S:    Maintained
  F:    Documentation/hwmon/adt7475
@@@ -446,7 -445,7 +446,7 @@@ F: drivers/input/misc/adxl34x.
  
  ADVANSYS SCSI DRIVER
  M:    Matthew Wilcox <matthew@wil.cx>
 -M:    Hannes Reinecke <hare@suse.de>
 +M:    Hannes Reinecke <hare@suse.com>
  L:    linux-scsi@vger.kernel.org
  S:    Maintained
  F:    Documentation/scsi/advansys.txt
@@@ -507,7 -506,7 +507,7 @@@ F: drivers/scsi/aha152x
  F:    drivers/scsi/pcmcia/aha152x*
  
  AIC7XXX / AIC79XX SCSI DRIVER
 -M:    Hannes Reinecke <hare@suse.de>
 +M:    Hannes Reinecke <hare@suse.com>
  L:    linux-scsi@vger.kernel.org
  S:    Maintained
  F:    drivers/scsi/aic7xxx/
@@@ -557,12 -556,6 +557,12 @@@ S:       Maintaine
  F:    Documentation/i2c/busses/i2c-ali1563
  F:    drivers/i2c/busses/i2c-ali1563.c
  
 +ALLWINNER SECURITY SYSTEM
 +M:    Corentin Labbe <clabbe.montjoie@gmail.com>
 +L:    linux-crypto@vger.kernel.org
 +S:    Maintained
 +F:    drivers/crypto/sunxi-ss/
 +
  ALPHA PORT
  M:    Richard Henderson <rth@twiddle.net>
  M:    Ivan Kokshaysky <ink@jurassic.park.msu.ru>
@@@ -643,14 -636,9 +643,14 @@@ M:       Oded Gabbay <oded.gabbay@gmail.com
  L:    dri-devel@lists.freedesktop.org
  T:    git git://people.freedesktop.org/~gabbayo/linux.git
  S:    Supported
 +F:    drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
 +F:    drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
 +F:    drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
 +F:    drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
  F:    drivers/gpu/drm/amd/amdkfd/
  F:    drivers/gpu/drm/amd/include/cik_structs.h
  F:    drivers/gpu/drm/amd/include/kgd_kfd_interface.h
 +F:    drivers/gpu/drm/amd/include/vi_structs.h
  F:    drivers/gpu/drm/radeon/radeon_kfd.c
  F:    drivers/gpu/drm/radeon/radeon_kfd.h
  F:    include/uapi/linux/kfd_ioctl.h
@@@ -740,12 -728,6 +740,12 @@@ X:       drivers/iio/*/adjd
  F:    drivers/staging/iio/*/ad*
  F:    staging/iio/trigger/iio-trig-bfin-timer.c
  
 +ANALOG DEVICES INC DMA DRIVERS
 +M:    Lars-Peter Clausen <lars@metafoo.de>
 +W:    http://ez.analog.com/community/linux-device-drivers
 +S:    Supported
 +F:    drivers/dma/dma-axi-dmac.c
 +
  ANDROID DRIVERS
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  M:    Arve Hjønnevåg <arve@android.com>
@@@ -764,7 -746,7 +764,7 @@@ S: Maintaine
  F:    sound/aoa/
  
  APM DRIVER
 -M:    Jiri Kosina <jkosina@suse.cz>
 +M:    Jiri Kosina <jikos@kernel.org>
  S:    Odd fixes
  F:    arch/x86/kernel/apm_32.c
  F:    include/linux/apm_bios.h
@@@ -817,13 -799,11 +817,13 @@@ F:      arch/arm/include/asm/floppy.
  ARM PMU PROFILING AND DEBUGGING
  M:    Will Deacon <will.deacon@arm.com>
  S:    Maintained
 -F:    arch/arm/kernel/perf_event*
 +F:    arch/arm/kernel/perf_*
  F:    arch/arm/oprofile/common.c
 -F:    arch/arm/include/asm/pmu.h
  F:    arch/arm/kernel/hw_breakpoint.c
  F:    arch/arm/include/asm/hw_breakpoint.h
 +F:    arch/arm/include/asm/perf_event.h
 +F:    drivers/perf/arm_pmu.c
 +F:    include/linux/perf/arm_pmu.h
  
  ARM PORT
  M:    Russell King <linux@arm.linux.org.uk>
@@@ -947,7 -927,7 +947,7 @@@ M: Sunil Goutham <sgoutham@cavium.com
  M:    Robert Richter <rric@kernel.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Supported
 -F:    drivers/net/ethernet/cavium/
 +F:    drivers/net/ethernet/cavium/thunder/
  
  ARM/CIRRUS LOGIC CLPS711X ARM ARCHITECTURE
  M:    Alexander Shiyan <shc_work@mail.ru>
@@@ -1021,7 -1001,6 +1021,7 @@@ ARM/CONEXANT DIGICOLOR MACHINE SUPPOR
  M:    Baruch Siach <baruch@tkos.co.il>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 +F:    arch/arm/boot/dts/cx92755*
  N:    digicolor
  
  ARM/EBSA110 MACHINE SUPPORT
@@@ -1345,7 -1324,7 +1345,7 @@@ F:      arch/arm/mach-pxa/include/mach/palmt
  F:    arch/arm/mach-pxa/palmtc.c
  
  ARM/PALM TREO SUPPORT
 -M:    Tomas Cech <sleep_walker@suse.cz>
 +M:    Tomas Cech <sleep_walker@suse.com>
  L:    linux-arm-kernel@lists.infradead.org
  W:    http://hackndev.com
  S:    Maintained
@@@ -1485,7 -1464,9 +1485,7 @@@ F:      arch/arm/boot/dts/emev2
  F:    arch/arm/boot/dts/r7s*
  F:    arch/arm/boot/dts/r8a*
  F:    arch/arm/boot/dts/sh*
 -F:    arch/arm/configs/armadillo800eva_defconfig
  F:    arch/arm/configs/bockw_defconfig
 -F:    arch/arm/configs/kzm9g_defconfig
  F:    arch/arm/configs/marzen_defconfig
  F:    arch/arm/configs/shmobile_defconfig
  F:    arch/arm/include/debug/renesas-scif.S
@@@ -1522,9 -1503,9 +1522,10 @@@ S:     Maintaine
  F:    arch/arm/mach-sti/
  F:    arch/arm/boot/dts/sti*
  F:    drivers/clocksource/arm_global_timer.c
 +F:    drivers/clocksource/clksrc_st_lpc.c
  F:    drivers/i2c/busses/i2c-st.c
  F:    drivers/media/rc/st_rc.c
+ F:    drivers/media/platform/sti/c8sectpfe/
  F:    drivers/mmc/host/sdhci-st.c
  F:    drivers/phy/phy-miphy28lp.c
  F:    drivers/phy/phy-miphy365x.c
@@@ -1598,10 -1579,7 +1599,10 @@@ ARM/UNIPHIER ARCHITECTUR
  M:    Masahiro Yamada <yamada.masahiro@socionext.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 +F:    arch/arm/boot/dts/uniphier*
  F:    arch/arm/mach-uniphier/
 +F:    drivers/pinctrl/uniphier/
 +F:    drivers/tty/serial/8250/8250_uniphier.c
  N:    uniphier
  
  ARM/Ux500 ARM ARCHITECTURE
@@@ -1696,7 -1674,7 +1697,7 @@@ M:      Michal Simek <michal.simek@xilinx.co
  R:    Sören Brinkmann <soren.brinkmann@xilinx.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://wiki.xilinx.com
 -T:    git git://git.xilinx.com/linux-xlnx.git
 +T:    git https://github.com/Xilinx/linux-xlnx.git
  S:    Supported
  F:    arch/arm/mach-zynq/
  F:    drivers/cpuidle/cpuidle-zynq.c
@@@ -1937,14 -1915,6 +1938,14 @@@ W:    http://atmelwlandriver.sourceforge.n
  S:    Maintained
  F:    drivers/net/wireless/atmel*
  
 +ATMEL MAXTOUCH DRIVER
 +M:    Nick Dyer <nick.dyer@itdev.co.uk>
 +T:    git git://github.com/atmel-maxtouch/linux.git
 +S:    Supported
 +F:    Documentation/devicetree/bindings/input/atmel,maxtouch.txt
 +F:    drivers/input/touchscreen/atmel_mxt_ts.c
 +F:    include/linux/platform_data/atmel_mxt_ts.h
 +
  ATTO EXPRESSSAS SAS/SATA RAID SCSI DRIVER
  M:    Bradley Grove <linuxdrivers@attotech.com>
  L:    linux-scsi@vger.kernel.org
@@@ -2248,9 -2218,7 +2249,9 @@@ F:      drivers/clocksource/bcm_kona_timer.
  BROADCOM BCM2835 ARM ARCHITECTURE
  M:    Stephen Warren <swarren@wwwdotorg.org>
  M:    Lee Jones <lee@kernel.org>
 +M:    Eric Anholt <eric@anholt.net>
  L:    linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers)
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rpi/linux-rpi.git
  S:    Maintained
  N:    bcm2835
@@@ -2438,7 -2406,7 +2439,7 @@@ F:      drivers/gpio/gpio-bt8xx.
  BTRFS FILE SYSTEM
  M:    Chris Mason <clm@fb.com>
  M:    Josef Bacik <jbacik@fb.com>
 -M:    David Sterba <dsterba@suse.cz>
 +M:    David Sterba <dsterba@suse.com>
  L:    linux-btrfs@vger.kernel.org
  W:    http://btrfs.wiki.kernel.org/
  Q:    http://patchwork.kernel.org/project/linux-btrfs/list/
@@@ -2574,6 -2542,7 +2575,6 @@@ M:     Raghu Vatsavayi <raghu.vatsavayi
  L:     netdev@vger.kernel.org
  W:     http://www.cavium.com
  S:     Supported
 -F:     drivers/net/ethernet/cavium/
  F:     drivers/net/ethernet/cavium/liquidio/
  
  CC2520 IEEE-802.15.4 RADIO DRIVER
@@@ -2780,7 -2749,7 +2781,7 @@@ COCCINELLE/Semantic Patches (SmPL
  M:    Julia Lawall <Julia.Lawall@lip6.fr>
  M:    Gilles Muller <Gilles.Muller@lip6.fr>
  M:    Nicolas Palix <nicolas.palix@imag.fr>
 -M:    Michal Marek <mmarek@suse.cz>
 +M:    Michal Marek <mmarek@suse.com>
  L:    cocci@systeme.lip6.fr (moderated for non-subscribers)
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git misc
  W:    http://coccinelle.lip6.fr/
@@@ -2896,7 -2865,7 +2897,7 @@@ F:      kernel/cpuset.
  
  CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)
  M:    Johannes Weiner <hannes@cmpxchg.org>
 -M:    Michal Hocko <mhocko@suse.cz>
 +M:    Michal Hocko <mhocko@kernel.org>
  L:    cgroups@vger.kernel.org
  L:    linux-mm@kvack.org
  S:    Maintained
@@@ -2977,7 -2946,7 +2978,7 @@@ F:      arch/x86/kernel/cpuid.
  F:    arch/x86/kernel/msr.c
  
  CPU POWER MONITORING SUBSYSTEM
 -M:    Thomas Renninger <trenn@suse.de>
 +M:    Thomas Renninger <trenn@suse.com>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
  F:    tools/power/cpupower/
@@@ -3207,7 -3176,7 +3208,7 @@@ F:      Documentation/networking/dmfe.tx
  F:    drivers/net/ethernet/dec/tulip/dmfe.c
  
  DC390/AM53C974 SCSI driver
 -M:    Hannes Reinecke <hare@suse.de>
 +M:    Hannes Reinecke <hare@suse.com>
  L:    linux-scsi@vger.kernel.org
  S:    Maintained
  F:    drivers/scsi/am53c974.c
@@@ -3411,7 -3380,7 +3412,7 @@@ W:      http://www.win.tue.nl/~aeb/partition
  S:    Maintained
  
  DISKQUOTA
 -M:    Jan Kara <jack@suse.cz>
 +M:    Jan Kara <jack@suse.com>
  S:    Maintained
  F:    Documentation/filesystems/quota.txt
  F:    fs/quota/
@@@ -3467,7 -3436,7 +3468,7 @@@ F:      Documentation/hwmon/dme173
  F:    drivers/hwmon/dme1737.c
  
  DMI/SMBIOS SUPPORT
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  S:    Maintained
  T:    quilt http://jdelvare.nerim.net/devel/linux/jdelvare-dmi/
  F:    Documentation/ABI/testing/sysfs-firmware-dmi-tables
@@@ -3485,7 -3454,6 +3486,7 @@@ X:      Documentation/devicetree
  X:    Documentation/acpi
  X:    Documentation/power
  X:    Documentation/spi
 +X:    Documentation/DocBook/media
  T:    git git://git.lwn.net/linux-2.6.git docs-next
  
  DOUBLETALK DRIVER
@@@ -3582,15 -3550,6 +3583,15 @@@ F:    drivers/gpu/drm/exynos
  F:    include/drm/exynos*
  F:    include/uapi/drm/exynos*
  
 +DRM DRIVERS FOR FREESCALE DCU
 +M:    Jianwei Wang <jianwei.wang.chn@gmail.com>
 +M:    Alison Wang <alison.wang@freescale.com>
 +L:    dri-devel@lists.freedesktop.org
 +S:    Supported
 +F:    drivers/gpu/drm/fsl-dcu/
 +F:    Documentation/devicetree/bindings/video/fsl,dcu.txt
 +F:    Documentation/devicetree/bindings/panel/nec,nl4827hc19_05b.txt
 +
  DRM DRIVERS FOR FREESCALE IMX
  M:    Philipp Zabel <p.zabel@pengutronix.de>
  L:    dri-devel@lists.freedesktop.org
@@@ -3628,15 -3587,6 +3629,15 @@@ S:    Maintaine
  F:    drivers/gpu/drm/rockchip/
  F:    Documentation/devicetree/bindings/video/rockchip*
  
 +DRM DRIVERS FOR STI
 +M:    Benjamin Gaignard <benjamin.gaignard@linaro.org>
 +M:    Vincent Abriou <vincent.abriou@st.com>
 +L:    dri-devel@lists.freedesktop.org
 +T:    git http://git.linaro.org/people/benjamin.gaignard/kernel.git
 +S:    Maintained
 +F:    drivers/gpu/drm/sti
 +F:    Documentation/devicetree/bindings/gpu/st,stih4xx.txt
 +
  DSBR100 USB FM RADIO DRIVER
  M:    Alexey Klimov <klimov.linux@gmail.com>
  L:    linux-media@vger.kernel.org
@@@ -4102,13 -4052,22 +4103,13 @@@ F:   drivers/of/of_mdio.
  F:    drivers/of/of_net.c
  
  EXT2 FILE SYSTEM
 -M:    Jan Kara <jack@suse.cz>
 +M:    Jan Kara <jack@suse.com>
  L:    linux-ext4@vger.kernel.org
  S:    Maintained
  F:    Documentation/filesystems/ext2.txt
  F:    fs/ext2/
  F:    include/linux/ext2*
  
 -EXT3 FILE SYSTEM
 -M:    Jan Kara <jack@suse.cz>
 -M:    Andrew Morton <akpm@linux-foundation.org>
 -M:    Andreas Dilger <adilger.kernel@dilger.ca>
 -L:    linux-ext4@vger.kernel.org
 -S:    Maintained
 -F:    Documentation/filesystems/ext3.txt
 -F:    fs/ext3/
 -
  EXT4 FILE SYSTEM
  M:    "Theodore Ts'o" <tytso@mit.edu>
  M:    Andreas Dilger <adilger.kernel@dilger.ca>
@@@ -4151,7 -4110,7 +4152,7 @@@ F:      drivers/video/fbdev/exynos/exynos_mi
  F:    include/video/exynos_mipi*
  
  F71805F HARDWARE MONITORING DRIVER
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  L:    lm-sensors@lm-sensors.org
  S:    Maintained
  F:    Documentation/hwmon/f71805f
@@@ -4286,7 -4245,7 +4287,7 @@@ S:      Maintaine
  F:    drivers/block/rsxx/
  
  FLOPPY DRIVER
 -M:    Jiri Kosina <jkosina@suse.cz>
 +M:    Jiri Kosina <jikos@kernel.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/floppy.git
  S:    Odd fixes
  F:    drivers/block/floppy.c
@@@ -4447,7 -4406,6 +4448,7 @@@ F:      include/linux/fscache*.
  F2FS FILE SYSTEM
  M:    Jaegeuk Kim <jaegeuk@kernel.org>
  M:    Changman Lee <cm224.lee@samsung.com>
 +R:    Chao Yu <chao2.yu@samsung.com>
  L:    linux-f2fs-devel@lists.sourceforge.net
  W:    http://en.wikipedia.org/wiki/F2FS
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git
@@@ -4456,7 -4414,6 +4457,7 @@@ F:      Documentation/filesystems/f2fs.tx
  F:    Documentation/ABI/testing/sysfs-fs-f2fs
  F:    fs/f2fs/
  F:    include/linux/f2fs_fs.h
 +F:    include/trace/events/f2fs.h
  
  FUJITSU FR-V (FRV) PORT
  M:    David Howells <dhowells@redhat.com>
@@@ -4709,7 -4666,7 +4710,7 @@@ F:      drivers/media/usb/stk1160
  
  H8/300 ARCHITECTURE
  M:    Yoshinori Sato <ysato@users.sourceforge.jp>
 -L:    uclinux-h8-devel@lists.sourceforge.jp
 +L:    uclinux-h8-devel@lists.sourceforge.jp (moderated for non-subscribers)
  W:    http://uclinux-h8.sourceforge.jp
  T:    git git://git.sourceforge.jp/gitroot/uclinux-h8/linux.git
  S:    Maintained
@@@ -4756,7 -4713,7 +4757,7 @@@ S:      Maintaine
  F:    drivers/media/usb/hackrf/
  
  HARDWARE MONITORING
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    lm-sensors@lm-sensors.org
  W:    http://www.lm-sensors.org/
@@@ -4859,7 -4816,7 +4860,7 @@@ F:      include/linux/pm.
  F:    arch/*/include/asm/suspend*.h
  
  HID CORE LAYER
 -M:    Jiri Kosina <jkosina@suse.cz>
 +M:    Jiri Kosina <jikos@kernel.org>
  L:    linux-input@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
  S:    Maintained
@@@ -4868,7 -4825,7 +4869,7 @@@ F:      include/linux/hid
  F:    include/uapi/linux/hid*
  
  HID SENSOR HUB DRIVERS
 -M:    Jiri Kosina <jkosina@suse.cz>
 +M:    Jiri Kosina <jikos@kernel.org>
  M:    Jonathan Cameron <jic23@kernel.org>
  M:    Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
  L:    linux-input@vger.kernel.org
@@@ -5000,10 -4957,9 +5001,10 @@@ F:    drivers/scsi/storvsc_drv.
  F:    drivers/video/fbdev/hyperv_fb.c
  F:    include/linux/hyperv.h
  F:    tools/hv/
 +F:    Documentation/ABI/stable/sysfs-bus-vmbus
  
  I2C OVER PARALLEL PORT
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
  F:    Documentation/i2c/busses/i2c-parport
@@@ -5012,7 -4968,7 +5013,7 @@@ F:      drivers/i2c/busses/i2c-parport.
  F:    drivers/i2c/busses/i2c-parport-light.c
  
  I2C/SMBUS CONTROLLER DRIVERS FOR PC
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
  F:    Documentation/i2c/busses/i2c-ali1535
@@@ -5053,7 -5009,7 +5054,7 @@@ F:      drivers/i2c/busses/i2c-ismt.
  F:    Documentation/i2c/busses/i2c-ismt
  
  I2C/SMBUS STUB DRIVER
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
  F:    drivers/i2c/i2c-stub.c
@@@ -5080,7 -5036,7 +5081,7 @@@ L:      linux-acpi@vger.kernel.or
  S:    Maintained
  
  I2C-TAOS-EVM DRIVER
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
  F:    Documentation/i2c/busses/i2c-taos-evm
@@@ -5111,21 -5067,9 +5112,21 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    arch/ia64/
  
 +IBM Power VMX Cryptographic instructions
 +M:    Leonidas S. Barbosa <leosilva@linux.vnet.ibm.com>
 +M:    Paulo Flabiano Smorigo <pfsmorigo@linux.vnet.ibm.com>
 +L:    linux-crypto@vger.kernel.org
 +S:    Supported
 +F:    drivers/crypto/vmx/Makefile
 +F:    drivers/crypto/vmx/Kconfig
 +F:    drivers/crypto/vmx/vmx.c
 +F:    drivers/crypto/vmx/aes*
 +F:    drivers/crypto/vmx/ghash*
 +F:    drivers/crypto/vmx/ppc-xlate.pl
 +
  IBM Power in-Nest Crypto Acceleration
 -M:    Marcelo Henrique Cerri <mhcerri@linux.vnet.ibm.com>
 -M:    Fionnuala Gunter <fin@linux.vnet.ibm.com>
 +M:    Leonidas S. Barbosa <leosilva@linux.vnet.ibm.com>
 +M:    Paulo Flabiano Smorigo <pfsmorigo@linux.vnet.ibm.com>
  L:    linux-crypto@vger.kernel.org
  S:    Supported
  F:    drivers/crypto/nx/Makefile
@@@ -5137,7 -5081,7 +5138,7 @@@ F:      drivers/crypto/nx/nx_csbcpb.
  F:    drivers/crypto/nx/nx_debugfs.h
  
  IBM Power 842 compression accelerator
 -M:    Dan Streetman <ddstreet@us.ibm.com>
 +M:    Dan Streetman <ddstreet@ieee.org>
  S:    Supported
  F:    drivers/crypto/nx/Makefile
  F:    drivers/crypto/nx/Kconfig
@@@ -5621,8 -5565,8 +5622,8 @@@ F:      include/uapi/linux/ip_vs.
  F:    net/netfilter/ipvs/
  
  IPWIRELESS DRIVER
 -M:    Jiri Kosina <jkosina@suse.cz>
 -M:    David Sterba <dsterba@suse.cz>
 +M:    Jiri Kosina <jikos@kernel.org>
 +M:    David Sterba <dsterba@suse.com>
  S:    Odd Fixes
  F:    drivers/tty/ipwireless/
  
@@@ -5656,7 -5600,6 +5657,7 @@@ F:      kernel/irq
  IRQCHIP DRIVERS
  M:    Thomas Gleixner <tglx@linutronix.de>
  M:    Jason Cooper <jason@lakedaemon.net>
 +M:    Marc Zyngier <marc.zyngier@arm.com>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
@@@ -5665,14 -5608,11 +5666,14 @@@ F:   Documentation/devicetree/bindings/in
  F:    drivers/irqchip/
  
  IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
 -M:    Benjamin Herrenschmidt <benh@kernel.crashing.org>
 +M:    Jiang Liu <jiang.liu@linux.intel.com>
 +M:    Marc Zyngier <marc.zyngier@arm.com>
  S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
  F:    Documentation/IRQ-domain.txt
  F:    include/linux/irqdomain.h
  F:    kernel/irq/irqdomain.c
 +F:    kernel/irq/msi.c
  
  ISAPNP
  M:    Jaroslav Kysela <perex@perex.cz>
@@@ -5746,7 -5686,7 +5747,7 @@@ S:      Maintaine
  F:    drivers/isdn/hardware/eicon/
  
  IT87 HARDWARE MONITORING DRIVER
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  L:    lm-sensors@lm-sensors.org
  S:    Maintained
  F:    Documentation/hwmon/it87
@@@ -5811,14 -5751,27 +5812,20 @@@ S:   Maintaine
  F:    fs/jffs2/
  F:    include/uapi/linux/jffs2.h
  
 -JOURNALLING LAYER FOR BLOCK DEVICES (JBD)
 -M:    Andrew Morton <akpm@linux-foundation.org>
 -M:    Jan Kara <jack@suse.cz>
 -L:    linux-ext4@vger.kernel.org
 -S:    Maintained
 -F:    fs/jbd/
 -F:    include/linux/jbd.h
 -
  JOURNALLING LAYER FOR BLOCK DEVICES (JBD2)
  M:    "Theodore Ts'o" <tytso@mit.edu>
 +M:    Jan Kara <jack@suse.com>
  L:    linux-ext4@vger.kernel.org
  S:    Maintained
  F:    fs/jbd2/
  F:    include/linux/jbd2.h
  
+ JPU V4L2 MEM2MEM DRIVER FOR RENESAS
+ M:    Mikhail Ulyanov <mikhail.ulyanov@cogentembedded.com>
+ L:    linux-media@vger.kernel.org
+ S:    Maintained
+ F:    drivers/media/platform/rcar_jpu.c
  JSM Neo PCI based serial card
  M:    Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
  L:    linux-serial@vger.kernel.org
@@@ -5870,7 -5823,7 +5877,7 @@@ S:      Maintaine
  F:    fs/autofs4/
  
  KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
 -M:    Michal Marek <mmarek@suse.cz>
 +M:    Michal Marek <mmarek@suse.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git for-next
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git rc-fixes
  L:    linux-kbuild@vger.kernel.org
@@@ -5889,7 -5842,6 +5896,7 @@@ S:      Odd Fixe
  
  KERNEL NFSD, SUNRPC, AND LOCKD SERVERS
  M:    "J. Bruce Fields" <bfields@fieldses.org>
 +M:    Jeff Layton <jlayton@poochiereds.net>
  L:    linux-nfs@vger.kernel.org
  W:    http://nfs.sourceforge.net/
  S:    Supported
@@@ -5935,7 -5887,7 +5942,7 @@@ F:      arch/x86/include/asm/svm.
  F:    arch/x86/kvm/svm.c
  
  KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC
 -M:    Alexander Graf <agraf@suse.de>
 +M:    Alexander Graf <agraf@suse.com>
  L:    kvm-ppc@vger.kernel.org
  W:    http://kvm.qumranet.com
  T:    git git://github.com/agraf/linux-2.6.git
@@@ -5946,12 -5898,14 +5953,12 @@@ F:   arch/powerpc/kvm
  KERNEL VIRTUAL MACHINE for s390 (KVM/s390)
  M:    Christian Borntraeger <borntraeger@de.ibm.com>
  M:    Cornelia Huck <cornelia.huck@de.ibm.com>
 -M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
  F:    Documentation/s390/kvm.txt
  F:    arch/s390/include/asm/kvm*
  F:    arch/s390/kvm/
 -F:    drivers/s390/kvm/
  
  KERNEL VIRTUAL MACHINE (KVM) FOR ARM
  M:    Christoffer Dall <christoffer.dall@linaro.org>
@@@ -6080,16 -6034,17 +6087,16 @@@ F:   Documentation/scsi/53c700.tx
  F:    drivers/scsi/53c700*
  
  LED SUBSYSTEM
 -M:    Bryan Wu <cooloney@gmail.com>
  M:    Richard Purdie <rpurdie@rpsys.net>
  M:    Jacek Anaszewski <j.anaszewski@samsung.com>
  L:    linux-leds@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds.git
  S:    Maintained
  F:    drivers/leds/
  F:    include/linux/leds.h
  
  LEGACY EEPROM DRIVER
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  S:    Maintained
  F:    Documentation/misc-devices/eeprom
  F:    drivers/misc/eeprom/eeprom.c
@@@ -6142,7 -6097,7 +6149,7 @@@ F:      include/linux/ata.
  F:    include/linux/libata.h
  
  LIBATA PATA ARASAN COMPACT FLASH CONTROLLER
 -M:    Viresh Kumar <viresh.linux@gmail.com>
 +M:    Viresh Kumar <vireshk@kernel.org>
  L:    linux-ide@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
  S:    Maintained
@@@ -6303,8 -6258,8 +6310,8 @@@ F:      drivers/platform/x86/hp_accel.
  LIVE PATCHING
  M:    Josh Poimboeuf <jpoimboe@redhat.com>
  M:    Seth Jennings <sjenning@redhat.com>
 -M:    Jiri Kosina <jkosina@suse.cz>
 -M:    Vojtech Pavlik <vojtech@suse.cz>
 +M:    Jiri Kosina <jikos@kernel.org>
 +M:    Vojtech Pavlik <vojtech@suse.com>
  S:    Maintained
  F:    kernel/livepatch/
  F:    include/linux/livepatch.h
@@@ -6330,21 -6285,21 +6337,21 @@@ S:   Maintaine
  F:    drivers/hwmon/lm73.c
  
  LM78 HARDWARE MONITOR DRIVER
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  L:    lm-sensors@lm-sensors.org
  S:    Maintained
  F:    Documentation/hwmon/lm78
  F:    drivers/hwmon/lm78.c
  
  LM83 HARDWARE MONITOR DRIVER
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  L:    lm-sensors@lm-sensors.org
  S:    Maintained
  F:    Documentation/hwmon/lm83
  F:    drivers/hwmon/lm83.c
  
  LM90 HARDWARE MONITOR DRIVER
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  L:    lm-sensors@lm-sensors.org
  S:    Maintained
  F:    Documentation/hwmon/lm90
@@@ -6558,7 -6513,7 +6565,7 @@@ F:      drivers/net/ethernet/marvell/mvneta.
  
  MARVELL MWIFIEX WIRELESS DRIVER
  M:    Amitkumar Karwar <akarwar@marvell.com>
 -M:    Avinash Patil <patila@marvell.com>
 +M:    Nishant Sarmukadam <nishants@marvell.com>
  L:    linux-wireless@vger.kernel.org
  S:    Maintained
  F:    drivers/net/wireless/mwifiex/
@@@ -6587,13 -6542,6 +6594,13 @@@ S:    Maintaine
  F:    Documentation/hwmon/max16065
  F:    drivers/hwmon/max16065.c
  
 +MAX20751 HARDWARE MONITOR DRIVER
 +M:    Guenter Roeck <linux@roeck-us.net>
 +L:    lm-sensors@lm-sensors.org
 +S:    Maintained
 +F:    Documentation/hwmon/max20751
 +F:    drivers/hwmon/max20751.c
 +
  MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER
  M:    "Hans J. Koch" <hjk@hansjkoch.de>
  L:    lm-sensors@lm-sensors.org
@@@ -6617,14 -6565,6 +6624,14 @@@ S:    Supporte
  F:    drivers/power/max14577_charger.c
  F:    drivers/power/max77693_charger.c
  
 +MAXIM MAX77802 MULTIFUNCTION PMIC DEVICE DRIVERS
 +M:    Javier Martinez Canillas <javier@osg.samsung.com>
 +L:    linux-kernel@vger.kernel.org
 +S:    Supported
 +F:    drivers/*/*max77802.c
 +F:    Documentation/devicetree/bindings/*/*max77802.txt
 +F:    include/dt-bindings/*/*max77802.h
 +
  MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS
  M:    Chanwoo Choi <cw00.choi@samsung.com>
  M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
@@@ -6638,7 -6578,7 +6645,7 @@@ F:      drivers/extcon/extcon-max77693.
  F:    drivers/rtc/rtc-max77686.c
  F:    drivers/clk/clk-max77686.c
  F:    Documentation/devicetree/bindings/mfd/max14577.txt
 -F:    Documentation/devicetree/bindings/mfd/max77686.txt
 +F:    Documentation/devicetree/bindings/*/max77686.txt
  F:    Documentation/devicetree/bindings/mfd/max77693.txt
  F:    Documentation/devicetree/bindings/clock/maxim,max77686.txt
  F:    include/linux/mfd/max14577*.h
@@@ -6662,6 -6602,51 +6669,51 @@@ S:    Supporte
  F:    Documentation/devicetree/bindings/media/renesas,vsp1.txt
  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:    http://netup.tv/
+ T:    git git://linuxtv.org/media_tree.git
+ S:    Supported
+ 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:    http://netup.tv/
+ T:    git git://linuxtv.org/media_tree.git
+ S:    Supported
+ F:    drivers/media/dvb-frontends/cxd2841er*
+ MEDIA DRIVERS FOR HORUS3A
+ M:    Sergey Kozlov <serjk@netup.ru>
+ L:    linux-media@vger.kernel.org
+ W:    http://linuxtv.org/
+ W:    http://netup.tv/
+ T:    git git://linuxtv.org/media_tree.git
+ S:    Supported
+ 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:    http://netup.tv/
+ T:    git git://linuxtv.org/media_tree.git
+ S:    Supported
+ 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:    http://netup.tv/
+ T:    git git://linuxtv.org/media_tree.git
+ S:    Supported
+ F:    drivers/media/pci/netup_unidvb/*
  MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  P:    LinuxTV.org Project
@@@ -6711,15 -6696,6 +6763,15 @@@ W:    http://www.mellanox.co
  Q:    http://patchwork.ozlabs.org/project/netdev/list/
  F:    drivers/net/ethernet/mellanox/mlx4/en_*
  
 +MELLANOX ETHERNET SWITCH DRIVERS
 +M:    Jiri Pirko <jiri@mellanox.com>
 +M:    Ido Schimmel <idosch@mellanox.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +W:    http://www.mellanox.com
 +Q:    http://patchwork.ozlabs.org/project/netdev/list/
 +F:    drivers/net/ethernet/mellanox/mlxsw/
 +
  MEMORY MANAGEMENT
  L:    linux-mm@kvack.org
  W:    http://www.linux-mm.org
@@@ -6755,7 -6731,6 +6807,7 @@@ M:      Johannes Thumshirn <morbidrsa@gmail.
  S:    Maintained
  F:    drivers/mcb/
  F:    include/linux/mcb.h
 +F:    Documentation/men-chameleon-bus.txt
  
  MEN F21BMC (Board Management Controller)
  M:    Andreas Werner <andreas.werner@men.de>
@@@ -6915,12 -6890,6 +6967,12 @@@ T:    git git://linuxtv.org/anttip/media_t
  S:    Maintained
  F:    drivers/media/usb/msi2500/
  
 +MSYSTEMS DISKONCHIP G3 MTD DRIVER
 +M:    Robert Jarzmik <robert.jarzmik@free.fr>
 +L:    linux-mtd@lists.infradead.org
 +S:    Maintained
 +F:    drivers/mtd/devices/docg3*
 +
  MT9M032 APTINA SENSOR DRIVER
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
  L:    linux-media@vger.kernel.org
@@@ -7102,7 -7071,6 +7154,7 @@@ F:      include/uapi/linux/netfilter
  F:    net/*/netfilter.c
  F:    net/*/netfilter/
  F:    net/netfilter/
 +F:    net/bridge/br_netfilter*.c
  
  NETLABEL
  M:    Paul Moore <paul@paul-moore.com>
@@@ -7361,15 -7329,6 +7413,15 @@@ S:    Supporte
  F:    drivers/block/nvme*
  F:    include/linux/nvme.h
  
 +NVMEM FRAMEWORK
 +M:    Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
 +M:    Maxime Ripard <maxime.ripard@free-electrons.com>
 +S:    Maintained
 +F:    drivers/nvmem/
 +F:    Documentation/devicetree/bindings/nvmem/
 +F:    include/linux/nvmem-consumer.h
 +F:    include/linux/nvmem-provider.h
 +
  NXP-NCI NFC DRIVER
  M:    Clément Perrochaud <clement.perrochaud@effinnov.com>
  R:    Charles Gorand <charles.gorand@effinnov.com>
@@@ -7607,9 -7566,8 +7659,9 @@@ F:      Documentation/i2c/busses/i2c-ocore
  F:    drivers/i2c/busses/i2c-ocores.c
  
  OPEN FIRMWARE AND FLATTENED DEVICE TREE
 -M:    Grant Likely <grant.likely@linaro.org>
  M:    Rob Herring <robh+dt@kernel.org>
 +M:    Frank Rowand <frowand.list@gmail.com>
 +M:    Grant Likely <grant.likely@linaro.org>
  L:    devicetree@vger.kernel.org
  W:    http://www.devicetree.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/glikely/linux.git
@@@ -7812,7 -7770,7 +7864,7 @@@ S:      Maintaine
  F:    drivers/char/pc8736x_gpio.c
  
  PC87427 HARDWARE MONITORING DRIVER
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  L:    lm-sensors@lm-sensors.org
  S:    Maintained
  F:    Documentation/hwmon/pc87427
@@@ -8082,13 -8040,14 +8134,13 @@@ F:   drivers/pinctrl/sh-pfc
  
  PIN CONTROLLER - SAMSUNG
  M:    Tomasz Figa <tomasz.figa@gmail.com>
 -M:    Thomas Abraham <thomas.abraham@linaro.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
  S:    Maintained
  F:    drivers/pinctrl/samsung/
  
  PIN CONTROLLER - ST SPEAR
 -M:    Viresh Kumar <viresh.linux@gmail.com>
 +M:    Viresh Kumar <vireshk@kernel.org>
  L:    spear-devel@list.st.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.st.com/spear
@@@ -8096,7 -8055,7 +8148,7 @@@ S:      Maintaine
  F:    drivers/pinctrl/spear/
  
  PKTCDVD DRIVER
 -M:    Jiri Kosina <jkosina@suse.cz>
 +M:    Jiri Kosina <jikos@kernel.org>
  S:    Maintained
  F:    drivers/block/pktcdvd.c
  F:    include/linux/pktcdvd.h
@@@ -8131,7 -8090,7 +8183,7 @@@ S:      Supporte
  F:    drivers/scsi/pmcraid.*
  
  PMC SIERRA PM8001 DRIVER
 -M:    xjtuwjp@gmail.com
 +M:    Jack Wang <jinpu.wang@profitbricks.com>
  M:    lindar_liu@usish.com
  L:    pmchba@pmcs.com
  L:    linux-scsi@vger.kernel.org
@@@ -8156,16 -8115,6 +8208,16 @@@ T:    git git://git.infradead.org/battery-
  S:    Maintained
  F:    include/linux/power_supply.h
  F:    drivers/power/
 +X:    drivers/power/avs/
 +
 +POWER STATE COORDINATION INTERFACE (PSCI)
 +M:    Mark Rutland <mark.rutland@arm.com>
 +M:    Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 +L:    linux-arm-kernel@lists.infradead.org
 +S:    Maintained
 +F:    drivers/firmware/psci.c
 +F:    include/linux/psci.h
 +F:    include/uapi/linux/psci.h
  
  PNP SUPPORT
  M:    "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
@@@ -8564,7 -8513,7 +8616,7 @@@ M:      "Paul E. McKenney" <paulmck@linux.vn
  M:    Josh Triplett <josh@joshtriplett.org>
  R:    Steven Rostedt <rostedt@goodmis.org>
  R:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
 -R:    Lai Jiangshan <laijs@cn.fujitsu.com>
 +R:    Lai Jiangshan <jiangshanlai@gmail.com>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
@@@ -8591,7 -8540,7 +8643,7 @@@ M:      "Paul E. McKenney" <paulmck@linux.vn
  M:    Josh Triplett <josh@joshtriplett.org>
  R:    Steven Rostedt <rostedt@goodmis.org>
  R:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
 -R:    Lai Jiangshan <laijs@cn.fujitsu.com>
 +R:    Lai Jiangshan <jiangshanlai@gmail.com>
  L:    linux-kernel@vger.kernel.org
  W:    http://www.rdrop.com/users/paulmck/RCU/
  S:    Supported
@@@ -8656,7 -8605,6 +8708,7 @@@ M:      Philipp Zabel <p.zabel@pengutronix.d
  S:    Maintained
  F:    drivers/reset/
  F:    Documentation/devicetree/bindings/reset/
 +F:    include/dt-bindings/reset/
  F:    include/linux/reset.h
  F:    include/linux/reset-controller.h
  
@@@ -8791,6 -8739,7 +8843,6 @@@ F:      drivers/video/fbdev/savage
  S390
  M:    Martin Schwidefsky <schwidefsky@de.ibm.com>
  M:    Heiko Carstens <heiko.carstens@de.ibm.com>
 -M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -8818,6 -8767,7 +8870,6 @@@ F:      block/partitions/ibm.
  
  S390 NETWORK DRIVERS
  M:    Ursula Braun <ursula.braun@de.ibm.com>
 -M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -8834,6 -8784,7 +8886,6 @@@ F:      drivers/pci/hotplug/s390_pci_hpc.
  
  S390 ZCRYPT DRIVER
  M:    Ingo Tuchscherer <ingo.tuchscherer@de.ibm.com>
 -M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -8841,6 -8792,7 +8893,6 @@@ F:      drivers/s390/crypto
  
  S390 ZFCP DRIVER
  M:    Steffen Maier <maier@linux.vnet.ibm.com>
 -M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -8848,6 -8800,7 +8900,6 @@@ F:      drivers/s390/scsi/zfcp_
  
  S390 IUCV NETWORK LAYER
  M:    Ursula Braun <ursula.braun@de.ibm.com>
 -M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -8950,12 -8903,6 +9002,12 @@@ L:    linux-media@vger.kernel.or
  S:    Supported
  F:    drivers/media/i2c/s5k5baf.c
  
 +SAMSUNG S3FWRN5 NFC DRIVER
 +M:    Robert Baldyga <r.baldyga@samsung.com>
 +L:    linux-nfc@lists.01.org (moderated for non-subscribers)
 +S:    Supported
 +F:    drivers/nfc/s3fwrn5
 +
  SAMSUNG SOC CLOCK DRIVERS
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
  M:    Tomasz Figa <tomasz.figa@gmail.com>
@@@ -8999,20 -8946,13 +9051,20 @@@ S:   Maintaine
  F:    drivers/tty/serial/
  
  SYNOPSYS DESIGNWARE DMAC DRIVER
 -M:    Viresh Kumar <viresh.linux@gmail.com>
 +M:    Viresh Kumar <vireshk@kernel.org>
  M:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  S:    Maintained
  F:    include/linux/dma/dw.h
  F:    include/linux/platform_data/dma-dw.h
  F:    drivers/dma/dw/
  
 +SYNOPSYS DESIGNWARE ETHERNET QOS 4.10a driver
 +M: Lars Persson <lars.persson@axis.com>
 +L: netdev@vger.kernel.org
 +S: Supported
 +F: Documentation/devicetree/bindings/net/snps,dwc-qos-ethernet.txt
 +F: drivers/net/ethernet/synopsys/dwc_eth_qos.c
 +
  SYNOPSYS DESIGNWARE MMC/SD/SDIO DRIVER
  M:    Seungwon Jeon <tgih.jun@samsung.com>
  M:    Jaehoon Chung <jh80.chung@samsung.com>
@@@ -9173,7 -9113,7 +9225,7 @@@ S:      Maintaine
  F:    drivers/mmc/host/sdhci-s3c*
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER
 -M:    Viresh Kumar <viresh.linux@gmail.com>
 +M:    Viresh Kumar <vireshk@kernel.org>
  L:    spear-devel@list.st.com
  L:    linux-mmc@vger.kernel.org
  S:    Maintained
@@@ -9429,15 -9369,6 +9481,15 @@@ S:    Maintaine
  F:    drivers/media/i2c/ov2659.c
  F:    include/media/ov2659.h
  
 +SILICON MOTION SM712 FRAME BUFFER DRIVER
 +M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
 +M:    Teddy Wang <teddy.wang@siliconmotion.com>
 +M:    Sudip Mukherjee <sudip@vectorindia.org>
 +L:    linux-fbdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/video/fbdev/sm712*
 +F:    Documentation/fb/sm712fb.txt
 +
  SIS 190 ETHERNET DRIVER
  M:    Francois Romieu <romieu@fr.zoreil.com>
  L:    netdev@vger.kernel.org
@@@ -9477,7 -9408,7 +9529,7 @@@ F:      include/linux/sl?b*.
  F:    mm/sl?b*
  
  SLEEPABLE READ-COPY UPDATE (SRCU)
 -M:    Lai Jiangshan <laijs@cn.fujitsu.com>
 +M:    Lai Jiangshan <jiangshanlai@gmail.com>
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
  M:    Josh Triplett <josh@joshtriplett.org>
  R:    Steven Rostedt <rostedt@goodmis.org>
@@@ -9544,7 -9475,7 +9596,7 @@@ F:      Documentation/hwmon/sch562
  F:    drivers/hwmon/sch5627.c
  
  SMSC47B397 HARDWARE MONITOR DRIVER
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  L:    lm-sensors@lm-sensors.org
  S:    Maintained
  F:    Documentation/hwmon/smsc47b397
@@@ -9593,7 -9524,7 +9645,7 @@@ S:      Supporte
  F:    drivers/media/pci/solo6x10/
  
  SOFTWARE RAID (Multiple Disks) SUPPORT
 -M:    Neil Brown <neilb@suse.de>
 +M:    Neil Brown <neilb@suse.com>
  L:    linux-raid@vger.kernel.org
  S:    Supported
  F:    drivers/md/
@@@ -9636,7 -9567,7 +9688,7 @@@ F:      drivers/memstick/core/ms_block.
  
  SOUND
  M:    Jaroslav Kysela <perex@perex.cz>
 -M:    Takashi Iwai <tiwai@suse.de>
 +M:    Takashi Iwai <tiwai@suse.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  W:    http://www.alsa-project.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
@@@ -9720,7 -9651,7 +9772,7 @@@ S:      Maintaine
  F:    include/linux/compiler.h
  
  SPEAR PLATFORM SUPPORT
 -M:    Viresh Kumar <viresh.linux@gmail.com>
 +M:    Viresh Kumar <vireshk@kernel.org>
  M:    Shiraz Hashim <shiraz.linux.kernel@gmail.com>
  L:    spear-devel@list.st.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -9729,7 -9660,7 +9781,7 @@@ S:      Maintaine
  F:    arch/arm/mach-spear/
  
  SPEAR CLOCK FRAMEWORK SUPPORT
 -M:    Viresh Kumar <viresh.linux@gmail.com>
 +M:    Viresh Kumar <vireshk@kernel.org>
  L:    spear-devel@list.st.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.st.com/spear
@@@ -9835,6 -9766,11 +9887,6 @@@ W:     http://wiki.laptop.org/go/DCO
  S:    Maintained
  F:    drivers/staging/olpc_dcon/
  
 -STAGING - OZMO DEVICES USB OVER WIFI DRIVER
 -M:    Shigekatsu Tateno <shigekatsu.tateno@atmel.com>
 -S:    Maintained
 -F:    drivers/staging/ozwpan/
 -
  STAGING - PARALLEL LCD/KEYPAD PANEL DRIVER
  M:    Willy Tarreau <willy@meta-x.org>
  S:    Odd Fixes
@@@ -9853,6 -9789,14 +9905,6 @@@ L:     linux-wireless@vger.kernel.or
  S:    Maintained
  F:    drivers/staging/rtl8723au/
  
 -STAGING - SILICON MOTION SM7XX FRAME BUFFER DRIVER
 -M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
 -M:    Teddy Wang <teddy.wang@siliconmotion.com>
 -M:    Sudip Mukherjee <sudip@vectorindia.org>
 -L:    linux-fbdev@vger.kernel.org
 -S:    Maintained
 -F:    drivers/staging/sm7xxfb/
 -
  STAGING - SILICON MOTION SM750 FRAME BUFFER DRIVER
  M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
  M:    Teddy Wang <teddy.wang@siliconmotion.com>
@@@ -9971,9 -9915,8 +10023,9 @@@ SYNOPSYS ARC ARCHITECTUR
  M:    Vineet Gupta <vgupta@synopsys.com>
  S:    Supported
  F:    arch/arc/
 -F:    Documentation/devicetree/bindings/arc/
 +F:    Documentation/devicetree/bindings/arc/*
  F:    drivers/tty/serial/arc_uart.c
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc.git
  
  SYNOPSYS ARC SDP platform support
  M:    Alexey Brodkin <abrodkin@synopsys.com>
@@@ -10428,6 -10371,13 +10480,13 @@@ F: drivers/char/toshiba.
  F:    include/linux/toshiba.h
  F:    include/uapi/linux/toshiba.h
  
+ TOSHIBA TC358743 DRIVER
+ M:    Mats Randgaard <matrandg@cisco.com>
+ L:    linux-media@vger.kernel.org
+ S:    Maintained
+ F:    drivers/media/i2c/tc358743*
+ F:    include/media/tc358743.h
  TMIO MMC DRIVER
  M:    Ian Molton <ian@mnementh.co.uk>
  L:    linux-mmc@vger.kernel.org
@@@ -10507,7 -10457,7 +10566,7 @@@ K:   ^Subject:.*(?i)trivia
  
  TTY LAYER
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 -M:    Jiri Slaby <jslaby@suse.cz>
 +M:    Jiri Slaby <jslaby@suse.com>
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git
  F:    Documentation/serial/
@@@ -10581,7 -10531,7 +10640,7 @@@ F:   arch/m68k/*/*_no.
  F:    arch/m68k/include/asm/*_no.*
  
  UDF FILESYSTEM
 -M:    Jan Kara <jack@suse.cz>
 +M:    Jan Kara <jack@suse.com>
  S:    Maintained
  F:    Documentation/filesystems/udf.txt
  F:    fs/udf/
@@@ -10724,7 -10674,7 +10783,7 @@@ F:   drivers/usb/gadget
  F:    include/linux/usb/gadget*
  
  USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
 -M:    Jiri Kosina <jkosina@suse.cz>
 +M:    Jiri Kosina <jikos@kernel.org>
  L:    linux-usb@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
  S:    Maintained
@@@ -10849,7 -10799,7 +10908,7 @@@ S:   Maintaine
  F:    drivers/usb/host/uhci*
  
  USB "USBNET" DRIVER FRAMEWORK
 -M:    Oliver Neukum <oneukum@suse.de>
 +M:    Oliver Neukum <oneukum@suse.com>
  L:    netdev@vger.kernel.org
  W:    http://www.linux-usb.org/usbnet
  S:    Maintained
@@@ -11003,15 -10953,6 +11062,15 @@@ F: drivers/block/virtio_blk.
  F:    include/linux/virtio_*.h
  F:    include/uapi/linux/virtio_*.h
  
 +VIRTIO DRIVERS FOR S390
 +M:    Christian Borntraeger <borntraeger@de.ibm.com>
 +M:    Cornelia Huck <cornelia.huck@de.ibm.com>
 +L:    linux-s390@vger.kernel.org
 +L:    virtualization@lists.linux-foundation.org
 +L:    kvm@vger.kernel.org
 +S:    Supported
 +F:    drivers/s390/virtio/
 +
  VIRTIO GPU DRIVER
  M:    David Airlie <airlied@linux.ie>
  M:    Gerd Hoffmann <kraxel@redhat.com>
@@@ -11119,7 -11060,7 +11178,7 @@@ F:   drivers/input/mouse/vmmouse.
  F:    drivers/input/mouse/vmmouse.h
  
  VMWARE VMXNET3 ETHERNET DRIVER
 -M:    Shreyas Bhatewara <sbhatewara@vmware.com>
 +M:    Shrikrishna Khare <skhare@vmware.com>
  M:    "VMware, Inc." <pv-drivers@vmware.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
@@@ -11144,14 -11085,6 +11203,14 @@@ S: Supporte
  F:    drivers/regulator/
  F:    include/linux/regulator/
  
 +VRF
 +M:    David Ahern <dsa@cumulusnetworks.com>
 +M:    Shrijeet Mukherjee <shm@cumulusnetworks.com>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/vrf.c
 +F:    include/net/vrf.h
 +
  VT1211 HARDWARE MONITOR DRIVER
  M:    Juerg Haefliger <juergh@gmail.com>
  L:    lm-sensors@lm-sensors.org
@@@ -11193,7 -11126,7 +11252,7 @@@ F:   Documentation/hwmon/w8379
  F:    drivers/hwmon/w83793.c
  
  W83795 HARDWARE MONITORING DRIVER
 -M:    Jean Delvare <jdelvare@suse.de>
 +M:    Jean Delvare <jdelvare@suse.com>
  L:    lm-sensors@lm-sensors.org
  S:    Maintained
  F:    drivers/hwmon/w83795.c
@@@ -11307,7 -11240,6 +11366,7 @@@ F:   sound/soc/codecs/wm
  
  WORKQUEUE
  M:    Tejun Heo <tj@kernel.org>
 +R:    Lai Jiangshan <jiangshanlai@gmail.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git
  S:    Maintained
  F:    include/linux/workqueue.h
index 284ac4c934ba9c1d43e212f23afe0a24574f760b,04310cd35bc1a946100a2a8e658e6830361e86e9..a4654e0c104d40b0687718de478205f320d9facc
@@@ -15,6 -15,7 +15,7 @@@
  #include <linux/debugfs.h>
  #include <linux/delay.h>
  #include <linux/firmware.h>
+ #include <linux/gcd.h>
  #include <linux/genalloc.h>
  #include <linux/interrupt.h>
  #include <linux/io.h>
@@@ -61,10 -62,9 +62,9 @@@ int coda_debug
  module_param(coda_debug, int, 0644);
  MODULE_PARM_DESC(coda_debug, "Debug level (0-2)");
  
- struct coda_fmt {
-       char *name;
-       u32 fourcc;
- };
+ static int disable_tiling;
+ module_param(disable_tiling, int, 0644);
+ MODULE_PARM_DESC(disable_tiling, "Disable tiled frame buffers");
  
  void coda_write(struct coda_dev *dev, u32 data, u32 reg)
  {
@@@ -90,17 -90,17 +90,17 @@@ void coda_write_base(struct coda_ctx *c
        u32 base_cb, base_cr;
  
        switch (q_data->fourcc) {
-       case V4L2_PIX_FMT_YVU420:
-               /* Switch Cb and Cr for YVU420 format */
-               base_cr = base_y + q_data->bytesperline * q_data->height;
-               base_cb = base_cr + q_data->bytesperline * q_data->height / 4;
-               break;
-       case V4L2_PIX_FMT_YUV420:
        case V4L2_PIX_FMT_NV12:
+       case V4L2_PIX_FMT_YUV420:
        default:
                base_cb = base_y + q_data->bytesperline * q_data->height;
                base_cr = base_cb + q_data->bytesperline * q_data->height / 4;
                break;
+       case V4L2_PIX_FMT_YVU420:
+               /* Switch Cb and Cr for YVU420 format */
+               base_cr = base_y + q_data->bytesperline * q_data->height;
+               base_cb = base_cr + q_data->bytesperline * q_data->height / 4;
+               break;
        case V4L2_PIX_FMT_YUV422P:
                base_cb = base_y + q_data->bytesperline * q_data->height;
                base_cr = base_cb + q_data->bytesperline * q_data->height / 2;
        coda_write(ctx->dev, base_cr, reg_y + 8);
  }
  
- /*
-  * Array of all formats supported by any version of Coda:
-  */
- static const struct coda_fmt coda_formats[] = {
-       {
-               .name = "YUV 4:2:0 Planar, YCbCr",
-               .fourcc = V4L2_PIX_FMT_YUV420,
-       },
-       {
-               .name = "YUV 4:2:0 Planar, YCrCb",
-               .fourcc = V4L2_PIX_FMT_YVU420,
-       },
-       {
-               .name = "YUV 4:2:0 Partial interleaved Y/CbCr",
-               .fourcc = V4L2_PIX_FMT_NV12,
-       },
-       {
-               .name = "YUV 4:2:2 Planar, YCbCr",
-               .fourcc = V4L2_PIX_FMT_YUV422P,
-       },
-       {
-               .name = "H264 Encoded Stream",
-               .fourcc = V4L2_PIX_FMT_H264,
-       },
-       {
-               .name = "MPEG4 Encoded Stream",
-               .fourcc = V4L2_PIX_FMT_MPEG4,
-       },
-       {
-               .name = "JPEG Encoded Images",
-               .fourcc = V4L2_PIX_FMT_JPEG,
-       },
- };
  #define CODA_CODEC(mode, src_fourcc, dst_fourcc, max_w, max_h) \
        { mode, src_fourcc, dst_fourcc, max_w, max_h }
  
@@@ -190,9 -156,9 +156,9 @@@ static const struct coda_video_device c
        .type = CODA_INST_ENCODER,
        .ops = &coda_bit_encode_ops,
        .src_formats = {
+               V4L2_PIX_FMT_NV12,
                V4L2_PIX_FMT_YUV420,
                V4L2_PIX_FMT_YVU420,
-               V4L2_PIX_FMT_NV12,
        },
        .dst_formats = {
                V4L2_PIX_FMT_H264,
@@@ -205,9 -171,9 +171,9 @@@ static const struct coda_video_device c
        .type = CODA_INST_ENCODER,
        .ops = &coda_bit_encode_ops,
        .src_formats = {
+               V4L2_PIX_FMT_NV12,
                V4L2_PIX_FMT_YUV420,
                V4L2_PIX_FMT_YVU420,
-               V4L2_PIX_FMT_NV12,
                V4L2_PIX_FMT_YUV422P,
        },
        .dst_formats = {
@@@ -224,9 -190,9 +190,9 @@@ static const struct coda_video_device c
                V4L2_PIX_FMT_MPEG4,
        },
        .dst_formats = {
+               V4L2_PIX_FMT_NV12,
                V4L2_PIX_FMT_YUV420,
                V4L2_PIX_FMT_YVU420,
-               V4L2_PIX_FMT_NV12,
        },
  };
  
@@@ -238,9 -204,9 +204,9 @@@ static const struct coda_video_device c
                V4L2_PIX_FMT_JPEG,
        },
        .dst_formats = {
+               V4L2_PIX_FMT_NV12,
                V4L2_PIX_FMT_YUV420,
                V4L2_PIX_FMT_YVU420,
-               V4L2_PIX_FMT_NV12,
                V4L2_PIX_FMT_YUV422P,
        },
  };
@@@ -261,38 -227,21 +227,21 @@@ static const struct coda_video_device *
        &coda_bit_decoder,
  };
  
- static bool coda_format_is_yuv(u32 fourcc)
+ /*
+  * Normalize all supported YUV 4:2:0 formats to the value used in the codec
+  * tables.
+  */
+ static u32 coda_format_normalize_yuv(u32 fourcc)
  {
        switch (fourcc) {
+       case V4L2_PIX_FMT_NV12:
        case V4L2_PIX_FMT_YUV420:
        case V4L2_PIX_FMT_YVU420:
-       case V4L2_PIX_FMT_NV12:
        case V4L2_PIX_FMT_YUV422P:
-               return true;
+               return V4L2_PIX_FMT_YUV420;
        default:
-               return false;
-       }
- }
- static const char *coda_format_name(u32 fourcc)
- {
-       int i;
-       for (i = 0; i < ARRAY_SIZE(coda_formats); i++) {
-               if (coda_formats[i].fourcc == fourcc)
-                       return coda_formats[i].name;
+               return fourcc;
        }
-       return NULL;
- }
- /*
-  * Normalize all supported YUV 4:2:0 formats to the value used in the codec
-  * tables.
-  */
- static u32 coda_format_normalize_yuv(u32 fourcc)
- {
-       return coda_format_is_yuv(fourcc) ? V4L2_PIX_FMT_YUV420 : fourcc;
  }
  
  static const struct coda_codec *coda_find_codec(struct coda_dev *dev,
@@@ -396,7 -345,6 +345,6 @@@ static int coda_enum_fmt(struct file *f
        struct video_device *vdev = video_devdata(file);
        const struct coda_video_device *cvd = to_coda_video_device(vdev);
        const u32 *formats;
-       const char *name;
  
        if (f->type == V4L2_BUF_TYPE_VIDEO_OUTPUT)
                formats = cvd->src_formats;
        if (f->index >= CODA_MAX_FORMATS || formats[f->index] == 0)
                return -EINVAL;
  
-       name = coda_format_name(formats[f->index]);
-       strlcpy(f->description, name, sizeof(f->description));
        f->pixelformat = formats[f->index];
-       if (!coda_format_is_yuv(formats[f->index]))
-               f->flags |= V4L2_FMT_FLAG_COMPRESSED;
  
        return 0;
  }
@@@ -504,9 -448,9 +448,9 @@@ static int coda_try_fmt(struct coda_ct
                              S_ALIGN);
  
        switch (f->fmt.pix.pixelformat) {
+       case V4L2_PIX_FMT_NV12:
        case V4L2_PIX_FMT_YUV420:
        case V4L2_PIX_FMT_YVU420:
-       case V4L2_PIX_FMT_NV12:
                /*
                 * Frame stride must be at least multiple of 8,
                 * but multiple of 16 for h.264 or JPEG 4:2:x
@@@ -645,6 -589,22 +589,22 @@@ static int coda_s_fmt(struct coda_ctx *
        q_data->rect.width = f->fmt.pix.width;
        q_data->rect.height = f->fmt.pix.height;
  
+       switch (f->fmt.pix.pixelformat) {
+       case V4L2_PIX_FMT_NV12:
+               if (f->type == V4L2_BUF_TYPE_VIDEO_OUTPUT) {
+                       ctx->tiled_map_type = GDI_TILED_FRAME_MB_RASTER_MAP;
+                       if (!disable_tiling)
+                               break;
+               }
+               /* else fall through */
+       case V4L2_PIX_FMT_YUV420:
+       case V4L2_PIX_FMT_YVU420:
+               ctx->tiled_map_type = GDI_LINEAR_FRAME_MAP;
+               break;
+       default:
+               break;
+       }
        v4l2_dbg(1, coda_debug, &ctx->dev->v4l2_dev,
                "Setting format for type %d, wxh: %dx%d, fmt: %d\n",
                f->type, q_data->width, q_data->height, q_data->fourcc);
@@@ -831,6 -791,104 +791,104 @@@ static int coda_decoder_cmd(struct fil
        return 0;
  }
  
+ static int coda_g_parm(struct file *file, void *fh, struct v4l2_streamparm *a)
+ {
+       struct coda_ctx *ctx = fh_to_ctx(fh);
+       struct v4l2_fract *tpf;
+       if (a->type != V4L2_BUF_TYPE_VIDEO_OUTPUT)
+               return -EINVAL;
+       a->parm.output.capability = V4L2_CAP_TIMEPERFRAME;
+       tpf = &a->parm.output.timeperframe;
+       tpf->denominator = ctx->params.framerate & CODA_FRATE_RES_MASK;
+       tpf->numerator = 1 + (ctx->params.framerate >>
+                             CODA_FRATE_DIV_OFFSET);
+       return 0;
+ }
+ /*
+  * Approximate timeperframe v4l2_fract with values that can be written
+  * into the 16-bit CODA_FRATE_DIV and CODA_FRATE_RES fields.
+  */
+ static void coda_approximate_timeperframe(struct v4l2_fract *timeperframe)
+ {
+       struct v4l2_fract s = *timeperframe;
+       struct v4l2_fract f0;
+       struct v4l2_fract f1 = { 1, 0 };
+       struct v4l2_fract f2 = { 0, 1 };
+       unsigned int i, div, s_denominator;
+       /* Lower bound is 1/65535 */
+       if (s.numerator == 0 || s.denominator / s.numerator > 65535) {
+               timeperframe->numerator = 1;
+               timeperframe->denominator = 65535;
+               return;
+       }
+       /* Upper bound is 65536/1, map everything above to infinity */
+       if (s.denominator == 0 || s.numerator / s.denominator > 65536) {
+               timeperframe->numerator = 1;
+               timeperframe->denominator = 0;
+               return;
+       }
+       /* Reduce fraction to lowest terms */
+       div = gcd(s.numerator, s.denominator);
+       if (div > 1) {
+               s.numerator /= div;
+               s.denominator /= div;
+       }
+       if (s.numerator <= 65536 && s.denominator < 65536) {
+               *timeperframe = s;
+               return;
+       }
+       /* Find successive convergents from continued fraction expansion */
+       while (f2.numerator <= 65536 && f2.denominator < 65536) {
+               f0 = f1;
+               f1 = f2;
+               /* Stop when f2 exactly equals timeperframe */
+               if (s.numerator == 0)
+                       break;
+               i = s.denominator / s.numerator;
+               f2.numerator = f0.numerator + i * f1.numerator;
+               f2.denominator = f0.denominator + i * f2.denominator;
+               s_denominator = s.numerator;
+               s.numerator = s.denominator % s.numerator;
+               s.denominator = s_denominator;
+       }
+       *timeperframe = f1;
+ }
+ static uint32_t coda_timeperframe_to_frate(struct v4l2_fract *timeperframe)
+ {
+       return ((timeperframe->numerator - 1) << CODA_FRATE_DIV_OFFSET) |
+               timeperframe->denominator;
+ }
+ static int coda_s_parm(struct file *file, void *fh, struct v4l2_streamparm *a)
+ {
+       struct coda_ctx *ctx = fh_to_ctx(fh);
+       struct v4l2_fract *tpf;
+       if (a->type != V4L2_BUF_TYPE_VIDEO_OUTPUT)
+               return -EINVAL;
+       tpf = &a->parm.output.timeperframe;
+       coda_approximate_timeperframe(tpf);
+       ctx->params.framerate = coda_timeperframe_to_frate(tpf);
+       return 0;
+ }
  static int coda_subscribe_event(struct v4l2_fh *fh,
                                const struct v4l2_event_subscription *sub)
  {
@@@ -871,31 -929,13 +929,13 @@@ static const struct v4l2_ioctl_ops coda
        .vidioc_try_decoder_cmd = coda_try_decoder_cmd,
        .vidioc_decoder_cmd     = coda_decoder_cmd,
  
+       .vidioc_g_parm          = coda_g_parm,
+       .vidioc_s_parm          = coda_s_parm,
        .vidioc_subscribe_event = coda_subscribe_event,
        .vidioc_unsubscribe_event = v4l2_event_unsubscribe,
  };
  
- void coda_set_gdi_regs(struct coda_ctx *ctx)
- {
-       struct gdi_tiled_map *tiled_map = &ctx->tiled_map;
-       struct coda_dev *dev = ctx->dev;
-       int i;
-       for (i = 0; i < 16; i++)
-               coda_write(dev, tiled_map->xy2ca_map[i],
-                               CODA9_GDI_XY2_CAS_0 + 4 * i);
-       for (i = 0; i < 4; i++)
-               coda_write(dev, tiled_map->xy2ba_map[i],
-                               CODA9_GDI_XY2_BA_0 + 4 * i);
-       for (i = 0; i < 16; i++)
-               coda_write(dev, tiled_map->xy2ra_map[i],
-                               CODA9_GDI_XY2_RAS_0 + 4 * i);
-       coda_write(dev, tiled_map->xy2rbc_config, CODA9_GDI_XY2_RBC_CONFIG);
-       for (i = 0; i < 32; i++)
-               coda_write(dev, tiled_map->rbc2axi_map[i],
-                               CODA9_GDI_RBC2_AXI_0 + 4 * i);
- }
  /*
   * Mem-to-mem operations.
   */
@@@ -949,14 -989,14 +989,14 @@@ static void coda_pic_run_work(struct wo
  static int coda_job_ready(void *m2m_priv)
  {
        struct coda_ctx *ctx = m2m_priv;
+       int src_bufs = v4l2_m2m_num_src_bufs_ready(ctx->fh.m2m_ctx);
  
        /*
         * For both 'P' and 'key' frame cases 1 picture
         * and 1 frame are needed. In the decoder case,
         * the compressed frame can be in the bitstream.
         */
-       if (!v4l2_m2m_num_src_bufs_ready(ctx->fh.m2m_ctx) &&
-           ctx->inst_type != CODA_INST_DECODER) {
+       if (!src_bufs && ctx->inst_type != CODA_INST_DECODER) {
                v4l2_dbg(1, coda_debug, &ctx->dev->v4l2_dev,
                         "not ready: not enough video buffers.\n");
                return 0;
        }
  
        if (ctx->inst_type == CODA_INST_DECODER && ctx->use_bit) {
-               struct list_head *meta;
-               bool stream_end;
-               int num_metas;
-               int src_bufs;
+               bool stream_end = ctx->bit_stream_param &
+                                 CODA_BIT_STREAM_END_FLAG;
+               int num_metas = ctx->num_metas;
  
-               if (ctx->hold && !v4l2_m2m_num_src_bufs_ready(ctx->fh.m2m_ctx)) {
+               if (ctx->hold && !src_bufs) {
                        v4l2_dbg(1, coda_debug, &ctx->dev->v4l2_dev,
                                 "%d: not ready: on hold for more buffers.\n",
                                 ctx->idx);
                        return 0;
                }
  
-               stream_end = ctx->bit_stream_param &
-                            CODA_BIT_STREAM_END_FLAG;
-               num_metas = 0;
-               list_for_each(meta, &ctx->buffer_meta_list)
-                       num_metas++;
-               src_bufs = v4l2_m2m_num_src_bufs_ready(ctx->fh.m2m_ctx);
                if (!stream_end && (num_metas + src_bufs) < 2) {
                        v4l2_dbg(1, coda_debug, &ctx->dev->v4l2_dev,
                                 "%d: not ready: need 2 buffers available (%d, %d)\n",
                }
  
  
-               if (!v4l2_m2m_num_src_bufs_ready(ctx->fh.m2m_ctx) &&
-                   !stream_end && (coda_get_bitstream_payload(ctx) < 512)) {
+               if (!src_bufs && !stream_end &&
+                   (coda_get_bitstream_payload(ctx) < 512)) {
                        v4l2_dbg(1, coda_debug, &ctx->dev->v4l2_dev,
                                 "%d: not ready: not enough bitstream data (%d).\n",
                                 ctx->idx, coda_get_bitstream_payload(ctx));
  
        v4l2_dbg(1, coda_debug, &ctx->dev->v4l2_dev,
                        "job ready\n");
        return 1;
  }
  
@@@ -1052,32 -1083,6 +1083,6 @@@ static const struct v4l2_m2m_ops coda_m
        .unlock         = coda_unlock,
  };
  
- static void coda_set_tiled_map_type(struct coda_ctx *ctx, int tiled_map_type)
- {
-       struct gdi_tiled_map *tiled_map = &ctx->tiled_map;
-       int luma_map, chro_map, i;
-       memset(tiled_map, 0, sizeof(*tiled_map));
-       luma_map = 64;
-       chro_map = 64;
-       tiled_map->map_type = tiled_map_type;
-       for (i = 0; i < 16; i++)
-               tiled_map->xy2ca_map[i] = luma_map << 8 | chro_map;
-       for (i = 0; i < 4; i++)
-               tiled_map->xy2ba_map[i] = luma_map << 8 | chro_map;
-       for (i = 0; i < 16; i++)
-               tiled_map->xy2ra_map[i] = luma_map << 8 | chro_map;
-       if (tiled_map_type == GDI_LINEAR_FRAME_MAP) {
-               tiled_map->xy2rbc_config = 0;
-       } else {
-               dev_err(&ctx->dev->plat_dev->dev, "invalid map type: %d\n",
-                       tiled_map_type);
-               return;
-       }
- }
  static void set_default_params(struct coda_ctx *ctx)
  {
        unsigned int max_w, max_h, usize, csize;
        ctx->params.framerate = 30;
  
        /* Default formats for output and input queues */
-       ctx->q_data[V4L2_M2M_SRC].fourcc = ctx->codec->src_fourcc;
-       ctx->q_data[V4L2_M2M_DST].fourcc = ctx->codec->dst_fourcc;
+       ctx->q_data[V4L2_M2M_SRC].fourcc = ctx->cvd->src_formats[0];
+       ctx->q_data[V4L2_M2M_DST].fourcc = ctx->cvd->dst_formats[0];
        ctx->q_data[V4L2_M2M_SRC].width = max_w;
        ctx->q_data[V4L2_M2M_SRC].height = max_h;
        ctx->q_data[V4L2_M2M_DST].width = max_w;
        ctx->q_data[V4L2_M2M_DST].rect.width = max_w;
        ctx->q_data[V4L2_M2M_DST].rect.height = max_h;
  
-       if (ctx->dev->devtype->product == CODA_960)
-               coda_set_tiled_map_type(ctx, GDI_LINEAR_FRAME_MAP);
+       /*
+        * Since the RBC2AXI logic only supports a single chroma plane,
+        * macroblock tiling only works for to NV12 pixel format.
+        */
+       ctx->tiled_map_type = GDI_LINEAR_FRAME_MAP;
  }
  
  /*
@@@ -1244,9 -1252,7 +1252,7 @@@ static int coda_start_streaming(struct 
  
        q_data_src = get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_OUTPUT);
        if (q->type == V4L2_BUF_TYPE_VIDEO_OUTPUT) {
-               if (q_data_src->fourcc == V4L2_PIX_FMT_H264 ||
-                   (q_data_src->fourcc == V4L2_PIX_FMT_JPEG &&
-                    ctx->dev->devtype->product == CODA_7541)) {
+               if (ctx->inst_type == CODA_INST_DECODER && ctx->use_bit) {
                        /* copy the buffers that were queued before streamon */
                        mutex_lock(&ctx->bitstream_mutex);
                        coda_fill_bitstream(ctx, false);
                        goto err;
        }
  
-       ctx->initialized = 1;
        return ret;
  
  err:
@@@ -1334,6 -1339,7 +1339,7 @@@ static void coda_stop_streaming(struct 
        struct coda_ctx *ctx = vb2_get_drv_priv(q);
        struct coda_dev *dev = ctx->dev;
        struct vb2_buffer *buf;
+       unsigned long flags;
        bool stop;
  
        stop = ctx->streamon_out && ctx->streamon_cap;
                        queue_work(dev->workqueue, &ctx->seq_end_work);
                        flush_work(&ctx->seq_end_work);
                }
-               mutex_lock(&ctx->bitstream_mutex);
+               spin_lock_irqsave(&ctx->buffer_meta_lock, flags);
                while (!list_empty(&ctx->buffer_meta_list)) {
                        meta = list_first_entry(&ctx->buffer_meta_list,
                                                struct coda_buffer_meta, list);
                        list_del(&meta->list);
                        kfree(meta);
                }
-               mutex_unlock(&ctx->bitstream_mutex);
+               ctx->num_metas = 0;
+               spin_unlock_irqrestore(&ctx->buffer_meta_lock, flags);
                kfifo_init(&ctx->bitstream_fifo,
                        ctx->bitstream.vaddr, ctx->bitstream.size);
-               ctx->initialized = 0;
                ctx->runcounter = 0;
                ctx->aborting = 0;
        }
+       if (!ctx->streamon_out && !ctx->streamon_cap)
+               ctx->bit_stream_param &= ~CODA_BIT_STREAM_END_FLAG;
  }
  
  static const struct vb2_ops coda_qops = {
@@@ -1469,6 -1478,12 +1478,12 @@@ static int coda_s_ctrl(struct v4l2_ctr
        case V4L2_CID_JPEG_RESTART_INTERVAL:
                ctx->params.jpeg_restart_interval = ctrl->val;
                break;
+       case V4L2_CID_MPEG_VIDEO_VBV_DELAY:
+               ctx->params.vbv_delay = ctrl->val;
+               break;
+       case V4L2_CID_MPEG_VIDEO_VBV_SIZE:
+               ctx->params.vbv_size = min(ctrl->val * 8192, 0x7fffffff);
+               break;
        default:
                v4l2_dbg(1, coda_debug, &ctx->dev->v4l2_dev,
                        "Invalid control, id=%d, val=%d\n",
@@@ -1528,6 -1543,14 +1543,14 @@@ static void coda_encode_ctrls(struct co
        v4l2_ctrl_new_std(&ctx->ctrls, &coda_ctrl_ops,
                V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB, 0,
                1920 * 1088 / 256, 1, 0);
+       v4l2_ctrl_new_std(&ctx->ctrls, &coda_ctrl_ops,
+               V4L2_CID_MPEG_VIDEO_VBV_DELAY, 0, 0x7fff, 1, 0);
+       /*
+        * The maximum VBV size value is 0x7fffffff bits,
+        * one bit less than 262144 KiB
+        */
+       v4l2_ctrl_new_std(&ctx->ctrls, &coda_ctrl_ops,
+               V4L2_CID_MPEG_VIDEO_VBV_SIZE, 0, 262144, 1, 0);
  }
  
  static void coda_jpeg_encode_ctrls(struct coda_ctx *ctx)
@@@ -1726,6 -1749,7 +1749,7 @@@ static int coda_open(struct file *file
        mutex_init(&ctx->bitstream_mutex);
        mutex_init(&ctx->buffer_mutex);
        INIT_LIST_HEAD(&ctx->buffer_meta_list);
+       spin_lock_init(&ctx->buffer_meta_lock);
  
        coda_lock(ctx);
        list_add(&ctx->list, &dev->instances);
@@@ -1769,7 -1793,7 +1793,7 @@@ static int coda_release(struct file *fi
        v4l2_m2m_ctx_release(ctx->fh.m2m_ctx);
  
        /* In case the instance was not running, we still need to call SEQ_END */
-       if (ctx->initialized && ctx->ops->seq_end_work) {
+       if (ctx->ops->seq_end_work) {
                queue_work(dev->workqueue, &ctx->seq_end_work);
                flush_work(&ctx->seq_end_work);
        }
@@@ -2157,7 -2181,7 +2181,7 @@@ static int coda_probe(struct platform_d
        /* Get IRAM pool from device tree or platform data */
        pool = of_gen_pool_get(np, "iram", 0);
        if (!pool && pdata)
 -              pool = gen_pool_get(pdata->iram_dev);
 +              pool = gen_pool_get(pdata->iram_dev, NULL);
        if (!pool) {
                dev_err(&pdev->dev, "iram pool not available\n");
                return -ENOMEM;
index 906c83c7e8e70c25167e349572eae71d091c3e12,2abf0473f0955386f6960662c39ffe7a2679bd75..e5cb30e1f71814c55dd596b4010e5431e3e048d7
@@@ -239,7 -239,8 +239,8 @@@ static int s5p_mfc_alloc_codec_buffers_
  
        /* Allocate only if memory from bank 1 is necessary */
        if (ctx->bank1.size > 0) {
-               ret = s5p_mfc_alloc_priv_buf(dev->mem_dev_l, &ctx->bank1);
+               ret = s5p_mfc_alloc_priv_buf(dev->mem_dev_l, dev->bank1,
+                                            &ctx->bank1);
                if (ret) {
                        mfc_err("Failed to allocate Bank1 memory\n");
                        return ret;
@@@ -291,7 -292,7 +292,7 @@@ static int s5p_mfc_alloc_instance_buffe
                break;
        }
  
-       ret = s5p_mfc_alloc_priv_buf(dev->mem_dev_l, &ctx->ctx);
+       ret = s5p_mfc_alloc_priv_buf(dev->mem_dev_l, dev->bank1, &ctx->ctx);
        if (ret) {
                mfc_err("Failed to allocate instance buffer\n");
                return ret;
@@@ -320,7 -321,8 +321,8 @@@ static int s5p_mfc_alloc_dev_context_bu
        mfc_debug_enter();
  
        dev->ctx_buf.size = buf_size->dev_ctx;
-       ret = s5p_mfc_alloc_priv_buf(dev->mem_dev_l, &dev->ctx_buf);
+       ret = s5p_mfc_alloc_priv_buf(dev->mem_dev_l, dev->bank1,
+                                    &dev->ctx_buf);
        if (ret) {
                mfc_err("Failed to allocate device context buffer\n");
                return ret;
@@@ -1734,7 -1736,7 +1736,7 @@@ static void s5p_mfc_try_run_v6(struct s
  
        mfc_debug(1, "New context: %d\n", new_ctx);
        ctx = dev->ctx[new_ctx];
 -      mfc_debug(1, "Seting new context to %p\n", ctx);
 +      mfc_debug(1, "Setting new context to %p\n", ctx);
        /* Got context to run in ctx */
        mfc_debug(1, "ctx->dst_queue_cnt=%d ctx->dpb_count=%d ctx->src_queue_cnt=%d\n",
                ctx->dst_queue_cnt, ctx->pb_count, ctx->src_queue_cnt);
index b732ac6a26d8065cc26ecb3a648ced999db71367,1068f2ba56c623ca872273aed0eb1bfb27681b6d..ad260520a9d4071a9c4198051832dc7523a17a50
@@@ -30,6 -30,7 +30,6 @@@ static LIST_HEAD(ir_raw_client_list)
  static DEFINE_MUTEX(ir_raw_handler_lock);
  static LIST_HEAD(ir_raw_handler_list);
  static u64 available_protocols;
 -static u64 encode_protocols;
  
  static int ir_raw_event_thread(void *data)
  {
@@@ -240,12 -241,146 +240,12 @@@ ir_raw_get_allowed_protocols(void
        return protocols;
  }
  
 -/* used internally by the sysfs interface */
 -u64
 -ir_raw_get_encode_protocols(void)
 -{
 -      u64 protocols;
 -
 -      mutex_lock(&ir_raw_handler_lock);
 -      protocols = encode_protocols;
 -      mutex_unlock(&ir_raw_handler_lock);
 -      return protocols;
 -}
 -
  static int change_protocol(struct rc_dev *dev, u64 *rc_type)
  {
        /* the caller will update dev->enabled_protocols */
        return 0;
  }
  
 -/**
 - * ir_raw_gen_manchester() - Encode data with Manchester (bi-phase) modulation.
 - * @ev:               Pointer to pointer to next free event. *@ev is incremented for
 - *            each raw event filled.
 - * @max:      Maximum number of raw events to fill.
 - * @timings:  Manchester modulation timings.
 - * @n:                Number of bits of data.
 - * @data:     Data bits to encode.
 - *
 - * Encodes the @n least significant bits of @data using Manchester (bi-phase)
 - * modulation with the timing characteristics described by @timings, writing up
 - * to @max raw IR events using the *@ev pointer.
 - *
 - * Returns:   0 on success.
 - *            -ENOBUFS if there isn't enough space in the array to fit the
 - *            full encoded data. In this case all @max events will have been
 - *            written.
 - */
 -int ir_raw_gen_manchester(struct ir_raw_event **ev, unsigned int max,
 -                        const struct ir_raw_timings_manchester *timings,
 -                        unsigned int n, unsigned int data)
 -{
 -      bool need_pulse;
 -      unsigned int i;
 -      int ret = -ENOBUFS;
 -
 -      i = 1 << (n - 1);
 -
 -      if (timings->leader) {
 -              if (!max--)
 -                      return ret;
 -              if (timings->pulse_space_start) {
 -                      init_ir_raw_event_duration((*ev)++, 1, timings->leader);
 -
 -                      if (!max--)
 -                              return ret;
 -                      init_ir_raw_event_duration((*ev), 0, timings->leader);
 -              } else {
 -                      init_ir_raw_event_duration((*ev), 1, timings->leader);
 -              }
 -              i >>= 1;
 -      } else {
 -              /* continue existing signal */
 -              --(*ev);
 -      }
 -      /* from here on *ev will point to the last event rather than the next */
 -
 -      while (n && i > 0) {
 -              need_pulse = !(data & i);
 -              if (timings->invert)
 -                      need_pulse = !need_pulse;
 -              if (need_pulse == !!(*ev)->pulse) {
 -                      (*ev)->duration += timings->clock;
 -              } else {
 -                      if (!max--)
 -                              goto nobufs;
 -                      init_ir_raw_event_duration(++(*ev), need_pulse,
 -                                                 timings->clock);
 -              }
 -
 -              if (!max--)
 -                      goto nobufs;
 -              init_ir_raw_event_duration(++(*ev), !need_pulse,
 -                                         timings->clock);
 -              i >>= 1;
 -      }
 -
 -      if (timings->trailer_space) {
 -              if (!(*ev)->pulse)
 -                      (*ev)->duration += timings->trailer_space;
 -              else if (!max--)
 -                      goto nobufs;
 -              else
 -                      init_ir_raw_event_duration(++(*ev), 0,
 -                                                 timings->trailer_space);
 -      }
 -
 -      ret = 0;
 -nobufs:
 -      /* point to the next event rather than last event before returning */
 -      ++(*ev);
 -      return ret;
 -}
 -EXPORT_SYMBOL(ir_raw_gen_manchester);
 -
 -/**
 - * ir_raw_encode_scancode() - Encode a scancode as raw events
 - *
 - * @protocols:                permitted protocols
 - * @scancode:         scancode filter describing a single scancode
 - * @events:           array of raw events to write into
 - * @max:              max number of raw events
 - *
 - * Attempts to encode the scancode as raw events.
 - *
 - * Returns:   The number of events written.
 - *            -ENOBUFS if there isn't enough space in the array to fit the
 - *            encoding. In this case all @max events will have been written.
 - *            -EINVAL if the scancode is ambiguous or invalid, or if no
 - *            compatible encoder was found.
 - */
 -int ir_raw_encode_scancode(u64 protocols,
 -                         const struct rc_scancode_filter *scancode,
 -                         struct ir_raw_event *events, unsigned int max)
 -{
 -      struct ir_raw_handler *handler;
 -      int ret = -EINVAL;
 -
 -      mutex_lock(&ir_raw_handler_lock);
 -      list_for_each_entry(handler, &ir_raw_handler_list, list) {
 -              if (handler->protocols & protocols && handler->encode) {
 -                      ret = handler->encode(protocols, scancode, events, max);
 -                      if (ret >= 0 || ret == -ENOBUFS)
 -                              break;
 -              }
 -      }
 -      mutex_unlock(&ir_raw_handler_lock);
 -
 -      return ret;
 -}
 -EXPORT_SYMBOL(ir_raw_encode_scancode);
 -
  /*
   * Used to (un)register raw event clients
   */
@@@ -271,7 -406,7 +271,7 @@@ int ir_raw_event_register(struct rc_de
  
        spin_lock_init(&dev->raw->lock);
        dev->raw->thread = kthread_run(ir_raw_event_thread, dev->raw,
-                                      "rc%ld", dev->devno);
+                                      "rc%u", dev->minor);
  
        if (IS_ERR(dev->raw->thread)) {
                rc = PTR_ERR(dev->raw->thread);
@@@ -328,6 -463,8 +328,6 @@@ int ir_raw_handler_register(struct ir_r
                list_for_each_entry(raw, &ir_raw_client_list, list)
                        ir_raw_handler->raw_register(raw->dev);
        available_protocols |= ir_raw_handler->protocols;
 -      if (ir_raw_handler->encode)
 -              encode_protocols |= ir_raw_handler->protocols;
        mutex_unlock(&ir_raw_handler_lock);
  
        return 0;
@@@ -344,6 -481,8 +344,6 @@@ void ir_raw_handler_unregister(struct i
                list_for_each_entry(raw, &ir_raw_client_list, list)
                        ir_raw_handler->raw_unregister(raw->dev);
        available_protocols &= ~ir_raw_handler->protocols;
 -      if (ir_raw_handler->encode)
 -              encode_protocols &= ~ir_raw_handler->protocols;
        mutex_unlock(&ir_raw_handler_lock);
  }
  EXPORT_SYMBOL(ir_raw_handler_unregister);
index 0ff388a1616876d50ade807ff5bff20204d1b8cd,d08cedb03c7416e389a2cfa3b65b93e6946768fd..3f0f71adabb4dbba061ef57e1f798ca0e9187c77
  #include <linux/input.h>
  #include <linux/leds.h>
  #include <linux/slab.h>
+ #include <linux/idr.h>
  #include <linux/device.h>
  #include <linux/module.h>
  #include "rc-core-priv.h"
  
- /* Bitmap to store allocated device numbers from 0 to IRRCV_NUM_DEVICES - 1 */
- #define IRRCV_NUM_DEVICES      256
- static DECLARE_BITMAP(ir_core_dev_number, IRRCV_NUM_DEVICES);
  /* Sizes are in bytes, 256 bytes allows for 32 entries on x64 */
  #define IR_TAB_MIN_SIZE       256
  #define IR_TAB_MAX_SIZE       8192
+ #define RC_DEV_MAX    256
  
  /* FIXME: IR_KEYPRESS_TIMEOUT should be protocol specific */
  #define IR_KEYPRESS_TIMEOUT 250
@@@ -38,6 -36,9 +36,9 @@@ static LIST_HEAD(rc_map_list)
  static DEFINE_SPINLOCK(rc_map_lock);
  static struct led_trigger *led_feedback;
  
+ /* Used to keep track of rc devices */
+ static DEFINE_IDA(rc_ida);
  static struct rc_map_list *seek_rc_map(const char *name)
  {
        struct rc_map_list *map = NULL;
@@@ -799,7 -800,6 +800,6 @@@ static struct 
        { RC_BIT_SANYO,         "sanyo"         },
        { RC_BIT_SHARP,         "sharp"         },
        { RC_BIT_MCE_KBD,       "mce_kbd"       },
-       { RC_BIT_LIRC,          "lirc"          },
        { RC_BIT_XMP,           "xmp"           },
  };
  
@@@ -828,6 -828,23 +828,23 @@@ struct rc_filter_attribute 
                .mask = (_mask),                                        \
        }
  
+ static bool lirc_is_present(void)
+ {
+ #if defined(CONFIG_LIRC_MODULE)
+       struct module *lirc;
+       mutex_lock(&module_mutex);
+       lirc = find_module("lirc_dev");
+       mutex_unlock(&module_mutex);
+       return lirc ? true : false;
+ #elif defined(CONFIG_LIRC)
+       return true;
+ #else
+       return false;
+ #endif
+ }
  /**
   * show_protocols() - shows the current/wakeup IR protocol(s)
   * @device:   the device descriptor
@@@ -865,6 -882,8 +882,6 @@@ static ssize_t show_protocols(struct de
        } else {
                enabled = dev->enabled_wakeup_protocols;
                allowed = dev->allowed_wakeup_protocols;
 -              if (dev->encode_wakeup && !allowed)
 -                      allowed = ir_raw_get_encode_protocols();
        }
  
        mutex_unlock(&dev->lock);
                        allowed &= ~proto_names[i].type;
        }
  
+       if (dev->driver_type == RC_DRIVER_IR_RAW && lirc_is_present())
+               tmp += sprintf(tmp, "[lirc] ");
        if (tmp != buf)
                tmp--;
        *tmp = '\n';
@@@ -933,8 -955,12 +953,12 @@@ static int parse_protocol_change(u64 *p
                }
  
                if (i == ARRAY_SIZE(proto_names)) {
-                       IR_dprintk(1, "Unknown protocol: '%s'\n", tmp);
-                       return -EINVAL;
+                       if (!strcasecmp(tmp, "lirc"))
+                               mask = 0;
+                       else {
+                               IR_dprintk(1, "Unknown protocol: '%s'\n", tmp);
+                               return -EINVAL;
+                       }
                }
  
                count++;
@@@ -1191,9 -1217,6 +1215,6 @@@ static int rc_dev_uevent(struct device 
  {
        struct rc_dev *dev = to_rc_dev(device);
  
-       if (!dev || !dev->input_dev)
-               return -ENODEV;
        if (dev->rc_map.name)
                ADD_HOTPLUG_VAR("NAME=%s", dev->rc_map.name);
        if (dev->driver_name)
@@@ -1312,7 -1335,9 +1333,9 @@@ int rc_register_device(struct rc_dev *d
        static bool raw_init = false; /* raw decoders loaded? */
        struct rc_map *rc_map;
        const char *path;
-       int rc, devno, attr = 0;
+       int attr = 0;
+       int minor;
+       int rc;
  
        if (!dev || !dev->map_name)
                return -EINVAL;
        if (dev->close)
                dev->input_dev->close = ir_close;
  
-       do {
-               devno = find_first_zero_bit(ir_core_dev_number,
-                                           IRRCV_NUM_DEVICES);
-               /* No free device slots */
-               if (devno >= IRRCV_NUM_DEVICES)
-                       return -ENOMEM;
-       } while (test_and_set_bit(devno, ir_core_dev_number));
+       minor = ida_simple_get(&rc_ida, 0, RC_DEV_MAX, GFP_KERNEL);
+       if (minor < 0)
+               return minor;
+       dev->minor = minor;
+       dev_set_name(&dev->dev, "rc%u", dev->minor);
+       dev_set_drvdata(&dev->dev, dev);
  
        dev->dev.groups = dev->sysfs_groups;
        dev->sysfs_groups[attr++] = &rc_dev_protocol_attr_grp;
         */
        mutex_lock(&dev->lock);
  
-       dev->devno = devno;
-       dev_set_name(&dev->dev, "rc%ld", dev->devno);
-       dev_set_drvdata(&dev->dev, dev);
        rc = device_add(&dev->dev);
        if (rc)
                goto out_unlock;
                path ? path : "N/A");
        kfree(path);
  
 -      if (dev->driver_type == RC_DRIVER_IR_RAW || dev->encode_wakeup) {
 +      if (dev->driver_type == RC_DRIVER_IR_RAW) {
                /* Load raw decoders, if they aren't already */
                if (!raw_init) {
                        IR_dprintk(1, "Loading raw decoders\n");
                        ir_raw_init();
                        raw_init = true;
                }
 -      }
 -
 -      if (dev->driver_type == RC_DRIVER_IR_RAW) {
                /* calls ir_register_device so unlock mutex here*/
                mutex_unlock(&dev->lock);
                rc = ir_raw_event_register(dev);
  
        if (dev->change_protocol) {
                u64 rc_type = (1ll << rc_map->rc_type);
-               if (dev->driver_type == RC_DRIVER_IR_RAW)
-                       rc_type |= RC_BIT_LIRC;
                rc = dev->change_protocol(dev, &rc_type);
                if (rc < 0)
                        goto out_raw;
  
        mutex_unlock(&dev->lock);
  
-       IR_dprintk(1, "Registered rc%ld (driver: %s, remote: %s, mode %s)\n",
-                  dev->devno,
+       IR_dprintk(1, "Registered rc%u (driver: %s, remote: %s, mode %s)\n",
+                  dev->minor,
                   dev->driver_name ? dev->driver_name : "unknown",
                   rc_map->name ? rc_map->name : "unknown",
                   dev->driver_type == RC_DRIVER_IR_RAW ? "raw" : "cooked");
@@@ -1453,7 -1476,7 +1471,7 @@@ out_dev
        device_del(&dev->dev);
  out_unlock:
        mutex_unlock(&dev->lock);
-       clear_bit(dev->devno, ir_core_dev_number);
+       ida_simple_remove(&rc_ida, minor);
        return rc;
  }
  EXPORT_SYMBOL_GPL(rc_register_device);
@@@ -1465,8 -1488,6 +1483,6 @@@ void rc_unregister_device(struct rc_de
  
        del_timer_sync(&dev->timer_keyup);
  
-       clear_bit(dev->devno, ir_core_dev_number);
        if (dev->driver_type == RC_DRIVER_IR_RAW)
                ir_raw_event_unregister(dev);
  
  
        device_del(&dev->dev);
  
+       ida_simple_remove(&rc_ida, dev->minor);
        rc_free_device(dev);
  }
  
index a14c428f70e992460ed869b492723a5a08f155b9,b866a6becd99316ba38251ccd6a099ea32c07497..f1022d810d2208f92057b3cf25eddabd5973aa90
@@@ -30,6 -30,8 +30,8 @@@
  #include <media/v4l2-common.h>
  #include <media/videobuf2-core.h>
  
+ #include <trace/events/v4l2.h>
  static int debug;
  module_param(debug, int, 0644);
  
@@@ -715,7 -717,6 +717,7 @@@ static void __fill_v4l2_buffer(struct v
                break;
        case VB2_BUF_STATE_PREPARING:
        case VB2_BUF_STATE_DEQUEUED:
 +      case VB2_BUF_STATE_REQUEUEING:
                /* nothing */
                break;
        }
@@@ -1183,8 -1184,7 +1185,8 @@@ void vb2_buffer_done(struct vb2_buffer 
  
        if (WARN_ON(state != VB2_BUF_STATE_DONE &&
                    state != VB2_BUF_STATE_ERROR &&
 -                  state != VB2_BUF_STATE_QUEUED))
 +                  state != VB2_BUF_STATE_QUEUED &&
 +                  state != VB2_BUF_STATE_REQUEUEING))
                state = VB2_BUF_STATE_ERROR;
  
  #ifdef CONFIG_VIDEO_ADV_DEBUG
        for (plane = 0; plane < vb->num_planes; ++plane)
                call_void_memop(vb, finish, vb->planes[plane].mem_priv);
  
 -      /* Add the buffer to the done buffers list */
        spin_lock_irqsave(&q->done_lock, flags);
 -      vb->state = state;
 -      if (state != VB2_BUF_STATE_QUEUED)
 +      if (state == VB2_BUF_STATE_QUEUED ||
 +          state == VB2_BUF_STATE_REQUEUEING) {
 +              vb->state = VB2_BUF_STATE_QUEUED;
 +      } else {
 +              /* Add the buffer to the done buffers list */
                list_add_tail(&vb->done_entry, &q->done_list);
 +              vb->state = state;
 +      }
        atomic_dec(&q->owned_by_drv_count);
        spin_unlock_irqrestore(&q->done_lock, flags);
  
 -      if (state == VB2_BUF_STATE_QUEUED) {
+       trace_vb2_buf_done(q, vb);
 +      switch (state) {
 +      case VB2_BUF_STATE_QUEUED:
 +              return;
 +      case VB2_BUF_STATE_REQUEUEING:
                if (q->start_streaming_called)
                        __enqueue_in_driver(vb);
                return;
 +      default:
 +              /* Inform any processes that may be waiting for buffers */
 +              wake_up(&q->done_wq);
 +              break;
        }
 -
 -      /* Inform any processes that may be waiting for buffers */
 -      wake_up(&q->done_wq);
  }
  EXPORT_SYMBOL_GPL(vb2_buffer_done);
  
@@@ -1254,19 -1248,19 +1258,19 @@@ EXPORT_SYMBOL_GPL(vb2_discard_done)
  
  static void vb2_warn_zero_bytesused(struct vb2_buffer *vb)
  {
 -      static bool __check_once __read_mostly;
 +      static bool check_once;
  
 -      if (__check_once)
 +      if (check_once)
                return;
  
 -      __check_once = true;
 -      __WARN();
 +      check_once = true;
 +      WARN_ON(1);
  
 -      pr_warn_once("use of bytesused == 0 is deprecated and will be removed in the future,\n");
 +      pr_warn("use of bytesused == 0 is deprecated and will be removed in the future,\n");
        if (vb->vb2_queue->allow_zero_bytesused)
 -              pr_warn_once("use VIDIOC_DECODER_CMD(V4L2_DEC_CMD_STOP) instead.\n");
 +              pr_warn("use VIDIOC_DECODER_CMD(V4L2_DEC_CMD_STOP) instead.\n");
        else
 -              pr_warn_once("use the actual size instead.\n");
 +              pr_warn("use the actual size instead.\n");
  }
  
  /**
@@@ -1639,6 -1633,8 +1643,8 @@@ static void __enqueue_in_driver(struct 
        vb->state = VB2_BUF_STATE_ACTIVE;
        atomic_inc(&q->owned_by_drv_count);
  
+       trace_vb2_buf_queue(q, vb);
        /* sync buffers */
        for (plane = 0; plane < vb->num_planes; ++plane)
                call_void_memop(vb, prepare, vb->planes[plane].mem_priv);
@@@ -1888,6 -1884,8 +1894,8 @@@ static int vb2_internal_qbuf(struct vb2
                        vb->v4l2_buf.timecode = b->timecode;
        }
  
+       trace_vb2_qbuf(q, vb);
        /*
         * If already streaming, give the buffer to driver for processing.
         * If not, the buffer will be given to driver on next streamon.
@@@ -2133,6 -2131,9 +2141,9 @@@ static int vb2_internal_dqbuf(struct vb
        /* Remove from videobuf queue */
        list_del(&vb->queued_entry);
        q->queued_count--;
+       trace_vb2_dqbuf(q, vb);
        if (!V4L2_TYPE_IS_OUTPUT(q->type) &&
            vb->v4l2_buf.flags & V4L2_BUF_FLAG_LAST)
                q->last_buffer_dequeued = true;
diff --combined include/media/rc-core.h
index 644bdc61c387581c29a29d20c0cf1c3fc5085830,63eb5217edd5b5f034df9dea37d191a8467a7d5e..ec921f6538c777db5d81deb655ecfdf6facc4b83
@@@ -69,11 -69,13 +69,11 @@@ enum rc_filter_type 
   * @rc_map: current scan/key table
   * @lock: used to ensure we've filled in all protocol details before
   *    anyone can call show_protocols or store_protocols
-  * @devno: unique remote control device number
+  * @minor: unique minor remote control device number
   * @raw: additional data for raw pulse/space devices
   * @input_dev: the input child device used to communicate events to userspace
   * @driver_type: specifies if protocol decoding is done in hardware or software
   * @idle: used to keep track of RX state
 - * @encode_wakeup: wakeup filtering uses IR encode API, therefore the allowed
 - *    wakeup protocols is the set of all raw encoders
   * @allowed_protocols: bitmask with the supported RC_BIT_* protocols
   * @enabled_protocols: bitmask with the enabled RC_BIT_* protocols
   * @allowed_wakeup_protocols: bitmask with the supported RC_BIT_* wakeup protocols
   * @s_tx_mask: set transmitter mask (for devices with multiple tx outputs)
   * @s_tx_carrier: set transmit carrier frequency
   * @s_tx_duty_cycle: set transmit duty cycle (0% - 100%)
-  * @s_rx_carrier: inform driver about carrier it is expected to handle
+  * @s_rx_carrier_range: inform driver about carrier it is expected to handle
   * @tx_ir: transmit IR
   * @s_idle: enable/disable hardware idle mode, upon which,
   *    device doesn't interrupt host until it sees IR pulses
@@@ -129,11 -131,12 +129,11 @@@ struct rc_dev 
        const char                      *map_name;
        struct rc_map                   rc_map;
        struct mutex                    lock;
-       unsigned long                   devno;
+       unsigned int                    minor;
        struct ir_raw_event_ctrl        *raw;
        struct input_dev                *input_dev;
        enum rc_driver_type             driver_type;
        bool                            idle;
 -      bool                            encode_wakeup;
        u64                             allowed_protocols;
        u64                             enabled_protocols;
        u64                             allowed_wakeup_protocols;
@@@ -243,6 -246,7 +243,6 @@@ static inline void init_ir_raw_event(st
  #define US_TO_NS(usec)                ((usec) * 1000)
  #define MS_TO_US(msec)                ((msec) * 1000)
  #define MS_TO_NS(msec)                ((msec) * 1000 * 1000)
 -#define NS_TO_US(nsec)                DIV_ROUND_UP(nsec, 1000L)
  
  void ir_raw_event_handle(struct rc_dev *dev);
  int ir_raw_event_store(struct rc_dev *dev, struct ir_raw_event *ev);
@@@ -250,6 -254,9 +250,6 @@@ int ir_raw_event_store_edge(struct rc_d
  int ir_raw_event_store_with_filter(struct rc_dev *dev,
                                struct ir_raw_event *ev);
  void ir_raw_event_set_idle(struct rc_dev *dev, bool idle);
 -int ir_raw_encode_scancode(u64 protocols,
 -                         const struct rc_scancode_filter *scancode,
 -                         struct ir_raw_event *events, unsigned int max);
  
  static inline void ir_raw_event_reset(struct rc_dev *dev)
  {
index c192e1b46cdc27372dc56ba704aa630ff113dfd6,4f7f7aed91574e716310f9a8bd9850d516874c95..589b56c684009f888558422612ee89419df956e8
@@@ -139,7 -139,6 +139,7 @@@ enum vb2_io_modes 
   * @VB2_BUF_STATE_PREPARING:  buffer is being prepared in videobuf
   * @VB2_BUF_STATE_PREPARED:   buffer prepared in videobuf and by the driver
   * @VB2_BUF_STATE_QUEUED:     buffer queued in videobuf, but not in driver
 + * @VB2_BUF_STATE_REQUEUEING: re-queue a buffer to the driver
   * @VB2_BUF_STATE_ACTIVE:     buffer queued in driver and possibly used
   *                            in a hardware operation
   * @VB2_BUF_STATE_DONE:               buffer returned from driver to videobuf, but
@@@ -153,7 -152,6 +153,7 @@@ enum vb2_buffer_state 
        VB2_BUF_STATE_PREPARING,
        VB2_BUF_STATE_PREPARED,
        VB2_BUF_STATE_QUEUED,
 +      VB2_BUF_STATE_REQUEUEING,
        VB2_BUF_STATE_ACTIVE,
        VB2_BUF_STATE_DONE,
        VB2_BUF_STATE_ERROR,
@@@ -364,7 -362,9 +364,9 @@@ struct v4l2_fh
   *            start_streaming() can be called. Used when a DMA engine
   *            cannot be started unless at least this number of buffers
   *            have been queued into the driver.
-  *
+  */
+ /*
+  * Private elements (won't appear at the DocBook):
   * @mmap_lock:        private mutex used when buffers are allocated/freed/mmapped
   * @memory:   current memory type used
   * @bufs:     videobuf buffer structures
@@@ -407,7 -407,7 +409,7 @@@ struct vb2_queue 
        gfp_t                           gfp_flags;
        u32                             min_buffers_needed;
  
- /* private: internal use only */
      /* private: internal use only */
        struct mutex                    mmap_lock;
        enum v4l2_memory                memory;
        struct vb2_buffer               *bufs[VIDEO_MAX_FRAME];
@@@ -484,7 -484,8 +486,8 @@@ size_t vb2_read(struct vb2_queue *q, ch
                loff_t *ppos, int nonblock);
  size_t vb2_write(struct vb2_queue *q, const char __user *data, size_t count,
                loff_t *ppos, int nonblock);
- /**
+ /*
   * vb2_thread_fnc - callback function for use with vb2_thread
   *
   * This is called whenever a buffer is dequeued in the thread.
@@@ -577,7 -578,6 +580,6 @@@ static inline void vb2_set_plane_payloa
   * vb2_get_plane_payload() - get bytesused for the plane plane_no
   * @vb:               buffer for which plane payload should be set
   * @plane_no: plane number for which payload should be set
-  * @size:     payload in bytes
   */
  static inline unsigned long vb2_get_plane_payload(struct vb2_buffer *vb,
                                 unsigned int plane_no)