]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 24 May 2012 17:34:29 +0000 (10:34 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 24 May 2012 17:34:29 +0000 (10:34 -0700)
Pull input layer updates from Dmitry Torokhov:
 - a bunch of new drivers (DA9052/53 touchscreenn controller, Synaptics
   Navpoint, LM8333 keypads, Wacom I2C touhscreen);
 - updates to existing touchpad drivers (ALPS, Sntelic);
 - Wacom driver now supports Intuos5;
 - device-tree bindings in numerous drivers;
 - other cleanups and fixes.

Fix annoying conflict in drivers/input/tablet/wacom_wac.c that I think
implies that the input layer device naming is broken, but let's see.  I
brough it up with Dmitry.

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (57 commits)
  Input: matrix-keymap - fix building keymaps
  Input: spear-keyboard - document DT bindings
  Input: spear-keyboard - add device tree bindings
  Input: matrix-keymap - wire up device tree support
  Input: matrix-keymap - uninline and prepare for device tree support
  Input: adp5588 - add support for gpio names
  Input: omap-keypad - dynamically handle register offsets
  Input: synaptics - fix compile warning
  MAINTAINERS: adjust input-related patterns
  Input: ALPS - switch to using input_mt_report_finger_count
  Input: ALPS - add semi-MT support for v4 protocol
  Input: Add Synaptics NavPoint (PXA27x SSP/SPI) driver
  Input: atmel_mxt_ts - dump each message on just 1 line
  Input: atmel_mxt_ts - do not read extra (checksum) byte
  Input: atmel_mxt_ts - verify object size in mxt_write_object
  Input: atmel_mxt_ts - only allow root to update firmware
  Input: atmel_mxt_ts - use CONFIG_PM_SLEEP
  Input: sentelic - report device's production serial number
  Input: tl6040-vibra - Device Tree support
  Input: evdev - properly handle read/write with count 0
  ...

1  2 
Documentation/ABI/testing/sysfs-driver-wacom
MAINTAINERS
drivers/input/tablet/aiptek.c
drivers/input/tablet/wacom_sys.c
drivers/input/touchscreen/Kconfig

index 56c54558c8a48e2163015b441f21aeecf58f950a,5e9cbdc7486eb29402f53f087d2b7f3724b0cffb..8d55a83d6921d1b8779ba72430587be42856826c
@@@ -9,23 -9,16 +9,24 @@@ Description
                or 0 otherwise. Writing to this file one of these values
                switches reporting speed.
  
 +What:         /sys/class/leds/0005\:056A\:00BD.0001\:selector\:*/
 +Date:         May 2012
 +Kernel Version:       3.5
 +Contact:      linux-bluetooth@vger.kernel.org
 +Description:
 +              LED selector for Intuos4 WL. There are 4 leds, but only one LED
 +              can be lit at a time. Max brightness is 127.
 +
  What:         /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/led
  Date:         August 2011
  Contact:      linux-input@vger.kernel.org
  Description:
                Attribute group for control of the status LEDs and the OLEDs.
                This attribute group is only available for Intuos 4 M, L,
-               and XL (with LEDs and OLEDs) and Cintiq 21UX2 and Cintiq 24HD
-               (LEDs only). Therefore its presence implicitly signifies the
-               presence of said LEDs and OLEDs on the tablet device.
+               and XL (with LEDs and OLEDs), Intuos 5 (LEDs only), and Cintiq
+               21UX2 and Cintiq 24HD (LEDs only). Therefore its presence
+               implicitly signifies the presence of said LEDs and OLEDs on the
+               tablet device.
  
  What:         /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status0_luminance
  Date:         August 2011
@@@ -48,10 -41,10 +49,10 @@@ What:              /sys/bus/usb/devices/<busnum>-<d
  Date:         August 2011
  Contact:      linux-input@vger.kernel.org
  Description:
-               Writing to this file sets which one of the four (for Intuos 4)
-               or of the right four (for Cintiq 21UX2 and Cintiq 24HD) status
-               LEDs is active (0..3). The other three LEDs on the same side are
-               always inactive.
+               Writing to this file sets which one of the four (for Intuos 4
+               and Intuos 5) or of the right four (for Cintiq 21UX2 and Cintiq
+               24HD) status LEDs is active (0..3). The other three LEDs on the
+               same side are always inactive.
  
  What:         /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status_led1_select
  Date:         September 2011
diff --combined MAINTAINERS
index 54c984e9d0583a3c9132bb21dd1bac32b6cd4f27,d7f7a96e829b6e78cb5e719b5a175623b3069ca8..62b0cf496ebd7b1464e53831eeadd9c68409bff1
@@@ -640,6 -640,13 +640,6 @@@ S:        Maintaine
  F:    drivers/amba/
  F:    include/linux/amba/bus.h
  
 -ARM/ADI ROADRUNNER MACHINE SUPPORT
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -F:    arch/arm/mach-ixp23xx/
 -F:    arch/arm/mach-ixp23xx/include/mach/
 -
  ARM/ADS SPHERE MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -739,10 -746,7 +739,10 @@@ M:       Barry Song <baohua.song@csr.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-prima2/
 -F:    drivers/dma/sirf-dma*
 +F:    drivers/dma/sirf-dma.c
 +F:    drivers/i2c/busses/i2c-sirf.c
 +F:    drivers/pinctrl/pinctrl-sirf.c
 +F:    drivers/spi/spi-sirf.c
  
  ARM/EBSA110 MACHINE SUPPORT
  M:    Russell King <linux@arm.linux.org.uk>
@@@ -855,11 -859,21 +855,11 @@@ M:      Dan Williams <dan.j.williams@intel.c
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  
 -ARM/INTEL IXP2000 ARM ARCHITECTURE
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -
  ARM/INTEL IXDP2850 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  
 -ARM/INTEL IXP23XX ARM ARCHITECTURE
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -
  ARM/INTEL IXP4XX ARM ARCHITECTURE
  M:    Imre Kaloz <kaloz@openwrt.org>
  M:    Krzysztof Halasa <khc@pm.waw.pl>
@@@ -894,12 -908,11 +894,12 @@@ ARM/MAGICIAN MACHINE SUPPOR
  M:    Philipp Zabel <philipp.zabel@gmail.com>
  S:    Maintained
  
 -ARM/Marvell Loki/Kirkwood/MV78xx0/Orion SOC support
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -M:    Nicolas Pitre <nico@fluxnic.net>
 +ARM/Marvell Dove/Kirkwood/MV78xx0/Orion SOC support
 +M:    Jason Cooper <jason@lakedaemon.net>
 +M:    Andrew Lunn <andrew@lunn.ch>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Odd Fixes
 +S:    Maintained
 +F:    arch/arm/mach-dove/
  F:    arch/arm/mach-kirkwood/
  F:    arch/arm/mach-mv78xx0/
  F:    arch/arm/mach-orion5x/
@@@ -1318,21 -1331,6 +1318,21 @@@ M:    Nicolas Ferre <nicolas.ferre@atmel.c
  S:    Supported
  F:    drivers/tty/serial/atmel_serial.c
  
 +ATMEL DMA DRIVER
 +M:    Nicolas Ferre <nicolas.ferre@atmel.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Supported
 +F:    drivers/dma/at_hdmac.c
 +F:    drivers/dma/at_hdmac_regs.h
 +F:    arch/arm/mach-at91/include/mach/at_hdmac.h
 +
 +ATMEL ISI DRIVER
 +M:    Josh Wu <josh.wu@atmel.com>
 +L:    linux-media@vger.kernel.org
 +S:    Supported
 +F:    drivers/media/video/atmel-isi.c
 +F:    include/media/atmel-isi.h
 +
  ATMEL LCDFB DRIVER
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  L:    linux-fbdev@vger.kernel.org
@@@ -1350,22 -1348,10 +1350,22 @@@ M:   Nicolas Ferre <nicolas.ferre@atmel.c
  S:    Supported
  F:    drivers/spi/spi-atmel.*
  
 +ATMEL Timer Counter (TC) AND CLOCKSOURCE DRIVERS
 +M:    Nicolas Ferre <nicolas.ferre@atmel.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Supported
 +F:    drivers/misc/atmel_tclib.c
 +F:    drivers/clocksource/tcb_clksrc.c
 +
 +ATMEL TSADCC DRIVER
 +M:    Josh Wu <josh.wu@atmel.com>
 +L:    linux-input@vger.kernel.org
 +S:    Supported
 +F:    drivers/input/touchscreen/atmel_tsadcc.c
 +
  ATMEL USBA UDC DRIVER
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://avr32linux.org/twiki/bin/view/Main/AtmelUsbDeviceDriver
  S:    Supported
  F:    drivers/usb/gadget/atmel_usba_udc.*
  
@@@ -1445,7 -1431,6 +1445,7 @@@ F:      include/linux/backlight.
  BATMAN ADVANCED
  M:    Marek Lindner <lindner_marek@yahoo.de>
  M:    Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
 +M:    Antonio Quartulli <ordex@autistici.org>
  L:    b.a.t.m.a.n@lists.open-mesh.org
  W:    http://www.open-mesh.org/
  S:    Maintained
@@@ -1613,7 -1598,6 +1613,7 @@@ F:      include/linux/bcma
  
  BROCADE BFA FC SCSI DRIVER
  M:    Jing Huang <huangj@brocade.com>
 +M:    Krishna C Gudipati <kgudipat@brocade.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    drivers/scsi/bfa/
@@@ -1747,7 -1731,6 +1747,7 @@@ S:      Supporte
  F:    include/linux/capability.h
  F:    security/capability.c
  F:    security/commoncap.c 
 +F:    kernel/capability.c
  
  CELL BROADBAND ENGINE ARCHITECTURE
  M:    Arnd Bergmann <arnd@arndb.de>
@@@ -1826,12 -1809,6 +1826,12 @@@ L:    linux-kernel@zh-kernel.org (moderate
  S:    Maintained
  F:    Documentation/zh_CN/
  
 +CHIPIDEA USB HIGH SPEED DUAL ROLE CONTROLLER
 +M:    Alexander Shishkin <alexander.shishkin@linux.intel.com>
 +L:    linux-usb@vger.kernel.org
 +S:    Maintained
 +F:    drivers/usb/chipidea/
 +
  CISCO VIC ETHERNET NIC DRIVER
  M:    Christian Benvenuti <benve@cisco.com>
  M:    Roopa Prabhu <roprabhu@cisco.com>
@@@ -1991,9 -1968,10 +1991,9 @@@ S:     Maintaine
  F:    drivers/net/ethernet/ti/cpmac.c
  
  CPU FREQUENCY DRIVERS
 -M:    Dave Jones <davej@redhat.com>
 +M:    Rafael J. Wysocki <rjw@sisk.pl>
  L:    cpufreq@vger.kernel.org
 -W:    http://www.codemonkey.org.uk/projects/cpufreq/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq.git
 +L:    linux-pm@vger.kernel.org
  S:    Maintained
  F:    drivers/cpufreq/
  F:    include/linux/cpufreq.h
@@@ -2718,13 -2696,6 +2718,13 @@@ S:    Maintaine
  F:    Documentation/hwmon/f71805f
  F:    drivers/hwmon/f71805f.c
  
 +FC0011 TUNER DRIVER
 +M:    Michael Buesch <m@bues.ch>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/media/common/tuners/fc0011.h
 +F:    drivers/media/common/tuners/fc0011.c
 +
  FANOTIFY
  M:    Eric Paris <eparis@redhat.com>
  S:    Maintained
@@@ -2783,15 -2754,6 +2783,15 @@@ T:    git git://git.alsa-project.org/alsa-
  S:    Maintained
  F:    sound/firewire/
  
 +FIREWIRE SBP-2 TARGET
 +M:    Chris Boot <bootc@bootc.net>
 +L:    linux-scsi@vger.kernel.org
 +L:    target-devel@vger.kernel.org
 +L:    linux1394-devel@lists.sourceforge.net
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nab/lio-core-2.6.git master
 +S:    Maintained
 +F:    drivers/target/sbp/
 +
  FIREWIRE SUBSYSTEM
  M:    Stefan Richter <stefanr@s5r6.in-berlin.de>
  L:    linux1394-devel@lists.sourceforge.net
@@@ -2928,7 -2890,7 +2928,7 @@@ S:      Maintaine
  F:    arch/frv/
  
  FUJITSU LAPTOP EXTRAS
 -M:    Jonathan Woithe <jwoithe@physics.adelaide.edu.au>
 +M:    Jonathan Woithe <jwoithe@just42.net>
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    drivers/platform/x86/fujitsu-laptop.c
@@@ -3354,6 -3316,12 +3354,6 @@@ T:     git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    arch/ia64/
  
 -IBM MCA SCSI SUBSYSTEM DRIVER
 -M:    Michael Lang <langa2@kph.uni-mainz.de>
 -W:    http://www.uni-mainz.de/~langm000/linux.html
 -S:    Maintained
 -F:    drivers/scsi/ibmmca.c
 -
  IBM Power Linux RAID adapter
  M:    Brian King <brking@us.ibm.com>
  S:    Supported
@@@ -3416,7 -3384,6 +3416,7 @@@ IIO SUBSYSTEM AND DRIVER
  M:    Jonathan Cameron <jic23@cam.ac.uk>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 +F:    drivers/iio/
  F:    drivers/staging/iio/
  
  IKANOS/ADI EAGLE ADSL USB DRIVER
@@@ -3465,6 -3432,8 +3465,8 @@@ Q:      http://patchwork.kernel.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git
  S:    Maintained
  F:    drivers/input/
+ F:    include/linux/input.h
+ F:    include/linux/input/
  
  INPUT MULTITOUCH (MT) PROTOCOL
  M:    Henrik Rydberg <rydberg@euromail.se>
@@@ -3552,6 -3521,12 +3554,6 @@@ M:     Deepak Saxena <dsaxena@plexity.net
  S:    Maintained
  F:    drivers/char/hw_random/ixp4xx-rng.c
  
 -INTEL IXP2000 ETHERNET DRIVER
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -L:    netdev@vger.kernel.org
 -S:    Maintained
 -F:    drivers/net/ethernet/xscale/ixp2000/
 -
  INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe/ixgbevf)
  M:    Jeff Kirsher <jeffrey.t.kirsher@intel.com>
  M:    Jesse Brandeburg <jesse.brandeburg@intel.com>
@@@ -3619,7 -3594,6 +3621,7 @@@ S:      Supporte
  F:    drivers/net/wireless/iwlegacy/
  
  INTEL WIRELESS WIFI LINK (iwlwifi)
 +M:    Johannes Berg <johannes.berg@intel.com>
  M:    Wey-Yi Guy <wey-yi.w.guy@intel.com>
  M:    Intel Linux Wireless <ilw@linux.intel.com>
  L:    linux-wireless@vger.kernel.org
@@@ -3636,14 -3610,6 +3638,14 @@@ S:    Supporte
  W:    http://wireless.kernel.org/en/users/Drivers/iwmc3200wifi
  F:    drivers/net/wireless/iwmc3200wifi/
  
 +INTEL MANAGEMENT ENGINE (mei)
 +M:    Tomas Winkler <tomas.winkler@intel.com>
 +L:    linux-kernel@vger.kernel.org
 +S:    Supported
 +F:    include/linux/mei.h
 +F:    drivers/misc/mei/*
 +F:    Documentation/mei/*
 +
  IOC3 ETHERNET DRIVER
  M:    Ralf Baechle <ralf@linux-mips.org>
  L:    linux-mips@linux-mips.org
@@@ -3669,7 -3635,7 +3671,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/icplus/ipg.*
  
  IPATH DRIVER
 -M:    Mike Marciniszyn <infinipath@qlogic.com>
 +M:    Mike Marciniszyn <infinipath@intel.com>
  L:    linux-rdma@vger.kernel.org
  S:    Maintained
  F:    drivers/infiniband/hw/ipath/
@@@ -4072,7 -4038,6 +4074,7 @@@ F:      Documentation/scsi/53c700.tx
  F:    drivers/scsi/53c700*
  
  LED SUBSYSTEM
 +M:    Bryan Wu <bryan.wu@canonical.com>
  M:    Richard Purdie <rpurdie@rpsys.net>
  S:    Maintained
  F:    drivers/leds/
@@@ -4459,6 -4424,13 +4461,6 @@@ T:     git git://git.monstr.eu/linux-2.6-mi
  S:    Supported
  F:    arch/microblaze/
  
 -MICROCHANNEL ARCHITECTURE (MCA)
 -M:    James Bottomley <James.Bottomley@HansenPartnership.com>
 -S:    Maintained
 -F:    Documentation/mca.txt
 -F:    drivers/mca/
 -F:    include/linux/mca*
 -
  MICROTEK X6 SCANNER
  M:    Oliver Neukum <oliver@neukum.name>
  S:    Maintained
@@@ -5162,13 -5134,19 +5164,13 @@@ F:   Documentation/powerpc/eeh-pci-error-
  PCI SUBSYSTEM
  M:    Bjorn Helgaas <bhelgaas@google.com>
  L:    linux-pci@vger.kernel.org
 -Q:    http://patchwork.kernel.org/project/linux-pci/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci.git
 +Q:    http://patchwork.ozlabs.org/project/linux-pci/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/linux.git
  S:    Supported
  F:    Documentation/PCI/
  F:    drivers/pci/
  F:    include/linux/pci*
  
 -PCI HOTPLUG
 -M:    Bjorn Helgaas <bhelgaas@google.com>
 -L:    linux-pci@vger.kernel.org
 -S:    Supported
 -F:    drivers/pci/hotplug
 -
  PCMCIA SUBSYSTEM
  P:    Linux PCMCIA Team
  L:    linux-pcmcia@lists.infradead.org
@@@ -5231,7 -5209,7 +5233,7 @@@ S:      Maintaine
  F:    include/linux/personality.h
  
  PHONET PROTOCOL
 -M:    Remi Denis-Courmont <remi.denis-courmont@nokia.com>
 +M:    Remi Denis-Courmont <courmisch@gmail.com>
  S:    Supported
  F:    Documentation/networking/phonet.txt
  F:    include/linux/phonet.h
@@@ -5258,14 -5236,6 +5260,14 @@@ M:    Linus Walleij <linus.walleij@linaro.
  S:    Maintained
  F:    drivers/pinctrl/
  
 +PIN CONTROLLER - ST SPEAR
 +M:    Viresh Kumar <viresh.kumar@st.com>
 +L:    spear-devel@list.st.com
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +W:    http://www.st.com/spear
 +S:    Maintained
 +F:    driver/pinctrl/spear/
 +
  PKTCDVD DRIVER
  M:    Peter Osterlund <petero2@telia.com>
  S:    Maintained
@@@ -5489,7 -5459,7 +5491,7 @@@ L:      rtc-linux@googlegroups.co
  S:    Maintained
  
  QIB DRIVER
 -M:    Mike Marciniszyn <infinipath@qlogic.com>
 +M:    Mike Marciniszyn <infinipath@intel.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
  F:    drivers/infiniband/hw/qib/
@@@ -5639,13 -5609,14 +5641,13 @@@ F:   net/rds
  READ-COPY UPDATE (RCU)
  M:    Dipankar Sarma <dipankar@in.ibm.com>
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
 -W:    http://www.rdrop.com/users/paulmck/rclock/
 +W:    http://www.rdrop.com/users/paulmck/RCU/
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
  F:    Documentation/RCU/
 +X:    Documentation/RCU/torture.txt
  F:    include/linux/rcu*
 -F:    include/linux/srcu*
  F:    kernel/rcu*
 -F:    kernel/srcu*
  X:    kernel/rcutorture.c
  
  REAL TIME CLOCK (RTC) SUBSYSTEM
@@@ -5922,11 -5893,11 +5924,11 @@@ F:   Documentation/scsi/st.tx
  F:    drivers/scsi/st*
  
  SCTP PROTOCOL
 -M:    Vlad Yasevich <vladislav.yasevich@hp.com>
 +M:    Vlad Yasevich <vyasevich@gmail.com>
  M:    Sridhar Samudrala <sri@us.ibm.com>
  L:    linux-sctp@vger.kernel.org
  W:    http://lksctp.sourceforge.net
 -S:    Supported
 +S:    Maintained
  F:    Documentation/networking/sctp.txt
  F:    include/linux/sctp.h
  F:    include/net/sctp/
@@@ -5991,7 -5962,7 +5993,7 @@@ SECURITY SUBSYSTE
  M:    James Morris <james.l.morris@oracle.com>
  L:    linux-security-module@vger.kernel.org (suggested Cc:)
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git
 -W:    http://security.wiki.kernel.org/
 +W:    http://kernsec.org/
  S:    Supported
  F:    security/
  
@@@ -6162,15 -6133,6 +6164,15 @@@ S:    Maintaine
  F:    include/linux/sl?b*.h
  F:    mm/sl?b.c
  
 +SLEEPABLE READ-COPY UPDATE (SRCU)
 +M:    Lai Jiangshan <laijs@cn.fujitsu.com>
 +M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
 +W:    http://www.rdrop.com/users/paulmck/RCU/
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
 +F:    include/linux/srcu*
 +F:    kernel/srcu*
 +
  SMC91x ETHERNET DRIVER
  M:    Nicolas Pitre <nico@fluxnic.net>
  S:    Odd Fixes
@@@ -6370,6 -6332,21 +6372,6 @@@ F:     arch/arm/mach-spear*/clock.
  F:    arch/arm/plat-spear/clock.c
  F:    arch/arm/plat-spear/include/plat/clock.h
  
 -SPEAR PAD MULTIPLEXING SUPPORT
 -M:    Viresh Kumar <viresh.kumar@st.com>
 -L:    spear-devel@list.st.com
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.st.com/spear
 -S:    Maintained
 -F:    arch/arm/plat-spear/include/plat/padmux.h
 -F:    arch/arm/plat-spear/padmux.c
 -F:    arch/arm/mach-spear*/spear*xx.c
 -F:    arch/arm/mach-spear*/include/mach/generic.h
 -F:    arch/arm/mach-spear3xx/spear3*0.c
 -F:    arch/arm/mach-spear3xx/spear3*0_evb.c
 -F:    arch/arm/mach-spear6xx/spear600.c
 -F:    arch/arm/mach-spear6xx/spear600_evb.c
 -
  SPI SUBSYSTEM
  M:    Grant Likely <grant.likely@secretlab.ca>
  L:    spi-devel-general@lists.sourceforge.net
@@@ -6576,7 -6553,7 +6578,7 @@@ M:      Paul Mundt <lethal@linux-sh.org
  L:    linux-sh@vger.kernel.org
  W:    http://www.linux-sh.org
  Q:    http://patchwork.kernel.org/project/linux-sh/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6.git sh-latest
 +T:    git git://github.com/pmundt/linux-sh.git sh-latest
  S:    Supported
  F:    Documentation/sh/
  F:    arch/sh/
@@@ -6694,28 -6671,12 +6696,28 @@@ F:   drivers/misc/tifm
  F:    drivers/mmc/host/tifm_sd.c
  F:    include/linux/tifm.h
  
 +TI LM49xxx FAMILY ASoC CODEC DRIVERS
 +M:    M R Swami Reddy <mr.swami.reddy@ti.com>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    sound/soc/codecs/lm49453*
 +
  TI TWL4030 SERIES SOC CODEC DRIVER
  M:    Peter Ujfalusi <peter.ujfalusi@ti.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Maintained
  F:    sound/soc/codecs/twl4030*
  
 +TI WILINK WIRELESS DRIVERS
 +M:    Luciano Coelho <coelho@ti.com>
 +L:    linux-wireless@vger.kernel.org
 +W:    http://wireless.kernel.org/en/users/Drivers/wl12xx
 +W:    http://wireless.kernel.org/en/users/Drivers/wl1251
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git
 +S:    Maintained
 +F:    drivers/net/wireless/ti/
 +F:    include/linux/wl12xx.h
 +
  TIPC NETWORK LAYER
  M:    Jon Maloy <jon.maloy@ericsson.com>
  M:    Allan Stephens <allan.stephens@windriver.com>
@@@ -6923,14 -6884,6 +6925,14 @@@ F:    Documentation/cdrom
  F:    drivers/cdrom/cdrom.c
  F:    include/linux/cdrom.h
  
 +UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER
 +M:    Vinayak Holikatti <vinholikatti@gmail.com>
 +M:    Santosh Y <santoshsy@gmail.com>
 +L:    linux-scsi@vger.kernel.org
 +S:    Supported
 +F:    Documentation/scsi/ufs.txt
 +F:    drivers/scsi/ufs/
 +
  UNSORTED BLOCK IMAGES (UBI)
  M:    Artem Bityutskiy <dedekind1@gmail.com>
  W:    http://www.linux-mtd.infradead.org/
@@@ -7077,14 -7030,6 +7079,14 @@@ W:    http://pegasus2.sourceforge.net
  S:    Maintained
  F:    drivers/net/usb/pegasus.*
  
 +USB PHY LAYER
 +M:    Felipe Balbi <balbi@ti.com>
 +L:    linux-usb@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
 +S:    Maintained
 +F:    drivers/usb/phy/
 +F:    drivers/usb/otg/
 +
  USB PRINTER DRIVER (usblp)
  M:    Pete Zaitcev <zaitcev@redhat.com>
  L:    linux-usb@vger.kernel.org
@@@ -7198,7 -7143,7 +7200,7 @@@ F:      include/linux/usb/usbnet.
  
  USB VIDEO CLASS
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 -L:    linux-uvc-devel@lists.berlios.de (subscribers-only)
 +L:    linux-uvc-devel@lists.sourceforge.net (subscribers-only)
  L:    linux-media@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media.git
  W:    http://www.ideasonboard.org/uvc/
@@@ -7368,18 -7313,6 +7370,18 @@@ S:    Maintaine
  F:    drivers/vlynq/vlynq.c
  F:    include/linux/vlynq.h
  
 +VME SUBSYSTEM
 +M:    Martyn Welch <martyn.welch@ge.com>
 +M:    Manohar Vanga <manohar.vanga@cern.ch>
 +M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 +L:    devel@driverdev.osuosl.org
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git
 +F:    Documentation/vme_api.txt
 +F:    drivers/staging/vme/
 +F:    drivers/vme/
 +F:    include/linux/vme*
 +
  VMWARE VMXNET3 ETHERNET DRIVER
  M:    Shreyas Bhatewara <sbhatewara@vmware.com>
  M:    "VMware, Inc." <pv-drivers@vmware.com>
@@@ -7500,6 -7433,23 +7502,6 @@@ M:     Miloslav Trmac <mitr@volny.cz
  S:    Maintained
  F:    drivers/input/misc/wistron_btns.c
  
 -WL1251 WIRELESS DRIVER
 -M:    Luciano Coelho <coelho@ti.com>
 -L:    linux-wireless@vger.kernel.org
 -W:    http://wireless.kernel.org/en/users/Drivers/wl1251
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
 -S:    Maintained
 -F:    drivers/net/wireless/wl1251/*
 -
 -WL1271 WIRELESS DRIVER
 -M:    Luciano Coelho <coelho@ti.com>
 -L:    linux-wireless@vger.kernel.org
 -W:    http://wireless.kernel.org/en/users/Drivers/wl12xx
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git
 -S:    Maintained
 -F:    drivers/net/wireless/wl12xx/
 -F:    include/linux/wl12xx.h
 -
  WL3501 WIRELESS PCMCIA CARD DRIVER
  M:    Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
  L:    linux-wireless@vger.kernel.org
@@@ -7630,8 -7580,8 +7632,8 @@@ F:      Documentation/filesystems/xfs.tx
  F:    fs/xfs/
  
  XILINX AXI ETHERNET DRIVER
 -M:    Ariane Keller <ariane.keller@tik.ee.ethz.ch>
 -M:    Daniel Borkmann <daniel.borkmann@tik.ee.ethz.ch>
 +M:    Anirudha Sarangi <anirudh@xilinx.com>
 +M:    John Linn <John.Linn@xilinx.com>
  S:    Maintained
  F:    drivers/net/ethernet/xilinx/xilinx_axienet*
  
index 755a39e4c9e9b6c599dd52d8e97f1a5b264d0e31,a33d3470c47a09d27a8a32be87148bccf724d1f4..ee83c3904ee83e2c3fd48770131f9430b6384141
@@@ -309,7 -309,6 +309,7 @@@ struct aiptek_settings 
  struct aiptek {
        struct input_dev *inputdev;             /* input device struct           */
        struct usb_device *usbdev;              /* usb device struct             */
 +      struct usb_interface *intf;             /* usb interface struct          */
        struct urb *urb;                        /* urb for incoming reports      */
        dma_addr_t data_dma;                    /* our dma stuffage              */
        struct aiptek_features features;        /* tablet's array of features    */
@@@ -436,7 -435,6 +436,7 @@@ static void aiptek_irq(struct urb *urb
        struct aiptek *aiptek = urb->context;
        unsigned char *data = aiptek->data;
        struct input_dev *inputdev = aiptek->inputdev;
 +      struct usb_interface *intf = aiptek->intf;
        int jitterable = 0;
        int retval, macro, x, y, z, left, right, middle, p, dv, tip, bs, pck;
  
        case -ENOENT:
        case -ESHUTDOWN:
                /* This urb is terminated, clean up */
 -              dbg("%s - urb shutting down with status: %d",
 -                  __func__, urb->status);
 +              dev_dbg(&intf->dev, "%s - urb shutting down with status: %d\n",
 +                      __func__, urb->status);
                return;
  
        default:
 -              dbg("%s - nonzero urb status received: %d",
 -                  __func__, urb->status);
 +              dev_dbg(&intf->dev, "%s - nonzero urb status received: %d\n",
 +                      __func__, urb->status);
                goto exit;
        }
  
                                 1 | AIPTEK_REPORT_TOOL_UNKNOWN);
                input_sync(inputdev);
        } else {
 -              dbg("Unknown report %d", data[0]);
 +              dev_dbg(&intf->dev, "Unknown report %d\n", data[0]);
        }
  
        /* Jitter may occur when the user presses a button on the stlyus
  exit:
        retval = usb_submit_urb(urb, GFP_ATOMIC);
        if (retval != 0) {
 -              err("%s - usb_submit_urb failed with result %d",
 -                  __func__, retval);
 +              dev_err(&intf->dev,
 +                      "%s - usb_submit_urb failed with result %d\n",
 +                      __func__, retval);
        }
  }
  
@@@ -915,9 -912,8 +915,9 @@@ aiptek_command(struct aiptek *aiptek, u
  
        if ((ret =
             aiptek_set_report(aiptek, 3, 2, buf, sizeof_buf)) != sizeof_buf) {
 -              dbg("aiptek_program: failed, tried to send: 0x%02x 0x%02x",
 -                  command, data);
 +              dev_dbg(&aiptek->intf->dev,
 +                      "aiptek_program: failed, tried to send: 0x%02x 0x%02x\n",
 +                      command, data);
        }
        kfree(buf);
        return ret < 0 ? ret : 0;
@@@ -951,9 -947,8 +951,9 @@@ aiptek_query(struct aiptek *aiptek, uns
  
        if ((ret =
             aiptek_get_report(aiptek, 3, 2, buf, sizeof_buf)) != sizeof_buf) {
 -              dbg("aiptek_query failed: returned 0x%02x 0x%02x 0x%02x",
 -                  buf[0], buf[1], buf[2]);
 +              dev_dbg(&aiptek->intf->dev,
 +                      "aiptek_query failed: returned 0x%02x 0x%02x 0x%02x\n",
 +                      buf[0], buf[1], buf[2]);
                ret = -EIO;
        } else {
                ret = get_unaligned_le16(buf + 1);
@@@ -1731,7 -1726,6 +1731,7 @@@ aiptek_probe(struct usb_interface *intf
  
        aiptek->inputdev = inputdev;
        aiptek->usbdev = usbdev;
 +      aiptek->intf = intf;
        aiptek->ifnum = intf->altsetting[0].desc.bInterfaceNumber;
        aiptek->inDelay = 0;
        aiptek->endDelay = 0;
        if (i == ARRAY_SIZE(speeds)) {
                dev_info(&intf->dev,
                         "Aiptek tried all speeds, no sane response\n");
-               goto fail2;
+               goto fail3;
        }
  
        /* Associate this driver's struct with the usb interface.
index 79a0509882d4353fa58ec025192bd1dbbca7aabb,b3a8bd3514b22f11e6e675f2e6c6b17c3095fe49..cad5602d3ce45a525ca70d9cc1cf7f766348c24e
@@@ -28,6 -28,7 +28,7 @@@
  #define HID_USAGE_Y_TILT              0x3e
  #define HID_USAGE_FINGER              0x22
  #define HID_USAGE_STYLUS              0x20
+ #define HID_USAGE_CONTACTMAX          0x55
  #define HID_COLLECTION                        0xa1
  #define HID_COLLECTION_LOGICAL                0x02
  #define HID_COLLECTION_END            0xc0
@@@ -99,7 -100,6 +100,7 @@@ static int wacom_set_report(struct usb_
  static void wacom_sys_irq(struct urb *urb)
  {
        struct wacom *wacom = urb->context;
 +      struct device *dev = &wacom->intf->dev;
        int retval;
  
        switch (urb->status) {
        case -ENOENT:
        case -ESHUTDOWN:
                /* this urb is terminated, clean up */
 -              dbg("%s - urb shutting down with status: %d", __func__, urb->status);
 +              dev_dbg(dev, "%s - urb shutting down with status: %d\n",
 +                      __func__, urb->status);
                return;
        default:
 -              dbg("%s - nonzero urb status received: %d", __func__, urb->status);
 +              dev_dbg(dev, "%s - nonzero urb status received: %d\n",
 +                      __func__, urb->status);
                goto exit;
        }
  
        usb_mark_last_busy(wacom->usbdev);
        retval = usb_submit_urb(urb, GFP_ATOMIC);
        if (retval)
 -              err ("%s - usb_submit_urb failed with result %d",
 -                   __func__, retval);
 +              dev_err(dev, "%s - usb_submit_urb failed with result %d\n",
 +                      __func__, retval);
  }
  
  static int wacom_open(struct input_dev *dev)
