]> git.karo-electronics.de Git - linux-beck.git/commitdiff
Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 25 Feb 2013 01:35:10 +0000 (17:35 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 25 Feb 2013 01:35:10 +0000 (17:35 -0800)
Pull media updates from Mauro Carvalho Chehab:

 - Some cleanups at V4L2 documentation

 - new drivers: ts2020 frontend, ov9650 sensor, s5c73m3 sensor,
   sh-mobile veu mem2mem driver, radio-ma901, davinci_vpfe staging
   driver

 - Lots of missing MAINTAINERS entries added

 - several em28xx driver improvements, including its conversion to
   videobuf2

 - several fixups on drivers to make them to better comply with the API

 - DVB core: add support for DVBv5 stats, allowing the implementation of
   statistics for new standards like ISDB

 - mb86a20s: add statistics to the driver

 - lots of new board additions, cleanups, and driver improvements.

* 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (596 commits)
  [media] media: Add 0x3009 USB PID to ttusb2 driver (fixed diff)
  [media] rtl28xxu: Add USB IDs for Compro VideoMate U620F
  [media] em28xx: add usb id for terratec h5 rev. 3
  [media] media: rc: gpio-ir-recv: add support for device tree parsing
  [media] mceusb: move check earlier to make smatch happy
  [media] radio-si470x doc: add info about v4l2-ctl and sox+alsa
  [media] staging: media: Remove unnecessary OOM messages
  [media] sh_vou: Use vou_dev instead of vou_file wherever possible
  [media] sh_vou: Use video_drvdata()
  [media] drivers/media/platform/soc_camera/pxa_camera.c: use devm_ functions
  [media] mt9t112: mt9t111 format set up differs from mt9t112
  [media] sh-mobile-ceu-camera: fix SHARPNESS control default
  Revert "[media] fc0011: Return early, if the frequency is already tuned"
  [media] cx18/ivtv: fix regression: remove __init from a non-init function
  [media] em28xx: fix analog streaming with USB bulk transfers
  [media] stv0900: remove unnecessary null pointer check
  [media] fc0011: Return early, if the frequency is already tuned
  [media] fc0011: Add some sanity checks and cleanups
  [media] fc0011: Fix xin value clamping
  Revert "[media] [PATH,1/2] mxl5007 move reset to attach"
  ...

17 files changed:
1  2 
MAINTAINERS
arch/arm/mach-davinci/board-da850-evm.c
arch/arm/mach-davinci/board-dm644x-evm.c
arch/arm/mach-exynos/mach-nuri.c
arch/arm/mach-exynos/mach-universal_c210.c
arch/arm/mach-s5pv210/mach-goni.c
drivers/hid/hid-core.c
drivers/hid/hid-ids.h
drivers/media/Kconfig
drivers/media/dvb-core/dvb_frontend.c
drivers/media/platform/Kconfig
drivers/media/platform/coda.c
drivers/media/platform/davinci/vpss.c
drivers/media/platform/soc_camera/mx2_camera.c
drivers/media/radio/Kconfig
drivers/media/radio/radio-wl1273.c
drivers/media/usb/dvb-usb-v2/Kconfig

diff --combined MAINTAINERS
index a92f485f54568589df0cefbe66664d07e4ce4557,5334229888248761284e63ae8b2d670dbef3e10b..870ba56207d74a9de026c530ea7d259af7f54b3e
@@@ -228,7 -228,7 +228,7 @@@ S: Maintaine
  F:    drivers/platform/x86/acerhdf.c
  
  ACER WMI LAPTOP EXTRAS
 -M:    Joey Lee <jlee@novell.com>
 +M:    "Lee, Chun-Yi" <jlee@suse.com>
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    drivers/platform/x86/acer-wmi.c
@@@ -465,6 -465,14 +465,14 @@@ S:       Maintaine
  F:    drivers/scsi/aic7xxx/
  F:    drivers/scsi/aic7xxx_old/
  
+ AIMSLAB FM RADIO RECEIVER DRIVER
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Maintained
+ F:    drivers/media/radio/radio-aimslab*
  AIO
  M:    Benjamin LaHaise <bcrl@kvack.org>
  L:    linux-aio@kvack.org
@@@ -559,6 -567,18 +567,18 @@@ L:       linux-rdma@vger.kernel.or
  S:    Maintained
  F:    drivers/infiniband/hw/amso1100/
  
+ ANALOG DEVICES INC AD9389B DRIVER
+ M:    Hans Verkuil <hans.verkuil@cisco.com>
+ L:    linux-media@vger.kernel.org
+ S:    Maintained
+ F:    drivers/media/i2c/ad9389b*
+ ANALOG DEVICES INC ADV7604 DRIVER
+ M:    Hans Verkuil <hans.verkuil@cisco.com>
+ L:    linux-media@vger.kernel.org
+ S:    Maintained
+ F:    drivers/media/i2c/adv7604*
  ANALOG DEVICES INC ASOC CODEC DRIVERS
  M:    Lars-Peter Clausen <lars@metafoo.de>
  L:    device-drivers-devel@blackfin.uclinux.org
@@@ -648,7 -668,7 +668,7 @@@ F: arch/arm
  
  ARM SUB-ARCHITECTURES
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    MAINTAINED
 +S:    Maintained
  F:    arch/arm/mach-*/
  F:    arch/arm/plat-*/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git
@@@ -670,16 -690,8 +690,16 @@@ F:       drivers/input/serio/ambakmi.
  F:    include/linux/amba/kmi.h
  
  ARM PRIMECELL MMCI PL180/1 DRIVER
 -S:    Orphan
 +M:    Russell King <linux@arm.linux.org.uk>
 +S:    Maintained
  F:    drivers/mmc/host/mmci.*
 +F:    include/linux/amba/mmci.h
 +
 +ARM PRIMECELL UART PL010 AND PL011 DRIVERS
 +M:    Russell King <linux@arm.linux.org.uk>
 +S:    Maintained
 +F:    drivers/tty/serial/amba-pl01*.c
 +F:    include/linux/amba/serial.h
  
  ARM PRIMECELL BUS SUPPORT
  M:    Russell King <linux@arm.linux.org.uk>
@@@ -1126,6 -1138,14 +1146,14 @@@ F:    arch/arm/mach-s5pv210/mach-goni.
  F:    arch/arm/mach-exynos/mach-universal_c210.c
  F:    arch/arm/mach-exynos/mach-nuri.c
  
+ ARM/SAMSUNG S5P SERIES 2D GRAPHICS ACCELERATION (G2D) SUPPORT
+ M:    Kyungmin Park <kyungmin.park@samsung.com>
+ M:    Kamil Debski <k.debski@samsung.com>
+ L:    linux-arm-kernel@lists.infradead.org
+ L:    linux-media@vger.kernel.org
+ S:    Maintained
+ F:    drivers/media/platform/s5p-g2d/
  ARM/SAMSUNG S5P SERIES FIMC SUPPORT
  M:    Kyungmin Park <kyungmin.park@samsung.com>
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
@@@ -1256,17 -1276,12 +1284,17 @@@ M:   Tony Prisk <linux@prisktech.co.nz
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-vt8500/
 +F:    drivers/clocksource/vt8500_timer.c
 +F:    drivers/gpio/gpio-vt8500.c
 +F:    drivers/mmc/host/wmt-sdmmc.c
 +F:    drivers/pwm/pwm-vt8500.c
 +F:    drivers/rtc/rtc-vt8500.c
 +F:    drivers/tty/serial/vt8500_serial.c
 +F:    drivers/usb/host/ehci-vt8500.c
 +F:    drivers/usb/host/uhci-platform.c
  F:    drivers/video/vt8500lcdfb.*
  F:    drivers/video/wm8505fb*
  F:    drivers/video/wmt_ge_rops.*
 -F:    drivers/tty/serial/vt8500_serial.c
 -F:    drivers/rtc/rtc-vt8500.c
 -F:    drivers/mmc/host/wmt-sdmmc.c
  
  ARM/ZIPIT Z2 SUPPORT
  M:    Marek Vasut <marek.vasut@gmail.com>
@@@ -1275,14 -1290,6 +1303,14 @@@ S:    Maintaine
  F:    arch/arm/mach-pxa/z2.c
  F:    arch/arm/mach-pxa/include/mach/z2.h
  
 +ARM/ZYNQ ARCHITECTURE
 +M:    Michal Simek <michal.simek@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
 +S:    Supported
 +F:    arch/arm/mach-zynq/
 +
  ARM64 PORT (AARCH64 ARCHITECTURE)
  M:    Catalin Marinas <catalin.marinas@arm.com>
  M:    Will Deacon <will.deacon@arm.com>
@@@ -1291,6 -1298,14 +1319,14 @@@ S:    Maintaine
  F:    arch/arm64/
  F:    Documentation/arm64/
  
+ AS3645A LED FLASH CONTROLLER DRIVER
+ M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ S:    Maintained
+ F:    drivers/media/i2c/as3645a.c
+ F:    include/media/as3645a.h
  ASC7621 HARDWARE MONITOR DRIVER
  M:    George Joseph <george.joseph@fairview5.com>
  L:    lm-sensors@lm-sensors.org
@@@ -1324,7 -1339,7 +1360,7 @@@ F:      include/linux/dmaengine.
  F:    include/linux/async_tx.h
  
  AT24 EEPROM DRIVER
 -M:    Wolfram Sang <w.sang@pengutronix.de>
 +M:    Wolfram Sang <wsa@the-dreams.de>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
  F:    drivers/misc/eeprom/at24.c
@@@ -1372,14 -1387,6 +1408,14 @@@ W:    http://wireless.kernel.org/en/users/
  S:    Supported
  F:    drivers/net/wireless/ath/ath9k/
  
 +WILOCITY WIL6210 WIRELESS DRIVER
 +M:    Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
 +L:    linux-wireless@vger.kernel.org
 +L:    wil6210@qca.qualcomm.com
 +S:    Supported
 +W:    http://wireless.kernel.org/en/users/Drivers/wil6210
 +F:    drivers/net/wireless/ath/wil6210/
 +
  CARL9170 LINUX COMMUNITY WIRELESS DRIVER
  M:    Christian Lamparter <chunkeey@googlemail.com>
  L:    linux-wireless@vger.kernel.org
@@@ -1510,7 -1517,7 +1546,7 @@@ AVR32 ARCHITECTUR
  M:    Haavard Skinnemoen <hskinnemoen@gmail.com>
  M:    Hans-Christian Egtvedt <egtvedt@samfundet.no>
  W:    http://www.atmel.com/products/AVR32/
 -W:    http://avr32linux.org/
 +W:    http://mirror.egtvedt.no/avr32linux.org/
  W:    http://avrfreaks.net/
  S:    Maintained
  F:    arch/avr32/
@@@ -1538,6 -1545,14 +1574,14 @@@ T:    git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/usb/dvb-usb-v2/az6007.c
  
+ AZTECH FM RADIO RECEIVER DRIVER
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Maintained
+ F:    drivers/media/radio/radio-aztech*
  B43 WIRELESS DRIVER
  M:    Stefano Brivio <stefano.brivio@polimi.it>
  L:    linux-wireless@vger.kernel.org
@@@ -1637,6 -1652,15 +1681,15 @@@ W:    http://blackfin.uclinux.org
  S:    Supported
  F:    drivers/i2c/busses/i2c-bfin-twi.c
  
+ BLACKFIN MEDIA DRIVER
+ M:    Scott Jiang <scott.jiang.linux@gmail.com>
+ L:    uclinux-dist-devel@blackfin.uclinux.org
+ W:    http://blackfin.uclinux.org/
+ S:    Supported
+ F:    drivers/media/platform/blackfin/
+ F:    drivers/media/i2c/adv7183*
+ F:    drivers/media/i2c/vs6624*
  BLINKM RGB LED DRIVER
  M:    Jan-Simon Moeller <jansimon.moeller@gmx.de>
  S:    Maintained
@@@ -1820,6 -1844,14 +1873,14 @@@ S:    Supporte
  F:    Documentation/filesystems/caching/cachefiles.txt
  F:    fs/cachefiles/
  
+ CADET FM/AM RADIO RECEIVER DRIVER
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Maintained
+ F:    drivers/media/radio/radio-cadet*
  CAFE CMOS INTEGRATED CAMERA CONTROLLER DRIVER
  M:    Jonathan Corbet <corbet@lwn.net>
  L:    linux-media@vger.kernel.org
@@@ -1956,8 -1988,7 +2017,8 @@@ F:      drivers/misc/
  
  CHECKPATCH
  M:    Andy Whitcroft <apw@canonical.com>
 -S:    Supported
 +M:    Joe Perches <joe@perches.com>
 +S:    Maintained
  F:    scripts/checkpatch.pl
  
  CHINESE DOCUMENTATION
@@@ -1994,9 -2025,9 +2055,9 @@@ S:      Maintaine
  F:    drivers/usb/host/ohci-ep93xx.c
  
  CIRRUS LOGIC CS4270 SOUND DRIVER
 -M:    Timur Tabi <timur@freescale.com>
 +M:    Timur Tabi <timur@tabi.org>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 -S:    Supported
 +S:    Odd Fixes
  F:    sound/soc/codecs/cs4270*
  
  CLEANCACHE API
@@@ -2162,10 -2193,10 +2223,10 @@@ S:   Maintaine
  F:    tools/power/cpupower
  
  CPUSETS
 -M:    Paul Menage <paul@paulmenage.org>
 +M:    Li Zefan <lizefan@huawei.com>
  W:    http://www.bullopensource.org/cpuset/
  W:    http://oss.sgi.com/projects/cpusets/
 -S:    Supported
 +S:    Maintained
  F:    Documentation/cgroups/cpusets.txt
  F:    include/linux/cpuset.h
  F:    kernel/cpuset.c
@@@ -2221,6 -2252,15 +2282,15 @@@ F:    Documentation/video4linux/cx18.tx
  F:    drivers/media/pci/cx18/
  F:    include/uapi/linux/ivtv*
  
+ CX2341X MPEG ENCODER HELPER MODULE
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Maintained
+ F:    drivers/media/i2c/cx2341x*
+ F:    include/media/cx2341x*
  CX88 VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@redhat.com>
  L:    linux-media@vger.kernel.org
@@@ -2598,6 -2638,13 +2668,13 @@@ S:    Maintaine
  F:    drivers/gpu/drm/tegra/
  F:    Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt
  
+ DSBR100 USB FM RADIO DRIVER
+ M:    Alexey Klimov <klimov.linux@gmail.com>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ S:    Maintained
+ F:    drivers/media/radio/dsbr100.c
  DSCC4 DRIVER
  M:    Francois Romieu <romieu@fr.zoreil.com>
  L:    netdev@vger.kernel.org
@@@ -2988,7 -3035,7 +3065,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/i825xx/eexpress.*
  
  ETHERNET BRIDGE
 -M:    Stephen Hemminger <shemminger@vyatta.com>
 +M:    Stephen Hemminger <stephen@networkplumber.org>
  L:    bridge@lists.linux-foundation.org
  L:    netdev@vger.kernel.org
  W:    http://www.linuxfoundation.org/en/Net:Bridge
@@@ -2996,6 -3043,11 +3073,6 @@@ S:     Maintaine
  F:    include/linux/netfilter_bridge/
  F:    net/bridge/
  
 -ETHERTEAM 16I DRIVER
 -M:    Mika Kuoppala <miku@iki.fi>
 -S:    Maintained
 -F:    drivers/net/ethernet/fujitsu/eth16i.c
 -
  EXT2 FILE SYSTEM
  M:    Jan Kara <jack@suse.cz>
  L:    linux-ext4@vger.kernel.org
@@@ -3208,9 -3260,9 +3285,9 @@@ F:      include/uapi/video
  F:    include/uapi/linux/fb.h
  
  FREESCALE DIU FRAMEBUFFER DRIVER
 -M:    Timur Tabi <timur@freescale.com>
 +M:    Timur Tabi <timur@tabi.org>
  L:    linux-fbdev@vger.kernel.org
 -S:    Supported
 +S:    Maintained
  F:    drivers/video/fsl-diu-fb.*
  
  FREESCALE DMA DRIVER
@@@ -3245,8 -3297,9 +3322,8 @@@ F:      drivers/net/ethernet/freescale/fs_en
  F:    include/linux/fs_enet_pd.h
  
  FREESCALE QUICC ENGINE LIBRARY
 -M:    Timur Tabi <timur@freescale.com>
  L:    linuxppc-dev@lists.ozlabs.org
 -S:    Supported
 +S:    Orphan
  F:    arch/powerpc/sysdev/qe_lib/
  F:    arch/powerpc/include/asm/*qe.h
  
@@@ -3265,16 -3318,16 +3342,16 @@@ S:   Maintaine
  F:    drivers/net/ethernet/freescale/ucc_geth*
  
  FREESCALE QUICC ENGINE UCC UART DRIVER
 -M:    Timur Tabi <timur@freescale.com>
 +M:    Timur Tabi <timur@tabi.org>
  L:    linuxppc-dev@lists.ozlabs.org
 -S:    Supported
 +S:    Maintained
  F:    drivers/tty/serial/ucc_uart.c
  
  FREESCALE SOC SOUND DRIVERS
 -M:    Timur Tabi <timur@freescale.com>
 +M:    Timur Tabi <timur@tabi.org>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  L:    linuxppc-dev@lists.ozlabs.org
 -S:    Supported
 +S:    Maintained
  F:    sound/soc/fsl/fsl*
  F:    sound/soc/fsl/mpc8610_hpcd.c
  
@@@ -3364,6 -3417,14 +3441,14 @@@ W:    http://www.icp-vortex.com
  S:    Supported
  F:    drivers/scsi/gdt*
  
+ GEMTEK FM RADIO RECEIVER DRIVER
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Maintained
+ F:    drivers/media/radio/radio-gemtek*
  GENERIC GPIO I2C DRIVER
  M:    Haavard Skinnemoen <hskinnemoen@gmail.com>
  S:    Supported
@@@ -3774,11 -3835,12 +3859,11 @@@ S:   Maintaine
  F:    drivers/i2c/i2c-stub.c
  
  I2C SUBSYSTEM
 -M:    Wolfram Sang <w.sang@pengutronix.de>
 +M:    Wolfram Sang <wsa@the-dreams.de>
  M:    "Ben Dooks (embedded platforms)" <ben-linux@fluff.org>
  L:    linux-i2c@vger.kernel.org
  W:    http://i2c.wiki.kernel.org/
 -T:    quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-i2c/
 -T:    git git://git.pengutronix.de/git/wsa/linux.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git
  S:    Maintained
  F:    Documentation/i2c/
  F:    drivers/i2c/
@@@ -4232,7 -4294,6 +4317,7 @@@ M:      Thomas Gleixner <tglx@linutronix.de
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
  F:    kernel/irq/
 +F:    drivers/irqchip/
  
  IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
  M:    Benjamin Herrenschmidt <benh@kernel.crashing.org>
@@@ -4250,6 -4311,14 +4335,14 @@@ F:    Documentation/isapnp.tx
  F:    drivers/pnp/isapnp/
  F:    include/linux/isapnp.h
  
+ ISA RADIO MODULE
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Maintained
+ F:    drivers/media/radio/radio-isa*
  iSCSI BOOT FIRMWARE TABLE (iBFT) DRIVER
  M:    Peter Jones <pjones@redhat.com>
  M:    Konrad Rzeszutek Wilk <konrad@kernel.org>
@@@ -4408,6 -4477,14 +4501,14 @@@ W:    http://lse.sourceforge.net/kdump
  S:    Maintained
  F:    Documentation/kdump/
  
+ KEENE FM RADIO TRANSMITTER DRIVER
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Maintained
+ F:    drivers/media/radio/radio-keene*
  KERNEL AUTOMOUNTER v4 (AUTOFS4)
  M:    Ian Kent <raven@themaw.net>
  L:    autofs@vger.kernel.org
@@@ -4498,15 -4575,6 +4599,15 @@@ F:    arch/s390/include/asm/kvm
  F:    arch/s390/kvm/
  F:    drivers/s390/kvm/
  
 +KERNEL VIRTUAL MACHINE (KVM) FOR ARM
 +M:    Christoffer Dall <cdall@cs.columbia.edu>
 +L:    kvmarm@lists.cs.columbia.edu
 +W:    http://systems.cs.columbia.edu/projects/kvm-arm
 +S:    Maintained
 +F:    arch/arm/include/uapi/asm/kvm*
 +F:    arch/arm/include/asm/kvm*
 +F:    arch/arm/kvm/
 +
  KEXEC
  M:    Eric Biederman <ebiederm@xmission.com>
  W:    http://kernel.org/pub/linux/utils/kernel/kexec/
@@@ -4895,6 -4963,13 +4996,13 @@@ Q:    http://patchwork.linuxtv.org/project
  S:    Maintained
  F:    drivers/media/dvb-frontends/m88rs2000*
  
+ MA901 MASTERKIT USB FM RADIO DRIVER
+ M:      Alexey Klimov <klimov.linux@gmail.com>
+ L:      linux-media@vger.kernel.org
+ T:      git git://linuxtv.org/media_tree.git
+ S:      Maintained
+ F:      drivers/media/radio/radio-ma901.c
  MAC80211
  M:    Johannes Berg <johannes@sipsolutions.net>
  L:    linux-wireless@vger.kernel.org
@@@ -4931,7 -5006,7 +5039,7 @@@ S:      Maintaine
  
  MARVELL GIGABIT ETHERNET DRIVERS (skge/sky2)
  M:    Mirko Lindner <mlindner@marvell.com>
 -M:    Stephen Hemminger <shemminger@vyatta.com>
 +M:    Stephen Hemminger <stephen@networkplumber.org>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/ethernet/marvell/sk*
@@@ -4992,6 -5067,14 +5100,14 @@@ S:    Maintaine
  F:    Documentation/hwmon/max6650
  F:    drivers/hwmon/max6650.c
  
+ MAXIRADIO FM RADIO RECEIVER DRIVER
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Maintained
+ F:    drivers/media/radio/radio-maxiradio*
  MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
  M:    Mauro Carvalho Chehab <mchehab@redhat.com>
  P:    LinuxTV.org Project
@@@ -5014,6 -5097,14 +5130,14 @@@ F:    include/uapi/linux/meye.
  F:    include/uapi/linux/ivtv*
  F:    include/uapi/linux/uvcvideo.h
  
+ MEDIAVISION PRO MOVIE STUDIO DRIVER
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Odd Fixes
+ F:    drivers/media/parport/pms*
  MEGARAID SCSI DRIVERS
  M:    Neela Syam Kolli <megaraidlinux@lsi.com>
  L:    linux-scsi@vger.kernel.org
@@@ -5036,10 -5127,6 +5160,10 @@@ L:    linux-mm@kvack.or
  W:    http://www.linux-mm.org
  S:    Maintained
  F:    include/linux/mm.h
 +F:    include/linux/gfp.h
 +F:    include/linux/mmzone.h
 +F:    include/linux/memory_hotplug.h
 +F:    include/linux/vmalloc.h
  F:    mm/
  
  MEMORY RESOURCE CONTROLLER
@@@ -5087,6 -5174,14 +5211,14 @@@ S:    Supporte
  F:    Documentation/mips/
  F:    arch/mips/
  
+ MIROSOUND PCM20 FM RADIO RECEIVER DRIVER
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Odd Fixes
+ F:    drivers/media/radio/radio-miropcm20*
  MODULE SUPPORT
  M:    Rusty Russell <rusty@rustcorp.com.au>
  S:    Maintained
@@@ -5114,7 -5209,7 +5246,7 @@@ S:      Maintaine
  F:    drivers/media/radio/radio-mr800.c
  
  MSI LAPTOP SUPPORT
 -M:    "Lee, Chun-Yi" <jlee@novell.com>
 +M:    "Lee, Chun-Yi" <jlee@suse.com>
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    drivers/platform/x86/msi-laptop.c
@@@ -5125,6 -5220,38 +5257,38 @@@ L:    platform-driver-x86@vger.kernel.or
  S:    Supported
  F:    drivers/platform/x86/msi-wmi.c
  
+ MT9M032 SENSOR DRIVER
+ M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ S:    Maintained
+ F:    drivers/media/i2c/mt9m032.c
+ F:    include/media/mt9m032.h
+ MT9P031 SENSOR DRIVER
+ M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ S:    Maintained
+ F:    drivers/media/i2c/mt9p031.c
+ F:    include/media/mt9p031.h
+ MT9T001 SENSOR DRIVER
+ M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ S:    Maintained
+ F:    drivers/media/i2c/mt9t001.c
+ F:    include/media/mt9t001.h
+ MT9V032 SENSOR DRIVER
+ M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ S:    Maintained
+ F:    drivers/media/i2c/mt9v032.c
+ F:    include/media/mt9v032.h
  MULTIFUNCTION DEVICES (MFD)
  M:    Samuel Ortiz <sameo@linux.intel.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6.git
@@@ -5210,7 -5337,7 +5374,7 @@@ S:      Supporte
  F:    drivers/infiniband/hw/nes/
  
  NETEM NETWORK EMULATOR
 -M:    Stephen Hemminger <shemminger@vyatta.com>
 +M:    Stephen Hemminger <stephen@networkplumber.org>
  L:    netem@lists.linux-foundation.org
  S:    Maintained
  F:    net/sched/sch_netem.c
@@@ -5399,6 -5526,13 +5563,6 @@@ F:     include/linux/sunrpc
  F:    include/uapi/linux/nfs*
  F:    include/uapi/linux/sunrpc/
  
 -NI5010 NETWORK DRIVER
 -M:    Jan-Pascal van Best <janpascal@vanbest.org>
 -M:    Andreas Mohr <andi@lisas.de>
 -L:    netdev@vger.kernel.org
 -S:    Maintained
 -F:    drivers/net/ethernet/racal/ni5010.*
 -
  NILFS2 FILESYSTEM
  M:    KONISHI Ryusuke <konishi.ryusuke@lab.ntt.co.jp>
  L:    linux-nilfs@vger.kernel.org
@@@ -5424,13 -5558,6 +5588,13 @@@ S:    Maintaine
  F:    Documentation/scsi/NinjaSCSI.txt
  F:    drivers/scsi/nsp32*
  
 +NTB DRIVER
 +M:    Jon Mason <jon.mason@intel.com>
 +S:    Supported
 +F:    drivers/ntb/
 +F:    drivers/net/ntb_netdev.c
 +F:    include/linux/ntb.h
 +
  NTFS FILESYSTEM
  M:    Anton Altaparmakov <anton@tuxera.com>
  L:    linux-ntfs-dev@lists.sourceforge.net
@@@ -5544,7 -5671,8 +5708,7 @@@ M:      Benoît Cousson <b-cousson@ti.com
  M:    Paul Walmsley <paul@pwsan.com>
  L:    linux-omap@vger.kernel.org
  S:    Maintained
 -F:    arch/arm/mach-omap2/omap_hwmod.c
 -F:    arch/arm/plat-omap/include/plat/omap_hwmod.h
 +F:    arch/arm/mach-omap2/omap_hwmod.*
  
  OMAP HWMOD DATA FOR OMAP4-BASED DEVICES
  M:    Benoît Cousson <b-cousson@ti.com>
@@@ -5808,6 -5936,15 +5972,6 @@@ L:     linux-i2c@vger.kernel.or
  S:    Maintained
  F:    drivers/i2c/muxes/i2c-mux-pca9541.c
  
 -PCA9564/PCA9665 I2C BUS DRIVER
 -M:    Wolfram Sang <w.sang@pengutronix.de>
 -L:    linux-i2c@vger.kernel.org
 -S:    Maintained
 -F:    drivers/i2c/algos/i2c-algo-pca.c
 -F:    drivers/i2c/busses/i2c-pca-*
 -F:    include/linux/i2c-algo-pca.h
 -F:    include/linux/i2c-pca-platform.h
 -
  PCDP - PRIMARY CONSOLE AND DEBUG PORT
  M:    Khalid Aziz <khalid@gonehiking.org>
  S:    Maintained
@@@ -6276,6 -6413,14 +6440,14 @@@ L:    linux-hexagon@vger.kernel.or
  S:    Supported
  F:    arch/hexagon/
  
+ QUICKCAM PARALLEL PORT WEBCAMS
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Odd Fixes
+ F:    drivers/media/parport/*-qcam*
  RADOS BLOCK DEVICE (RBD)
  M:    Yehuda Sadeh <yehuda@inktank.com>
  M:    Sage Weil <sage@inktank.com>
@@@ -6519,7 -6664,7 +6691,7 @@@ S:      Supporte
  F:    drivers/s390/net/
  
  S390 ZCRYPT DRIVER
 -M:    Holger Dengler <hd@linux.vnet.ibm.com>
 +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/
@@@ -6550,6 -6695,14 +6722,14 @@@ L:    linux-arm-kernel@lists.infradead.or
  S:    Supported
  F:    drivers/mmc/host/s3cmci.*
  
+ SAA6588 RDS RECEIVER DRIVER
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Odd Fixes
+ F:    drivers/media/i2c/saa6588*
  SAA7134 VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@redhat.com>
  L:    linux-media@vger.kernel.org
@@@ -6560,10 -6713,9 +6740,9 @@@ F:     Documentation/video4linux/saa7134
  F:    drivers/media/pci/saa7134/
  
  SAA7146 VIDEO4LINUX-2 DRIVER
- M:    Michael Hunold <michael@mihu.de>
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
- W:    http://www.mihu.de/linux/saa7146
  S:    Maintained
  F:    drivers/media/common/saa7146/
  F:    drivers/media/pci/saa7146/
@@@ -6605,8 -6757,15 +6784,15 @@@ S:    Maintaine
  F:    drivers/media/platform/s3c-camif/
  F:    include/media/s3c_camif.h
  
+ SAMSUNG S5C73M3 CAMERA DRIVER
+ M:    Kyungmin Park <kyungmin.park@samsung.com>
+ M:    Andrzej Hajda <a.hajda@samsung.com>
+ L:    linux-media@vger.kernel.org
+ S:    Supported
+ F:    drivers/media/i2c/s5c73m3/*
  SERIAL DRIVERS
 -M:    Alan Cox <alan@linux.intel.com>
 +M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  L:    linux-serial@vger.kernel.org
  S:    Maintained
  F:    drivers/tty/serial
@@@ -6619,7 -6778,7 +6805,7 @@@ F:      drivers/dma/dw_dmac_regs.
  F:    drivers/dma/dw_dmac.c
  
  TIMEKEEPING, NTP
 -M:    John Stultz <johnstul@us.ibm.com>
 +M:    John Stultz <john.stultz@linaro.org>
  M:    Thomas Gleixner <tglx@linutronix.de>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
  S:    Supported
@@@ -6841,8 -7000,7 +7027,8 @@@ S:      Supporte
  F:    drivers/net/ethernet/sfc/
  
  SGI GRU DRIVER
 -M:    Jack Steiner <steiner@sgi.com>
 +M:    Dimitri Sivanich <sivanich@sgi.com>
 +M:    Robin Holt <holt@sgi.com>
  S:    Maintained
  F:    drivers/misc/sgi-gru/
  
@@@ -6866,6 -7024,38 +7052,38 @@@ M:    Robin Holt <holt@sgi.com
  S:    Maintained
  F:    drivers/misc/sgi-xp/
  
+ SI470X FM RADIO RECEIVER I2C DRIVER
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Odd Fixes
+ F:    drivers/media/radio/si470x/radio-si470x-i2c.c
+ SI470X FM RADIO RECEIVER USB DRIVER
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Maintained
+ F:    drivers/media/radio/si470x/radio-si470x-common.c
+ F:    drivers/media/radio/si470x/radio-si470x.h
+ F:    drivers/media/radio/si470x/radio-si470x-usb.c
+ SH_VEU V4L2 MEM2MEM DRIVER
+ M:    Guennadi Liakhovetski <g.liakhovetski@gmx.de>
+ L:    linux-media@vger.kernel.org
+ S:    Maintained
+ F:    drivers/media/platform/sh_veu.c
+ F:    include/media/sh_veu.h
+ SH_VOU V4L2 OUTPUT DRIVER
+ M:    Guennadi Liakhovetski <g.liakhovetski@gmx.de>
+ L:    linux-media@vger.kernel.org
+ S:    Maintained
+ F:    drivers/media/platform/sh_vou.c
+ F:    include/media/sh_vou.h
  SIMPLE FIRMWARE INTERFACE (SFI)
  M:    Len Brown <lenb@kernel.org>
  L:    sfi-devel@simplefirmware.org
@@@ -7037,6 -7227,14 +7255,6 @@@ L:     linux-fbdev@vger.kernel.or
  S:    Maintained
  F:    drivers/video/smscufx.c
  
 -SN-IA64 (Itanium) SUB-PLATFORM
 -M:    Jes Sorensen <jes@sgi.com>
 -L:    linux-altix@sgi.com
 -L:    linux-ia64@vger.kernel.org
 -W:    http://www.sgi.com/altix
 -S:    Maintained
 -F:    arch/ia64/sn/
 -
  SOC-CAMERA V4L2 SUBSYSTEM
  M:    Guennadi Liakhovetski <g.liakhovetski@gmx.de>
  L:    linux-media@vger.kernel.org
@@@ -7102,7 -7300,7 +7320,7 @@@ F:      include/uapi/sound
  F:    sound/
  
  SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC)
 -M:    Liam Girdwood <lrg@ti.com>
 +M:    Liam Girdwood <lgirdwood@gmail.com>
  M:    Mark Brown <broonie@opensource.wolfsonmicro.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -7192,7 -7390,6 +7410,7 @@@ F:      drivers/clk/spear
  
  SPI SUBSYSTEM
  M:    Grant Likely <grant.likely@secretlab.ca>
 +M:    Mark Brown <broonie@opensource.wolfsonmicro.com>
  L:    spi-devel-general@lists.sourceforge.net
  Q:    http://patchwork.kernel.org/project/spi-devel-general/list/
  T:    git git://git.secretlab.ca/git/linux-2.6.git
@@@ -7318,7 -7515,8 +7536,7 @@@ S:      Odd Fixe
  F:    drivers/staging/olpc_dcon/
  
  STAGING - OZMO DEVICES USB OVER WIFI DRIVER
 -M:    Rupesh Gujare <rgujare@ozmodevices.com>
 -M:    Chris Kelly <ckelly@ozmodevices.com>
 +M:    Rupesh Gujare <rupesh.gujare@atmel.com>
  S:    Maintained
  F:    drivers/staging/ozwpan/
  
@@@ -7354,7 -7552,7 +7572,7 @@@ S:      Odd Fixe
  F:    drivers/staging/speakup/
  
  STAGING - TI DSP BRIDGE DRIVERS
 -M:    Omar Ramirez Luna <omar.ramirez@ti.com>
 +M:    Omar Ramirez Luna <omar.ramirez@copitl.com>
  S:    Odd Fixes
  F:    drivers/staging/tidspbridge/
  
@@@ -7533,6 -7731,14 +7751,14 @@@ T:    git git://linuxtv.org/mkrufky/tuners
  S:    Maintained
  F:    drivers/media/tuners/tda8290.*
  
+ TDA9840 MEDIA DRIVER
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Maintained
+ F:    drivers/media/i2c/tda9840*
  TEA5761 TUNER DRIVER
  M:    Mauro Carvalho Chehab <mchehab@redhat.com>
  L:    linux-media@vger.kernel.org
@@@ -7549,19 -7755,30 +7775,35 @@@ T:   git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/tuners/tea5767.*
  
+ TEA6415C MEDIA DRIVER
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Maintained
+ F:    drivers/media/i2c/tea6415c*
+ TEA6420 MEDIA DRIVER
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Maintained
+ F:    drivers/media/i2c/tea6420*
  TEAM DRIVER
 -M:    Jiri Pirko <jpirko@redhat.com>
 +M:    Jiri Pirko <jiri@resnulli.us>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/team/
  F:    include/linux/if_team.h
  F:    include/uapi/linux/if_team.h
  
 +TECHNOLOGIC SYSTEMS TS-5500 PLATFORM SUPPORT
 +M:    Savoir-faire Linux Inc. <kernel@savoirfairelinux.com>
 +S:    Maintained
 +F:    arch/x86/platform/ts5500/
 +
  TECHNOTREND USB IR RECEIVER
  M:    Sean Young <sean@mess.org>
  L:    linux-media@vger.kernel.org
@@@ -7604,11 -7821,6 +7846,11 @@@ S:      Supporte
  F:      drivers/thermal/
  F:      include/linux/thermal.h
  
 +THINGM BLINK(1) USB RGB LED DRIVER
 +M:    Vivien Didelot <vivien.didelot@savoirfairelinux.com>
 +S:    Maintained
 +F:    drivers/hid/hid-thingm.c
 +
  THINKPAD ACPI EXTRAS DRIVER
  M:    Henrique de Moraes Holschuh <ibm-acpi@hmh.eng.br>
  L:    ibm-acpi-devel@lists.sourceforge.net
@@@ -7641,22 -7853,6 +7883,22 @@@ F:    Documentation/backlight/lp855x-drive
  F:    drivers/video/backlight/lp855x_bl.c
  F:    include/linux/platform_data/lp855x.h
  
 +TI LP8727 CHARGER DRIVER
 +M:    Milo Kim <milo.kim@ti.com>
 +S:    Maintained
 +F:    drivers/power/lp8727_charger.c
 +F:    include/linux/platform_data/lp8727.h
 +
 +TI LP8788 MFD DRIVER
 +M:    Milo Kim <milo.kim@ti.com>
 +S:    Maintained
 +F:    drivers/iio/adc/lp8788_adc.c
 +F:    drivers/leds/leds-lp8788.c
 +F:    drivers/mfd/lp8788*.c
 +F:    drivers/power/lp8788-charger.c
 +F:    drivers/regulator/lp8788-*.c
 +F:    include/linux/mfd/lp8788*.h
 +
  TI TWL4030 SERIES SOC CODEC DRIVER
  M:    Peter Ujfalusi <peter.ujfalusi@ti.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -7951,10 -8147,9 +8193,10 @@@ F:    drivers/net/wireless/ath/ar5523
  USB ATTACHED SCSI
  M:    Matthew Wilcox <willy@linux.intel.com>
  M:    Sarah Sharp <sarah.a.sharp@linux.intel.com>
 +M:    Gerd Hoffmann <kraxel@redhat.com>
  L:    linux-usb@vger.kernel.org
  L:    linux-scsi@vger.kernel.org
 -S:    Supported
 +S:    Maintained
  F:    drivers/usb/storage/uas.c
  
  USB CDC ETHERNET DRIVER
@@@ -8198,6 -8393,14 +8440,14 @@@ S:    Maintaine
  F:    drivers/media/usb/uvc/
  F:    include/uapi/linux/uvcvideo.h
  
+ USB VISION DRIVER
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Odd Fixes
+ F:    drivers/media/usb/usbvision/
  USB WEBCAM GADGET
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
  L:    linux-usb@vger.kernel.org
@@@ -8347,6 -8550,14 +8597,14 @@@ L:    netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/via/via-velocity.*
  
+ VIVI VIRTUAL VIDEO DRIVER
+ M:    Hans Verkuil <hverkuil@xs4all.nl>
+ L:    linux-media@vger.kernel.org
+ T:    git git://linuxtv.org/media_tree.git
+ W:    http://linuxtv.org
+ S:    Maintained
+ F:    drivers/media/platform/vivi*
  VLAN (802.1Q)
  M:    Patrick McHardy <kaber@trash.net>
  L:    netdev@vger.kernel.org
@@@ -8573,7 -8784,7 +8831,7 @@@ F:      Documentation/x86
  F:    arch/x86/
  
  X86 PLATFORM DRIVERS
 -M:    Matthew Garrett <mjg@redhat.com>
 +M:    Matthew Garrett <matthew.garrett@nebula.com>
  L:    platform-driver-x86@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86.git
  S:    Maintained
index 1f50a653eb8c0ba00a73f0f820ff890525a5dc7e,d0e3ec3d49e4e1c3801f3e9cbdd6b059ca755301..c2dfe06563df2af58c02efea8973b17eb0420179
@@@ -349,13 -349,13 +349,13 @@@ static inline void da850_evm_setup_nor_
        if (!HAS_MMC) {
                ret = davinci_cfg_reg_list(da850_evm_nand_pins);
                if (ret)
 -                      pr_warning("da850_evm_init: nand mux setup failed: "
 -                                      "%d\n", ret);
 +                      pr_warn("%s: NAND mux setup failed: %d\n",
 +                              __func__, ret);
  
                ret = davinci_cfg_reg_list(da850_evm_nor_pins);
                if (ret)
 -                      pr_warning("da850_evm_init: nor mux setup failed: %d\n",
 -                              ret);
 +                      pr_warn("%s: NOR mux setup failed: %d\n",
 +                              __func__, ret);
  
                da850_evm_init_nor();
  
@@@ -477,19 -477,19 +477,19 @@@ static int da850_evm_ui_expander_setup(
  
        ret = gpio_request(sel_a, da850_evm_ui_exp[DA850_EVM_UI_EXP_SEL_A]);
        if (ret) {
 -              pr_warning("Cannot open UI expander pin %d\n", sel_a);
 +              pr_warn("Cannot open UI expander pin %d\n", sel_a);
                goto exp_setup_sela_fail;
        }
  
        ret = gpio_request(sel_b, da850_evm_ui_exp[DA850_EVM_UI_EXP_SEL_B]);
        if (ret) {
 -              pr_warning("Cannot open UI expander pin %d\n", sel_b);
 +              pr_warn("Cannot open UI expander pin %d\n", sel_b);
                goto exp_setup_selb_fail;
        }
  
        ret = gpio_request(sel_c, da850_evm_ui_exp[DA850_EVM_UI_EXP_SEL_C]);
        if (ret) {
 -              pr_warning("Cannot open UI expander pin %d\n", sel_c);
 +              pr_warn("Cannot open UI expander pin %d\n", sel_c);
                goto exp_setup_selc_fail;
        }
  
        da850_evm_ui_keys_init(gpio);
        ret = platform_device_register(&da850_evm_ui_keys_device);
        if (ret) {
 -              pr_warning("Could not register UI GPIO expander push-buttons");
 +              pr_warn("Could not register UI GPIO expander push-buttons");
                goto exp_setup_keys_fail;
        }
  
@@@ -690,14 -690,14 +690,14 @@@ static int da850_evm_bb_expander_setup(
        da850_evm_bb_keys_init(gpio);
        ret = platform_device_register(&da850_evm_bb_keys_device);
        if (ret) {
 -              pr_warning("Could not register baseboard GPIO expander keys");
 +              pr_warn("Could not register baseboard GPIO expander keys");
                goto io_exp_setup_sw_fail;
        }
  
        da850_evm_bb_leds_init(gpio);
        ret = platform_device_register(&da850_evm_bb_leds_device);
        if (ret) {
 -              pr_warning("Could not register baseboard GPIO expander LEDS");
 +              pr_warn("Could not register baseboard GPIO expander LEDs");
                goto io_exp_setup_leds_fail;
        }
  
@@@ -1065,19 -1065,21 +1065,19 @@@ static int __init da850_evm_config_emac
        }
  
        if (ret)
 -              pr_warning("da850_evm_init: cpgmac/rmii mux setup failed: %d\n",
 -                              ret);
 +              pr_warn("%s: CPGMAC/RMII mux setup failed: %d\n",
 +                      __func__, ret);
  
        /* configure the CFGCHIP3 register for RMII or MII */
        __raw_writel(val, cfg_chip3_base);
  
        ret = davinci_cfg_reg(DA850_GPIO2_6);
        if (ret)
 -              pr_warning("da850_evm_init:GPIO(2,6) mux setup "
 -                                                      "failed\n");
 +              pr_warn("%s:GPIO(2,6) mux setup failed\n", __func__);
  
        ret = gpio_request(DA850_MII_MDIO_CLKEN_PIN, "mdio_clk_en");
        if (ret) {
 -              pr_warning("Cannot open GPIO %d\n",
 -                                      DA850_MII_MDIO_CLKEN_PIN);
 +              pr_warn("Cannot open GPIO %d\n", DA850_MII_MDIO_CLKEN_PIN);
                return ret;
        }
  
  
        ret = da8xx_register_emac();
        if (ret)
 -              pr_warning("da850_evm_init: emac registration failed: %d\n",
 -                              ret);
 +              pr_warn("%s: EMAC registration failed: %d\n", __func__, ret);
  
        return 0;
  }