@@@ -204,6 -202,27 +205,27 @@@ static int wacom_parse_logical_collecti
        return length;
  }
  
+ static void wacom_retrieve_report_data(struct usb_interface *intf,
+                                      struct wacom_features *features)
+ {
+       int result = 0;
+       unsigned char *rep_data;
+       rep_data = kmalloc(2, GFP_KERNEL);
+       if (rep_data) {
+               rep_data[0] = 12;
+               result = wacom_get_report(intf, WAC_HID_FEATURE_REPORT,
+                                         rep_data[0], &rep_data, 2,
+                                         WAC_MSG_RETRIES);
+               if (result >= 0 && rep_data[1] > 2)
+                       features->touch_max = rep_data[1];
+               kfree(rep_data);
+       }
+ }
  /*
   * Interface Descriptor of wacom devices can be incomplete and
   * inconsistent so wacom_features table is used to store stylus
   * 3rd gen Bamboo Touch no longer define a Digitizer-Finger Pysical
   * Collection. Instead they define a Logical Collection with a single
   * Logical Maximum for both X and Y.
+  *
+  * Intuos5 touch interface does not contain useful data. We deal with
+  * this after returning from this function.
   */
  static int wacom_parse_hid(struct usb_interface *intf,
                           struct hid_descriptor *hid_desc,
                                                        /* need to reset back */
                                                        features->pktlen = WACOM_PKGLEN_TPC2FG;
                                                }
+                                               if (features->type == MTSCREEN)
+                                                       features->pktlen = WACOM_PKGLEN_MTOUCH;
                                                if (features->type == BAMBOO_PT) {
                                                        /* need to reset back */
                                                        features->pktlen = WACOM_PKGLEN_BBTOUCH;
                        case HID_USAGE_Y:
                                if (usage == WCM_DESKTOP) {
                                        if (finger) {
-                                               features->device_type = BTN_TOOL_FINGER;
-                                               if (features->type == TABLETPC2FG) {
-                                                       /* need to reset back */
-                                                       features->pktlen = WACOM_PKGLEN_TPC2FG;
+                                               int type = features->type;
+                                               if (type == TABLETPC2FG || type == MTSCREEN) {
                                                        features->y_max =
                                                                get_unaligned_le16(&report[i + 3]);
                                                        features->y_phy =
                                                                get_unaligned_le16(&report[i + 6]);
                                                        i += 7;
-                                               } else if (features->type == BAMBOO_PT) {
-                                                       /* need to reset back */
-                                                       features->pktlen = WACOM_PKGLEN_BBTOUCH;
+                                               } else if (type == BAMBOO_PT) {
                                                        features->y_phy =
                                                                get_unaligned_le16(&report[i + 3]);
                                                        features->y_max =
                                                        i += 4;
                                                }
                                        } else if (pen) {
-                                               /* penabled only accepts exact bytes of data */
-                                               if (features->type == TABLETPC2FG)
-                                                       features->pktlen = WACOM_PKGLEN_GRAPHIRE;
-                                               features->device_type = BTN_TOOL_PEN;
                                                features->y_max =
                                                        get_unaligned_le16(&report[i + 3]);
                                                i += 4;
                                pen = 1;
                                i++;
                                break;
+                       case HID_USAGE_CONTACTMAX:
+                               wacom_retrieve_report_data(intf, features);
+                               i++;
+                               break;
                        }
                        break;
  
@@@ -413,22 -437,29 +440,29 @@@ static int wacom_query_tablet_data(stru
        if (!rep_data)
                return error;
  
-       /* ask to report tablet data if it is MT Tablet PC or
-        * not a Tablet PC */
-       if (features->type == TABLETPC2FG) {
-               do {
-                       rep_data[0] = 3;
-                       rep_data[1] = 4;
-                       rep_data[2] = 0;
-                       rep_data[3] = 0;
-                       report_id = 3;
-                       error = wacom_set_report(intf, WAC_HID_FEATURE_REPORT,
-                                                report_id, rep_data, 4, 1);
-                       if (error >= 0)
-                               error = wacom_get_report(intf,
-                                               WAC_HID_FEATURE_REPORT,
-                                               report_id, rep_data, 4, 1);
-               } while ((error < 0 || rep_data[1] != 4) && limit++ < WAC_MSG_RETRIES);
+       /* ask to report Wacom data */
+       if (features->device_type == BTN_TOOL_FINGER) {
+               /* if it is an MT Tablet PC touch */
+               if (features->type == TABLETPC2FG ||
+                   features->type == MTSCREEN) {
+                       do {
+                               rep_data[0] = 3;
+                               rep_data[1] = 4;
+                               rep_data[2] = 0;
+                               rep_data[3] = 0;
+                               report_id = 3;
+                               error = wacom_set_report(intf,
+                                                        WAC_HID_FEATURE_REPORT,
+                                                        report_id,
+                                                        rep_data, 4, 1);
+                               if (error >= 0)
+                                       error = wacom_get_report(intf,
+                                                       WAC_HID_FEATURE_REPORT,
+                                                       report_id,
+                                                       rep_data, 4, 1);
+                       } while ((error < 0 || rep_data[1] != 4) &&
+                                limit++ < WAC_MSG_RETRIES);
+               }
        } else if (features->type != TABLETPC &&
                   features->type != WIRELESS &&
                   features->device_type == BTN_TOOL_PEN) {
  }
  
  static int wacom_retrieve_hid_descriptor(struct usb_interface *intf,
-               struct wacom_features *features)
+                                        struct wacom_features *features)
  {
        int error = 0;
        struct usb_host_interface *interface = intf->cur_altsetting;
                }
        }
  
-       /* only Tablet PCs and Bamboo P&T need to retrieve the info */
-       if ((features->type != TABLETPC) && (features->type != TABLETPC2FG) &&
-           (features->type != BAMBOO_PT))
+       /* only devices that support touch need to retrieve the info */
+       if (features->type != TABLETPC &&
+           features->type != TABLETPC2FG &&
+           features->type != BAMBOO_PT &&
+           features->type != MTSCREEN) {
                goto out;
+       }
  
-       if (usb_get_extra_descriptor(interface, HID_DEVICET_HID, &hid_desc)) {
-               if (usb_get_extra_descriptor(&interface->endpoint[0],
-                               HID_DEVICET_REPORT, &hid_desc)) {
-                       printk("wacom: can not retrieve extra class descriptor\n");
-                       error = 1;
+       error = usb_get_extra_descriptor(interface, HID_DEVICET_HID, &hid_desc);
+       if (error) {
+               error = usb_get_extra_descriptor(&interface->endpoint[0],
+                                                HID_DEVICET_REPORT, &hid_desc);
+               if (error) {
+                       dev_err(&intf->dev,
+                               "can not retrieve extra class descriptor\n");
                        goto out;
                }
        }
@@@ -577,23 -613,39 +616,39 @@@ static void wacom_remove_shared_data(st
  static int wacom_led_control(struct wacom *wacom)
  {
        unsigned char *buf;
-       int retval, led = 0;
+       int retval;
  
        buf = kzalloc(9, GFP_KERNEL);
        if (!buf)
                return -ENOMEM;
  
-       if (wacom->wacom_wac.features.type == WACOM_21UX2 ||
-           wacom->wacom_wac.features.type == WACOM_24HD)
-               led = (wacom->led.select[1] << 4) | 0x40;
-       led |=  wacom->led.select[0] | 0x4;
-       buf[0] = WAC_CMD_LED_CONTROL;
-       buf[1] = led;
-       buf[2] = wacom->led.llv;
-       buf[3] = wacom->led.hlv;
-       buf[4] = wacom->led.img_lum;
+       if (wacom->wacom_wac.features.type >= INTUOS5S &&
+           wacom->wacom_wac.features.type <= INTUOS5L) {
+               /*
+                * Touch Ring and crop mark LED luminance may take on
+                * one of four values:
+                *    0 = Low; 1 = Medium; 2 = High; 3 = Off
+                */
+               int ring_led = wacom->led.select[0] & 0x03;
+               int ring_lum = (((wacom->led.llv & 0x60) >> 5) - 1) & 0x03;
+               int crop_lum = 0;
+               buf[0] = WAC_CMD_LED_CONTROL;
+               buf[1] = (crop_lum << 4) | (ring_lum << 2) | (ring_led);
+       }
+       else {
+               int led = wacom->led.select[0] | 0x4;
+               if (wacom->wacom_wac.features.type == WACOM_21UX2 ||
+                   wacom->wacom_wac.features.type == WACOM_24HD)
+                       led |= (wacom->led.select[1] << 4) | 0x40;
+               buf[0] = WAC_CMD_LED_CONTROL;
+               buf[1] = led;
+               buf[2] = wacom->led.llv;
+               buf[3] = wacom->led.hlv;
+               buf[4] = wacom->led.img_lum;
+       }
  
        retval = wacom_set_report(wacom->intf, 0x03, WAC_CMD_LED_CONTROL,
                                  buf, 9, WAC_CMD_RETRIES);
@@@ -786,6 -838,17 +841,17 @@@ static struct attribute_group intuos4_l
        .attrs = intuos4_led_attrs,
  };
  
+ static struct attribute *intuos5_led_attrs[] = {
+       &dev_attr_status0_luminance.attr,
+       &dev_attr_status_led0_select.attr,
+       NULL
+ };
+ static struct attribute_group intuos5_led_attr_group = {
+       .name = "wacom_led",
+       .attrs = intuos5_led_attrs,
+ };
  static int wacom_initialize_leds(struct wacom *wacom)
  {
        int error;
                                           &cintiq_led_attr_group);
                break;
  
+       case INTUOS5S:
+       case INTUOS5:
+       case INTUOS5L:
+               wacom->led.select[0] = 0;
+               wacom->led.select[1] = 0;
+               wacom->led.llv = 32;
+               wacom->led.hlv = 0;
+               wacom->led.img_lum = 0;
+               error = sysfs_create_group(&wacom->intf->dev.kobj,
+                                          &intuos5_led_attr_group);
+               break;
        default:
                return 0;
        }
@@@ -843,6 -919,13 +922,13 @@@ static void wacom_destroy_leds(struct w
                sysfs_remove_group(&wacom->intf->dev.kobj,
                                   &cintiq_led_attr_group);
                break;
+       case INTUOS5S:
+       case INTUOS5:
+       case INTUOS5L:
+               sysfs_remove_group(&wacom->intf->dev.kobj,
+                                  &intuos5_led_attr_group);
+               break;
        }
  }
  
@@@ -904,8 -987,10 +990,10 @@@ static int wacom_register_input(struct 
        int error;
  
        input_dev = input_allocate_device();
-       if (!input_dev)
-               return -ENOMEM;
+       if (!input_dev) {
+               error = -ENOMEM;
+               goto fail1;
+       }
  
        input_dev->name = wacom_wac->name;
        input_dev->dev.parent = &intf->dev;
        input_set_drvdata(input_dev, wacom);
  
        wacom_wac->input = input_dev;
-       wacom_setup_input_capabilities(input_dev, wacom_wac);
+       error = wacom_setup_input_capabilities(input_dev, wacom_wac);
+       if (error)
+               goto fail1;
  
        error = input_register_device(input_dev);
-       if (error) {
-               input_free_device(input_dev);
-               wacom_wac->input = NULL;
-       }
+       if (error)
+               goto fail2;
  
+       return 0;
+ fail2:
+       input_free_device(input_dev);
+       wacom_wac->input = NULL;
+ fail1:
        return error;
  }
  
@@@ -941,22 -1032,22 +1035,22 @@@ static void wacom_wireless_work(struct 
        wacom = usb_get_intfdata(usbdev->config->interface[1]);
        if (wacom->wacom_wac.input)
                input_unregister_device(wacom->wacom_wac.input);
-       wacom->wacom_wac.input = 0;
+       wacom->wacom_wac.input = NULL;
  
        /* Touch interface */
        wacom = usb_get_intfdata(usbdev->config->interface[2]);
        if (wacom->wacom_wac.input)
                input_unregister_device(wacom->wacom_wac.input);
-       wacom->wacom_wac.input = 0;
+       wacom->wacom_wac.input = NULL;
  
        if (wacom_wac->pid == 0) {
-               printk(KERN_INFO "wacom: wireless tablet disconnected\n");
+               dev_info(&wacom->intf->dev, "wireless tablet disconnected\n");
        } else {
                const struct usb_device_id *id = wacom_ids;
  
-               printk(KERN_INFO
-                      "wacom: wireless tablet connected with PID %x\n",
-                      wacom_wac->pid);
+               dev_info(&wacom->intf->dev,
+                        "wireless tablet connected with PID %x\n",
+                        wacom_wac->pid);
  
                while (id->match_flags) {
                        if (id->idVendor == USB_VENDOR_ID_WACOM &&
                }
  
                if (!id->match_flags) {
-                       printk(KERN_INFO
-                              "wacom: ignorning unknown PID.\n");
+                       dev_info(&wacom->intf->dev,
+                                "ignoring unknown PID.\n");
                        return;
                }
  
@@@ -1038,11 -1129,33 +1132,33 @@@ static int wacom_probe(struct usb_inter
  
        endpoint = &intf->cur_altsetting->endpoint[0].desc;
  
-       /* Retrieve the physical and logical size for OEM devices */
+       /* Retrieve the physical and logical size for touch devices */
        error = wacom_retrieve_hid_descriptor(intf, features);
        if (error)
                goto fail3;
  
+       /*
+        * Intuos5 has no useful data about its touch interface in its
+        * HID descriptor. If this is the touch interface (wMaxPacketSize
+        * of WACOM_PKGLEN_BBTOUCH3), override the table values.
+        */
+       if (features->type >= INTUOS5S && features->type <= INTUOS5L) {
+               if (endpoint->wMaxPacketSize == WACOM_PKGLEN_BBTOUCH3) {
+                       features->device_type = BTN_TOOL_FINGER;
+                       features->pktlen = WACOM_PKGLEN_BBTOUCH3;
+                       features->x_phy =
+                               (features->x_max * 100) / features->x_resolution;
+                       features->y_phy =
+                               (features->y_max * 100) / features->y_resolution;
+                       features->x_max = 4096;
+                       features->y_max = 4096;
+               } else {
+                       features->device_type = BTN_TOOL_PEN;
+               }
+       }
        wacom_setup_device_quirks(features);
  
        strlcpy(wacom_wac->name, features->name, sizeof(wacom_wac->name));
index 75838d7710ce61db466d87ea9cbc3164f6bd8d4a,f67657b2fd5dd89e0af11f1a296074c30217d224..98d263504eead6d9b84ebb768cfb216a88f2efb0
@@@ -187,6 -187,23 +187,23 @@@ config TOUCHSCREEN_DA903
          Say Y here to enable the support for the touchscreen found
          on Dialog Semiconductor DA9034 PMIC.
  
+         If unsure, say N.
+         To compile this driver as a module, choose M here: the
+         module will be called da9034-ts.
+ config TOUCHSCREEN_DA9052
+       tristate "Dialog DA9052/DA9053 TSI"
+       depends on PMIC_DA9052
+       help
+         Say Y here to support the touchscreen found on Dialog Semiconductor
+         DA9052-BC and DA9053-AA/Bx PMICs.
+         If unsure, say N.
+         To compile this driver as a module, choose M here: the
+         module will be called da9052_tsi.
  config TOUCHSCREEN_DYNAPRO
        tristate "Dynapro serial touchscreen"
        select SERIO
@@@ -306,6 -323,18 +323,18 @@@ config TOUCHSCREEN_WACOM_W800
          To compile this driver as a module, choose M here: the
          module will be called wacom_w8001.
  
+ config TOUCHSCREEN_WACOM_I2C
+       tristate "Wacom Tablet support (I2C)"
+       depends on I2C
+       help
+         Say Y here if you want to use the I2C version of the Wacom
+         Pen Tablet.
+         If unsure, say N.
+         To compile this driver as a module, choose M here: the module
+         will be called wacom_i2c.
  config TOUCHSCREEN_LPC32XX
        tristate "LPC32XX touchscreen controller"
        depends on ARCH_LPC32XX
@@@ -489,10 -518,10 +518,10 @@@ config TOUCHSCREEN_TI_TSCAD
  
  config TOUCHSCREEN_ATMEL_TSADCC
        tristate "Atmel Touchscreen Interface"
 -      depends on ARCH_AT91SAM9RL || ARCH_AT91SAM9G45
 +      depends on ARCH_AT91
        help
          Say Y here if you have a 4-wire touchscreen connected to the
 -          ADC Controller on your Atmel SoC (such as the AT91SAM9RL).
 +          ADC Controller on your Atmel SoC.
  
          If unsure, say N.
  
@@@ -635,6 -664,7 +664,7 @@@ config TOUCHSCREEN_USB_COMPOSIT
          - Zytronic controllers
          - Elo TouchSystems 2700 IntelliTouch
          - EasyTouch USB Touch Controller from Data Modul
+         - e2i (Mimo monitors)
  
          Have a look at <http://linux.chapter7.ch/touchkit/> for
          a usage description and the required user-space stuff.
@@@ -721,7 -751,7 +751,7 @@@ config TOUCHSCREEN_USB_EL
  
  config TOUCHSCREEN_USB_E2I
        default y
-       bool "e2i Touchscreen controller (e.g. from Mimo 740)"
+       bool "e2i Touchscreen controller (e.g. from Mimo 740)" if EXPERT
        depends on TOUCHSCREEN_USB_COMPOSITE
  
  config TOUCHSCREEN_USB_ZYTRONIC
@@@ -744,7 -774,7 +774,7 @@@ config TOUCHSCREEN_USB_EASYTOUC
        bool "EasyTouch USB Touch controller device support" if EMBEDDED
        depends on TOUCHSCREEN_USB_COMPOSITE
        help
-         Say Y here if you have a EasyTouch USB Touch controller device support.
+         Say Y here if you have an EasyTouch USB Touch controller.
          If unsure, say N.
  
  config TOUCHSCREEN_TOUCHIT213