@@@ -1253,11 -1256,24 +1253,24 @@@ static struct vpif_capture_config da850
  };
  
  /* VPIF display configuration */
+ static struct adv7343_platform_data adv7343_pdata = {
+       .mode_config = {
+               .dac_3 = 1,
+               .dac_2 = 1,
+               .dac_1 = 1,
+       },
+       .sd_config = {
+               .sd_dac_out1 = 1,
+       },
+ };
  static struct vpif_subdev_info da850_vpif_subdev[] = {
        {
                .name = "adv7343",
                .board_info = {
                        I2C_BOARD_INFO("adv7343", 0x2a),
+                       .platform_data = &adv7343_pdata,
                },
        },
  };
@@@ -1440,53 -1456,57 +1453,53 @@@ static __init void da850_evm_init(void
  
        ret = pmic_tps65070_init();
        if (ret)
 -              pr_warning("da850_evm_init: TPS65070 PMIC init failed: %d\n",
 -                              ret);
 +              pr_warn("%s: TPS65070 PMIC init failed: %d\n", __func__, ret);
  
        ret = da850_register_edma(da850_edma_rsv);
        if (ret)
 -              pr_warning("da850_evm_init: edma registration failed: %d\n",
 -                              ret);
 +              pr_warn("%s: EDMA registration failed: %d\n", __func__, ret);
  
        ret = davinci_cfg_reg_list(da850_i2c0_pins);
        if (ret)
 -              pr_warning("da850_evm_init: i2c0 mux setup failed: %d\n",
 -                              ret);
 +              pr_warn("%s: I2C0 mux setup failed: %d\n", __func__, ret);
  
        ret = da8xx_register_i2c(0, &da850_evm_i2c_0_pdata);
        if (ret)
 -              pr_warning("da850_evm_init: i2c0 registration failed: %d\n",
 -                              ret);
 +              pr_warn("%s: I2C0 registration failed: %d\n", __func__, ret);
  
  
        ret = da8xx_register_watchdog();
        if (ret)
 -              pr_warning("da830_evm_init: watchdog registration failed: %d\n",
 -                              ret);
 +              pr_warn("%s: watchdog registration failed: %d\n",
 +                      __func__, ret);
  
        if (HAS_MMC) {
                ret = davinci_cfg_reg_list(da850_evm_mmcsd0_pins);
                if (ret)
 -                      pr_warning("da850_evm_init: mmcsd0 mux setup failed:"
 -                                      " %d\n", ret);
 +                      pr_warn("%s: MMCSD0 mux setup failed: %d\n",
 +                              __func__, ret);
  
                ret = gpio_request(DA850_MMCSD_CD_PIN, "MMC CD\n");
                if (ret)
 -                      pr_warning("da850_evm_init: can not open GPIO %d\n",
 -                                      DA850_MMCSD_CD_PIN);
 +                      pr_warn("%s: can not open GPIO %d\n",
 +                              __func__, DA850_MMCSD_CD_PIN);
                gpio_direction_input(DA850_MMCSD_CD_PIN);
  
                ret = gpio_request(DA850_MMCSD_WP_PIN, "MMC WP\n");
                if (ret)
 -                      pr_warning("da850_evm_init: can not open GPIO %d\n",
 -                                      DA850_MMCSD_WP_PIN);
 +                      pr_warn("%s: can not open GPIO %d\n",
 +                              __func__, DA850_MMCSD_WP_PIN);
                gpio_direction_input(DA850_MMCSD_WP_PIN);
  
                ret = da8xx_register_mmcsd0(&da850_mmc_config);
                if (ret)
 -                      pr_warning("da850_evm_init: mmcsd0 registration failed:"
 -                                      " %d\n", ret);
 +                      pr_warn("%s: MMCSD0 registration failed: %d\n",
 +                              __func__, ret);
  
                ret = da850_wl12xx_init();
                if (ret)
 -                      pr_warning("da850_evm_init: wl12xx initialization"
 -                                 " failed: %d\n", ret);
 +                      pr_warn("%s: WL12xx initialization failed: %d\n",
 +                              __func__, ret);
        }
  
        davinci_serial_init(&da850_evm_uart_config);
  
        ret = davinci_cfg_reg_list(da850_evm_mcasp_pins);
        if (ret)
 -              pr_warning("da850_evm_init: mcasp mux setup failed: %d\n",
 -                              ret);
 +              pr_warn("%s: McASP mux setup failed: %d\n", __func__, ret);
  
        da850_evm_snd_data.sram_pool = sram_get_gen_pool();
        da8xx_register_mcasp(0, &da850_evm_snd_data);
  
        ret = davinci_cfg_reg_list(da850_lcdcntl_pins);
        if (ret)
 -              pr_warning("da850_evm_init: lcdcntl mux setup failed: %d\n",
 -                              ret);
 +              pr_warn("%s: LCDC mux setup failed: %d\n", __func__, ret);
  
        ret = da8xx_register_uio_pruss();
        if (ret)
        /* Handle board specific muxing for LCD here */
        ret = davinci_cfg_reg_list(da850_evm_lcdc_pins);
        if (ret)
 -              pr_warning("da850_evm_init: evm specific lcd mux setup "
 -                              "failed: %d\n", ret);
 +              pr_warn("%s: EVM specific LCD mux setup failed: %d\n",
 +                      __func__, ret);
  
        ret = da850_lcd_hw_init();
        if (ret)
 -              pr_warning("da850_evm_init: lcd initialization failed: %d\n",
 -                              ret);
 +              pr_warn("%s: LCD initialization failed: %d\n", __func__, ret);
  
        sharp_lk043t1dg01_pdata.panel_power_ctrl = da850_panel_power_ctrl,
        ret = da8xx_register_lcdc(&sharp_lk043t1dg01_pdata);
        if (ret)
 -              pr_warning("da850_evm_init: lcdc registration failed: %d\n",
 -                              ret);
 +              pr_warn("%s: LCDC registration failed: %d\n", __func__, ret);
  
        ret = da8xx_register_rtc();
        if (ret)
 -              pr_warning("da850_evm_init: rtc setup failed: %d\n", ret);
 +              pr_warn("%s: RTC setup failed: %d\n", __func__, ret);
  
        ret = da850_evm_init_cpufreq();
        if (ret)
 -              pr_warning("da850_evm_init: cpufreq registration failed: %d\n",
 -                              ret);
 +              pr_warn("%s: cpufreq registration failed: %d\n", __func__, ret);
  
        ret = da8xx_register_cpuidle();
        if (ret)
 -              pr_warning("da850_evm_init: cpuidle registration failed: %d\n",
 -                              ret);
 +              pr_warn("%s: cpuidle registration failed: %d\n", __func__, ret);
  
        ret = da850_register_pm(&da850_pm_device);
        if (ret)
 -              pr_warning("da850_evm_init: suspend registration failed: %d\n",
 -                              ret);
 +              pr_warn("%s: suspend registration failed: %d\n", __func__, ret);
  
        da850_vpif_init();
  
 -      ret = da8xx_register_spi(1, da850evm_spi_info,
 -                               ARRAY_SIZE(da850evm_spi_info));
 +      ret = spi_register_board_info(da850evm_spi_info,
 +                                    ARRAY_SIZE(da850evm_spi_info));
        if (ret)
 -              pr_warning("da850_evm_init: spi 1 registration failed: %d\n",
 -                              ret);
 +              pr_warn("%s: spi info registration failed: %d\n", __func__,
 +                      ret);
 +
 +      ret = da8xx_register_spi_bus(1, ARRAY_SIZE(da850evm_spi_info));
 +      if (ret)
 +              pr_warn("%s: SPI 1 registration failed: %d\n", __func__, ret);
  
        ret = da850_register_sata(DA850EVM_SATA_REFCLKPN_RATE);
        if (ret)
 -              pr_warning("da850_evm_init: sata registration failed: %d\n",
 -                              ret);
 +              pr_warn("%s: SATA registration failed: %d\n", __func__, ret);
  
        da850_evm_setup_mac_addr();
  }
@@@ -1588,7 -1612,7 +1601,7 @@@ MACHINE_START(DAVINCI_DA850_EVM, "DaVin
        .atag_offset    = 0x100,
        .map_io         = da850_evm_map_io,
        .init_irq       = cp_intc_init,
 -      .timer          = &davinci_timer,
 +      .init_time      = davinci_timer_init,
        .init_machine   = da850_evm_init,
        .init_late      = davinci_init_late,
        .dma_zone_size  = SZ_128M,
index e4a16f98e6a2b637a327e0d1d7d9abaa02c58493,8e1b4ffb5e542411e180401afc36a14af61e744a..71735e7797cc147d89590d27570802fa57979f3e
@@@ -690,7 -690,7 +690,7 @@@ static struct vpbe_output dm644xevm_vpb
                        .std            = VENC_STD_ALL,
                        .capabilities   = V4L2_OUT_CAP_STD,
                },
-               .subdev_name    = VPBE_VENC_SUBDEV_NAME,
+               .subdev_name    = DM644X_VPBE_VENC_SUBDEV_NAME,
                .default_mode   = "ntsc",
                .num_modes      = ARRAY_SIZE(dm644xevm_enc_std_timing),
                .modes          = dm644xevm_enc_std_timing,
                        .type           = V4L2_OUTPUT_TYPE_ANALOG,
                        .capabilities   = V4L2_OUT_CAP_DV_TIMINGS,
                },
-               .subdev_name    = VPBE_VENC_SUBDEV_NAME,
+               .subdev_name    = DM644X_VPBE_VENC_SUBDEV_NAME,
                .default_mode   = "480p59_94",
                .num_modes      = ARRAY_SIZE(dm644xevm_enc_preset_timing),
                .modes          = dm644xevm_enc_preset_timing,
@@@ -713,10 -713,10 +713,10 @@@ static struct vpbe_config dm644xevm_dis
        .module_name    = "dm644x-vpbe-display",
        .i2c_adapter_id = 1,
        .osd            = {
-               .module_name    = VPBE_OSD_SUBDEV_NAME,
+               .module_name    = DM644X_VPBE_OSD_SUBDEV_NAME,
        },
        .venc           = {
-               .module_name    = VPBE_VENC_SUBDEV_NAME,
+               .module_name    = DM644X_VPBE_VENC_SUBDEV_NAME,
        },
        .num_outputs    = ARRAY_SIZE(dm644xevm_vpbe_outputs),
        .outputs        = dm644xevm_vpbe_outputs,
@@@ -825,7 -825,7 +825,7 @@@ MACHINE_START(DAVINCI_EVM, "DaVinci DM6
        .atag_offset  = 0x100,
        .map_io       = davinci_evm_map_io,
        .init_irq     = davinci_irq_init,
 -      .timer        = &davinci_timer,
 +      .init_time      = davinci_timer_init,
        .init_machine = davinci_evm_init,
        .init_late      = davinci_init_late,
        .dma_zone_size  = SZ_128M,
index b8b3fbf0bae73508ce00d989130f48824dc6077c,7c2600e09a91049f68d007f7665cdf6c08ea817a..1ea79730187f9e3e1297a717a5a4a66650bf9d6a
@@@ -39,6 -39,7 +39,6 @@@
  #include <media/v4l2-mediabus.h>
  
  #include <asm/mach/arch.h>
 -#include <asm/hardware/gic.h>
  #include <asm/mach-types.h>
  
  #include <plat/adc.h>
@@@ -1208,25 -1209,25 +1208,25 @@@ static struct i2c_board_info m5mols_boa
        .platform_data  = &m5mols_platdata,
  };
  
- static struct s5p_fimc_isp_info nuri_camera_sensors[] = {
+ static struct fimc_source_info nuri_camera_sensors[] = {
        {
                .flags          = V4L2_MBUS_PCLK_SAMPLE_RISING |
                                  V4L2_MBUS_VSYNC_ACTIVE_LOW,
-               .bus_type       = FIMC_ITU_601,
+               .fimc_bus_type  = FIMC_BUS_TYPE_ITU_601,
                .board_info     = &s5k6aa_board_info,
                .clk_frequency  = 24000000UL,
                .i2c_bus_num    = 6,
        }, {
                .flags          = V4L2_MBUS_PCLK_SAMPLE_FALLING |
                                  V4L2_MBUS_VSYNC_ACTIVE_LOW,
-               .bus_type       = FIMC_MIPI_CSI2,
+               .fimc_bus_type  = FIMC_BUS_TYPE_MIPI_CSI2,
                .board_info     = &m5mols_board_info,
                .clk_frequency  = 24000000UL,
        },
  };
  
  static struct s5p_platform_fimc fimc_md_platdata = {
-       .isp_info       = nuri_camera_sensors,
+       .source_info    = nuri_camera_sensors,
        .num_clients    = ARRAY_SIZE(nuri_camera_sensors),
  };
  
@@@ -1378,9 -1379,10 +1378,9 @@@ MACHINE_START(NURI, "NURI"
        .smp            = smp_ops(exynos_smp_ops),
        .init_irq       = exynos4_init_irq,
        .map_io         = nuri_map_io,
 -      .handle_irq     = gic_handle_irq,
        .init_machine   = nuri_machine_init,
        .init_late      = exynos_init_late,
 -      .timer          = &exynos4_timer,
 +      .init_time      = exynos4_timer_init,
        .reserve        = &nuri_reserve,
        .restart        = exynos4_restart,
  MACHINE_END
index c9d33a43103e81bc1623aea71b239cc7bb4e5da2,c09290a8fa2eab9b0e956544318a72b7fe4d86a7..497fcb793dc150a39b02fa9c4b49cf33b70a18b1
@@@ -29,6 -29,7 +29,6 @@@
  #include <drm/exynos_drm.h>
  
  #include <asm/mach/arch.h>
 -#include <asm/hardware/gic.h>
  #include <asm/mach-types.h>
  
  #include <video/samsung_fimd.h>
@@@ -987,12 -988,12 +987,12 @@@ static struct i2c_board_info m5mols_boa
        .platform_data = &m5mols_platdata,
  };
  
- static struct s5p_fimc_isp_info universal_camera_sensors[] = {
+ static struct fimc_source_info universal_camera_sensors[] = {
        {
                .mux_id         = 0,
                .flags          = V4L2_MBUS_PCLK_SAMPLE_FALLING |
                                  V4L2_MBUS_VSYNC_ACTIVE_LOW,
-               .bus_type       = FIMC_ITU_601,
+               .fimc_bus_type  = FIMC_BUS_TYPE_ITU_601,
                .board_info     = &s5k6aa_board_info,
                .i2c_bus_num    = 0,
                .clk_frequency  = 24000000UL,
                .mux_id         = 0,
                .flags          = V4L2_MBUS_PCLK_SAMPLE_FALLING |
                                  V4L2_MBUS_VSYNC_ACTIVE_LOW,
-               .bus_type       = FIMC_MIPI_CSI2,
+               .fimc_bus_type  = FIMC_BUS_TYPE_MIPI_CSI2,
                .board_info     = &m5mols_board_info,
                .i2c_bus_num    = 0,
                .clk_frequency  = 24000000UL,
  };
  
  static struct s5p_platform_fimc fimc_md_platdata = {
-       .isp_info       = universal_camera_sensors,
+       .source_info    = universal_camera_sensors,
        .num_clients    = ARRAY_SIZE(universal_camera_sensors),
  };
  
@@@ -1150,9 -1151,10 +1150,9 @@@ MACHINE_START(UNIVERSAL_C210, "UNIVERSA
        .smp            = smp_ops(exynos_smp_ops),
        .init_irq       = exynos4_init_irq,
        .map_io         = universal_map_io,
 -      .handle_irq     = gic_handle_irq,
        .init_machine   = universal_machine_init,
        .init_late      = exynos_init_late,
 -      .timer          = &s5p_timer,
 +      .init_time      = s5p_timer_init,
        .reserve        = &universal_reserve,
        .restart        = exynos4_restart,
  MACHINE_END
index 5704815917466bda61ffcda940aefd213bf78829,423f6b6e8dbe319e7f4a7c5df7b4e17774eeb470..3a38f7b34b9400e52293456729a0b51c8cd29051
@@@ -29,6 -29,7 +29,6 @@@
  #include <linux/interrupt.h>
  #include <linux/platform_data/s3c-hsotg.h>
  
 -#include <asm/hardware/vic.h>
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
  #include <asm/setup.h>
@@@ -840,12 -841,12 +840,12 @@@ static struct i2c_board_info noon010pc3
        .platform_data = &noon010pc30_pldata,
  };
  
- static struct s5p_fimc_isp_info goni_camera_sensors[] = {
+ static struct fimc_source_info goni_camera_sensors[] = {
        {
                .mux_id         = 0,
                .flags          = V4L2_MBUS_PCLK_SAMPLE_FALLING |
                                  V4L2_MBUS_VSYNC_ACTIVE_LOW,
-               .bus_type       = FIMC_ITU_601,
+               .bus_type       = FIMC_BUS_TYPE_ITU_601,
                .board_info     = &noon010pc30_board_info,
                .i2c_bus_num    = 0,
                .clk_frequency  = 16000000UL,
  };
  
  static struct s5p_platform_fimc goni_fimc_md_platdata __initdata = {
-       .isp_info       = goni_camera_sensors,
+       .source_info    = goni_camera_sensors,
        .num_clients    = ARRAY_SIZE(goni_camera_sensors),
  };
  
@@@ -971,9 -972,10 +971,9 @@@ MACHINE_START(GONI, "GONI"
        /* Maintainers: Kyungmin Park <kyungmin.park@samsung.com> */
        .atag_offset    = 0x100,
        .init_irq       = s5pv210_init_irq,
 -      .handle_irq     = vic_handle_irq,
        .map_io         = goni_map_io,
        .init_machine   = goni_machine_init,
 -      .timer          = &s5p_timer,
 +      .init_time      = s5p_timer_init,
        .reserve        = &goni_reserve,
        .restart        = s5pv210_restart,
  MACHINE_END
diff --combined drivers/hid/hid-core.c
index ff75cabf7393f3d29c8b05c77f11cf2b8828a132,ccca9ac34dca4b1ba13d35819fc1d39ff9f54500..512b01c04ea7610bcb6466208255a9d83a36cb1d
@@@ -729,7 -729,7 +729,7 @@@ static int hid_scan_report(struct hid_d
                        item.type == HID_ITEM_TYPE_MAIN &&
                        item.tag == HID_MAIN_ITEM_TAG_BEGIN_COLLECTION &&
                        (item_udata(&item) & 0xff) == HID_COLLECTION_PHYSICAL &&
 -                      hid->bus == BUS_USB)
 +                      (hid->bus == BUS_USB || hid->bus == BUS_I2C))
                        hid->group = HID_GROUP_SENSOR_HUB;
        }
  
@@@ -1195,7 -1195,6 +1195,7 @@@ int hid_report_raw_event(struct hid_dev
  {
        struct hid_report_enum *report_enum = hid->report_enum + type;
        struct hid_report *report;
 +      struct hid_driver *hdrv;
        unsigned int a;
        int rsize, csize = size;
        u8 *cdata = data;
        if (hid->claimed != HID_CLAIMED_HIDRAW) {
                for (a = 0; a < report->maxfield; a++)
                        hid_input_field(hid, report->field[a], cdata, interrupt);
 +              hdrv = hid->driver;
 +              if (hdrv && hdrv->report)
 +                      hdrv->report(hid, report);
        }
  
        if (hid->claimed & HID_CLAIMED_INPUT)
@@@ -1603,7 -1599,6 +1603,7 @@@ static const struct hid_device_id hid_h
        { HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE_3) },
        { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK, USB_DEVICE_ID_HOLTEK_ON_LINE_GRIP) },
        { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD) },
 +      { HID_USB_DEVICE(USB_VENDOR_ID_JESS2, USB_DEVICE_ID_JESS2_COLOR_RUMBLE_PAD) },
        { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ION, USB_DEVICE_ID_ICADE) },
        { HID_USB_DEVICE(USB_VENDOR_ID_KENSINGTON, USB_DEVICE_ID_KS_SLIMBLADE) },
        { HID_USB_DEVICE(USB_VENDOR_ID_KEYTOUCH, USB_DEVICE_ID_KEYTOUCH_IEC) },
        { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_NAVIGATION_CONTROLLER) },
        { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER) },
        { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE) },
 +      { HID_USB_DEVICE(USB_VENDOR_ID_STEELSERIES, USB_DEVICE_ID_STEELSERIES_SRWS1) },
        { HID_USB_DEVICE(USB_VENDOR_ID_SUNPLUS, USB_DEVICE_ID_SUNPLUS_WDESKTOP) },
 +      { HID_USB_DEVICE(USB_VENDOR_ID_THINGM, USB_DEVICE_ID_BLINK1) },
        { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300) },
        { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb304) },
        { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb323) },
@@@ -2077,6 -2070,7 +2077,7 @@@ static const struct hid_device_id hid_i
        { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_HYBRID) },
        { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_HEATCONTROL) },
        { HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_BEATPAD) },
+       { HID_USB_DEVICE(USB_VENDOR_ID_MASTERKIT, USB_DEVICE_ID_MASTERKIT_MA901RADIO) },
        { HID_USB_DEVICE(USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1024LS) },
        { HID_USB_DEVICE(USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1208LS) },
        { HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICKIT1) },
@@@ -2235,14 -2229,6 +2236,14 @@@ bool hid_ignore(struct hid_device *hdev
                    hdev->type != HID_TYPE_USBMOUSE)
                        return true;
                break;
 +      case USB_VENDOR_ID_VELLEMAN:
 +              /* These are not HID devices.  They are handled by comedi. */
 +              if ((hdev->product >= USB_DEVICE_ID_VELLEMAN_K8055_FIRST &&
 +                   hdev->product <= USB_DEVICE_ID_VELLEMAN_K8055_LAST) ||
 +                  (hdev->product >= USB_DEVICE_ID_VELLEMAN_K8061_FIRST &&
 +                   hdev->product <= USB_DEVICE_ID_VELLEMAN_K8061_LAST))
 +                      return true;
 +              break;
        }
  
        if (hdev->type == HID_TYPE_USBMOUSE &&
diff --combined drivers/hid/hid-ids.h
index 6e5c2ffa8d96430f22c6fe9d52d63c60e8e5dfd3,f39be08c13581900056e95402d96d3820bb72278..92e47e5c956426878e0e69d80811831d9b92e483
  #define USB_VENDOR_ID_EZKEY           0x0518
  #define USB_DEVICE_ID_BTC_8193                0x0002
  
 +#define USB_VENDOR_ID_FORMOSA          0x147a
 +#define USB_DEVICE_ID_FORMOSA_IR_RECEIVER      0xe03e
 +
  #define USB_VENDOR_ID_FREESCALE               0x15A2
  #define USB_DEVICE_ID_FREESCALE_MX28  0x004F
  
  #define USB_VENDOR_ID_JESS            0x0c45
  #define USB_DEVICE_ID_JESS_YUREX      0x1010
  
 +#define USB_VENDOR_ID_JESS2           0x0f30
 +#define USB_DEVICE_ID_JESS2_COLOR_RUMBLE_PAD 0x0111
 +
  #define USB_VENDOR_ID_KBGEAR          0x084e
  #define USB_DEVICE_ID_KBGEAR_JAMSTUDIO        0x1001
  
  #define USB_DEVICE_ID_LOGITECH_WINGMAN_F3D    0xc283
  #define USB_DEVICE_ID_LOGITECH_FORCE3D_PRO    0xc286
  #define USB_DEVICE_ID_LOGITECH_FLIGHT_SYSTEM_G940     0xc287
 -#define USB_DEVICE_ID_LOGITECH_WHEEL  0xc294
  #define USB_DEVICE_ID_LOGITECH_WINGMAN_FFG    0xc293
 +#define USB_DEVICE_ID_LOGITECH_WHEEL  0xc294
  #define USB_DEVICE_ID_LOGITECH_MOMO_WHEEL     0xc295
  #define USB_DEVICE_ID_LOGITECH_DFP_WHEEL      0xc298
  #define USB_DEVICE_ID_LOGITECH_G25_WHEEL      0xc299
  #define USB_VENDOR_ID_MADCATZ         0x0738
  #define USB_DEVICE_ID_MADCATZ_BEATPAD 0x4540
  
+ #define USB_VENDOR_ID_MASTERKIT                       0x16c0
+ #define USB_DEVICE_ID_MASTERKIT_MA901RADIO    0x05df
  #define USB_VENDOR_ID_MCC             0x09db
  #define USB_DEVICE_ID_MCC_PMD1024LS   0x0076
  #define USB_DEVICE_ID_MCC_PMD1208LS   0x007a
  #define USB_VENDOR_ID_NEC             0x073e
  #define USB_DEVICE_ID_NEC_USB_GAME_PAD        0x0301
  
 +#define USB_VENDOR_ID_NEXIO           0x1870
 +#define USB_DEVICE_ID_NEXIO_MULTITOUCH_420    0x010d
 +
  #define USB_VENDOR_ID_NEXTWINDOW      0x1926
  #define USB_DEVICE_ID_NEXTWINDOW_TOUCHSCREEN  0x0003
  
  
  #define USB_VENDOR_ID_SONY                    0x054c
  #define USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE     0x024b
 +#define USB_DEVICE_ID_SONY_VAIO_VGP_MOUSE     0x0374
  #define USB_DEVICE_ID_SONY_PS3_BDREMOTE               0x0306
  #define USB_DEVICE_ID_SONY_PS3_CONTROLLER     0x0268
  #define USB_DEVICE_ID_SONY_NAVIGATION_CONTROLLER      0x042f
  #define USB_VENDOR_ID_STANTUM_SITRONIX                0x1403
  #define USB_DEVICE_ID_MTP_SITRONIX            0x5001
  
 +#define USB_VENDOR_ID_STEELSERIES     0x1038
 +#define USB_DEVICE_ID_STEELSERIES_SRWS1       0x1410
 +
  #define USB_VENDOR_ID_SUN             0x0430
  #define USB_DEVICE_ID_RARITAN_KVM_DONGLE      0xcdab
  
  #define USB_DEVICE_ID_SYNAPTICS_WTP   0x0010
  #define USB_DEVICE_ID_SYNAPTICS_DPAD  0x0013
  
 +#define USB_VENDOR_ID_THINGM          0x27b8
 +#define USB_DEVICE_ID_BLINK1          0x01ed
 +
  #define USB_VENDOR_ID_THRUSTMASTER    0x044f
  
  #define USB_VENDOR_ID_TIVO            0x150a
  #define USB_DEVICE_ID_UNITEC_USB_TOUCH_0709   0x0709
  #define USB_DEVICE_ID_UNITEC_USB_TOUCH_0A19   0x0a19
  
 +#define USB_VENDOR_ID_VELLEMAN                0x10cf
 +#define USB_DEVICE_ID_VELLEMAN_K8055_FIRST    0x5500
 +#define USB_DEVICE_ID_VELLEMAN_K8055_LAST     0x5503
 +#define USB_DEVICE_ID_VELLEMAN_K8061_FIRST    0x8061
 +#define USB_DEVICE_ID_VELLEMAN_K8061_LAST     0x8068
 +
  #define USB_VENDOR_ID_VERNIER         0x08f7
  #define USB_DEVICE_ID_VERNIER_LABPRO  0x0001
  #define USB_DEVICE_ID_VERNIER_GOTEMP  0x0002
diff --combined drivers/media/Kconfig
index 8567a7a64104ab663a70f8b099b279aa2869abde,84d85b921d6d4a5d6a8a79a199d969bae7f890de..7f5a7cac6dc7e3982aff30754bafd8c388976a5b
@@@ -79,7 -79,8 +79,7 @@@ config MEDIA_RC_SUPPOR
  #
  
  config MEDIA_CONTROLLER
 -      bool "Media Controller API (EXPERIMENTAL)"
 -      depends on EXPERIMENTAL
 +      bool "Media Controller API"
        depends on MEDIA_CAMERA_SUPPORT
        ---help---
          Enable the media controller API used to query media devices internal
@@@ -99,8 -100,8 +99,8 @@@ config VIDEO_DE
        default y
  
  config VIDEO_V4L2_SUBDEV_API
 -      bool "V4L2 sub-device userspace API (EXPERIMENTAL)"
 -      depends on VIDEO_DEV && MEDIA_CONTROLLER && EXPERIMENTAL
 +      bool "V4L2 sub-device userspace API"
 +      depends on VIDEO_DEV && MEDIA_CONTROLLER
        ---help---
          Enables the V4L2 sub-device pad-level userspace API used to configure
          video format, size and frame rate between hardware blocks.
@@@ -134,6 -135,12 +134,12 @@@ config DVB_NE
          You may want to disable the network support on embedded devices. If
          unsure say Y.
  
+ # This Kconfig option is used by both PCI and USB drivers
+ config TTPCI_EEPROM
+         tristate
+         depends on I2C
+         default n
  source "drivers/media/dvb-core/Kconfig"
  
  comment "Media drivers"
@@@ -157,17 -164,20 +163,20 @@@ source "drivers/media/firewire/Kconfig
  # Common driver options
  source "drivers/media/common/Kconfig"
  
+ comment "Media ancillary drivers (tuners, sensors, i2c, frontends)"
  #
  # Ancillary drivers (tuners, i2c, frontends)
  #
  
  config MEDIA_SUBDRV_AUTOSELECT
-       bool "Autoselect tuners and i2c modules to build"
+       bool "Autoselect ancillary drivers (tuners, sensors, i2c, frontends)"
        depends on MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT || MEDIA_CAMERA_SUPPORT
        default y
        help
-         By default, a media driver auto-selects all possible i2c
-         devices that are used by any of the supported devices.
+         By default, a media driver auto-selects all possible ancillary
+         devices such as tuners, sensors, video encoders/decoders and
+         frontends, that are used by any of the supported devices.
  
          This is generally the right thing to do, except when there
          are strict constraints with regards to the kernel size,
          Use this option with care, as deselecting ancillary drivers which
          are, in fact, necessary will result in the lack of the needed
          functionality for your device (it may not tune or may not have
-         the need demodulers).
+         the needed demodulators).
  
          If unsure say Y.
  
- comment "Media ancillary drivers (tuners, sensors, i2c, frontends)"
  source "drivers/media/i2c/Kconfig"
  source "drivers/media/tuners/Kconfig"
  source "drivers/media/dvb-frontends/Kconfig"
index 0223ad255cb4c7e1f3218aa5a0f5debb076963fd,b059abf572d6d1afffbc2efb899509506d155ef4..6e50a758156817834e314bd7ca6222a8c9c8f2e2
@@@ -603,6 -603,7 +603,7 @@@ static int dvb_frontend_thread(void *da
        enum dvbfe_algo algo;
  
        bool re_tune = false;
+       bool semheld = false;
  
        dev_dbg(fe->dvb->device, "%s:\n", __func__);
  
@@@ -626,6 -627,8 +627,8 @@@ restart
  
                if (kthread_should_stop() || dvb_frontend_is_exiting(fe)) {
                        /* got signal or quitting */
+                       if (!down_interruptible(&fepriv->sem))
+                               semheld = true;
                        fepriv->exit = DVB_FE_NORMAL_EXIT;
                        break;
                }
                fepriv->exit = DVB_FE_NO_EXIT;
        mb();
  
+       if (semheld)
+               up(&fepriv->sem);
        dvb_frontend_wakeup(fe);
        return 0;
  }
@@@ -1048,6 -1053,16 +1053,16 @@@ static struct dtv_cmds_h dtv_cmds[DTV_M
        _DTV_CMD(DTV_ATSCMH_SCCC_CODE_MODE_B, 0, 0),
        _DTV_CMD(DTV_ATSCMH_SCCC_CODE_MODE_C, 0, 0),
        _DTV_CMD(DTV_ATSCMH_SCCC_CODE_MODE_D, 0, 0),
+       /* Statistics API */
+       _DTV_CMD(DTV_STAT_SIGNAL_STRENGTH, 0, 0),
+       _DTV_CMD(DTV_STAT_CNR, 0, 0),
+       _DTV_CMD(DTV_STAT_PRE_ERROR_BIT_COUNT, 0, 0),
+       _DTV_CMD(DTV_STAT_PRE_TOTAL_BIT_COUNT, 0, 0),
+       _DTV_CMD(DTV_STAT_POST_ERROR_BIT_COUNT, 0, 0),
+       _DTV_CMD(DTV_STAT_POST_TOTAL_BIT_COUNT, 0, 0),
+       _DTV_CMD(DTV_STAT_ERROR_BLOCK_COUNT, 0, 0),
+       _DTV_CMD(DTV_STAT_TOTAL_BLOCK_COUNT, 0, 0),
  };
  
  static void dtv_property_dump(struct dvb_frontend *fe, struct dtv_property *tvp)
@@@ -1438,7 -1453,35 +1453,35 @@@ static int dtv_property_process_get(str
                tvp->u.data = c->lna;
                break;
  
+       /* Fill quality measures */
+       case DTV_STAT_SIGNAL_STRENGTH:
+               tvp->u.st = c->strength;
+               break;
+       case DTV_STAT_CNR:
+               tvp->u.st = c->cnr;
+               break;
+       case DTV_STAT_PRE_ERROR_BIT_COUNT:
+               tvp->u.st = c->pre_bit_error;
+               break;
+       case DTV_STAT_PRE_TOTAL_BIT_COUNT:
+               tvp->u.st = c->pre_bit_count;
+               break;
+       case DTV_STAT_POST_ERROR_BIT_COUNT:
+               tvp->u.st = c->post_bit_error;
+               break;
+       case DTV_STAT_POST_TOTAL_BIT_COUNT:
+               tvp->u.st = c->post_bit_count;
+               break;
+       case DTV_STAT_ERROR_BLOCK_COUNT:
+               tvp->u.st = c->block_error;
+               break;
+       case DTV_STAT_TOTAL_BLOCK_COUNT:
+               tvp->u.st = c->block_count;
+               break;
        default:
+               dev_dbg(fe->dvb->device,
+                       "%s: FE property %d doesn't exist\n",
+                       __func__, tvp->cmd);
                return -EINVAL;
        }
  
@@@ -1820,19 -1863,23 +1863,23 @@@ static int dvb_frontend_ioctl(struct fi
        struct dvb_frontend *fe = dvbdev->priv;
        struct dtv_frontend_properties *c = &fe->dtv_property_cache;
        struct dvb_frontend_private *fepriv = fe->frontend_priv;
 -      int err = -ENOTTY;
 +      int err = -EOPNOTSUPP;
  
        dev_dbg(fe->dvb->device, "%s: (%d)\n", __func__, _IOC_NR(cmd));
-       if (fepriv->exit != DVB_FE_NO_EXIT)
+       if (down_interruptible(&fepriv->sem))
+               return -ERESTARTSYS;
+       if (fepriv->exit != DVB_FE_NO_EXIT) {
+               up(&fepriv->sem);
                return -ENODEV;
+       }
  
        if ((file->f_flags & O_ACCMODE) == O_RDONLY &&
            (_IOC_DIR(cmd) != _IOC_READ || cmd == FE_GET_EVENT ||
-            cmd == FE_DISEQC_RECV_SLAVE_REPLY))
+            cmd == FE_DISEQC_RECV_SLAVE_REPLY)) {
+               up(&fepriv->sem);
                return -EPERM;
-       if (down_interruptible (&fepriv->sem))
-               return -ERESTARTSYS;
+       }
  
        if ((cmd == FE_SET_PROPERTY) || (cmd == FE_GET_PROPERTY))
                err = dvb_frontend_ioctl_properties(file, cmd, parg);
@@@ -1938,7 -1985,7 +1985,7 @@@ static int dvb_frontend_ioctl_propertie
                }
  
        } else
 -              err = -ENOTTY;
 +              err = -EOPNOTSUPP;
  
  out:
        kfree(tvp);
@@@ -2071,7 -2118,7 +2118,7 @@@ static int dvb_frontend_ioctl_legacy(st
        struct dvb_frontend *fe = dvbdev->priv;
        struct dvb_frontend_private *fepriv = fe->frontend_priv;
        struct dtv_frontend_properties *c = &fe->dtv_property_cache;
 -      int err = -ENOTTY;
 +      int err = -EOPNOTSUPP;
  
        switch (cmd) {
        case FE_GET_INFO: {
                                printk("%s switch command: 0x%04lx\n", __func__, swcmd);
                        do_gettimeofday(&nexttime);
                        if (dvb_frontend_debug)
-                               memcpy(&tv[0], &nexttime, sizeof(struct timeval));
+                               tv[0] = nexttime;
                        /* before sending a command, initialize by sending
                         * a 32ms 18V to the switch
                         */
index 33241120a58c9960e4858803438d925ece4c164c,2433e2bbeee452607e25a3aa3a590506a429706f..05d7b6333461c68f5aaeb919ad1c9dc584cf5952
@@@ -92,14 -92,14 +92,14 @@@ config VIDEO_M32R_AR_M6427
  
  config VIDEO_OMAP2
        tristate "OMAP2 Camera Capture Interface driver"
-       depends on VIDEO_DEV && ARCH_OMAP2
+       depends on VIDEO_DEV && ARCH_OMAP2 && VIDEO_V4L2_INT_DEVICE
        select VIDEOBUF_DMA_SG
        ---help---
          This is a v4l2 driver for the TI OMAP2 camera capture interface
  
  config VIDEO_OMAP3
 -      tristate "OMAP 3 Camera support (EXPERIMENTAL)"
 -      depends on OMAP_IOVMM && VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && ARCH_OMAP3 && EXPERIMENTAL
 +      tristate "OMAP 3 Camera support"
 +      depends on OMAP_IOVMM && VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && ARCH_OMAP3
        ---help---
          Driver for an OMAP 3 camera controller.
  
@@@ -169,8 -169,8 +169,8 @@@ config VIDEO_SAMSUNG_S5P_G2
          2d graphics accelerator.
  
  config VIDEO_SAMSUNG_S5P_JPEG
 -      tristate "Samsung S5P/Exynos4 JPEG codec driver (EXPERIMENTAL)"
 -      depends on VIDEO_DEV && VIDEO_V4L2 && PLAT_S5P && EXPERIMENTAL
 +      tristate "Samsung S5P/Exynos4 JPEG codec driver"
 +      depends on VIDEO_DEV && VIDEO_V4L2 && PLAT_S5P
        select VIDEOBUF2_DMA_CONTIG
        select V4L2_MEM2MEM_DEV
        ---help---
@@@ -202,6 -202,15 +202,15 @@@ config VIDEO_SAMSUNG_EXYNOS_GS
        help
          This is a v4l2 driver for Samsung EXYNOS5 SoC G-Scaler.
  
+ config VIDEO_SH_VEU
+       tristate "SuperH VEU mem2mem video processing driver"
+       depends on VIDEO_DEV && VIDEO_V4L2
+       select VIDEOBUF2_DMA_CONTIG
+       select V4L2_MEM2MEM_DEV
+       help
+           Support for the Video Engine Unit (VEU) on SuperH and
+           SH-Mobile SoCs.
  endif # V4L_MEM2MEM_DRIVERS
  
  menuconfig V4L_TEST_DRIVERS
index 4a980e029ca70163b30288663a7f273943002e18,8d20b644bf2c306ae9c0df45ada44bea11525026..20827ba168fc53a0c56702639010c62b606aa483
@@@ -23,8 -23,8 +23,8 @@@
  #include <linux/slab.h>
  #include <linux/videodev2.h>
  #include <linux/of.h>
 +#include <linux/platform_data/imx-iram.h>
  
 -#include <mach/iram.h>
  #include <media/v4l2-ctrls.h>
  #include <media/v4l2-device.h>
  #include <media/v4l2-ioctl.h>
@@@ -178,6 -178,10 +178,10 @@@ struct coda_ctx 
        int                             idx;
  };
  
+ static const u8 coda_filler_nal[14] = { 0x00, 0x00, 0x00, 0x01, 0x0c, 0xff,
+                       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80 };
+ static const u8 coda_filler_size[8] = { 0, 7, 14, 13, 12, 11, 10, 9 };
  static inline void coda_write(struct coda_dev *dev, u32 data, u32 reg)
  {
        v4l2_dbg(1, coda_debug, &dev->v4l2_dev,
@@@ -944,6 -948,24 +948,24 @@@ static int coda_alloc_framebuffers(stru
        return 0;
  }
  
+ static int coda_h264_padding(int size, char *p)
+ {
+       int nal_size;
+       int diff;
+       diff = size - (size & ~0x7);
+       if (diff == 0)
+               return 0;
+       nal_size = coda_filler_size[diff];
+       memcpy(p, coda_filler_nal, nal_size);
+       /* Add rbsp stop bit and trailing at the end */
+       *(p + nal_size - 1) = 0x80;
+       return nal_size;
+ }
  static int coda_start_streaming(struct vb2_queue *q, unsigned int count)
  {
        struct coda_ctx *ctx = vb2_get_drv_priv(q);
                                coda_read(dev, CODA_CMD_ENC_HEADER_BB_START);
                memcpy(&ctx->vpu_header[1][0], vb2_plane_vaddr(buf, 0),
                       ctx->vpu_header_size[1]);
-               ctx->vpu_header_size[2] = 0;
+               /*
+                * Length of H.264 headers is variable and thus it might not be
+                * aligned for the coda to append the encoded frame. In that is
+                * the case a filler NAL must be added to header 2.
+                */
+               ctx->vpu_header_size[2] = coda_h264_padding(
+                                       (ctx->vpu_header_size[0] +
+                                        ctx->vpu_header_size[1]),
+                                        ctx->vpu_header[2]);
                break;
        case V4L2_PIX_FMT_MPEG4:
                /*
index 684e815a81b64078222a8bd1f1a771d8f4fe368d,494d32231fb59a65dec536db94844861fb83a8bd..a19c552232d1548afd4c142e19f0b040f0356b61
@@@ -25,6 -25,7 +25,6 @@@
  #include <linux/spinlock.h>
  #include <linux/compiler.h>
  #include <linux/io.h>
 -#include <mach/hardware.h>
  #include <media/davinci/vpss.h>
  
  MODULE_LICENSE("GPL");
@@@ -50,13 -51,29 +50,29 @@@ MODULE_AUTHOR("Texas Instruments")
  /* VENCINT - vpss_int8 */
  #define DM355_VPSSBL_EVTSEL_DEFAULT   0x4
  
- #define DM365_ISP5_PCCR               0x04
+ #define DM365_ISP5_PCCR                               0x04
+ #define DM365_ISP5_PCCR_BL_CLK_ENABLE         BIT(0)
+ #define DM365_ISP5_PCCR_ISIF_CLK_ENABLE               BIT(1)
+ #define DM365_ISP5_PCCR_H3A_CLK_ENABLE                BIT(2)
+ #define DM365_ISP5_PCCR_RSZ_CLK_ENABLE                BIT(3)
+ #define DM365_ISP5_PCCR_IPIPE_CLK_ENABLE      BIT(4)
+ #define DM365_ISP5_PCCR_IPIPEIF_CLK_ENABLE    BIT(5)
+ #define DM365_ISP5_PCCR_RSV                   BIT(6)
+ #define DM365_ISP5_BCR                        0x08
+ #define DM365_ISP5_BCR_ISIF_OUT_ENABLE        BIT(1)
  #define DM365_ISP5_INTSEL1            0x10
  #define DM365_ISP5_INTSEL2            0x14
  #define DM365_ISP5_INTSEL3            0x18
  #define DM365_ISP5_CCDCMUX            0x20
  #define DM365_ISP5_PG_FRAME_SIZE      0x28
  #define DM365_VPBE_CLK_CTRL           0x00
+ #define VPSS_CLK_CTRL                 0x01c40044
+ #define VPSS_CLK_CTRL_VENCCLKEN               BIT(3)
+ #define VPSS_CLK_CTRL_DACCLKEN                BIT(4)
  /*
   * vpss interrupts. VDINT0 - vpss_int0, VDINT1 - vpss_int1,
   * AF - vpss_int3
@@@ -94,12 -111,19 +110,19 @@@ struct vpss_hw_ops 
        void (*select_ccdc_source)(enum vpss_ccdc_source_sel src_sel);
        /* clear wbl overflow bit */
        int (*clear_wbl_overflow)(enum vpss_wbl_sel wbl_sel);
+       /* set sync polarity */
+       void (*set_sync_pol)(struct vpss_sync_pol);
+       /* set the PG_FRAME_SIZE register*/
+       void (*set_pg_frame_size)(struct vpss_pg_frame_size);
+       /* check and clear interrupt if occured */
+       int (*dma_complete_interrupt)(void);
  };
  
  /* vpss configuration */
  struct vpss_oper_config {
        __iomem void *vpss_regs_base0;
        __iomem void *vpss_regs_base1;
+       resource_size_t *vpss_regs_base2;
        enum vpss_platform_type platform;
        spinlock_t vpss_lock;
        struct vpss_hw_ops hw_ops;
@@@ -157,6 -181,14 +180,14 @@@ static void dm355_select_ccdc_source(en
        bl_regw(src_sel << VPSS_HSSISEL_SHIFT, DM355_VPSSBL_CCDCMUX);
  }
  
+ int vpss_dma_complete_interrupt(void)
+ {
+       if (!oper_cfg.hw_ops.dma_complete_interrupt)
+               return 2;
+       return oper_cfg.hw_ops.dma_complete_interrupt();
+ }
+ EXPORT_SYMBOL(vpss_dma_complete_interrupt);
  int vpss_select_ccdc_source(enum vpss_ccdc_source_sel src_sel)
  {
        if (!oper_cfg.hw_ops.select_ccdc_source)
@@@ -182,6 -214,15 +213,15 @@@ static int dm644x_clear_wbl_overflow(en
        return 0;
  }
  
+ void vpss_set_sync_pol(struct vpss_sync_pol sync)
+ {
+       if (!oper_cfg.hw_ops.set_sync_pol)
+               return;
+       oper_cfg.hw_ops.set_sync_pol(sync);
+ }
+ EXPORT_SYMBOL(vpss_set_sync_pol);
  int vpss_clear_wbl_overflow(enum vpss_wbl_sel wbl_sel)
  {
        if (!oper_cfg.hw_ops.clear_wbl_overflow)
@@@ -347,6 -388,15 +387,15 @@@ void dm365_vpss_set_sync_pol(struct vps
  }
  EXPORT_SYMBOL(dm365_vpss_set_sync_pol);
  
+ void vpss_set_pg_frame_size(struct vpss_pg_frame_size frame_size)
+ {
+       if (!oper_cfg.hw_ops.set_pg_frame_size)
+               return;
+       oper_cfg.hw_ops.set_pg_frame_size(frame_size);
+ }
+ EXPORT_SYMBOL(vpss_set_pg_frame_size);
  void dm365_vpss_set_pg_frame_size(struct vpss_pg_frame_size frame_size)
  {
        int current_reg = ((frame_size.hlpfr >> 1) - 1) << 16;
@@@ -425,6 -475,16 +474,16 @@@ static int vpss_probe(struct platform_d
                oper_cfg.hw_ops.enable_clock = dm365_enable_clock;
                oper_cfg.hw_ops.select_ccdc_source = dm365_select_ccdc_source;
                /* Setup vpss interrupts */
+               isp5_write((isp5_read(DM365_ISP5_PCCR) |
+                                     DM365_ISP5_PCCR_BL_CLK_ENABLE |
+                                     DM365_ISP5_PCCR_ISIF_CLK_ENABLE |
+                                     DM365_ISP5_PCCR_H3A_CLK_ENABLE |
+                                     DM365_ISP5_PCCR_RSZ_CLK_ENABLE |
+                                     DM365_ISP5_PCCR_IPIPE_CLK_ENABLE |
+                                     DM365_ISP5_PCCR_IPIPEIF_CLK_ENABLE |
+                                     DM365_ISP5_PCCR_RSV), DM365_ISP5_PCCR);
+               isp5_write((isp5_read(DM365_ISP5_BCR) |
+                           DM365_ISP5_BCR_ISIF_OUT_ENABLE), DM365_ISP5_BCR);
                isp5_write(DM365_ISP5_INTSEL1_DEFAULT, DM365_ISP5_INTSEL1);
                isp5_write(DM365_ISP5_INTSEL2_DEFAULT, DM365_ISP5_INTSEL2);
                isp5_write(DM365_ISP5_INTSEL3_DEFAULT, DM365_ISP5_INTSEL3);
@@@ -470,11 -530,20 +529,20 @@@ static struct platform_driver vpss_driv
  
  static void vpss_exit(void)
  {
+       iounmap(oper_cfg.vpss_regs_base2);
+       release_mem_region(VPSS_CLK_CTRL, 4);
        platform_driver_unregister(&vpss_driver);
  }
  
  static int __init vpss_init(void)
  {
+       if (!request_mem_region(VPSS_CLK_CTRL, 4, "vpss_clock_control"))
+               return -EBUSY;
+       oper_cfg.vpss_regs_base2 = ioremap(VPSS_CLK_CTRL, 4);
+       writel(VPSS_CLK_CTRL_VENCCLKEN |
+                    VPSS_CLK_CTRL_DACCLKEN, oper_cfg.vpss_regs_base2);
        return platform_driver_register(&vpss_driver);
  }
  subsys_initcall(vpss_init);
index 4a574f3cfb2f8d72c2fe589b00e65eac7317b466,ea56b7589211d99282ce1d0e0003e4f750102179..ffba7d91f413acc9ac8f87e9d87e694fa619321c
@@@ -1,5 -1,5 +1,5 @@@
  /*
-  * V4L2 Driver for i.MX27/i.MX25 camera host
+  * V4L2 Driver for i.MX27 camera host
   *
   * Copyright (C) 2008, Sascha Hauer, Pengutronix
   * Copyright (C) 2010, Baruch Siach, Orex Computed Radiography
@@@ -28,7 -28,6 +28,6 @@@
  #include <linux/time.h>
  #include <linux/device.h>
  #include <linux/platform_device.h>
- #include <linux/mutex.h>
  #include <linux/clk.h>
  
  #include <media/v4l2-common.h>
@@@ -64,9 -63,7 +63,7 @@@
  #define CSICR1_RF_OR_INTEN    (1 << 24)
  #define CSICR1_STATFF_LEVEL   (3 << 22)
  #define CSICR1_STATFF_INTEN   (1 << 21)
- #define CSICR1_RXFF_LEVEL(l)  (((l) & 3) << 19)       /* MX27 */
- #define CSICR1_FB2_DMA_INTEN  (1 << 20)               /* MX25 */
- #define CSICR1_FB1_DMA_INTEN  (1 << 19)               /* MX25 */
+ #define CSICR1_RXFF_LEVEL(l)  (((l) & 3) << 19)
  #define CSICR1_RXFF_INTEN     (1 << 18)
  #define CSICR1_SOF_POL                (1 << 17)
  #define CSICR1_SOF_INTEN      (1 << 16)
  #define SHIFT_RXFF_LEVEL      19
  #define SHIFT_MCLKDIV         12
  
- /* control reg 3 */
- #define CSICR3_FRMCNT         (0xFFFF << 16)
- #define CSICR3_FRMCNT_RST     (1 << 15)
- #define CSICR3_DMA_REFLASH_RFF        (1 << 14)
- #define CSICR3_DMA_REFLASH_SFF        (1 << 13)
- #define CSICR3_DMA_REQ_EN_RFF (1 << 12)
- #define CSICR3_DMA_REQ_EN_SFF (1 << 11)
- #define CSICR3_RXFF_LEVEL(l)  (((l) & 7) << 4)        /* MX25 */
- #define CSICR3_CSI_SUP                (1 << 3)
- #define CSICR3_ZERO_PACK_EN   (1 << 2)
- #define CSICR3_ECC_INT_EN     (1 << 1)
- #define CSICR3_ECC_AUTO_EN    (1 << 0)
  #define SHIFT_FRMCNT          16
  
- /* csi status reg */
- #define CSISR_SFF_OR_INT      (1 << 25)
- #define CSISR_RFF_OR_INT      (1 << 24)
- #define CSISR_STATFF_INT      (1 << 21)
- #define CSISR_DMA_TSF_FB2_INT (1 << 20)       /* MX25 */
- #define CSISR_DMA_TSF_FB1_INT (1 << 19)       /* MX25 */
- #define CSISR_RXFF_INT                (1 << 18)
- #define CSISR_EOF_INT         (1 << 17)
- #define CSISR_SOF_INT         (1 << 16)
- #define CSISR_F2_INT          (1 << 15)
- #define CSISR_F1_INT          (1 << 14)
- #define CSISR_COF_INT         (1 << 13)
- #define CSISR_ECC_INT         (1 << 1)
- #define CSISR_DRDY            (1 << 0)
  #define CSICR1                        0x00
  #define CSICR2                        0x04
- #define CSISR_IMX25           0x18
- #define CSISR_IMX27           0x08
+ #define CSISR                 0x08
  #define CSISTATFIFO           0x0c
  #define CSIRFIFO              0x10
  #define CSIRXCNT              0x14
- #define CSICR3_IMX25          0x08
- #define CSICR3_IMX27          0x1c
+ #define CSICR3                        0x1c
  #define CSIDMASA_STATFIFO     0x20
  #define CSIDMATA_STATFIFO     0x24
  #define CSIDMASA_FB1          0x28
@@@ -249,12 -216,6 +216,6 @@@ struct mx2_fmt_cfg 
        struct mx2_prp_cfg              cfg;
  };
  
- enum mx2_buffer_state {
-       MX2_STATE_QUEUED,
-       MX2_STATE_ACTIVE,
-       MX2_STATE_DONE,
- };
  struct mx2_buf_internal {
        struct list_head        queue;
        int                     bufnum;
  struct mx2_buffer {
        /* common v4l buffer stuff -- must be first */
        struct vb2_buffer               vb;
-       enum mx2_buffer_state           state;
        struct mx2_buf_internal         internal;
  };
  
  enum mx2_camera_type {
-       IMX25_CAMERA,
        IMX27_CAMERA,
  };
  
@@@ -298,8 -257,6 +257,6 @@@ struct mx2_camera_dev 
        struct mx2_buffer       *fb2_active;
  
        u32                     csicr1;
-       u32                     reg_csisr;
-       u32                     reg_csicr3;
        enum mx2_camera_type    devtype;
  
        struct mx2_buf_internal buf_discard[2];
  
  static struct platform_device_id mx2_camera_devtype[] = {
        {
-               .name = "imx25-camera",
-               .driver_data = IMX25_CAMERA,
-       }, {
                .name = "imx27-camera",
                .driver_data = IMX27_CAMERA,
        }, {
  };
  MODULE_DEVICE_TABLE(platform, mx2_camera_devtype);
  
- static inline int is_imx25_camera(struct mx2_camera_dev *pcdev)
- {
-       return pcdev->devtype == IMX25_CAMERA;
- }
- static inline int is_imx27_camera(struct mx2_camera_dev *pcdev)
- {
-       return pcdev->devtype == IMX27_CAMERA;
- }
  static struct mx2_buffer *mx2_ibuf_to_buf(struct mx2_buf_internal *int_buf)
  {
        return container_of(int_buf, struct mx2_buffer, internal);
@@@ -345,7 -289,7 +289,7 @@@ static struct mx2_fmt_cfg mx27_emma_prp
        /*
         * This is a generic configuration which is valid for most
         * prp input-output format combinations.
 -       * We set the incomming and outgoing pixelformat to a
 +       * We set the incoming and outgoing pixelformat to a
         * 16 Bit wide format and adjust the bytesperline
         * accordingly. With this configuration the inputdata
         * will not be changed by the emma and could be any type
@@@ -463,21 -407,10 +407,10 @@@ static void mx27_update_emma_buf(struc
  
  static void mx2_camera_deactivate(struct mx2_camera_dev *pcdev)
  {
-       unsigned long flags;
        clk_disable_unprepare(pcdev->clk_csi_ahb);
        clk_disable_unprepare(pcdev->clk_csi_per);
        writel(0, pcdev->base_csi + CSICR1);
-       if (is_imx27_camera(pcdev)) {
-               writel(0, pcdev->base_emma + PRP_CNTL);
-       } else if (is_imx25_camera(pcdev)) {
-               spin_lock_irqsave(&pcdev->lock, flags);
-               pcdev->fb1_active = NULL;
-               pcdev->fb2_active = NULL;
-               writel(0, pcdev->base_csi + CSIDMASA_FB1);
-               writel(0, pcdev->base_csi + CSIDMASA_FB2);
-               spin_unlock_irqrestore(&pcdev->lock, flags);
-       }
+       writel(0, pcdev->base_emma + PRP_CNTL);
  }
  
  /*
@@@ -502,11 -435,8 +435,8 @@@ static int mx2_camera_add_device(struc
        if (ret < 0)
                goto exit_csi_ahb;
  
-       csicr1 = CSICR1_MCLKEN;
-       if (is_imx27_camera(pcdev))
-               csicr1 |= CSICR1_PRP_IF_EN | CSICR1_FCC |
-                       CSICR1_RXFF_LEVEL(0);
+       csicr1 = CSICR1_MCLKEN | CSICR1_PRP_IF_EN | CSICR1_FCC |
+               CSICR1_RXFF_LEVEL(0);
  
        pcdev->csicr1 = csicr1;
        writel(pcdev->csicr1, pcdev->base_csi + CSICR1);
@@@ -540,65 -470,6 +470,6 @@@ static void mx2_camera_remove_device(st
        pcdev->icd = NULL;
  }
  
- static void mx25_camera_frame_done(struct mx2_camera_dev *pcdev, int fb,
-               int state)
- {
-       struct vb2_buffer *vb;
-       struct mx2_buffer *buf;
-       struct mx2_buffer **fb_active = fb == 1 ? &pcdev->fb1_active :
-               &pcdev->fb2_active;
-       u32 fb_reg = fb == 1 ? CSIDMASA_FB1 : CSIDMASA_FB2;
-       unsigned long flags;
-       spin_lock_irqsave(&pcdev->lock, flags);
-       if (*fb_active == NULL)
-               goto out;
-       vb = &(*fb_active)->vb;
-       dev_dbg(pcdev->dev, "%s (vb=0x%p) 0x%p %lu\n", __func__,
-               vb, vb2_plane_vaddr(vb, 0), vb2_get_plane_payload(vb, 0));
-       do_gettimeofday(&vb->v4l2_buf.timestamp);
-       vb->v4l2_buf.sequence++;
-       vb2_buffer_done(vb, VB2_BUF_STATE_DONE);
-       if (list_empty(&pcdev->capture)) {
-               buf = NULL;
-               writel(0, pcdev->base_csi + fb_reg);
-       } else {
-               buf = list_first_entry(&pcdev->capture, struct mx2_buffer,
-                               internal.queue);
-               vb = &buf->vb;
-               list_del(&buf->internal.queue);
-               buf->state = MX2_STATE_ACTIVE;
-               writel(vb2_dma_contig_plane_dma_addr(vb, 0),
-                      pcdev->base_csi + fb_reg);
-       }
-       *fb_active = buf;
- out:
-       spin_unlock_irqrestore(&pcdev->lock, flags);
- }
- static irqreturn_t mx25_camera_irq(int irq_csi, void *data)
- {
-       struct mx2_camera_dev *pcdev = data;
-       u32 status = readl(pcdev->base_csi + pcdev->reg_csisr);
-       if (status & CSISR_DMA_TSF_FB1_INT)
-               mx25_camera_frame_done(pcdev, 1, MX2_STATE_DONE);
-       else if (status & CSISR_DMA_TSF_FB2_INT)
-               mx25_camera_frame_done(pcdev, 2, MX2_STATE_DONE);
-       /* FIXME: handle CSISR_RFF_OR_INT */
-       writel(status, pcdev->base_csi + pcdev->reg_csisr);
-       return IRQ_HANDLED;
- }
  /*
   *  Videobuf operations
   */
@@@ -676,97 -547,8 +547,8 @@@ static void mx2_videobuf_queue(struct v
  
        spin_lock_irqsave(&pcdev->lock, flags);
  
-       buf->state = MX2_STATE_QUEUED;
        list_add_tail(&buf->internal.queue, &pcdev->capture);
  
-       if (is_imx25_camera(pcdev)) {
-               u32 csicr3, dma_inten = 0;
-               if (pcdev->fb1_active == NULL) {
-                       writel(vb2_dma_contig_plane_dma_addr(vb, 0),
-                                       pcdev->base_csi + CSIDMASA_FB1);
-                       pcdev->fb1_active = buf;
-                       dma_inten = CSICR1_FB1_DMA_INTEN;
-               } else if (pcdev->fb2_active == NULL) {
-                       writel(vb2_dma_contig_plane_dma_addr(vb, 0),
-                                       pcdev->base_csi + CSIDMASA_FB2);
-                       pcdev->fb2_active = buf;
-                       dma_inten = CSICR1_FB2_DMA_INTEN;
-               }
-               if (dma_inten) {
-                       list_del(&buf->internal.queue);
-                       buf->state = MX2_STATE_ACTIVE;
-                       csicr3 = readl(pcdev->base_csi + pcdev->reg_csicr3);
-                       /* Reflash DMA */
-                       writel(csicr3 | CSICR3_DMA_REFLASH_RFF,
-                                       pcdev->base_csi + pcdev->reg_csicr3);
-                       /* clear & enable interrupts */
-                       writel(dma_inten, pcdev->base_csi + pcdev->reg_csisr);
-                       pcdev->csicr1 |= dma_inten;
-                       writel(pcdev->csicr1, pcdev->base_csi + CSICR1);
-                       /* enable DMA */
-                       csicr3 |= CSICR3_DMA_REQ_EN_RFF | CSICR3_RXFF_LEVEL(1);
-                       writel(csicr3, pcdev->base_csi + pcdev->reg_csicr3);
-               }
-       }
-       spin_unlock_irqrestore(&pcdev->lock, flags);
- }
- static void mx2_videobuf_release(struct vb2_buffer *vb)
- {
-       struct soc_camera_device *icd = soc_camera_from_vb2q(vb->vb2_queue);
-       struct soc_camera_host *ici = to_soc_camera_host(icd->parent);
-       struct mx2_camera_dev *pcdev = ici->priv;
-       struct mx2_buffer *buf = container_of(vb, struct mx2_buffer, vb);
-       unsigned long flags;
- #ifdef DEBUG
-       dev_dbg(icd->parent, "%s (vb=0x%p) 0x%p %lu\n", __func__,
-               vb, vb2_plane_vaddr(vb, 0), vb2_get_plane_payload(vb, 0));
-       switch (buf->state) {
-       case MX2_STATE_ACTIVE:
-               dev_info(icd->parent, "%s (active)\n", __func__);
-               break;
-       case MX2_STATE_QUEUED:
-               dev_info(icd->parent, "%s (queued)\n", __func__);
-               break;
-       default:
-               dev_info(icd->parent, "%s (unknown) %d\n", __func__,
-                               buf->state);
-               break;
-       }
- #endif
-       /*
-        * Terminate only queued but inactive buffers. Active buffers are
-        * released when they become inactive after videobuf_waiton().
-        *
-        * FIXME: implement forced termination of active buffers for mx27 and
-        * mx27 eMMA, so that the user won't get stuck in an uninterruptible
-        * state. This requires a specific handling for each of the these DMA
-        * types.
-        */
-       spin_lock_irqsave(&pcdev->lock, flags);
-       if (is_imx25_camera(pcdev) && buf->state == MX2_STATE_ACTIVE) {
-               if (pcdev->fb1_active == buf) {
-                       pcdev->csicr1 &= ~CSICR1_FB1_DMA_INTEN;
-                       writel(0, pcdev->base_csi + CSIDMASA_FB1);
-                       pcdev->fb1_active = NULL;
-               } else if (pcdev->fb2_active == buf) {
-                       pcdev->csicr1 &= ~CSICR1_FB2_DMA_INTEN;
-                       writel(0, pcdev->base_csi + CSIDMASA_FB2);
-                       pcdev->fb2_active = NULL;
-               }
-               writel(pcdev->csicr1, pcdev->base_csi + CSICR1);
-       }
        spin_unlock_irqrestore(&pcdev->lock, flags);
  }
  
@@@ -877,91 -659,87 +659,87 @@@ static int mx2_start_streaming(struct v
        struct mx2_buffer *buf;
        unsigned long phys;
        int bytesperline;
+       unsigned long flags;
  
-       if (is_imx27_camera(pcdev)) {
-               unsigned long flags;
-               if (count < 2)
-                       return -EINVAL;
+       if (count < 2)
+               return -EINVAL;
  
-               spin_lock_irqsave(&pcdev->lock, flags);
+       spin_lock_irqsave(&pcdev->lock, flags);
  
-               buf = list_first_entry(&pcdev->capture, struct mx2_buffer,
-                                      internal.queue);
-               buf->internal.bufnum = 0;
-               vb = &buf->vb;
-               buf->state = MX2_STATE_ACTIVE;
+       buf = list_first_entry(&pcdev->capture, struct mx2_buffer,
+                              internal.queue);
+       buf->internal.bufnum = 0;
+       vb = &buf->vb;
  
-               phys = vb2_dma_contig_plane_dma_addr(vb, 0);
-               mx27_update_emma_buf(pcdev, phys, buf->internal.bufnum);
-               list_move_tail(pcdev->capture.next, &pcdev->active_bufs);
+       phys = vb2_dma_contig_plane_dma_addr(vb, 0);
+       mx27_update_emma_buf(pcdev, phys, buf->internal.bufnum);
+       list_move_tail(pcdev->capture.next, &pcdev->active_bufs);
  
-               buf = list_first_entry(&pcdev->capture, struct mx2_buffer,
-                                      internal.queue);
-               buf->internal.bufnum = 1;
-               vb = &buf->vb;
-               buf->state = MX2_STATE_ACTIVE;
+       buf = list_first_entry(&pcdev->capture, struct mx2_buffer,
+                              internal.queue);
+       buf->internal.bufnum = 1;
+       vb = &buf->vb;
  
-               phys = vb2_dma_contig_plane_dma_addr(vb, 0);
-               mx27_update_emma_buf(pcdev, phys, buf->internal.bufnum);
-               list_move_tail(pcdev->capture.next, &pcdev->active_bufs);
-               bytesperline = soc_mbus_bytes_per_line(icd->user_width,
-                               icd->current_fmt->host_fmt);
-               if (bytesperline < 0) {
-                       spin_unlock_irqrestore(&pcdev->lock, flags);
-                       return bytesperline;
-               }
+       phys = vb2_dma_contig_plane_dma_addr(vb, 0);
+       mx27_update_emma_buf(pcdev, phys, buf->internal.bufnum);
+       list_move_tail(pcdev->capture.next, &pcdev->active_bufs);
  
-               /*
-                * I didn't manage to properly enable/disable the prp
-                * on a per frame basis during running transfers,
-                * thus we allocate a buffer here and use it to
-                * discard frames when no buffer is available.
-                * Feel free to work on this ;)
-                */
-               pcdev->discard_size = icd->user_height * bytesperline;
-               pcdev->discard_buffer = dma_alloc_coherent(ici->v4l2_dev.dev,
-                               pcdev->discard_size, &pcdev->discard_buffer_dma,
-                               GFP_KERNEL);
-               if (!pcdev->discard_buffer) {
-                       spin_unlock_irqrestore(&pcdev->lock, flags);
-                       return -ENOMEM;
-               }
+       bytesperline = soc_mbus_bytes_per_line(icd->user_width,
+                                              icd->current_fmt->host_fmt);
+       if (bytesperline < 0) {
+               spin_unlock_irqrestore(&pcdev->lock, flags);
+               return bytesperline;
+       }
  
-               pcdev->buf_discard[0].discard = true;
-               list_add_tail(&pcdev->buf_discard[0].queue,
-                                     &pcdev->discard);
+       /*
+        * I didn't manage to properly enable/disable the prp
+        * on a per frame basis during running transfers,
+        * thus we allocate a buffer here and use it to
+        * discard frames when no buffer is available.
+        * Feel free to work on this ;)
+        */
+       pcdev->discard_size = icd->user_height * bytesperline;
+       pcdev->discard_buffer = dma_alloc_coherent(ici->v4l2_dev.dev,
+                                       pcdev->discard_size,
+                                       &pcdev->discard_buffer_dma, GFP_ATOMIC);
+       if (!pcdev->discard_buffer) {
+               spin_unlock_irqrestore(&pcdev->lock, flags);
+               return -ENOMEM;
+       }
  
-               pcdev->buf_discard[1].discard = true;
-               list_add_tail(&pcdev->buf_discard[1].queue,
-                                     &pcdev->discard);
+       pcdev->buf_discard[0].discard = true;
+       list_add_tail(&pcdev->buf_discard[0].queue,
+                     &pcdev->discard);
  
-               mx2_prp_resize_commit(pcdev);
+       pcdev->buf_discard[1].discard = true;
+       list_add_tail(&pcdev->buf_discard[1].queue,
+                     &pcdev->discard);
  
-               mx27_camera_emma_buf_init(icd, bytesperline);
+       mx2_prp_resize_commit(pcdev);
  
-               if (prp->cfg.channel == 1) {
-                       writel(PRP_CNTL_CH1EN |
-                               PRP_CNTL_CSIEN |
-                               prp->cfg.in_fmt |
-                               prp->cfg.out_fmt |
-                               PRP_CNTL_CH1_LEN |
-                               PRP_CNTL_CH1BYP |
-                               PRP_CNTL_CH1_TSKIP(0) |
-                               PRP_CNTL_IN_TSKIP(0),
-                               pcdev->base_emma + PRP_CNTL);
-               } else {
-                       writel(PRP_CNTL_CH2EN |
-                               PRP_CNTL_CSIEN |
-                               prp->cfg.in_fmt |
-                               prp->cfg.out_fmt |
-                               PRP_CNTL_CH2_LEN |
-                               PRP_CNTL_CH2_TSKIP(0) |
-                               PRP_CNTL_IN_TSKIP(0),
-                               pcdev->base_emma + PRP_CNTL);
-               }
-               spin_unlock_irqrestore(&pcdev->lock, flags);
+       mx27_camera_emma_buf_init(icd, bytesperline);
+       if (prp->cfg.channel == 1) {
+               writel(PRP_CNTL_CH1EN |
+                      PRP_CNTL_CSIEN |
+                      prp->cfg.in_fmt |
+                      prp->cfg.out_fmt |
+                      PRP_CNTL_CH1_LEN |
+                      PRP_CNTL_CH1BYP |
+                      PRP_CNTL_CH1_TSKIP(0) |
+                      PRP_CNTL_IN_TSKIP(0),
+                      pcdev->base_emma + PRP_CNTL);
+       } else {
+               writel(PRP_CNTL_CH2EN |
+                      PRP_CNTL_CSIEN |
+                      prp->cfg.in_fmt |
+                      prp->cfg.out_fmt |
+                      PRP_CNTL_CH2_LEN |
+                      PRP_CNTL_CH2_TSKIP(0) |
+                      PRP_CNTL_IN_TSKIP(0),
+                      pcdev->base_emma + PRP_CNTL);
        }
+       spin_unlock_irqrestore(&pcdev->lock, flags);
  
        return 0;
  }
@@@ -977,29 -755,27 +755,27 @@@ static int mx2_stop_streaming(struct vb
        void *b;
        u32 cntl;
  
-       if (is_imx27_camera(pcdev)) {
-               spin_lock_irqsave(&pcdev->lock, flags);
+       spin_lock_irqsave(&pcdev->lock, flags);
  
-               cntl = readl(pcdev->base_emma + PRP_CNTL);
-               if (prp->cfg.channel == 1) {
-                       writel(cntl & ~PRP_CNTL_CH1EN,
-                              pcdev->base_emma + PRP_CNTL);
-               } else {
-                       writel(cntl & ~PRP_CNTL_CH2EN,
-                              pcdev->base_emma + PRP_CNTL);
-               }
-               INIT_LIST_HEAD(&pcdev->capture);
-               INIT_LIST_HEAD(&pcdev->active_bufs);
-               INIT_LIST_HEAD(&pcdev->discard);
+       cntl = readl(pcdev->base_emma + PRP_CNTL);
+       if (prp->cfg.channel == 1) {
+               writel(cntl & ~PRP_CNTL_CH1EN,
+                      pcdev->base_emma + PRP_CNTL);
+       } else {
+               writel(cntl & ~PRP_CNTL_CH2EN,
+                      pcdev->base_emma + PRP_CNTL);
+       }
+       INIT_LIST_HEAD(&pcdev->capture);
+       INIT_LIST_HEAD(&pcdev->active_bufs);
+       INIT_LIST_HEAD(&pcdev->discard);
  
-               b = pcdev->discard_buffer;
-               pcdev->discard_buffer = NULL;
+       b = pcdev->discard_buffer;
+       pcdev->discard_buffer = NULL;
  
-               spin_unlock_irqrestore(&pcdev->lock, flags);
+       spin_unlock_irqrestore(&pcdev->lock, flags);
  
-               dma_free_coherent(ici->v4l2_dev.dev,
-                       pcdev->discard_size, b, pcdev->discard_buffer_dma);
-       }
+       dma_free_coherent(ici->v4l2_dev.dev,
+                         pcdev->discard_size, b, pcdev->discard_buffer_dma);
  
        return 0;
  }
@@@ -1008,7 -784,6 +784,6 @@@ static struct vb2_ops mx2_videobuf_ops 
        .queue_setup     = mx2_videobuf_setup,
        .buf_prepare     = mx2_videobuf_prepare,
        .buf_queue       = mx2_videobuf_queue,
-       .buf_cleanup     = mx2_videobuf_release,
        .start_streaming = mx2_start_streaming,
        .stop_streaming  = mx2_stop_streaming,
  };
@@@ -1129,16 -904,9 +904,9 @@@ static int mx2_camera_set_bus_param(str
        if (bytesperline < 0)
                return bytesperline;
  
-       if (is_imx27_camera(pcdev)) {
-               ret = mx27_camera_emma_prp_reset(pcdev);
-               if (ret)
-                       return ret;
-       } else if (is_imx25_camera(pcdev)) {
-               writel((bytesperline * icd->user_height) >> 2,
-                               pcdev->base_csi + CSIRXCNT);
-               writel((bytesperline << 16) | icd->user_height,
-                               pcdev->base_csi + CSIIMAG_PARA);
-       }
+       ret = mx27_camera_emma_prp_reset(pcdev);
+       if (ret)
+               return ret;
  
        writel(pcdev->csicr1, pcdev->base_csi + CSICR1);
  
@@@ -1425,7 -1193,6 +1193,6 @@@ static int mx2_camera_try_fmt(struct so
        struct soc_camera_host *ici = to_soc_camera_host(icd->parent);
        struct mx2_camera_dev *pcdev = ici->priv;
        struct mx2_fmt_cfg *emma_prp;
-       unsigned int width_limit;
        int ret;
  
        dev_dbg(icd->parent, "%s: requested params: width = %d, height = %d\n",
                return -EINVAL;
        }
  
-       /* FIXME: implement MX27 limits */
-       /* limit to MX25 hardware capabilities */
-       if (is_imx25_camera(pcdev)) {
-               if (xlate->host_fmt->bits_per_sample <= 8)
-                       width_limit = 0xffff * 4;
-               else
-                       width_limit = 0xffff * 2;
-               /* CSIIMAG_PARA limit */
-               if (pix->width > width_limit)
-                       pix->width = width_limit;
-               if (pix->height > 0xffff)
-                       pix->height = 0xffff;
-               pix->bytesperline = soc_mbus_bytes_per_line(pix->width,
-                               xlate->host_fmt);
-               if (pix->bytesperline < 0)
-                       return pix->bytesperline;
-               pix->sizeimage = soc_mbus_image_size(xlate->host_fmt,
-                                               pix->bytesperline, pix->height);
-               /* Check against the CSIRXCNT limit */
-               if (pix->sizeimage > 4 * 0x3ffff) {
-                       /* Adjust geometry, preserve aspect ratio */
-                       unsigned int new_height = int_sqrt(div_u64(0x3ffffULL *
-                                       4 * pix->height, pix->bytesperline));
-                       pix->width = new_height * pix->width / pix->height;
-                       pix->height = new_height;
-                       pix->bytesperline = soc_mbus_bytes_per_line(pix->width,
-                                                       xlate->host_fmt);
-                       BUG_ON(pix->bytesperline < 0);
-                       pix->sizeimage = soc_mbus_image_size(xlate->host_fmt,
-                                               pix->bytesperline, pix->height);
-               }
-       }
+       /*
+        * limit to MX27 hardware capabilities: width must be a multiple of 8 as
+        * requested by the CSI. (Table 39-2 in the i.MX27 Reference Manual).
+        */
+       pix->width &= ~0x7;
  
        /* limit to sensor capabilities */
        mf.width        = pix->width;
  
        /* If the sensor does not support image size try PrP resizing */
        emma_prp = mx27_emma_prp_get_format(xlate->code,
-                                                  xlate->host_fmt->fourcc);
+                                           xlate->host_fmt->fourcc);
  
        if ((mf.width != pix->width || mf.height != pix->height) &&
                emma_prp->cfg.in_fmt == PRP_CNTL_DATA_IN_YUV422) {
@@@ -1600,7 -1338,7 +1338,7 @@@ static void mx27_camera_frame_done_emma
                                vb2_get_plane_payload(vb, 0));
  
                list_del_init(&buf->internal.queue);
-               do_gettimeofday(&vb->v4l2_buf.timestamp);
+               v4l2_get_timestamp(&vb->v4l2_buf.timestamp);
                vb->v4l2_buf.sequence = pcdev->frame_count;
                if (err)
                        vb2_buffer_done(vb, VB2_BUF_STATE_ERROR);
        list_move_tail(pcdev->capture.next, &pcdev->active_bufs);
  
        vb = &buf->vb;
-       buf->state = MX2_STATE_ACTIVE;
  
        phys = vb2_dma_contig_plane_dma_addr(vb, 0);
        mx27_update_emma_buf(pcdev, phys, bufnum);
@@@ -1774,20 -1511,6 +1511,6 @@@ static int mx2_camera_probe(struct plat
                goto exit;
        }
  
-       pcdev->devtype = pdev->id_entry->driver_data;
-       switch (pcdev->devtype) {
-       case IMX25_CAMERA:
-               pcdev->reg_csisr = CSISR_IMX25;
-               pcdev->reg_csicr3 = CSICR3_IMX25;
-               break;
-       case IMX27_CAMERA:
-               pcdev->reg_csisr = CSISR_IMX27;
-               pcdev->reg_csicr3 = CSICR3_IMX27;
-               break;
-       default:
-               break;
-       }
        pcdev->clk_csi_ahb = devm_clk_get(&pdev->dev, "ahb");
        if (IS_ERR(pcdev->clk_csi_ahb)) {
                dev_err(&pdev->dev, "Could not get csi ahb clock\n");
        pcdev->dev = &pdev->dev;
        platform_set_drvdata(pdev, pcdev);
  
-       if (is_imx25_camera(pcdev)) {
-               err = devm_request_irq(&pdev->dev, irq_csi, mx25_camera_irq, 0,
-                                      MX2_CAM_DRV_NAME, pcdev);
-               if (err) {
-                       dev_err(pcdev->dev, "Camera interrupt register failed \n");
-                       goto exit;
-               }
-       }
-       if (is_imx27_camera(pcdev)) {
-               err = mx27_camera_emma_init(pdev);
-               if (err)
-                       goto exit;
-       }
+       err = mx27_camera_emma_init(pdev);
+       if (err)
+               goto exit;
  
        /*
         * We're done with drvdata here.  Clear the pointer so that
        pcdev->soc_host.priv            = pcdev;
        pcdev->soc_host.v4l2_dev.dev    = &pdev->dev;
        pcdev->soc_host.nr              = pdev->id;
-       if (is_imx25_camera(pcdev))
-               pcdev->soc_host.capabilities = SOCAM_HOST_CAP_STRIDE;
  
        pcdev->alloc_ctx = vb2_dma_contig_init_ctx(&pdev->dev);
        if (IS_ERR(pcdev->alloc_ctx)) {
  exit_free_emma:
        vb2_dma_contig_cleanup_ctx(pcdev->alloc_ctx);
  eallocctx:
-       if (is_imx27_camera(pcdev)) {
-               clk_disable_unprepare(pcdev->clk_emma_ipg);
-               clk_disable_unprepare(pcdev->clk_emma_ahb);
-       }
+       clk_disable_unprepare(pcdev->clk_emma_ipg);
+       clk_disable_unprepare(pcdev->clk_emma_ahb);
  exit:
        return err;
  }
@@@ -1897,10 -1605,8 +1605,8 @@@ static int mx2_camera_remove(struct pla
  
        vb2_dma_contig_cleanup_ctx(pcdev->alloc_ctx);
  
-       if (is_imx27_camera(pcdev)) {
-               clk_disable_unprepare(pcdev->clk_emma_ipg);
-               clk_disable_unprepare(pcdev->clk_emma_ahb);
-       }
+       clk_disable_unprepare(pcdev->clk_emma_ipg);
+       clk_disable_unprepare(pcdev->clk_emma_ahb);
  
        dev_info(&pdev->dev, "MX2 Camera driver unloaded\n");
  
@@@ -1913,23 -1619,12 +1619,12 @@@ static struct platform_driver mx2_camer
        },
        .id_table       = mx2_camera_devtype,
        .remove         = mx2_camera_remove,
+       .probe          = mx2_camera_probe,
  };
  
+ module_platform_driver(mx2_camera_driver);
  
- static int __init mx2_camera_init(void)
- {
-       return platform_driver_probe(&mx2_camera_driver, &mx2_camera_probe);
- }
- static void __exit mx2_camera_exit(void)
- {
-       return platform_driver_unregister(&mx2_camera_driver);
- }
- module_init(mx2_camera_init);
- module_exit(mx2_camera_exit);
- MODULE_DESCRIPTION("i.MX27/i.MX25 SoC Camera Host driver");
+ MODULE_DESCRIPTION("i.MX27 SoC Camera Host driver");
  MODULE_AUTHOR("Sascha Hauer <sha@pengutronix.de>");
  MODULE_LICENSE("GPL");
  MODULE_VERSION(MX2_CAM_VERSION);
index 9e580166161a2cbd2a15cad9b4bc74b17e72103b,ead99285373032155345b57738a5f1f77dea65c2..24e64a09884cb8858c713bdc373cdd593840b855
@@@ -124,6 -124,18 +124,18 @@@ config USB_KEEN
          To compile this driver as a module, choose M here: the
          module will be called radio-keene.
  
+ config USB_MA901
+       tristate "Masterkit MA901 USB FM radio support"
+       depends on USB && VIDEO_V4L2
+       ---help---
+         Say Y here if you want to connect this type of radio to your
+         computer's USB port. Note that the audio is not digital, and
+         you must connect the line out connector to a sound card or a
+         set of speakers or headphones.
+         To compile this driver as a module, choose M here: the
+         module will be called radio-ma901.
  config RADIO_TEA5764
        tristate "TEA5764 I2C FM radio support"
        depends on I2C && VIDEO_V4L2
@@@ -180,7 -192,7 +192,7 @@@ config RADIO_TIMBERDAL
  
  config RADIO_WL1273
        tristate "Texas Instruments WL1273 I2C FM Radio"
 -      depends on I2C && VIDEO_V4L2
 +      depends on I2C && VIDEO_V4L2 && GENERIC_HARDIRQS
        select MFD_CORE
        select MFD_WL1273_CORE
        select FW_LOADER
index cabbe3adf435b6a9f3ef2176109489524565513f,681d4aeee53039c7682326538465cb447e6bcfd4..02151e0e6e63333e54fccae27c181fe05e108b78
@@@ -1971,7 -1971,6 +1971,7 @@@ static struct video_device wl1273_vidde
        .ioctl_ops              = &wl1273_ioctl_ops,
        .name                   = WL1273_FM_DRIVER_NAME,
        .release                = wl1273_vdev_release,
 +      .vfl_dir                = VFL_DIR_TX,
  };
  
  static int wl1273_fm_radio_remove(struct platform_device *pdev)
@@@ -2085,8 -2084,7 +2085,7 @@@ static int wl1273_fm_radio_probe(struc
        }
  
        /* V4L2 configuration */
-       memcpy(&radio->videodev, &wl1273_viddev_template,
-              sizeof(wl1273_viddev_template));
+       radio->videodev = wl1273_viddev_template;
  
        radio->videodev.v4l2_dev = &radio->v4l2dev;
  
index 7a622dbe9b6df6a21c4a8a03e5470bedeb71e3f6,7b5773fe6367585af4cd0798e04b4e551d927d75..692224d97d060b478cf707cf5dadad0900dc8994
@@@ -1,6 -1,6 +1,6 @@@
  config DVB_USB_V2
        tristate "Support for various USB DVB devices v2"
-       depends on DVB_CORE && USB && I2C && RC_CORE
+       depends on DVB_CORE && USB && I2C
        help
          By enabling this you will be able to choose the various supported
          USB1.1 and USB2.0 DVB devices.
@@@ -113,6 -113,7 +113,7 @@@ config DVB_USB_IT913
  config DVB_USB_LME2510
        tristate "LME DM04/QQBOX DVB-S USB2.0 support"
        depends on DVB_USB_V2
+       depends on RC_CORE
        select DVB_TDA10086 if MEDIA_SUBDRV_AUTOSELECT
        select DVB_TDA826X if MEDIA_SUBDRV_AUTOSELECT
        select DVB_STV0288 if MEDIA_SUBDRV_AUTOSELECT
        select DVB_STV0299 if MEDIA_SUBDRV_AUTOSELECT
        select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
        select DVB_M88RS2000 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_TS2020 if MEDIA_SUBDRV_AUTOSELECT
        help
          Say Y here to support the LME DM04/QQBOX DVB-S USB2.0
  
@@@ -134,7 -136,7 +136,7 @@@ config DVB_USB_MXL111S
  
  config DVB_USB_RTL28XXU
        tristate "Realtek RTL28xxU DVB USB support"
 -      depends on DVB_USB_V2 && EXPERIMENTAL
 +      depends on DVB_USB_V2
        select DVB_RTL2830
        select DVB_RTL2832
        select MEDIA_TUNER_QT1010 if MEDIA_SUBDRV_AUTOSELECT