From: Jiri Kosina Date: Mon, 22 Jun 2015 14:23:43 +0000 (+0200) Subject: Merge branches 'for-4.2/i2c-hid', 'for-4.2/lenovo', 'for-4.2/plantronics', 'for-4... X-Git-Tag: v4.2-rc1~153^2 X-Git-Url: https://repo.jachan.dev/linux.git/commitdiff_plain/ec3b34e1975670e68be3abff76f56dbb41dd417c?hp=-c Merge branches 'for-4.2/i2c-hid', 'for-4.2/lenovo', 'for-4.2/plantronics', 'for-4.2/rmi', 'for-4.2/sensor-hub', 'for-4.2/sjoy', 'for-4.2/sony' and 'for-4.2/wacom' into for-linus Conflicts: drivers/hid/wacom_wac.c --- ec3b34e1975670e68be3abff76f56dbb41dd417c diff --combined MAINTAINERS index 38579ac581ce,60d24f224271,38579ac581ce,60d24f224271,60d24f224271,61153f381224,38579ac581ce,38579ac581ce,38579ac581ce..10f1dacef8ac --- a/MAINTAINERS +++ b/MAINTAINERS @@@@@@@@@@ -569,6 -569,12 -569,6 -569,12 -569,12 -569,6 -569,6 -569,6 -569,6 +569,12 @@@@@@@@@@ L: nios2-dev@lists.rocketboards.org (mo S: Maintained F: drivers/mailbox/mailbox-altera.c + + ++++ALTERA PIO DRIVER + + ++++M: Tien Hock Loh + + ++++L: linux-gpio@vger.kernel.org + + ++++S: Maintained + + ++++F: drivers/gpio/gpio-altera.c + + ++++ ALTERA TRIPLE SPEED ETHERNET DRIVER M: Vince Bridgers L: netdev@vger.kernel.org @@@@@@@@@@ -625,16 -631,16 -625,16 -631,16 -631,16 -625,16 -625,16 -625,16 -625,16 +631,16 @@@@@@@@@@ F: drivers/iommu/amd_iommu*.[ch F: include/linux/amd-iommu.h AMD KFD - - ----M: Oded Gabbay - - ----L: dri-devel@lists.freedesktop.org - - ----T: git git://people.freedesktop.org/~gabbayo/linux.git - - ----S: Supported - - ----F: drivers/gpu/drm/amd/amdkfd/ + + ++++M: Oded Gabbay + + ++++L: dri-devel@lists.freedesktop.org + + ++++T: git git://people.freedesktop.org/~gabbayo/linux.git + + ++++S: Supported + + ++++F: drivers/gpu/drm/amd/amdkfd/ F: drivers/gpu/drm/amd/include/cik_structs.h F: drivers/gpu/drm/amd/include/kgd_kfd_interface.h - - ----F: drivers/gpu/drm/radeon/radeon_kfd.c - - ----F: drivers/gpu/drm/radeon/radeon_kfd.h - - ----F: include/uapi/linux/kfd_ioctl.h + + ++++F: drivers/gpu/drm/radeon/radeon_kfd.c + + ++++F: drivers/gpu/drm/radeon/radeon_kfd.h + + ++++F: include/uapi/linux/kfd_ioctl.h AMD MICROCODE UPDATE SUPPORT M: Borislav Petkov @@@@@@@@@@ -880,12 -886,16 -880,12 -886,16 -886,16 -880,12 -880,12 -880,12 -880,12 +886,16 @@@@@@@@@@ S: Maintaine F: drivers/media/rc/meson-ir.c N: meson[x68] + + ++++ARM/Annapurna Labs ALPINE ARCHITECTURE + + ++++M: Tsahee Zidenberg + + ++++S: Maintained + + ++++F: arch/arm/mach-alpine/ + + ++++ ARM/ATMEL AT91RM9200 AND AT91SAM ARM ARCHITECTURES - - ----M: Andrew Victor M: Nicolas Ferre + + ++++M: Alexandre Belloni M: Jean-Christophe Plagniol-Villard L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) - - ----W: http://maxim.org.za/at91_26.html W: http://www.linux4sam.org S: Supported F: arch/arm/mach-at91/ @@@@@@@@@@ -952,7 -962,7 -952,7 -962,7 -962,7 -952,7 -952,7 -952,7 -952,7 +962,7 @@@@@@@@@@ ARM/CORESIGHT FRAMEWORK AND DRIVER M: Mathieu Poirier L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained - - ----F: drivers/coresight/* + + ++++F: drivers/hwtracing/coresight/* F: Documentation/trace/coresight.txt F: Documentation/devicetree/bindings/arm/coresight.txt F: Documentation/ABI/testing/sysfs-bus-coresight-devices-* @@@@@@@@@@ -964,7 -974,7 -964,7 -974,7 -974,7 -964,7 -964,7 -964,7 -964,7 +974,7 @@@@@@@@@@ S: Maintaine ARM/CORTINA SYSTEMS GEMINI ARM ARCHITECTURE M: Hans Ulli Kroll L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) - - ----T: git git://git.berlios.de/gemini-board + + ++++T: git git://github.com/ulli-kroll/linux.git S: Maintained F: arch/arm/mach-gemini/ @@@@@@@@@@ -979,6 -989,12 -979,6 -989,12 -989,12 -979,6 -979,6 -979,6 -979,6 +989,12 @@@@@@@@@@ F: drivers/clocksource/timer-prima2. F: drivers/clocksource/timer-atlas7.c N: [^a-z]sirf + + ++++ARM/CONEXANT DIGICOLOR MACHINE SUPPORT + + ++++M: Baruch Siach + + ++++L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) + + ++++S: Maintained + + ++++N: digicolor + + ++++ ARM/EBSA110 MACHINE SUPPORT M: Russell King L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) @@@@@@@@@@ -1177,7 -1193,7 -1177,7 -1193,7 -1193,7 -1177,7 -1177,7 -1177,7 -1177,7 +1193,7 @@@@@@@@@@ ARM/MAGICIAN MACHINE SUPPOR M: Philipp Zabel S: Maintained - - ----ARM/Marvell Armada 370 and Armada XP SOC support + + ++++ARM/Marvell Kirkwood and Armada 370, 375, 38x, XP SOC support M: Jason Cooper M: Andrew Lunn M: Gregory Clement @@@@@@@@@@ -1186,12 -1202,17 -1186,12 -1202,17 -1202,17 -1186,12 -1186,12 -1186,12 -1186,12 +1202,17 @@@@@@@@@@ L: linux-arm-kernel@lists.infradead.or S: Maintained F: arch/arm/mach-mvebu/ F: drivers/rtc/rtc-armada38x.c + + ++++F: arch/arm/boot/dts/armada* + + ++++F: arch/arm/boot/dts/kirkwood* + + ++++ ARM/Marvell Berlin SoC support M: Sebastian Hesselbarth L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained F: arch/arm/mach-berlin/ + + ++++F: arch/arm/boot/dts/berlin* + + ++++ ARM/Marvell Dove/MV78xx0/Orion SOC support M: Jason Cooper @@@@@@@@@@ -1204,6 -1225,9 -1204,6 -1225,9 -1225,9 -1204,6 -1204,6 -1204,6 -1204,6 +1225,9 @@@@@@@@@@ F: arch/arm/mach-dove F: arch/arm/mach-mv78xx0/ F: arch/arm/mach-orion5x/ F: arch/arm/plat-orion/ + + ++++F: arch/arm/boot/dts/dove* + + ++++F: arch/arm/boot/dts/orion5x* + + ++++ ARM/Orion SoC/Technologic Systems TS-78xx platform support M: Alexander Clouter @@@@@@@@@@ -1215,6 -1239,7 -1215,6 -1239,7 -1239,7 -1215,6 -1215,6 -1215,6 -1215,6 +1239,7 @@@@@@@@@@ F: arch/arm/mach-orion5x/ts78xx- ARM/Mediatek SoC support M: Matthias Brugger L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) + + ++++L: linux-mediatek@lists.infradead.org (moderated for non-subscribers) S: Maintained F: arch/arm/boot/dts/mt6* F: arch/arm/boot/dts/mt8* @@@@@@@@@@ -1254,22 -1279,6 -1254,22 -1279,6 -1279,6 -1254,22 -1254,22 -1254,22 -1254,22 +1279,6 @@@@@@@@@@ L: openmoko-kernel@lists.openmoko.org ( W: http://wiki.openmoko.org/wiki/Neo_FreeRunner S: Supported - - ----ARM/QUALCOMM MSM MACHINE SUPPORT - - ----M: David Brown - - ----M: Daniel Walker - - ----M: Bryan Huntsman - - ----L: linux-arm-msm@vger.kernel.org - - ----F: arch/arm/mach-msm/ - - ----F: drivers/video/fbdev/msm/ - - ----F: drivers/mmc/host/msm_sdcc.c - - ----F: drivers/mmc/host/msm_sdcc.h - - ----F: drivers/tty/serial/msm_serial.h - - ----F: drivers/tty/serial/msm_serial.c - - ----F: drivers/*/pm8???-* - - ----F: drivers/mfd/ssbi.c - - ----T: git git://git.kernel.org/pub/scm/linux/kernel/git/davidb/linux-msm.git - - ----S: Maintained - - ---- ARM/TOSA MACHINE SUPPORT M: Dmitry Eremin-Solenikov M: Dirk Opfer @@@@@@@@@@ -1327,6 -1336,11 -1327,6 -1336,11 -1336,11 -1327,6 -1327,6 -1327,6 -1327,6 +1336,11 @@@@@@@@@@ L: linux-soc@vger.kernel.or S: Maintained F: arch/arm/mach-qcom/ F: drivers/soc/qcom/ + + ++++F: drivers/tty/serial/msm_serial.h + + ++++F: drivers/tty/serial/msm_serial.c + + ++++F: drivers/*/pm8???-* + + ++++F: drivers/mfd/ssbi.c + + ++++F: drivers/firmware/qcom_scm.c T: git git://git.kernel.org/pub/scm/linux/kernel/git/galak/linux-qcom.git ARM/RADISYS ENP2611 MACHINE SUPPORT @@@@@@@@@@ -1365,6 -1379,7 -1365,6 -1379,7 -1379,7 -1365,6 -1365,6 -1365,6 -1365,6 +1379,7 @@@@@@@@@@ N: rockchi ARM/SAMSUNG EXYNOS ARM ARCHITECTURES M: Kukjin Kim + + ++++M: Krzysztof Kozlowski L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers) S: Maintained @@@@@@@@@@ -1425,11 -1440,9 -1425,11 -1440,9 -1440,9 -1425,11 -1425,11 -1425,11 -1425,11 +1440,9 @@@@@@@@@@ F: arch/arm/boot/dts/emev2 F: arch/arm/boot/dts/r7s* F: arch/arm/boot/dts/r8a* F: arch/arm/boot/dts/sh* - - ----F: arch/arm/configs/ape6evm_defconfig F: arch/arm/configs/armadillo800eva_defconfig F: arch/arm/configs/bockw_defconfig F: arch/arm/configs/kzm9g_defconfig - - ----F: arch/arm/configs/mackerel_defconfig F: arch/arm/configs/marzen_defconfig F: arch/arm/configs/shmobile_defconfig F: arch/arm/include/debug/renesas-scif.S @@@@@@@@@@ -1440,9 -1453,10 -1440,9 -1453,10 -1453,10 -1440,9 -1440,9 -1440,9 -1440,9 +1453,10 @@@@@@@@@@ ARM/SOCFPGA ARCHITECTUR M: Dinh Nguyen S: Maintained F: arch/arm/mach-socfpga/ + + ++++F: arch/arm/boot/dts/socfpga* + + ++++F: arch/arm/configs/socfpga_defconfig W: http://www.rocketboards.org - - ----T: git://git.rocketboards.org/linux-socfpga.git - - ----T: git://git.rocketboards.org/linux-socfpga-next.git + + ++++T: git git://git.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux.git ARM/SOCFPGA CLOCK FRAMEWORK SUPPORT M: Dinh Nguyen @@@@@@@@@@ -1764,7 -1778,7 -1764,7 -1778,7 -1778,7 -1764,7 -1764,7 -1764,7 -1764,7 +1778,7 @@@@@@@@@@ S: Supporte F: drivers/tty/serial/atmel_serial.c ATMEL Audio ALSA driver - - ----M: Bo Shen + + ++++M: Nicolas Ferre L: alsa-devel@alsa-project.org (moderated for non-subscribers) S: Supported F: sound/soc/atmel @@@@@@@@@@ -1821,7 -1835,7 -1821,7 -1835,7 -1835,7 -1821,7 -1821,7 -1821,7 -1821,7 +1835,7 @@@@@@@@@@ S: Supporte F: drivers/spi/spi-atmel.* ATMEL SSC DRIVER - - ----M: Bo Shen + + ++++M: Nicolas Ferre L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Supported F: drivers/misc/atmel-ssc.c @@@@@@@@@@ -1915,16 -1929,14 -1915,16 -1929,14 -1929,14 -1915,16 -1915,16 -1915,16 -1915,16 +1929,14 @@@@@@@@@@ S: Maintaine F: drivers/media/radio/radio-aztech* B43 WIRELESS DRIVER - - ----M: Stefano Brivio L: linux-wireless@vger.kernel.org L: b43-dev@lists.infradead.org W: http://wireless.kernel.org/en/users/Drivers/b43 - - ----S: Maintained + + ++++S: Odd Fixes F: drivers/net/wireless/b43/ B43LEGACY WIRELESS DRIVER M: Larry Finger - - ----M: Stefano Brivio L: linux-wireless@vger.kernel.org L: b43-dev@lists.infradead.org W: http://wireless.kernel.org/en/users/Drivers/b43 @@@@@@@@@@ -1932,7 -1944,7 -1932,7 -1944,7 -1944,7 -1932,7 -1932,7 -1932,7 -1932,7 +1944,7 @@@@@@@@@@ S: Maintaine F: drivers/net/wireless/b43legacy/ BACKLIGHT CLASS/SUBSYSTEM - - ----M: Jingoo Han + + ++++M: Jingoo Han M: Lee Jones S: Maintained F: drivers/video/backlight/ @@@@@@@@@@ -1967,10 -1979,10 -1967,10 -1979,10 -1979,10 -1967,10 -1967,10 -1967,10 -1967,10 +1979,10 @@@@@@@@@@ F: Documentation/filesystems/befs.tx F: fs/befs/ BECKHOFF CX5020 ETHERCAT MASTER DRIVER - - ----M: Dariusz Marcinkiewicz - - ----L: netdev@vger.kernel.org - - ----S: Maintained - - ----F: drivers/net/ethernet/ec_bhf.c + + ++++M: Dariusz Marcinkiewicz + + ++++L: netdev@vger.kernel.org + + ++++S: Maintained + + ++++F: drivers/net/ethernet/ec_bhf.c BFS FILE SYSTEM M: "Tigran A. Aivazian" @@@@@@@@@@ -2119,8 -2131,9 -2119,8 -2131,9 -2131,9 -2119,8 -2119,8 -2119,8 -2119,8 +2131,9 @@@@@@@@@@ S: Supporte F: drivers/net/ethernet/broadcom/bnx2x/ BROADCOM BCM281XX/BCM11XXX/BCM216XX ARM ARCHITECTURE - - ----M: Christian Daudt M: Florian Fainelli + + ++++M: Ray Jui + + ++++M: Scott Branden L: bcm-kernel-feedback-list@broadcom.com T: git git://github.com/broadcom/mach-bcm S: Maintained @@@@@@@@@@ -2171,7 -2184,6 -2171,7 -2184,6 -2184,6 -2171,7 -2171,7 -2171,7 -2171,7 +2184,6 @@@@@@@@@@ S: Maintaine F: drivers/usb/gadget/udc/bcm63xx_udc.* BROADCOM BCM7XXX ARM ARCHITECTURE - - ----M: Marc Carino M: Brian Norris M: Gregory Fong M: Florian Fainelli @@@@@@@@@@ -2525,6 -2537,13 -2525,6 -2537,13 -2537,13 -2525,6 -2525,6 -2525,6 -2525,6 +2537,13 @@@@@@@@@@ L: linux-usb@vger.kernel.or S: Maintained F: drivers/usb/chipidea/ + + ++++CHIPONE ICN8318 I2C TOUCHSCREEN DRIVER + + ++++M: Hans de Goede + + ++++L: linux-input@vger.kernel.org + + ++++S: Maintained + + ++++F: Documentation/devicetree/bindings/input/touchscreen/chipone_icn8318.txt + + ++++F: drivers/input/touchscreen/chipone_icn8318.c + + ++++ CHROME HARDWARE PLATFORM SUPPORT M: Olof Johansson S: Maintained @@@@@@@@@@ -2565,6 -2584,7 -2565,6 -2584,7 -2584,7 -2565,6 -2565,6 -2565,6 -2565,6 +2584,7 @@@@@@@@@@ F: include/linux/cleancache. CLK API M: Russell King + + ++++L: linux-clk@vger.kernel.org S: Maintained F: include/linux/clk.h @@@@@@@@@@ -2625,7 -2645,7 -2625,7 -2645,7 -2645,7 -2625,7 -2625,7 -2625,7 -2625,7 +2645,7 @@@@@@@@@@ F: drivers/media/platform/coda COMMON CLK FRAMEWORK M: Mike Turquette M: Stephen Boyd - - ----L: linux-kernel@vger.kernel.org + + ++++L: linux-clk@vger.kernel.org T: git git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git S: Maintained F: drivers/clk/ @@@@@@@@@@ -2818,6 -2838,7 -2818,6 -2838,7 -2838,7 -2818,6 -2818,6 -2818,6 -2818,6 +2838,7 @@@@@@@@@@ L: linux-crypto@vger.kernel.or T: git git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git S: Maintained F: Documentation/crypto/ + + ++++F: Documentation/DocBook/crypto-API.tmpl F: arch/*/crypto/ F: crypto/ F: drivers/crypto/ @@@@@@@@@@ -2888,11 -2909,11 -2888,11 -2909,11 -2909,11 -2888,11 -2888,11 -2888,11 -2888,11 +2909,11 @@@@@@@@@@ S: Supporte F: drivers/net/ethernet/chelsio/cxgb3/ CXGB3 ISCSI DRIVER (CXGB3I) - - ----M: Karen Xie - - ----L: linux-scsi@vger.kernel.org - - ----W: http://www.chelsio.com - - ----S: Supported - - ----F: drivers/scsi/cxgbi/cxgb3i + + ++++M: Karen Xie + + ++++L: linux-scsi@vger.kernel.org + + ++++W: http://www.chelsio.com + + ++++S: Supported + + ++++F: drivers/scsi/cxgbi/cxgb3i CXGB3 IWARP RNIC DRIVER (IW_CXGB3) M: Steve Wise @@@@@@@@@@ -2909,11 -2930,11 -2909,11 -2930,11 -2930,11 -2909,11 -2909,11 -2909,11 -2909,11 +2930,11 @@@@@@@@@@ S: Supporte F: drivers/net/ethernet/chelsio/cxgb4/ CXGB4 ISCSI DRIVER (CXGB4I) - - ----M: Karen Xie - - ----L: linux-scsi@vger.kernel.org - - ----W: http://www.chelsio.com - - ----S: Supported - - ----F: drivers/scsi/cxgbi/cxgb4i + + ++++M: Karen Xie + + ++++L: linux-scsi@vger.kernel.org + + ++++W: http://www.chelsio.com + + ++++S: Supported + + ++++F: drivers/scsi/cxgbi/cxgb4i CXGB4 IWARP RNIC DRIVER (IW_CXGB4) M: Steve Wise @@@@@@@@@@ -3060,10 -3081,16 -3060,10 -3081,16 -3081,16 -3060,10 -3060,10 -3060,10 -3060,10 +3081,16 @@@@@@@@@@ F: drivers/net/fddi/defxx. DELL LAPTOP DRIVER M: Matthew Garrett + + ++++M: Pali Rohár L: platform-driver-x86@vger.kernel.org S: Maintained F: drivers/platform/x86/dell-laptop.c + + ++++DELL LAPTOP FREEFALL DRIVER + + ++++M: Pali Rohár + + ++++S: Maintained + + ++++F: drivers/platform/x86/dell-smo8800.c + + ++++ DELL LAPTOP SMM DRIVER M: Guenter Roeck S: Maintained @@@@@@@@@@ -3078,6 -3105,7 -3078,6 -3105,7 -3105,7 -3078,6 -3078,6 -3078,6 -3078,6 +3105,7 @@@@@@@@@@ F: drivers/firmware/dcdbas. DELL WMI EXTRAS DRIVER M: Matthew Garrett + + ++++M: Pali Rohár S: Maintained F: drivers/platform/x86/dell-wmi.c @@@@@@@@@@ -3265,12 -3293,6 -3265,12 -3293,6 -3293,6 -3265,12 -3265,12 -3265,12 -3265,12 +3293,6 @@@@@@@@@@ F: drivers/firmware/dmi-id. F: drivers/firmware/dmi_scan.c F: include/linux/dmi.h - - ----DOCKING STATION DRIVER - - ----M: Shaohua Li - - ----L: linux-acpi@vger.kernel.org - - ----S: Supported - - ----F: drivers/acpi/dock.c - - ---- DOCUMENTATION M: Jonathan Corbet L: linux-doc@vger.kernel.org @@@@@@@@@@ -3278,7 -3300,9 -3278,7 -3300,9 -3300,9 -3278,7 -3278,7 -3278,7 -3278,7 +3300,9 @@@@@@@@@@ S: Maintaine F: Documentation/ X: Documentation/ABI/ X: Documentation/devicetree/ - - ----X: Documentation/[a-z][a-z]_[A-Z][A-Z]/ + + ++++X: Documentation/acpi + + ++++X: Documentation/power + + ++++X: Documentation/spi T: git git://git.lwn.net/linux-2.6.git docs-next DOUBLETALK DRIVER @@@@@@@@@@ -3402,9 -3426,15 -3402,9 -3426,15 -3426,15 -3402,9 -3402,9 -3402,9 -3402,9 +3426,15 @@@@@@@@@@ T: git git://people.freedesktop.org/~ai S: Supported F: drivers/gpu/drm/rcar-du/ F: drivers/gpu/drm/shmobile/ - - ----F: include/linux/platform_data/rcar-du.h F: include/linux/platform_data/shmob_drm.h + + ++++DRM DRIVERS FOR ROCKCHIP + + ++++M: Mark Yao + + ++++L: dri-devel@lists.freedesktop.org + + ++++S: Maintained + + ++++F: drivers/gpu/drm/rockchip/ + + ++++F: Documentation/devicetree/bindings/video/rockchip* + + ++++ DSBR100 USB FM RADIO DRIVER M: Alexey Klimov L: linux-media@vger.kernel.org @@@@@@@@@@ -3897,7 -3927,7 -3897,7 -3927,7 -3927,7 -3897,7 -3897,7 -3897,7 -3897,7 +3927,7 @@@@@@@@@@ F: drivers/extcon F: Documentation/extcon/ EXYNOS DP DRIVER - - ----M: Jingoo Han + + ++++M: Jingoo Han L: dri-devel@lists.freedesktop.org S: Maintained F: drivers/gpu/drm/exynos/exynos_dp* @@@@@@@@@@ -4324,6 -4354,15 -4324,6 -4354,15 -4354,15 -4324,6 -4324,6 -4324,6 -4324,6 +4354,15 @@@@@@@@@@ S: Supporte F: drivers/phy/ F: include/linux/phy/ + + ++++GENERIC PM DOMAINS + + ++++M: "Rafael J. Wysocki" + + ++++M: Kevin Hilman + + ++++M: Ulf Hansson + + ++++L: linux-pm@vger.kernel.org + + ++++S: Supported + + ++++F: drivers/base/power/domain*.c + + ++++F: include/linux/pm_domain.h + + ++++ GENERIC UIO DRIVER FOR PCI DEVICES M: "Michael S. Tsirkin" L: kvm@vger.kernel.org @@@@@@@@@@ -4337,21 -4376,20 -4337,21 -4376,20 -4376,20 -4337,21 -4337,21 -4337,21 -4337,21 +4376,20 @@@@@@@@@@ F: scripts/get_maintainer.p GFS2 FILE SYSTEM M: Steven Whitehouse + + ++++M: Bob Peterson L: cluster-devel@redhat.com W: http://sources.redhat.com/cluster/ - - ----T: git git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes.git - - ----T: git git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw.git + + ++++T: git git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git S: Supported F: Documentation/filesystems/gfs2*.txt F: fs/gfs2/ F: include/uapi/linux/gfs2_ondisk.h GIGASET ISDN DRIVERS - - ----M: Hansjoerg Lipp - - ----M: Tilman Schmidt + + ++++M: Paul Bolle L: gigaset307x-common@lists.sourceforge.net W: http://gigaset307x.sourceforge.net/ - - ----S: Maintained + + ++++S: Odd Fixes F: Documentation/isdn/README.gigaset F: drivers/isdn/gigaset/ F: include/uapi/linux/gigaset_dev.h @@@@@@@@@@ -4450,7 -4488,7 -4450,7 -4488,7 -4488,7 -4450,7 -4450,7 -4450,7 -4450,7 +4488,7 @@@@@@@@@@ S: Maintaine F: block/partitions/efi.* STK1160 USB VIDEO CAPTURE DRIVER - - ----M: Ezequiel Garcia + + ++++M: Ezequiel Garcia L: linux-media@vger.kernel.org T: git git://linuxtv.org/media_tree.git S: Maintained @@@@@@@@@@ -4498,7 -4536,7 -4498,7 -4536,7 -4536,7 -4498,7 -4498,7 -4498,7 -4498,7 +4536,7 @@@@@@@@@@ M: Jean Delvare L: lm-sensors@lm-sensors.org W: http://www.lm-sensors.org/ - - ----T: quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-hwmon/ + + ++++T: quilt http://jdelvare.nerim.net/devel/linux/jdelvare-hwmon/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git S: Maintained F: Documentation/hwmon/ @@@@@@@@@@ -4605,6 -4643,6 -4605,6 -4643,6 -4643,6 -4605,18 -4605,6 -4605,6 -4605,6 +4643,18 @@@@@@@@@@ F: drivers/hid F: include/linux/hid* F: include/uapi/linux/hid* +++++ +++HID SENSOR HUB DRIVERS +++++ +++M: Jiri Kosina +++++ +++M: Jonathan Cameron +++++ +++M: Srinivas Pandruvada +++++ +++L: linux-input@vger.kernel.org +++++ +++L: linux-iio@vger.kernel.org +++++ +++S: Maintained +++++ +++F: Documentation/hid/hid-sensor* +++++ +++F: drivers/hid/hid-sensor-* +++++ +++F: drivers/iio/*/hid-* +++++ +++F: include/linux/hid-sensor-* +++++ +++ HIGH-RESOLUTION TIMERS, CLOCKEVENTS, DYNTICKS M: Thomas Gleixner L: linux-kernel@vger.kernel.org @@@@@@@@@@ -4993,6 -5031,11 -4993,6 -5031,11 -5031,11 -5005,6 -4993,6 -4993,6 -4993,6 +5043,11 @@@@@@@@@@ W: http://industrypack.sourceforge.ne S: Maintained F: drivers/ipack/ + + ++++INGENIC JZ4780 DMA Driver + + ++++M: Zubair Lutfullah Kakakhel + + ++++S: Maintained + + ++++F: drivers/dma/dma-jz4780.c + + ++++ INTEGRITY MEASUREMENT ARCHITECTURE (IMA) M: Mimi Zohar M: Dmitry Kasatkin @@@@@@@@@@ -5013,17 -5056,19 -5013,17 -5056,19 -5056,19 -5025,17 -5013,17 -5013,17 -5013,17 +5068,19 @@@@@@@@@@ S: Orpha F: drivers/video/fbdev/imsttfb.c INFINIBAND SUBSYSTEM - - ----M: Roland Dreier + + ++++M: Doug Ledford M: Sean Hefty M: Hal Rosenstock L: linux-rdma@vger.kernel.org W: http://www.openfabrics.org/ Q: http://patchwork.kernel.org/project/linux-rdma/list/ - - ----T: git git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git + + ++++T: git git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma.git S: Supported F: Documentation/infiniband/ F: drivers/infiniband/ F: include/uapi/linux/if_infiniband.h + + ++++F: include/uapi/rdma/ + + ++++F: include/rdma/ INOTIFY M: John McCutchan @@@@@@@@@@ -5206,7 -5251,7 -5206,7 -5251,7 -5251,7 -5218,7 -5206,7 -5206,7 -5206,7 +5263,7 @@@@@@@@@@ F: arch/x86/kernel/tboot. INTEL WIRELESS WIMAX CONNECTION 2400 M: Inaky Perez-Gonzalez M: linux-wimax@intel.com - - ----L: wimax@linuxwimax.org (subscribers-only) + + ++++L: wimax@linuxwimax.org (subscribers-only) S: Supported W: http://linuxwimax.org F: Documentation/wimax/README.i2400m @@@@@@@@@@ -5284,6 -5329,13 -5284,6 -5329,13 -5329,13 -5296,6 -5284,6 -5284,6 -5284,6 +5341,13 @@@@@@@@@@ F: drivers/char/ipmi F: include/linux/ipmi* F: include/uapi/linux/ipmi* + + ++++QCOM AUDIO (ASoC) DRIVERS + + ++++M: Patrick Lai + + ++++M: Banajit Goswami + + ++++L: alsa-devel@alsa-project.org (moderated for non-subscribers) + + ++++S: Supported + + ++++F: sound/soc/qcom/ + + ++++ IPS SCSI RAID DRIVER M: Adaptec OEM Raid Solutions L: linux-scsi@vger.kernel.org @@@@@@@@@@ -5769,6 -5821,7 -5769,6 -5821,7 -5821,7 -5781,6 -5769,6 -5769,6 -5769,6 +5833,7 @@@@@@@@@@ F: drivers/scsi/53c700 LED SUBSYSTEM M: Bryan Wu M: Richard Purdie + + ++++M: Jacek Anaszewski L: linux-leds@vger.kernel.org T: git git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds.git S: Maintained @@@@@@@@@@ -5902,7 -5955,7 -5902,7 -5955,7 -5955,7 -5914,7 -5902,7 -5902,7 -5902,7 +5967,7 @@@@@@@@@@ F: arch/powerpc/platforms/512x F: arch/powerpc/platforms/52xx/ LINUX FOR POWERPC EMBEDDED PPC4XX - - ----M: Alistair Popple + + ++++M: Alistair Popple M: Matt Porter W: http://www.penguinppc.org/ L: linuxppc-dev@lists.ozlabs.org @@@@@@@@@@ -6135,16 -6188,6 -6135,16 -6188,6 -6188,6 -6147,16 -6135,16 -6135,16 -6135,16 +6200,6 @@@@@@@@@@ Q: http://patchwork.linuxtv.org/project S: Maintained F: drivers/media/dvb-frontends/m88rs2000* - - ----M88TS2022 MEDIA DRIVER - - ----M: Antti Palosaari - - ----L: linux-media@vger.kernel.org - - ----W: http://linuxtv.org/ - - ----W: http://palosaari.fi/linux/ - - ----Q: http://patchwork.linuxtv.org/project/linux-media/list/ - - ----T: git git://linuxtv.org/anttip/media_tree.git - - ----S: Maintained - - ----F: drivers/media/tuners/m88ts2022* - - ---- MA901 MASTERKIT USB FM RADIO DRIVER M: Alexey Klimov L: linux-media@vger.kernel.org @@@@@@@@@@ -6337,6 -6380,7 -6337,6 -6380,7 -6380,7 -6349,6 -6337,6 -6337,6 -6337,6 +6392,7 @@@@@@@@@@ F: drivers/scsi/megaraid MELLANOX ETHERNET DRIVER (mlx4_en) M: Amir Vadai + + ++++M: Ido Shamay L: netdev@vger.kernel.org S: Supported W: http://www.mellanox.com @@@@@@@@@@ -6374,7 -6418,7 -6374,7 -6418,7 -6418,7 -6386,7 -6374,7 -6374,7 -6374,7 +6430,7 @@@@@@@@@@ S: Supporte F: drivers/watchdog/mena21_wdt.c MEN CHAMELEON BUS (mcb) - - ----M: Johannes Thumshirn + + ++++M: Johannes Thumshirn S: Supported F: drivers/mcb/ F: include/linux/mcb.h @@@@@@@@@@ -6567,6 -6611,7 -6567,6 -6611,7 -6611,7 -6579,6 -6567,6 -6567,6 -6567,6 +6623,7 @@@@@@@@@@ M: Laurent Pinchart + + ++++S: Maintained + + ++++F: include/linux/power/bq2415x_charger.h + + ++++F: include/linux/power/bq27x00_battery.h + + ++++F: include/linux/power/isp1704_charger.h + + ++++F: drivers/power/bq2415x_charger.c + + ++++F: drivers/power/bq27x00_battery.c + + ++++F: drivers/power/isp1704_charger.c + + ++++F: drivers/power/rx51_battery.c + + ++++ NTB DRIVER M: Jon Mason M: Dave Jiang @@@@@@@@@@ -6956,6 -7012,13 -6956,6 -7012,13 -7012,13 -6968,6 -6956,6 -6956,6 -6956,6 +7024,13 @@@@@@@@@@ S: Supporte F: drivers/block/nvme* F: include/linux/nvme.h + + ++++NXP-NCI NFC DRIVER + + ++++M: Clément Perrochaud + + ++++R: Charles Gorand + + ++++L: linux-nfc@lists.01.org (moderated for non-subscribers) + + ++++S: Supported + + ++++F: drivers/nfc/nxp-nci + + ++++ NXP TDA998X DRM DRIVER M: Russell King S: Supported @@@@@@@@@@ -6977,6 -7040,8 -6977,6 -7040,8 -7040,8 -6989,6 -6977,6 -6977,6 -6977,6 +7052,8 @@@@@@@@@@ Q: http://patchwork.kernel.org/project/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git S: Maintained F: arch/arm/*omap*/ + + ++++F: arch/arm/configs/omap1_defconfig + + ++++F: arch/arm/configs/omap2plus_defconfig F: drivers/i2c/busses/i2c-omap.c F: drivers/irqchip/irq-omap-intc.c F: drivers/mfd/*omap*.c @@@@@@@@@@ -7107,6 -7172,7 -7107,6 -7172,7 -7172,7 -7119,6 -7107,6 -7107,6 -7107,6 +7184,7 @@@@@@@@@@ OMAP IMAGING SUBSYSTEM (OMAP3 ISP and O M: Laurent Pinchart L: linux-media@vger.kernel.org S: Maintained + + ++++F: Documentation/devicetree/bindings/media/ti,omap3isp.txt F: drivers/media/platform/omap3isp/ F: drivers/staging/media/omap4iss/ @@@@@@@@@@ -7206,6 -7272,15 -7206,6 -7272,15 -7272,15 -7218,6 -7206,6 -7206,6 -7206,6 +7284,15 @@@@@@@@@@ F: Documentation/devicetree F: arch/*/boot/dts/ F: include/dt-bindings/ + + ++++OPEN FIRMWARE AND DEVICE TREE OVERLAYS + + ++++M: Pantelis Antoniou + + ++++L: devicetree@vger.kernel.org + + ++++S: Maintained + + ++++F: Documentation/devicetree/dynamic-resolution-notes.txt + + ++++F: Documentation/devicetree/overlay-notes.txt + + ++++F: drivers/of/overlay.c + + ++++F: drivers/of/resolver.c + + ++++ OPENRISC ARCHITECTURE M: Jonas Bonn W: http://openrisc.net @@@@@@@@@@ -7491,7 -7566,7 -7491,7 -7566,7 -7566,7 -7503,7 -7491,7 -7491,7 -7491,7 +7578,7 @@@@@@@@@@ S: Maintaine F: drivers/pci/host/*rcar* PCI DRIVER FOR SAMSUNG EXYNOS - - ----M: Jingoo Han + + ++++M: Jingoo Han L: linux-pci@vger.kernel.org L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers) @@@@@@@@@@ -7499,8 -7574,7 -7499,8 -7574,7 -7574,7 -7511,8 -7499,8 -7499,8 -7499,8 +7586,7 @@@@@@@@@@ S: Maintaine F: drivers/pci/host/pci-exynos.c PCI DRIVER FOR SYNOPSIS DESIGNWARE - - ----M: Mohit Kumar - - ----M: Jingoo Han + + ++++M: Jingoo Han L: linux-pci@vger.kernel.org S: Maintained F: drivers/pci/host/*designware* @@@@@@@@@@ -7514,9 -7588,8 -7514,9 -7588,8 -7588,8 -7526,9 -7514,9 -7514,9 -7514,9 +7600,8 @@@@@@@@@@ F: Documentation/devicetree/bindings/pc F: drivers/pci/host/pci-host-generic.c PCIE DRIVER FOR ST SPEAR13XX - - ----M: Mohit Kumar L: linux-pci@vger.kernel.org - - ----S: Maintained + + ++++S: Orphan F: drivers/pci/host/*spear* PCMCIA SUBSYSTEM @@@@@@@@@@ -7923,10 -7996,10 -7923,10 -7996,10 -7996,10 -7935,10 -7923,10 -7923,10 -7923,10 +8008,10 @@@@@@@@@@ L: rtc-linux@googlegroups.co S: Maintained QAT DRIVER - - ----M: Tadeusz Struk - - ----L: qat-linux@intel.com - - ----S: Supported - - ----F: drivers/crypto/qat/ + + ++++M: Tadeusz Struk + + ++++L: qat-linux@intel.com + + ++++S: Supported + + ++++F: drivers/crypto/qat/ QIB DRIVER M: Mike Marciniszyn @@@@@@@@@@ -8077,11 -8150,17 -8077,11 -8150,17 -8150,17 -8089,11 -8077,11 -8077,11 -8077,11 +8162,17 @@@@@@@@@@ S: Maintaine F: drivers/net/wireless/rt2x00/ RAMDISK RAM BLOCK DEVICE DRIVER - - ----M: Nick Piggin + + ++++M: Jens Axboe S: Maintained F: Documentation/blockdev/ramdisk.txt F: drivers/block/brd.c + + ++++PERSISTENT MEMORY DRIVER + + ++++M: Ross Zwisler + + ++++L: linux-nvdimm@lists.01.org + + ++++S: Supported + + ++++F: drivers/block/pmem.c + + ++++ RANDOM NUMBER DRIVER M: "Theodore Ts'o" S: Maintained @@@@@@@@@@ -8153,6 -8232,7 -8153,6 -8232,7 -8232,7 -8165,6 -8153,6 -8153,6 -8153,6 +8244,7 @@@@@@@@@@ X: kernel/torture. REAL TIME CLOCK (RTC) SUBSYSTEM M: Alessandro Zummo + + ++++M: Alexandre Belloni L: rtc-linux@googlegroups.com Q: http://patchwork.ozlabs.org/project/rtc-linux/list/ S: Maintained @@@@@@@@@@ -8364,7 -8444,6 -8364,7 -8444,6 -8444,6 -8376,7 -8364,7 -8364,7 -8364,7 +8456,6 @@@@@@@@@@ F: block/partitions/ibm. S390 NETWORK DRIVERS M: Ursula Braun - - ----M: Frank Blaschka M: linux390@de.ibm.com L: linux-s390@vger.kernel.org W: http://www.ibm.com/developerworks/linux/linux390/ @@@@@@@@@@ -8451,7 -8530,7 -8451,7 -8530,7 -8530,7 -8463,7 -8451,7 -8451,7 -8451,7 +8542,7 @@@@@@@@@@ S: Supporte F: sound/soc/samsung/ SAMSUNG FRAMEBUFFER DRIVER - - ----M: Jingoo Han + + ++++M: Jingoo Han L: linux-fbdev@vger.kernel.org S: Maintained F: drivers/video/fbdev/s3c-fb.c @@@@@@@@@@ -8624,11 -8703,9 -8624,11 -8703,9 -8703,9 -8636,11 -8624,11 -8624,11 -8624,11 +8715,9 @@@@@@@@@@ F: drivers/scsi/sg. F: include/scsi/sg.h SCSI SUBSYSTEM - - ----M: "James E.J. Bottomley" + + ++++M: "James E.J. Bottomley" L: linux-scsi@vger.kernel.org - - ----T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git - - ----T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git - - ----T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-pending-2.6.git + + ++++T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git S: Maintained F: drivers/scsi/ F: include/scsi/ @@@@@@@@@@ -8758,15 -8835,25 -8758,15 -8835,25 -8835,25 -8770,15 -8758,15 -8758,15 -8758,15 +8847,25 @@@@@@@@@@ W: http://www.emulex.co S: Supported F: drivers/scsi/be2iscsi/ - - ----SERVER ENGINES 10Gbps NIC - BladeEngine 2 DRIVER - - ----M: Sathya Perla - - ----M: Subbu Seetharaman - - ----M: Ajit Khaparde + + ++++Emulex 10Gbps NIC BE2, BE3-R, Lancer, Skyhawk-R DRIVER + + ++++M: Sathya Perla + + ++++M: Ajit Khaparde + + ++++M: Padmanabh Ratnakar + + ++++M: Sriharsha Basavapatna L: netdev@vger.kernel.org W: http://www.emulex.com S: Supported F: drivers/net/ethernet/emulex/benet/ + + ++++EMULEX ONECONNECT ROCE DRIVER + + ++++M: Selvin Xavier + + ++++M: Devesh Sharma + + ++++M: Mitesh Ahuja + + ++++L: linux-rdma@vger.kernel.org + + ++++W: http://www.emulex.com + + ++++S: Supported + + ++++F: drivers/infiniband/hw/ocrdma/ + + ++++ SFC NETWORK DRIVER M: Solarflare linux maintainers M: Shradha Shah @@@@@@@@@@ -8940,6 -9027,16 -8940,6 -9027,16 -9027,16 -8952,6 -8940,6 -8940,6 -8940,6 +9039,16 @@@@@@@@@@ T: git git://linuxtv.org/mhadli/v4l-dvb S: Maintained F: drivers/media/platform/am437x/ + + ++++OV2659 OMNIVISION SENSOR DRIVER + + ++++M: Lad, Prabhakar + + ++++L: linux-media@vger.kernel.org + + ++++W: http://linuxtv.org/ + + ++++Q: http://patchwork.linuxtv.org/project/linux-media/list/ + + ++++T: git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git + + ++++S: Maintained + + ++++F: drivers/media/i2c/ov2659.c + + ++++F: include/media/ov2659.h + + ++++ SIS 190 ETHERNET DRIVER M: Francois Romieu L: netdev@vger.kernel.org @@@@@@@@@@ -9840,7 -9937,7 -9840,7 -9937,7 -9937,7 -9852,7 -9840,7 -9840,7 -9840,7 +9949,7 @@@@@@@@@@ F: include/linux/wl12xx. TIPC NETWORK LAYER M: Jon Maloy - - ----M: Allan Stephens + + ++++M: Ying Xue L: netdev@vger.kernel.org (core kernel code) L: tipc-discussion@lists.sourceforge.net (user apps, general discussion) W: http://tipc.sourceforge.net/ @@@@@@@@@@ -9889,10 -9986,23 -9889,10 -9986,23 -9986,23 -9901,10 -9889,10 -9889,10 -9889,10 +9998,23 @@@@@@@@@@ S: Maintaine F: drivers/platform/x86/topstar-laptop.c TOSHIBA ACPI EXTRAS DRIVER + + ++++M: Azael Avalos L: platform-driver-x86@vger.kernel.org - - ----S: Orphan + + ++++S: Maintained F: drivers/platform/x86/toshiba_acpi.c + + ++++TOSHIBA BLUETOOTH DRIVER + + ++++M: Azael Avalos + + ++++L: platform-driver-x86@vger.kernel.org + + ++++S: Maintained + + ++++F: drivers/platform/x86/toshiba_bluetooth.c + + ++++ + + ++++TOSHIBA HDD ACTIVE PROTECTION SENSOR DRIVER + + ++++M: Azael Avalos + + ++++L: platform-driver-x86@vger.kernel.org + + ++++S: Maintained + + ++++F: drivers/platform/x86/toshiba_haps.c + + ++++ TOSHIBA SMM DRIVER M: Jonathan Buzzard L: tlinux-users@tce.toshiba-dme.co.jp @@@@@@@@@@ -9944,6 -10054,7 -9944,6 -10054,7 -10054,7 -9956,6 -9944,6 -9944,6 -9944,6 +10066,7 @@@@@@@@@@ F: drivers/media/pci/tw68 TPM DEVICE DRIVER M: Peter Huewe M: Marcel Selhorst + + ++++R: Jason Gunthorpe W: http://tpmdd.sourceforge.net L: tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers) Q: git git://github.com/PeterHuewe/linux-tpmdd.git @@@@@@@@@@ -10097,11 -10208,11 -10097,11 -10208,11 -10208,11 -10109,11 -10097,11 -10097,11 -10097,11 +10220,11 @@@@@@@@@@ F: include/linux/cdrom. F: include/uapi/linux/cdrom.h UNISYS S-PAR DRIVERS - - ----M: Benjamin Romer - - ----M: David Kershner - - ----L: sparmaintainer@unisys.com (Unisys internal) - - ----S: Supported - - ----F: drivers/staging/unisys/ + + ++++M: Benjamin Romer + + ++++M: David Kershner + + ++++L: sparmaintainer@unisys.com (Unisys internal) + + ++++S: Supported + + ++++F: drivers/staging/unisys/ UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER M: Vinayak Holikatti @@@@@@@@@@ -10448,7 -10559,6 -10448,7 -10559,6 -10559,6 -10460,7 -10448,7 -10448,7 -10448,7 +10571,6 @@@@@@@@@@ F: include/linux/virtio_console. F: include/uapi/linux/virtio_console.h VIRTIO CORE, NET AND BLOCK DRIVERS - - ----M: Rusty Russell M: "Michael S. Tsirkin" L: virtualization@lists.linux-foundation.org S: Maintained @@@@@@@@@@ -10468,6 -10578,12 -10468,6 -10578,12 -10578,12 -10480,6 -10468,6 -10468,6 -10468,6 +10590,12 @@@@@@@@@@ S: Maintaine F: drivers/vhost/ F: include/uapi/linux/vhost.h + + ++++VIRTIO INPUT DRIVER + + ++++M: Gerd Hoffmann + + ++++S: Maintained + + ++++F: drivers/virtio/virtio_input.c + + ++++F: include/uapi/linux/virtio_input.h + + ++++ VIA RHINE NETWORK DRIVER M: Roger Luethi S: Maintained @@@@@@@@@@ -10543,6 -10659,14 -10543,6 -10659,14 -10659,14 -10555,6 -10543,6 -10543,6 -10543,6 +10671,14 @@@@@@@@@@ L: linux-kernel@vger.kernel.or S: Maintained F: drivers/misc/vmw_balloon.c + + ++++VMWARE VMMOUSE SUBDRIVER + + ++++M: "VMware Graphics" + + ++++M: "VMware, Inc." + + ++++L: linux-input@vger.kernel.org + + ++++S: Maintained + + ++++F: drivers/input/mouse/vmmouse.c + + ++++F: drivers/input/mouse/vmmouse.h + + ++++ VMWARE VMXNET3 ETHERNET DRIVER M: Shreyas Bhatewara M: "VMware, Inc." @@@@@@@@@@ -10658,7 -10782,7 -10658,7 -10782,7 -10782,7 -10670,7 -10658,7 -10658,7 -10658,7 +10794,7 @@@@@@@@@@ F: drivers/media/rc/winbond-cir. WIMAX STACK M: Inaky Perez-Gonzalez M: linux-wimax@intel.com - - ----L: wimax@linuxwimax.org (subscribers-only) + + ++++L: wimax@linuxwimax.org (subscribers-only) S: Supported W: http://linuxwimax.org F: Documentation/wimax/README.wimax @@@@@@@@@@ -10868,6 -10992,16 -10868,6 -10992,16 -10992,16 -10880,6 -10868,6 -10868,6 -10868,6 +11004,16 @@@@@@@@@@ L: linux-serial@vger.kernel.or S: Maintained F: drivers/tty/serial/uartlite.c + + ++++XILINX VIDEO IP CORES + + ++++M: Hyun Kwon + + ++++M: Laurent Pinchart + + ++++L: linux-media@vger.kernel.org + + ++++T: git git://linuxtv.org/media_tree.git + + ++++S: Supported + + ++++F: Documentation/devicetree/bindings/media/xilinx/ + + ++++F: drivers/media/platform/xilinx/ + + ++++F: include/uapi/linux/xilinx-v4l2-controls.h + + ++++ XILLYBUS DRIVER M: Eli Billauer L: linux-kernel@vger.kernel.org @@@@@@@@@@ -10932,6 -11066,7 -10932,6 -11066,7 -11066,7 -10944,6 -10932,6 -10932,6 -10932,6 +11078,7 @@@@@@@@@@ F: drivers/media/pci/zoran ZRAM COMPRESSED RAM BLOCK DEVICE DRVIER M: Minchan Kim M: Nitin Gupta + + ++++R: Sergey Senozhatsky L: linux-kernel@vger.kernel.org S: Maintained F: drivers/block/zram/ @@@@@@@@@@ -10949,6 -11084,7 -10949,6 -11084,7 -11084,7 -10961,6 -10949,6 -10949,6 -10949,6 +11096,7 @@@@@@@@@@ L: linux-mm@kvack.or S: Maintained F: mm/zsmalloc.c F: include/linux/zsmalloc.h + + ++++F: Documentation/vm/zsmalloc.txt ZSWAP COMPRESSED SWAP CACHING M: Seth Jennings diff --combined drivers/hid/hid-core.c index d74f0fb14b81,722a925795a2,c2baf8c7c6bb,722a925795a2,722a925795a2,722a925795a2,1ec1e4da80e3,a64f8626bdf6,722a925795a2..157c62775053 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@@@@@@@@@ -706,8 -706,7 -706,7 -706,7 -706,7 -706,7 -706,7 -706,7 -706,7 +706,8 @@@@@@@@@@ static void hid_scan_collection(struct if (hid->vendor == USB_VENDOR_ID_MICROSOFT && (hid->product == USB_DEVICE_ID_MS_TYPE_COVER_3 || -------- hid->product == USB_DEVICE_ID_MS_TYPE_COVER_3_JP) && ++++++++ hid->product == USB_DEVICE_ID_MS_TYPE_COVER_3_JP || ++++++++ hid->product == USB_DEVICE_ID_MS_POWER_COVER) && hid->group == HID_GROUP_MULTITOUCH) hid->group = HID_GROUP_GENERIC; @@@@@@@@@@ -1062,13 -1061,13 -1061,13 -1061,13 -1061,13 -1061,13 -1061,13 -1061,13 -1061,13 +1062,13 @@@@@@@@@@ static u32 s32ton(__s32 value, unsigne * Search linux-kernel and linux-usb-devel archives for "hid-core extract". */ --------static __u32 extract(const struct hid_device *hid, __u8 *report, ++++++++__u32 hid_field_extract(const struct hid_device *hid, __u8 *report, unsigned offset, unsigned n) { u64 x; if (n > 32) -------- hid_warn(hid, "extract() called with n (%d) > 32! (%s)\n", ++++++++ hid_warn(hid, "hid_field_extract() called with n (%d) > 32! (%s)\n", n, current->comm); report += offset >> 3; /* adjust byte index */ @@@@@@@@@@ -1077,7 -1076,6 -1076,6 -1076,6 -1076,6 -1076,6 -1076,6 -1076,6 -1076,6 +1077,7 @@@@@@@@@@ x = (x >> offset) & ((1ULL << n) - 1); /* extract bit field */ return (u32) x; } ++++++++EXPORT_SYMBOL_GPL(hid_field_extract); /* * "implement" : set bits in a little endian bit stream. @@@@@@@@@@ -1223,9 -1221,9 -1221,9 -1221,9 -1221,9 -1221,9 -1221,9 -1221,9 -1221,9 +1223,9 @@@@@@@@@@ static void hid_input_field(struct hid_ for (n = 0; n < count; n++) { value[n] = min < 0 ? -------- snto32(extract(hid, data, offset + n * size, size), -------- size) : -------- extract(hid, data, offset + n * size, size); ++++++++ snto32(hid_field_extract(hid, data, offset + n * size, ++++++++ size), size) : ++++++++ hid_field_extract(hid, data, offset + n * size, size); /* Ignore report if ErrorRollOver */ if (!(field->flags & HID_MAIN_ITEM_VARIABLE) && @@@@@@@@@@ -1853,6 -1851,6 -1851,7 -1851,6 -1851,6 -1851,6 -1851,6 -1851,6 -1851,6 +1853,7 @@@@@@@@@@ static const struct hid_device_id hid_h { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_TPKBD) }, { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_CUSBKBD) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_CBTKBD) }, ++ ++++++ { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_TPPRODOCK) }, #endif { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_MX3000_RECEIVER) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER) }, @@@@@@@@@@ -1903,7 -1901,6 -1902,6 -1901,6 -1901,6 -1901,6 -1901,6 -1901,6 -1901,6 +1904,7 @@@@@@@@@@ { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_OFFICE_KB) }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3) }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3_JP) }, ++++++++ { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER) }, { HID_USB_DEVICE(USB_VENDOR_ID_MONTEREY, USB_DEVICE_ID_GENIUS_KB29E) }, { HID_USB_DEVICE(USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL) }, { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN) }, @@@@@@@@@@ -1962,9 -1959,9 -1960,9 -1959,9 -1959,9 -1959,9 -1959,9 -1959,12 -1959,9 +1963,12 @@@@@@@@@@ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SMK, USB_DEVICE_ID_SMK_PS3_BDREMOTE) }, { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_BUZZ_CONTROLLER) }, { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_WIRELESS_BUZZ_CONTROLLER) }, +++++++ + { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_MOTION_CONTROLLER) }, +++++++ + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_MOTION_CONTROLLER) }, +++++++ + { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_NAVIGATION_CONTROLLER) }, +++++++ + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_NAVIGATION_CONTROLLER) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_BDREMOTE) }, { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER) }, ------- - { 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_PS4_CONTROLLER) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS4_CONTROLLER) }, @@@@@@@@@@ -2000,6 -1997,6 -1998,6 -1997,6 -1997,6 -1997,6 -1997,7 -2000,6 -1997,6 +2004,7 @@@@@@@@@@ { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SUPER_JOY_BOX_3_PRO) }, { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SUPER_DUAL_BOX_PRO) }, { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SUPER_JOY_BOX_5_PRO) }, ++++++ ++ { HID_USB_DEVICE(USB_VENDOR_ID_PLAYDOTCOM, USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII) }, { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_SLIM_TABLET_5_8_INCH) }, { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_SLIM_TABLET_12_1_INCH) }, { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_Q_PAD) }, @@@@@@@@@@ -2268,6 -2265,14 -2266,14 -2265,14 -2265,14 -2265,14 -2266,14 -2268,14 -2265,14 +2273,6 @@@@@@@@@@ static const struct hid_device_id hid_i { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0001) }, { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0002) }, { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0004) }, -------- { HID_USB_DEVICE(USB_VENDOR_ID_GLAB, USB_DEVICE_ID_4_PHIDGETSERVO_30) }, -------- { HID_USB_DEVICE(USB_VENDOR_ID_GLAB, USB_DEVICE_ID_1_PHIDGETSERVO_30) }, -------- { HID_USB_DEVICE(USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_0_4_IF_KIT) }, -------- { HID_USB_DEVICE(USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_16_16_IF_KIT) }, -------- { HID_USB_DEVICE(USB_VENDOR_ID_GLAB, USB_DEVICE_ID_8_8_8_IF_KIT) }, -------- { HID_USB_DEVICE(USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_8_7_IF_KIT) }, -------- { HID_USB_DEVICE(USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_8_8_IF_KIT) }, -------- { HID_USB_DEVICE(USB_VENDOR_ID_GLAB, USB_DEVICE_ID_PHIDGET_MOTORCONTROL) }, { HID_USB_DEVICE(USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_SUPER_Q2) }, { HID_USB_DEVICE(USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_GOGOPEN) }, { HID_USB_DEVICE(USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_PENPOWER) }, @@@@@@@@@@ -2394,6 -2399,14 -2400,14 -2399,14 -2399,14 -2399,14 -2400,14 -2402,14 -2399,14 +2399,6 @@@@@@@@@@ { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_WTP) }, { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_DPAD) }, #endif -------- { HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO) }, -------- { HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_GOTEMP) }, -------- { HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_SKIP) }, -------- { HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_CYCLOPS) }, -------- { HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LCSPEC) }, -------- { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_4_PHIDGETSERVO_20) }, -------- { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_1_PHIDGETSERVO_20) }, -------- { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_8_8_4_IF_KIT) }, { HID_USB_DEVICE(USB_VENDOR_ID_YEALINK, USB_DEVICE_ID_YEALINK_P1K_P4K_B2K) }, { HID_USB_DEVICE(USB_VENDOR_ID_RISO_KAGAKU, USB_DEVICE_ID_RI_KA_WEBMAIL) }, { } diff --combined drivers/hid/hid-ids.h index 36da5a41a44a,7ce93d927f62,1649436b9694,7ce93d927f62,7ce93d927f62,41f167e4d75f,41f167e4d75f,14fcb1103fb3,41f167e4d75f..b04b0820d816 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@@@@@@@@@ -164,7 -164,7 -164,6 -164,7 -164,7 -164,6 -164,6 -164,6 -164,6 +164,7 @@@@@@@@@@ #define USB_DEVICE_ID_ATEN_2PORTKVM 0x2204 #define USB_DEVICE_ID_ATEN_4PORTKVM 0x2205 #define USB_DEVICE_ID_ATEN_4PORTKVMC 0x2208 + ++++#define USB_DEVICE_ID_ATEN_CS682 0x2213 #define USB_VENDOR_ID_ATMEL 0x03eb #define USB_DEVICE_ID_ATMEL_MULTITOUCH 0x211c @@@@@@@@@@ -227,7 -227,6 -226,6 -227,6 -227,6 -226,6 -226,6 -226,6 -226,6 +227,7 @@@@@@@@@@ #define USB_DEVICE_ID_CHICONY_TACTICAL_PAD 0x0418 #define USB_DEVICE_ID_CHICONY_MULTI_TOUCH 0xb19d #define USB_DEVICE_ID_CHICONY_WIRELESS 0x0618 ++++++++#define USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE 0x1053 #define USB_DEVICE_ID_CHICONY_WIRELESS2 0x1123 #define USB_DEVICE_ID_CHICONY_AK1D 0x1125 @@@@@@@@@@ -364,6 -363,16 -362,16 -363,16 -363,16 -362,16 -362,16 -362,16 -362,16 +364,6 @@@@@@@@@@ #define USB_DEVICE_ID_GENERAL_TOUCH_WIN8_PIT_010A 0x010a #define USB_DEVICE_ID_GENERAL_TOUCH_WIN8_PIT_E100 0xe100 --------#define USB_VENDOR_ID_GLAB 0x06c2 --------#define USB_DEVICE_ID_4_PHIDGETSERVO_30 0x0038 --------#define USB_DEVICE_ID_1_PHIDGETSERVO_30 0x0039 --------#define USB_DEVICE_ID_0_0_4_IF_KIT 0x0040 --------#define USB_DEVICE_ID_0_16_16_IF_KIT 0x0044 --------#define USB_DEVICE_ID_8_8_8_IF_KIT 0x0045 --------#define USB_DEVICE_ID_0_8_7_IF_KIT 0x0051 --------#define USB_DEVICE_ID_0_8_8_IF_KIT 0x0053 --------#define USB_DEVICE_ID_PHIDGET_MOTORCONTROL 0x0058 -------- #define USB_VENDOR_ID_GOODTOUCH 0x1aad #define USB_DEVICE_ID_GOODTOUCH_000f 0x000f @@@@@@@@@@ -577,6 -586,6 -585,7 -586,6 -586,6 -585,6 -585,6 -585,6 -585,6 +577,7 @@@@@@@@@@ #define USB_DEVICE_ID_LENOVO_TPKBD 0x6009 #define USB_DEVICE_ID_LENOVO_CUSBKBD 0x6047 #define USB_DEVICE_ID_LENOVO_CBTKBD 0x6048 ++ ++++++#define USB_DEVICE_ID_LENOVO_TPPRODOCK 0x6067 #define USB_VENDOR_ID_LG 0x1fd2 #define USB_DEVICE_ID_LG_MULTITOUCH 0x0064 @@@@@@@@@@ -664,7 -673,6 -673,6 -673,6 -673,6 -672,6 -672,6 -672,6 -672,6 +665,7 @@@@@@@@@@ #define USB_DEVICE_ID_MS_TYPE_COVER_2 0x07a9 #define USB_DEVICE_ID_MS_TYPE_COVER_3 0x07dc #define USB_DEVICE_ID_MS_TYPE_COVER_3_JP 0x07dd ++++++++#define USB_DEVICE_ID_MS_POWER_COVER 0x07da #define USB_VENDOR_ID_MOJO 0x8282 #define USB_DEVICE_ID_RETRO_ADAPTER 0x3201 @@@@@@@@@@ -844,6 -852,6 -852,6 -852,6 -852,6 -851,6 -851,6 -851,7 -851,6 +845,7 @@@@@@@@@@ #define USB_DEVICE_ID_SONY_PS3_BDREMOTE 0x0306 #define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268 #define USB_DEVICE_ID_SONY_PS4_CONTROLLER 0x05c4 +++++++ +#define USB_DEVICE_ID_SONY_MOTION_CONTROLLER 0x03d5 #define USB_DEVICE_ID_SONY_NAVIGATION_CONTROLLER 0x042f #define USB_DEVICE_ID_SONY_BUZZ_CONTROLLER 0x0002 #define USB_DEVICE_ID_SONY_WIRELESS_BUZZ_CONTROLLER 0x1000 @@@@@@@@@@ -950,6 -958,13 -958,13 -958,13 -958,13 -957,13 -957,13 -958,13 -957,13 +952,6 @@@@@@@@@@ #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 --------#define USB_DEVICE_ID_VERNIER_SKIP 0x0003 --------#define USB_DEVICE_ID_VERNIER_CYCLOPS 0x0004 --------#define USB_DEVICE_ID_VERNIER_LCSPEC 0x0006 -------- #define USB_VENDOR_ID_VTL 0x0306 #define USB_DEVICE_ID_VTL_MULTITOUCH_FF3F 0xff3f @@@@@@@@@@ -968,6 -983,9 -983,9 -983,9 -983,9 -982,9 -982,9 -983,9 -982,9 +970,6 @@@@@@@@@@ #define USB_VENDOR_ID_WISEGROUP 0x0925 #define USB_DEVICE_ID_SMARTJOY_PLUS 0x0005 --------#define USB_DEVICE_ID_1_PHIDGETSERVO_20 0x8101 --------#define USB_DEVICE_ID_4_PHIDGETSERVO_20 0x8104 --------#define USB_DEVICE_ID_8_8_4_IF_KIT 0x8201 #define USB_DEVICE_ID_SUPER_JOY_BOX_3 0x8888 #define USB_DEVICE_ID_QUAD_USB_JOYPAD 0x8800 #define USB_DEVICE_ID_DUAL_USB_JOYPAD 0x8866 @@@@@@@@@@ -1021,11 -1039,4 -1039,4 -1039,4 -1039,4 -1038,4 -1038,4 -1039,4 -1038,4 +1023,11 @@@@@@@@@@ #define USB_VENDOR_ID_RISO_KAGAKU 0x1294 /* Riso Kagaku Corp. */ #define USB_DEVICE_ID_RI_KA_WEBMAIL 0x1320 /* Webmail Notifier */ ++++++++#define USB_VENDOR_ID_MULTIPLE_1781 0x1781 ++++++++#define USB_DEVICE_ID_RAPHNET_4NES4SNES_OLD 0x0a8d ++++++++ ++++++++#define USB_VENDOR_ID_DRACAL_RAPHNET 0x289b ++++++++#define USB_DEVICE_ID_RAPHNET_2NES2SNES 0x0002 ++++++++#define USB_DEVICE_ID_RAPHNET_4NES4SNES 0x0003 ++++++++ #endif diff --combined drivers/hid/hid-lenovo.c index 64ed3e3f227a,c4c3f0952521,4e291d5ad645,c4c3f0952521,c4c3f0952521,c4c3f0952521,c4c3f0952521,c4c3f0952521,c4c3f0952521..4f59bffd0205 --- a/drivers/hid/hid-lenovo.c +++ b/drivers/hid/hid-lenovo.c @@@@@@@@@@ -43,6 -43,6 -43,35 -43,6 -43,6 -43,6 -43,6 -43,6 -43,6 +43,35 @@@@@@@@@@ struct lenovo_drvdata_cptkbd #define map_key_clear(c) hid_map_usage_clear(hi, usage, bit, max, EV_KEY, (c)) ++ ++++++static const __u8 lenovo_pro_dock_need_fixup_collection[] = { ++ ++++++ 0x05, 0x88, /* Usage Page (Vendor Usage Page 0x88) */ ++ ++++++ 0x09, 0x01, /* Usage (Vendor Usage 0x01) */ ++ ++++++ 0xa1, 0x01, /* Collection (Application) */ ++ ++++++ 0x85, 0x04, /* Report ID (4) */ ++ ++++++ 0x19, 0x00, /* Usage Minimum (0) */ ++ ++++++ 0x2a, 0xff, 0xff, /* Usage Maximum (65535) */ ++ ++++++}; ++ ++++++ ++ ++++++static __u8 *lenovo_report_fixup(struct hid_device *hdev, __u8 *rdesc, ++ ++++++ unsigned int *rsize) ++ ++++++{ ++ ++++++ switch (hdev->product) { ++ ++++++ case USB_DEVICE_ID_LENOVO_TPPRODOCK: ++ ++++++ /* the fixups that need to be done: ++ ++++++ * - get a reasonable usage max for the vendor collection ++ ++++++ * 0x8801 from the report ID 4 ++ ++++++ */ ++ ++++++ if (*rsize >= 153 && ++ ++++++ memcmp(&rdesc[140], lenovo_pro_dock_need_fixup_collection, ++ ++++++ sizeof(lenovo_pro_dock_need_fixup_collection)) == 0) { ++ ++++++ rdesc[151] = 0x01; ++ ++++++ rdesc[152] = 0x00; ++ ++++++ } ++ ++++++ break; ++ ++++++ } ++ ++++++ return rdesc; ++ ++++++} ++ ++++++ static int lenovo_input_mapping_tpkbd(struct hid_device *hdev, struct hid_input *hi, struct hid_field *field, struct hid_usage *usage, unsigned long **bit, int *max) @@@@@@@@@@ -599,8 -599,7 -628,7 -599,7 -599,7 -599,7 -599,7 -599,7 -599,7 +628,8 @@@@@@@@@@ static int lenovo_probe_tpkbd(struct hi GFP_KERNEL); if (data_pointer == NULL) { hid_err(hdev, "Could not allocate memory for driver data\n"); -------- return -ENOMEM; ++++++++ ret = -ENOMEM; ++++++++ goto err; } // set same default values as windows driver @@@@@@@@@@ -611,8 -610,7 -639,7 -610,7 -610,7 -610,7 -610,7 -610,7 -610,7 +640,8 @@@@@@@@@@ name_micmute = devm_kzalloc(&hdev->dev, name_sz, GFP_KERNEL); if (name_mute == NULL || name_micmute == NULL) { hid_err(hdev, "Could not allocate memory for led data\n"); -------- return -ENOMEM; ++++++++ ret = -ENOMEM; ++++++++ goto err; } snprintf(name_mute, name_sz, "%s:amber:mute", dev_name(dev)); snprintf(name_micmute, name_sz, "%s:amber:micmute", dev_name(dev)); @@@@@@@@@@ -636,9 -634,6 -663,6 -634,6 -634,6 -634,6 -634,6 -634,6 -634,6 +665,9 @@@@@@@@@@ lenovo_features_set_tpkbd(hdev); return 0; ++++++++err: ++++++++ sysfs_remove_group(&hdev->dev.kobj, &lenovo_attr_group_tpkbd); ++++++++ return ret; } static int lenovo_probe_cptkbd(struct hid_device *hdev) @@@@@@@@@@ -767,10 -762,10 -791,29 -762,10 -762,10 -762,10 -762,10 -762,10 -762,10 +796,29 @@@@@@@@@@ static void lenovo_remove(struct hid_de hid_hw_stop(hdev); } ++ ++++++static void lenovo_input_configured(struct hid_device *hdev, ++ ++++++ struct hid_input *hi) ++ ++++++{ ++ ++++++ switch (hdev->product) { ++ ++++++ case USB_DEVICE_ID_LENOVO_TPKBD: ++ ++++++ case USB_DEVICE_ID_LENOVO_CUSBKBD: ++ ++++++ case USB_DEVICE_ID_LENOVO_CBTKBD: ++ ++++++ if (test_bit(EV_REL, hi->input->evbit)) { ++ ++++++ /* set only for trackpoint device */ ++ ++++++ __set_bit(INPUT_PROP_POINTER, hi->input->propbit); ++ ++++++ __set_bit(INPUT_PROP_POINTING_STICK, ++ ++++++ hi->input->propbit); ++ ++++++ } ++ ++++++ break; ++ ++++++ } ++ ++++++} ++ ++++++ ++ ++++++ static const struct hid_device_id lenovo_devices[] = { { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_TPKBD) }, { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_CUSBKBD) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_CBTKBD) }, ++ ++++++ { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_TPPRODOCK) }, { } }; @@@@@@@@@@ -779,10 -774,10 -822,12 -774,10 -774,10 -774,10 -774,10 -774,10 -774,10 +827,12 @@@@@@@@@@ MODULE_DEVICE_TABLE(hid, lenovo_devices static struct hid_driver lenovo_driver = { .name = "lenovo", .id_table = lenovo_devices, ++ ++++++ .input_configured = lenovo_input_configured, .input_mapping = lenovo_input_mapping, .probe = lenovo_probe, .remove = lenovo_remove, .raw_event = lenovo_raw_event, ++ ++++++ .report_fixup = lenovo_report_fixup, }; module_hid_driver(lenovo_driver); diff --combined drivers/hid/hid-rmi.c index 2f3e51d45f0c,368ffdf2c0a3,368ffdf2c0a3,368ffdf2c0a3,721f7f90a157,368ffdf2c0a3,368ffdf2c0a3,368ffdf2c0a3,368ffdf2c0a3..4cf80bb276dc --- a/drivers/hid/hid-rmi.c +++ b/drivers/hid/hid-rmi.c @@@@@@@@@@ -29,9 -29,9 -29,9 -29,9 -29,9 -29,9 -29,9 -29,9 -29,9 +29,9 @@@@@@@@@@ #define RMI_SET_RMI_MODE_REPORT_ID 0x0f /* Feature Report */ /* flags */ --------#define RMI_READ_REQUEST_PENDING BIT(0) --------#define RMI_READ_DATA_PENDING BIT(1) --------#define RMI_STARTED BIT(2) ++++++++#define RMI_READ_REQUEST_PENDING 0 ++++++++#define RMI_READ_DATA_PENDING 1 ++++++++#define RMI_STARTED 2 /* device flags */ #define RMI_DEVICE BIT(0) @@@@@@@@@@ -1013,6 -1013,6 -1013,6 -1013,6 -1013,7 -1013,6 -1013,6 -1013,6 -1013,6 +1013,7 @@@@@@@@@@ static int rmi_populate_f30(struct hid_ static int rmi_populate(struct hid_device *hdev) { ++++ ++++ struct rmi_data *data = hid_get_drvdata(hdev); int ret; ret = rmi_scan_pdt(hdev); @@@@@@@@@@ -1033,9 -1033,9 -1033,9 -1033,9 -1034,11 -1033,9 -1033,9 -1033,9 -1033,9 +1034,11 @@@@@@@@@@ return ret; } ---- ---- ret = rmi_populate_f30(hdev); ---- ---- if (ret) ---- ---- hid_warn(hdev, "Error while initializing F30 (%d).\n", ret); ++++ ++++ if (!(data->device_flags & RMI_DEVICE_HAS_PHYS_BUTTONS)) { ++++ ++++ ret = rmi_populate_f30(hdev); ++++ ++++ if (ret) ++++ ++++ hid_warn(hdev, "Error while initializing F30 (%d).\n", ret); ++++ ++++ } return 0; } diff --combined drivers/hid/i2c-hid/i2c-hid.c index cadec6ac77c1,0dfb5d170af2,ab4dd952b6ba,92d6cdf02460,92d6cdf02460,ab4dd952b6ba,ab4dd952b6ba,ab4dd952b6ba,ab4dd952b6ba..f77469d4edfb --- a/drivers/hid/i2c-hid/i2c-hid.c +++ b/drivers/hid/i2c-hid/i2c-hid.c @@@@@@@@@@ -42,9 -42,9 -42,9 -42,9 -42,9 -42,9 -42,9 -42,9 -42,9 +42,9 @@@@@@@@@@ #include /* flags */ --------#define I2C_HID_STARTED (1 << 0) --------#define I2C_HID_RESET_PENDING (1 << 1) --------#define I2C_HID_READ_PENDING (1 << 2) ++++++++#define I2C_HID_STARTED 0 ++++++++#define I2C_HID_RESET_PENDING 1 ++++++++#define I2C_HID_READ_PENDING 2 #define I2C_HID_PWR_ON 0x00 #define I2C_HID_PWR_SLEEP 0x01 @@@@@@@@@@ -862,7 -862,7 -862,6 -862,7 -862,7 -862,6 -862,6 -862,6 -862,6 +862,7 @@@@@@@@@@ static int i2c_hid_acpi_pdata(struct i2 union acpi_object *obj; struct acpi_device *adev; acpi_handle handle; + ++++ int ret; handle = ACPI_HANDLE(&client->dev); if (!handle || acpi_bus_get_device(handle, &adev)) @@@@@@@@@@ -878,9 -878,9 -877,7 -878,9 -878,9 -877,7 -877,7 -877,7 -877,7 +878,9 @@@@@@@@@@ pdata->hid_descriptor_address = obj->integer.value; ACPI_FREE(obj); - ---- return acpi_dev_add_driver_gpios(adev, i2c_hid_acpi_gpios); + ++++ /* GPIOs are optional */ + ++++ ret = acpi_dev_add_driver_gpios(adev, i2c_hid_acpi_gpios); + ++++ return ret < 0 && ret != -ENXIO ? ret : 0; } static const struct acpi_device_id i2c_hid_acpi_match[] = { @@@@@@@@@@ -1019,7 -1019,6 -1016,7 -1019,7 -1019,7 -1016,7 -1016,7 -1016,7 -1016,7 +1019,6 @@@@@@@@@@ static int i2c_hid_probe(struct i2c_cli hid->driver_data = client; hid->ll_driver = &i2c_hid_ll_driver; hid->dev.parent = &client->dev; - ------- ACPI_COMPANION_SET(&hid->dev, ACPI_COMPANION(&client->dev)); hid->bus = BUS_I2C; hid->version = le16_to_cpu(ihid->hdesc.bcdVersion); hid->vendor = le16_to_cpu(ihid->hdesc.wVendorID); diff --combined drivers/hid/usbhid/hid-quirks.c index 8e2ef829168d,4696895eb708,a775143e6265,4696895eb708,4696895eb708,a775143e6265,ac12a3615d53,a775143e6265,a775143e6265..53e7de7cb9e2 --- a/drivers/hid/usbhid/hid-quirks.c +++ b/drivers/hid/usbhid/hid-quirks.c @@@@@@@@@@ -52,7 -52,7 -52,7 -52,7 -52,7 -52,7 -52,6 -52,7 -52,7 +52,6 @@@@@@@@@@ static const struct hid_blacklist { USB_VENDOR_ID_ETURBOTOUCH, USB_DEVICE_ID_ETURBOTOUCH_2968, HID_QUIRK_MULTI_INPUT }, { USB_VENDOR_ID_GREENASIA, USB_DEVICE_ID_GREENASIA_DUAL_USB_JOYPAD, HID_QUIRK_MULTI_INPUT }, { USB_VENDOR_ID_PANTHERLORD, USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK, HID_QUIRK_MULTI_INPUT | HID_QUIRK_SKIP_OUTPUT_REPORTS }, ------ -- { USB_VENDOR_ID_PLAYDOTCOM, USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII, HID_QUIRK_MULTI_INPUT }, { USB_VENDOR_ID_TOUCHPACK, USB_DEVICE_ID_TOUCHPACK_RTS, HID_QUIRK_MULTI_INPUT }, { USB_VENDOR_ID_AIREN, USB_DEVICE_ID_AIREN_SLIMPLUS, HID_QUIRK_NOGET }, @@@@@@@@@@ -61,7 -61,7 -61,6 -61,7 -61,7 -61,6 -60,6 -61,6 -61,6 +60,7 @@@@@@@@@@ { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_2PORTKVM, HID_QUIRK_NOGET }, { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVM, HID_QUIRK_NOGET }, { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVMC, HID_QUIRK_NOGET }, + ++++ { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS682, HID_QUIRK_NOGET }, { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FIGHTERSTICK, HID_QUIRK_NOGET }, { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_COMBATSTICK, HID_QUIRK_NOGET }, { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FLIGHT_SIM_ECLIPSE_YOKE, HID_QUIRK_NOGET }, @@@@@@@@@@ -70,7 -70,6 -69,6 -70,6 -70,6 -69,6 -68,6 -69,6 -69,6 +69,7 @@@@@@@@@@ { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_PEDALS, HID_QUIRK_NOGET }, { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_3AXIS_5BUTTON_STICK, HID_QUIRK_NOGET }, { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_AXIS_295, HID_QUIRK_NOGET }, ++++++++ { USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE, HID_QUIRK_ALWAYS_POLL }, { USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC, HID_QUIRK_NOGET }, { USB_VENDOR_ID_ELAN, USB_DEVICE_ID_ELAN_TOUCHSCREEN, HID_QUIRK_ALWAYS_POLL }, { USB_VENDOR_ID_ELAN, USB_DEVICE_ID_ELAN_TOUCHSCREEN_009B, HID_QUIRK_ALWAYS_POLL }, @@@@@@@@@@ -90,7 -89,6 -88,6 -89,6 -89,6 -88,6 -87,6 -88,6 -88,6 +89,7 @@@@@@@@@@ { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_NOGET }, { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3, HID_QUIRK_NO_INIT_REPORTS }, { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3_JP, HID_QUIRK_NO_INIT_REPORTS }, ++++++++ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER, HID_QUIRK_NO_INIT_REPORTS }, { USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL, HID_QUIRK_NO_INIT_REPORTS }, { USB_VENDOR_ID_NEXIO, USB_DEVICE_ID_NEXIO_MULTITOUCH_PTI0750, HID_QUIRK_NO_INIT_REPORTS }, { USB_VENDOR_ID_NOVATEK, USB_DEVICE_ID_NOVATEK_MOUSE, HID_QUIRK_NO_INIT_REPORTS }, @@@@@@@@@@ -143,9 -141,6 -140,6 -141,6 -141,6 -140,6 -139,6 -140,6 -140,6 +142,9 @@@@@@@@@@ { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_QUAD_HD, HID_QUIRK_NO_INIT_REPORTS }, { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_TP_V103, HID_QUIRK_NO_INIT_REPORTS }, { USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A096, HID_QUIRK_NO_INIT_INPUT_REPORTS }, ++++++++ { USB_VENDOR_ID_MULTIPLE_1781, USB_DEVICE_ID_RAPHNET_4NES4SNES_OLD, HID_QUIRK_MULTI_INPUT }, ++++++++ { USB_VENDOR_ID_DRACAL_RAPHNET, USB_DEVICE_ID_RAPHNET_2NES2SNES, HID_QUIRK_MULTI_INPUT }, ++++++++ { USB_VENDOR_ID_DRACAL_RAPHNET, USB_DEVICE_ID_RAPHNET_4NES4SNES, HID_QUIRK_MULTI_INPUT }, { 0, 0 } }; diff --combined drivers/hid/wacom_wac.c index adf959dcfa5d,adf959dcfa5d,fa54d3290659,adf959dcfa5d,adf959dcfa5d,fa54d3290659,fa54d3290659,fa54d3290659,d811e878a105..232da89f4e88 --- a/drivers/hid/wacom_wac.c +++ b/drivers/hid/wacom_wac.c @@@@@@@@@@ -69,7 -69,7 -69,7 -69,7 -69,7 -69,7 -69,7 -69,7 -69,7 +69,7 @@@@@@@@@@ static void wacom_notify_battery(struc static int wacom_penpartner_irq(struct wacom_wac *wacom) { unsigned char *data = wacom->data; -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->pen_input; switch (data[0]) { case 1: @@@@@@@@@@ -114,7 -114,7 -114,7 -114,7 -114,7 -114,7 -114,7 -114,7 -114,7 +114,7 @@@@@@@@@@ static int wacom_pl_irq(struct wacom_wa { struct wacom_features *features = &wacom->features; unsigned char *data = wacom->data; -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->pen_input; int prox, pressure; if (data[0] != WACOM_REPORT_PENABLED) { @@@@@@@@@@ -186,7 -186,7 -186,7 -186,7 -186,7 -186,7 -186,7 -186,7 -186,7 +186,7 @@@@@@@@@@ static int wacom_ptu_irq(struct wacom_wac *wacom) { unsigned char *data = wacom->data; -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->pen_input; if (data[0] != WACOM_REPORT_PENABLED) { dev_dbg(input->dev.parent, @@@@@@@@@@ -215,7 -215,7 -215,7 -215,7 -215,7 -215,7 -215,7 -215,7 -215,7 +215,7 @@@@@@@@@@ static int wacom_dtu_irq(struct wacom_wac *wacom) { unsigned char *data = wacom->data; -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->pen_input; int prox = data[1] & 0x20; dev_dbg(input->dev.parent, @@@@@@@@@@ -245,7 -245,7 -245,7 -245,7 -245,7 -245,7 -245,7 -245,7 -245,7 +245,7 @@@@@@@@@@ static int wacom_dtus_irq(struct wacom_wac *wacom) { char *data = wacom->data; -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->pen_input; unsigned short prox, pressure = 0; if (data[0] != WACOM_REPORT_DTUS && data[0] != WACOM_REPORT_DTUSPAD) { @@@@@@@@@@ -297,7 -297,7 -297,7 -297,7 -297,7 -297,7 -297,7 -297,7 -297,7 +297,7 @@@@@@@@@@ static int wacom_graphire_irq(struct wa { struct wacom_features *features = &wacom->features; unsigned char *data = wacom->data; -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->pen_input; struct input_dev *pad_input = wacom->pad_input; int battery_capacity, ps_connected; int prox; @@@@@@@@@@ -464,7 -464,7 -464,7 -464,7 -464,7 -464,7 -464,7 -464,7 -464,7 +464,7 @@@@@@@@@@ static int wacom_intuos_inout(struct wa { struct wacom_features *features = &wacom->features; unsigned char *data = wacom->data; -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->pen_input; int idx = 0; /* tool number */ @@@@@@@@@@ -649,7 -649,7 -649,7 -649,7 -649,7 -649,7 -649,7 -649,7 -649,7 +649,7 @@@@@@@@@@ static void wacom_intuos_general(struc { struct wacom_features *features = &wacom->features; unsigned char *data = wacom->data; -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->pen_input; unsigned int t; /* general pen packet */ @@@@@@@@@@ -681,7 -681,7 -681,7 -681,7 -681,7 -681,7 -681,7 -681,7 -681,7 +681,7 @@@@@@@@@@ static int wacom_intuos_irq(struct waco { struct wacom_features *features = &wacom->features; unsigned char *data = wacom->data; -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->pen_input; unsigned int t; int idx = 0, result; @@@@@@@@@@ -1025,7 -1025,7 -1025,7 -1025,7 -1025,7 -1025,7 -1025,7 -1025,7 -1025,7 +1025,7 @@@@@@@@@@ static void wacom_intuos_bt_process_dat memcpy(wacom->data, data, 10); wacom_intuos_irq(wacom); -------- input_sync(wacom->input); ++++++++ input_sync(wacom->pen_input); if (wacom->pad_input) input_sync(wacom->pad_input); } @@@@@@@@@@ -1057,7 -1057,7 -1057,7 -1057,7 -1057,7 -1057,7 -1057,7 -1057,7 -1057,7 +1057,7 @@@@@@@@@@ static int wacom_intuos_bt_irq(struct w ps_connected); break; default: -------- dev_dbg(wacom->input->dev.parent, ++++++++ dev_dbg(wacom->pen_input->dev.parent, "Unknown report: %d,%d size:%zu\n", data[0], data[1], len); return 0; @@@@@@@@@@ -1067,17 -1067,17 -1067,14 -1067,17 -1067,17 -1067,14 -1067,14 -1067,14 -1067,13 +1067,16 @@@@@@@@@@ static int wacom_wac_finger_count_touches(struct wacom_wac *wacom) { -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->touch_input; unsigned touch_max = wacom->features.touch_max; int count = 0; int i; - --- /* non-HID_GENERIC single touch input doesn't call this routine */ - --- if ((touch_max == 1) && (wacom->features.type == HID_GENERIC)) - --- return wacom->hid_data.tipswitch && + ++++ if (!touch_max) + ++++ return 0; + ++++ -- -- /* non-HID_GENERIC single touch input doesn't call this routine */ -- -- if ((touch_max == 1) && (wacom->features.type == HID_GENERIC)) -- -- return wacom->hid_data.tipswitch && ++++++++ if (touch_max == 1) ++++++++ return test_bit(BTN_TOUCH, input->key) && !wacom->shared->stylus_in_proximity; for (i = 0; i < input->mt->num_slots; i++) { @@@@@@@@@@ -1092,7 -1092,7 -1089,7 -1092,7 -1092,7 -1089,7 -1089,7 -1089,7 -1088,7 +1091,7 @@@@@@@@@@ static int wacom_24hdt_irq(struct wacom_wac *wacom) { -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->touch_input; unsigned char *data = wacom->data; int i; int current_num_contacts = data[61]; @@@@@@@@@@ -1160,7 -1160,7 -1157,7 -1160,7 -1160,7 -1157,7 -1157,7 -1157,7 -1156,7 +1159,7 @@@@@@@@@@ static int wacom_mt_touch(struct wacom_wac *wacom) { -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->touch_input; unsigned char *data = wacom->data; int i; int current_num_contacts = data[2]; @@@@@@@@@@ -1211,7 -1211,7 -1208,7 -1211,7 -1211,7 -1208,7 -1208,7 -1208,7 -1207,7 +1210,7 @@@@@@@@@@ static int wacom_tpc_mt_touch(struct wacom_wac *wacom) { -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->touch_input; unsigned char *data = wacom->data; int i; @@@@@@@@@@ -1240,7 -1240,7 -1237,7 -1240,7 -1240,7 -1237,7 -1237,7 -1237,7 -1236,7 +1239,7 @@@@@@@@@@ static int wacom_tpc_single_touch(struct wacom_wac *wacom, size_t len) { unsigned char *data = wacom->data; -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->touch_input; bool prox = !wacom->shared->stylus_in_proximity; int x = 0, y = 0; @@@@@@@@@@ -1276,7 -1276,7 -1273,7 -1276,7 -1276,7 -1273,7 -1273,7 -1273,7 -1272,7 +1275,7 @@@@@@@@@@ static int wacom_tpc_pen(struct wacom_wac *wacom) { unsigned char *data = wacom->data; -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->pen_input; bool prox = data[1] & 0x20; if (!wacom->shared->stylus_in_proximity) /* first in prox */ @@@@@@@@@@ -1305,8 -1305,8 -1302,8 -1305,8 -1305,8 -1302,8 -1302,8 -1302,8 -1301,12 +1304,12 @@@@@@@@@@ static int wacom_tpc_irq(struct wacom_w { unsigned char *data = wacom->data; -------- dev_dbg(wacom->input->dev.parent, -------- "%s: received report #%d\n", __func__, data[0]); ++++++++ if (wacom->pen_input) ++++++++ dev_dbg(wacom->pen_input->dev.parent, ++++++++ "%s: received report #%d\n", __func__, data[0]); ++++++++ else if (wacom->touch_input) ++++++++ dev_dbg(wacom->touch_input->dev.parent, ++++++++ "%s: received report #%d\n", __func__, data[0]); switch (len) { case WACOM_PKGLEN_TPC1FG: @@@@@@@@@@ -1338,11 -1338,11 -1335,11 -1338,11 -1338,11 -1335,11 -1335,11 -1335,11 -1338,9 +1341,9 @@@@@@@@@@ return 0; } -------- static void wacom_map_usage(struct wacom *wacom, struct hid_usage *usage, ++++++++ static void wacom_map_usage(struct input_dev *input, struct hid_usage *usage, struct hid_field *field, __u8 type, __u16 code, int fuzz) { -------- struct wacom_wac *wacom_wac = &wacom->wacom_wac; -------- struct input_dev *input = wacom_wac->input; int fmin = field->logical_minimum; int fmax = field->logical_maximum; @@@@@@@@@@ -1370,36 -1370,36 -1367,36 -1370,36 -1370,36 -1367,36 -1367,36 -1367,36 -1368,38 +1371,38 @@@@@@@@@@ static void wacom_wac_pen_usage_mapping struct hid_field *field, struct hid_usage *usage) { struct wacom *wacom = hid_get_drvdata(hdev); ++++++++ struct wacom_wac *wacom_wac = &wacom->wacom_wac; ++++++++ struct input_dev *input = wacom_wac->pen_input; switch (usage->hid) { case HID_GD_X: -------- wacom_map_usage(wacom, usage, field, EV_ABS, ABS_X, 4); ++++++++ wacom_map_usage(input, usage, field, EV_ABS, ABS_X, 4); break; case HID_GD_Y: -------- wacom_map_usage(wacom, usage, field, EV_ABS, ABS_Y, 4); ++++++++ wacom_map_usage(input, usage, field, EV_ABS, ABS_Y, 4); break; case HID_DG_TIPPRESSURE: -------- wacom_map_usage(wacom, usage, field, EV_ABS, ABS_PRESSURE, 0); ++++++++ wacom_map_usage(input, usage, field, EV_ABS, ABS_PRESSURE, 0); break; case HID_DG_INRANGE: -------- wacom_map_usage(wacom, usage, field, EV_KEY, BTN_TOOL_PEN, 0); ++++++++ wacom_map_usage(input, usage, field, EV_KEY, BTN_TOOL_PEN, 0); break; case HID_DG_INVERT: -------- wacom_map_usage(wacom, usage, field, EV_KEY, ++++++++ wacom_map_usage(input, usage, field, EV_KEY, BTN_TOOL_RUBBER, 0); break; case HID_DG_ERASER: case HID_DG_TIPSWITCH: -------- wacom_map_usage(wacom, usage, field, EV_KEY, BTN_TOUCH, 0); ++++++++ wacom_map_usage(input, usage, field, EV_KEY, BTN_TOUCH, 0); break; case HID_DG_BARRELSWITCH: -------- wacom_map_usage(wacom, usage, field, EV_KEY, BTN_STYLUS, 0); ++++++++ wacom_map_usage(input, usage, field, EV_KEY, BTN_STYLUS, 0); break; case HID_DG_BARRELSWITCH2: -------- wacom_map_usage(wacom, usage, field, EV_KEY, BTN_STYLUS2, 0); ++++++++ wacom_map_usage(input, usage, field, EV_KEY, BTN_STYLUS2, 0); break; case HID_DG_TOOLSERIALNUMBER: -------- wacom_map_usage(wacom, usage, field, EV_MSC, MSC_SERIAL, 0); ++++++++ wacom_map_usage(input, usage, field, EV_MSC, MSC_SERIAL, 0); break; } } @@@@@@@@@@ -1409,7 -1409,7 -1406,7 -1409,7 -1409,7 -1406,7 -1406,7 -1406,7 -1409,7 +1412,7 @@@@@@@@@@ static int wacom_wac_pen_event(struct h { struct wacom *wacom = hid_get_drvdata(hdev); struct wacom_wac *wacom_wac = &wacom->wacom_wac; -------- struct input_dev *input = wacom_wac->input; ++++++++ struct input_dev *input = wacom_wac->pen_input; /* checking which Tool / tip switch to send */ switch (usage->hid) { @@@@@@@@@@ -1439,7 -1439,7 -1436,7 -1439,7 -1439,7 -1436,7 -1436,7 -1436,7 -1439,7 +1442,7 @@@@@@@@@@ static void wacom_wac_pen_report(struc { struct wacom *wacom = hid_get_drvdata(hdev); struct wacom_wac *wacom_wac = &wacom->wacom_wac; -------- struct input_dev *input = wacom_wac->input; ++++++++ struct input_dev *input = wacom_wac->pen_input; bool prox = wacom_wac->hid_data.inrange_state; if (!wacom_wac->shared->stylus_in_proximity) /* first in prox */ @@@@@@@@@@ -1468,23 -1468,23 -1465,23 -1468,23 -1468,23 -1465,23 -1465,23 -1465,23 -1468,24 +1471,24 @@@@@@@@@@ static void wacom_wac_finger_usage_mapp struct wacom *wacom = hid_get_drvdata(hdev); struct wacom_wac *wacom_wac = &wacom->wacom_wac; struct wacom_features *features = &wacom_wac->features; ++++++++ struct input_dev *input = wacom_wac->touch_input; unsigned touch_max = wacom_wac->features.touch_max; switch (usage->hid) { case HID_GD_X: features->last_slot_field = usage->hid; if (touch_max == 1) -------- wacom_map_usage(wacom, usage, field, EV_ABS, ABS_X, 4); ++++++++ wacom_map_usage(input, usage, field, EV_ABS, ABS_X, 4); else -------- wacom_map_usage(wacom, usage, field, EV_ABS, ++++++++ wacom_map_usage(input, usage, field, EV_ABS, ABS_MT_POSITION_X, 4); break; case HID_GD_Y: features->last_slot_field = usage->hid; if (touch_max == 1) -------- wacom_map_usage(wacom, usage, field, EV_ABS, ABS_Y, 4); ++++++++ wacom_map_usage(input, usage, field, EV_ABS, ABS_Y, 4); else -------- wacom_map_usage(wacom, usage, field, EV_ABS, ++++++++ wacom_map_usage(input, usage, field, EV_ABS, ABS_MT_POSITION_Y, 4); break; case HID_DG_CONTACTID: @@@@@@@@@@ -1498,7 -1498,7 -1495,7 -1498,7 -1498,7 -1495,7 -1495,7 -1495,7 -1499,7 +1502,7 @@@@@@@@@@ break; case HID_DG_TIPSWITCH: features->last_slot_field = usage->hid; -------- wacom_map_usage(wacom, usage, field, EV_KEY, BTN_TOUCH, 0); ++++++++ wacom_map_usage(input, usage, field, EV_KEY, BTN_TOUCH, 0); break; } } @@@@@@@@@@ -1554,7 -1554,7 -1551,7 -1554,7 -1554,7 -1551,7 -1551,7 -1551,7 -1555,7 +1558,7 @@@@@@@@@@ static int wacom_wac_finger_event(struc if (usage->usage_index + 1 == field->report_count) { if (usage->hid == wacom_wac->features.last_slot_field) -------- wacom_wac_finger_slot(wacom_wac, wacom_wac->input); ++++++++ wacom_wac_finger_slot(wacom_wac, wacom_wac->touch_input); } return 0; @@@@@@@@@@ -1565,7 -1565,7 -1562,7 -1565,7 -1565,7 -1562,7 -1562,7 -1562,7 -1566,7 +1569,7 @@@@@@@@@@ static void wacom_wac_finger_report(str { struct wacom *wacom = hid_get_drvdata(hdev); struct wacom_wac *wacom_wac = &wacom->wacom_wac; -------- struct input_dev *input = wacom_wac->input; ++++++++ struct input_dev *input = wacom_wac->touch_input; unsigned touch_max = wacom_wac->features.touch_max; if (touch_max > 1) @@@@@@@@@@ -1582,10 -1582,10 -1579,10 -1582,10 -1582,10 -1579,10 -1579,10 -1579,10 -1583,10 +1586,10 @@@@@@@@@@ void wacom_wac_usage_mapping(struct hid { struct wacom *wacom = hid_get_drvdata(hdev); struct wacom_wac *wacom_wac = &wacom->wacom_wac; -------- struct input_dev *input = wacom_wac->input; /* currently, only direct devices have proper hid report descriptors */ -------- __set_bit(INPUT_PROP_DIRECT, input->propbit); ++++++++ __set_bit(INPUT_PROP_DIRECT, wacom_wac->pen_input->propbit); ++++++++ __set_bit(INPUT_PROP_DIRECT, wacom_wac->touch_input->propbit); if (WACOM_PEN_FIELD(field)) return wacom_wac_pen_usage_mapping(hdev, field, usage); @@@@@@@@@@ -1630,7 -1630,7 -1627,7 -1630,7 -1630,7 -1627,7 -1627,7 -1627,7 -1631,7 +1634,7 @@@@@@@@@@ void wacom_wac_report(struct hid_devic static int wacom_bpt_touch(struct wacom_wac *wacom) { struct wacom_features *features = &wacom->features; -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->touch_input; struct input_dev *pad_input = wacom->pad_input; unsigned char *data = wacom->data; int i; @@@@@@@@@@ -1678,7 -1678,7 -1675,7 -1678,7 -1678,7 -1675,7 -1675,7 -1675,7 -1679,7 +1682,7 @@@@@@@@@@ static void wacom_bpt3_touch_msg(struct wacom_wac *wacom, unsigned char *data) { struct wacom_features *features = &wacom->features; -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->touch_input; bool touch = data[1] & 0x80; int slot = input_mt_get_slot_by_key(input, data[0]); @@@@@@@@@@ -1736,7 -1736,7 -1733,7 -1736,7 -1736,7 -1733,7 -1733,7 -1733,7 -1737,6 +1740,6 @@@@@@@@@@ static void wacom_bpt3_button_msg(struc static int wacom_bpt3_touch(struct wacom_wac *wacom) { -------- struct input_dev *input = wacom->input; unsigned char *data = wacom->data; int count = data[1] & 0x07; int i; @@@@@@@@@@ -1755,8 -1755,8 -1752,8 -1755,8 -1755,8 -1752,8 -1752,8 -1752,8 -1755,12 +1758,12 @@@@@@@@@@ wacom_bpt3_button_msg(wacom, data + offset); } -------- input_mt_sync_frame(input); -------- wacom->shared->touch_down = wacom_wac_finger_count_touches(wacom); ++++++++ ++++++++ /* only update the touch if we actually have a touchpad */ ++++++++ if (wacom->touch_registered) { ++++++++ input_mt_sync_frame(wacom->touch_input); ++++++++ wacom->shared->touch_down = wacom_wac_finger_count_touches(wacom); ++++++++ } return 1; } @@@@@@@@@@ -1764,7 -1764,7 -1761,7 -1764,7 -1764,7 -1761,7 -1761,7 -1761,7 -1768,7 +1771,7 @@@@@@@@@@ static int wacom_bpt_pen(struct wacom_wac *wacom) { struct wacom_features *features = &wacom->features; -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->pen_input; unsigned char *data = wacom->data; int prox = 0, x = 0, y = 0, p = 0, d = 0, pen = 0, btn1 = 0, btn2 = 0; @@@@@@@@@@ -1873,7 -1873,7 -1870,7 -1873,7 -1873,7 -1870,7 -1870,7 -1870,7 -1877,7 +1880,7 @@@@@@@@@@ static void wacom_bamboo_pad_pen_event( static int wacom_bamboo_pad_touch_event(struct wacom_wac *wacom, unsigned char *data) { -------- struct input_dev *input = wacom->input; ++++++++ struct input_dev *input = wacom->touch_input; unsigned char *finger_data, prefix; unsigned id; int x, y; @@@@@@@@@@ -2117,7 -2117,7 -2114,7 -2117,7 -2117,7 -2114,7 -2114,7 -2114,7 -2121,10 +2124,10 @@@@@@@@@@ void wacom_wac_irq(struct wacom_wac *wa } if (sync) { -------- input_sync(wacom_wac->input); ++++++++ if (wacom_wac->pen_input) ++++++++ input_sync(wacom_wac->pen_input); ++++++++ if (wacom_wac->touch_input) ++++++++ input_sync(wacom_wac->touch_input); if (wacom_wac->pad_input) input_sync(wacom_wac->pad_input); } @@@@@@@@@@ -2125,7 -2125,7 -2122,7 -2125,7 -2125,7 -2122,7 -2122,7 -2122,7 -2132,7 +2135,7 @@@@@@@@@@ static void wacom_setup_cintiq(struct wacom_wac *wacom_wac) { -------- struct input_dev *input_dev = wacom_wac->input; ++++++++ struct input_dev *input_dev = wacom_wac->pen_input; input_set_capability(input_dev, EV_MSC, MSC_SERIAL); @@@@@@@@@@ -2148,7 -2148,7 -2145,7 -2148,7 -2148,7 -2145,7 -2145,7 -2145,7 -2155,7 +2158,7 @@@@@@@@@@ static void wacom_setup_intuos(struct wacom_wac *wacom_wac) { -------- struct input_dev *input_dev = wacom_wac->input; ++++++++ struct input_dev *input_dev = wacom_wac->pen_input; input_set_capability(input_dev, EV_REL, REL_WHEEL); @@@@@@@@@@ -2167,15 -2167,15 -2164,15 -2167,15 -2167,15 -2164,15 -2164,15 -2164,15 -2174,57 +2177,57 @@@@@@@@@@ input_set_abs_params(input_dev, ABS_THROTTLE, -1023, 1023, 0, 0); } -------- void wacom_setup_device_quirks(struct wacom_features *features) ++++++++ void wacom_setup_device_quirks(struct wacom *wacom) { ++++++++ struct wacom_features *features = &wacom->wacom_wac.features; ++++++++ ++++++++ /* The pen and pad share the same interface on most devices */ ++++++++ if (features->type == GRAPHIRE_BT || features->type == WACOM_G4 || ++++++++ features->type == DTUS || features->type == WACOM_MO || ++++++++ (features->type >= INTUOS3S && features->type <= WACOM_13HD && ++++++++ features->type != INTUOSHT)) { ++++++++ if (features->device_type & WACOM_DEVICETYPE_PEN) ++++++++ features->device_type |= WACOM_DEVICETYPE_PAD; ++++++++ } /* touch device found but size is not defined. use default */ -------- if (features->device_type == BTN_TOOL_FINGER && !features->x_max) { ++++++++ if (features->device_type & WACOM_DEVICETYPE_TOUCH && !features->x_max) { features->x_max = 1023; features->y_max = 1023; } ++++++++ /* ++++++++ * Intuos5/Pro and Bamboo 3rd gen have no useful data about its ++++++++ * touch interface in its HID descriptor. If this is the touch ++++++++ * interface (PacketSize of WACOM_PKGLEN_BBTOUCH3), override the ++++++++ * tablet values. ++++++++ */ ++++++++ if ((features->type >= INTUOS5S && features->type <= INTUOSHT) || ++++++++ (features->type == BAMBOO_PT)) { ++++++++ if (features->pktlen == WACOM_PKGLEN_BBTOUCH3) { ++++++++ if (features->touch_max) ++++++++ features->device_type |= WACOM_DEVICETYPE_TOUCH; ++++++++ if (features->type == BAMBOO_PT || features->type == INTUOSHT) ++++++++ features->device_type |= WACOM_DEVICETYPE_PAD; ++++++++ ++++++++ features->x_max = 4096; ++++++++ features->y_max = 4096; ++++++++ } ++++++++ } ++++++++ ++++++++ /* ++++++++ * Raw Wacom-mode pen and touch events both come from interface ++++++++ * 0, whose HID descriptor has an application usage of 0xFF0D ++++++++ * (i.e., WACOM_VENDORDEFINED_PEN). We route pen packets back ++++++++ * out through the HID_GENERIC device created for interface 1, ++++++++ * so rewrite this one to be of type BTN_TOOL_FINGER. ++++++++ */ ++++++++ if (features->type == BAMBOO_PAD) ++++++++ features->device_type |= WACOM_DEVICETYPE_TOUCH; ++++++++ ++++++++ if (wacom->hdev->bus == BUS_BLUETOOTH) ++++++++ features->quirks |= WACOM_QUIRK_BATTERY; ++++++++ /* quirk for bamboo touch with 2 low res touches */ if (features->type == BAMBOO_PT && features->pktlen == WACOM_PKGLEN_BBTOUCH) { @@@@@@@@@@ -2192,61 -2192,61 -2189,61 -2192,61 -2192,61 -2189,61 -2189,61 -2189,61 -2241,23 +2244,23 @@@@@@@@@@ features->quirks |= WACOM_QUIRK_NO_INPUT; /* must be monitor interface if no device_type set */ -------- if (!features->device_type) { ++++++++ if (features->device_type == WACOM_DEVICETYPE_NONE) { features->quirks |= WACOM_QUIRK_MONITOR; features->quirks |= WACOM_QUIRK_BATTERY; } } } -------- static void wacom_abs_set_axis(struct input_dev *input_dev, -------- struct wacom_wac *wacom_wac) -------- { -------- struct wacom_features *features = &wacom_wac->features; -------- -------- if (features->device_type == BTN_TOOL_PEN) { -------- input_set_abs_params(input_dev, ABS_X, features->x_min, -------- features->x_max, features->x_fuzz, 0); -------- input_set_abs_params(input_dev, ABS_Y, features->y_min, -------- features->y_max, features->y_fuzz, 0); -------- input_set_abs_params(input_dev, ABS_PRESSURE, 0, -------- features->pressure_max, features->pressure_fuzz, 0); -------- -------- /* penabled devices have fixed resolution for each model */ -------- input_abs_set_res(input_dev, ABS_X, features->x_resolution); -------- input_abs_set_res(input_dev, ABS_Y, features->y_resolution); -------- } else { -------- if (features->touch_max == 1) { -------- input_set_abs_params(input_dev, ABS_X, 0, -------- features->x_max, features->x_fuzz, 0); -------- input_set_abs_params(input_dev, ABS_Y, 0, -------- features->y_max, features->y_fuzz, 0); -------- input_abs_set_res(input_dev, ABS_X, -------- features->x_resolution); -------- input_abs_set_res(input_dev, ABS_Y, -------- features->y_resolution); -------- } -------- -------- if (features->touch_max > 1) { -------- input_set_abs_params(input_dev, ABS_MT_POSITION_X, 0, -------- features->x_max, features->x_fuzz, 0); -------- input_set_abs_params(input_dev, ABS_MT_POSITION_Y, 0, -------- features->y_max, features->y_fuzz, 0); -------- input_abs_set_res(input_dev, ABS_MT_POSITION_X, -------- features->x_resolution); -------- input_abs_set_res(input_dev, ABS_MT_POSITION_Y, -------- features->y_resolution); -------- } -------- } -------- } -------- -------- int wacom_setup_pentouch_input_capabilities(struct input_dev *input_dev, ++++++++ int wacom_setup_pen_input_capabilities(struct input_dev *input_dev, struct wacom_wac *wacom_wac) { struct wacom_features *features = &wacom_wac->features; input_dev->evbit[0] |= BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); ++++++++ if (!(features->device_type & WACOM_DEVICETYPE_PEN)) ++++++++ return -ENODEV; ++++++++ if (features->type == HID_GENERIC) /* setup has already been done */ return 0; @@@@@@@@@@ -2254,7 -2254,7 -2251,7 -2254,7 -2254,7 -2251,7 -2251,7 -2251,7 -2265,17 +2268,17 @@@@@@@@@@ __set_bit(BTN_TOUCH, input_dev->keybit); __set_bit(ABS_MISC, input_dev->absbit); -------- wacom_abs_set_axis(input_dev, wacom_wac); ++++++++ input_set_abs_params(input_dev, ABS_X, features->x_min, ++++++++ features->x_max, features->x_fuzz, 0); ++++++++ input_set_abs_params(input_dev, ABS_Y, features->y_min, ++++++++ features->y_max, features->y_fuzz, 0); ++++++++ input_set_abs_params(input_dev, ABS_PRESSURE, 0, ++++++++ features->pressure_max, features->pressure_fuzz, 0); ++++++++ ++++++++ /* penabled devices have fixed resolution for each model */ ++++++++ input_abs_set_res(input_dev, ABS_X, features->x_resolution); ++++++++ input_abs_set_res(input_dev, ABS_Y, features->y_resolution); ++++++++ switch (features->type) { case GRAPHIRE_BT: @@@@@@@@@@ -2323,53 -2323,53 -2320,53 -2323,53 -2323,53 -2320,53 -2320,53 -2320,53 -2344,25 +2347,25 @@@@@@@@@@ case INTUOSPS: __set_bit(INPUT_PROP_POINTER, input_dev->propbit); -------- if (features->device_type == BTN_TOOL_PEN) { -------- input_set_abs_params(input_dev, ABS_DISTANCE, 0, -------- features->distance_max, -------- 0, 0); -------- -------- input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0); -------- input_abs_set_res(input_dev, ABS_Z, 287); ++++++++ input_set_abs_params(input_dev, ABS_DISTANCE, 0, ++++++++ features->distance_max, ++++++++ 0, 0); -------- wacom_setup_intuos(wacom_wac); -------- } else if (features->device_type == BTN_TOOL_FINGER) { -------- __clear_bit(ABS_MISC, input_dev->absbit); ++++++++ input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0); ++++++++ input_abs_set_res(input_dev, ABS_Z, 287); -------- input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, -------- 0, features->x_max, 0, 0); -------- input_set_abs_params(input_dev, ABS_MT_TOUCH_MINOR, -------- 0, features->y_max, 0, 0); -------- input_mt_init_slots(input_dev, features->touch_max, INPUT_MT_POINTER); -------- } ++++++++ wacom_setup_intuos(wacom_wac); break; case WACOM_24HDT: -------- if (features->device_type == BTN_TOOL_FINGER) { -------- input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, features->x_max, 0, 0); -------- input_set_abs_params(input_dev, ABS_MT_WIDTH_MAJOR, 0, features->x_max, 0, 0); -------- input_set_abs_params(input_dev, ABS_MT_WIDTH_MINOR, 0, features->y_max, 0, 0); -------- input_set_abs_params(input_dev, ABS_MT_ORIENTATION, 0, 1, 0, 0); -------- } -------- /* fall through */ -------- case WACOM_27QHDT: case MTSCREEN: case MTTPC: case MTTPC_B: case TABLETPC2FG: -------- if (features->device_type == BTN_TOOL_FINGER && features->touch_max > 1) -------- input_mt_init_slots(input_dev, features->touch_max, INPUT_MT_DIRECT); -------- /* fall through */ -------- case TABLETPC: case TABLETPCE: __clear_bit(ABS_MISC, input_dev->absbit); -------- -------- __set_bit(INPUT_PROP_DIRECT, input_dev->propbit); -------- -------- if (features->device_type != BTN_TOOL_PEN) -------- break; /* no need to process stylus stuff */ -------- /* fall through */ case DTUS: @@@@@@@@@@ -2397,50 -2397,50 -2394,50 -2397,50 -2397,50 -2394,50 -2394,50 -2394,50 -2390,114 +2393,114 @@@@@@@@@@ break; case INTUOSHT: -------- if (features->touch_max && -------- features->device_type == BTN_TOOL_FINGER) { -------- input_dev->evbit[0] |= BIT_MASK(EV_SW); -------- __set_bit(SW_MUTE_DEVICE, input_dev->swbit); -------- } -------- /* fall through */ -------- case BAMBOO_PT: __clear_bit(ABS_MISC, input_dev->absbit); -------- if (features->device_type == BTN_TOOL_FINGER) { ++++++++ __set_bit(INPUT_PROP_POINTER, input_dev->propbit); ++++++++ __set_bit(BTN_TOOL_RUBBER, input_dev->keybit); ++++++++ __set_bit(BTN_TOOL_PEN, input_dev->keybit); ++++++++ __set_bit(BTN_STYLUS, input_dev->keybit); ++++++++ __set_bit(BTN_STYLUS2, input_dev->keybit); ++++++++ input_set_abs_params(input_dev, ABS_DISTANCE, 0, ++++++++ features->distance_max, ++++++++ 0, 0); ++++++++ break; ++++++++ case BAMBOO_PAD: ++++++++ __clear_bit(ABS_MISC, input_dev->absbit); ++++++++ break; ++++++++ } ++++++++ return 0; ++++++++ } -------- if (features->touch_max) { -------- if (features->pktlen == WACOM_PKGLEN_BBTOUCH3) { -------- input_set_abs_params(input_dev, -------- ABS_MT_TOUCH_MAJOR, -------- 0, features->x_max, 0, 0); -------- input_set_abs_params(input_dev, -------- ABS_MT_TOUCH_MINOR, -------- 0, features->y_max, 0, 0); -------- } -------- input_mt_init_slots(input_dev, features->touch_max, INPUT_MT_POINTER); -------- } else { -------- /* buttons/keys only interface */ -------- __clear_bit(ABS_X, input_dev->absbit); -------- __clear_bit(ABS_Y, input_dev->absbit); -------- __clear_bit(BTN_TOUCH, input_dev->keybit); ++++++++ int wacom_setup_touch_input_capabilities(struct input_dev *input_dev, ++++++++ struct wacom_wac *wacom_wac) ++++++++ { ++++++++ struct wacom_features *features = &wacom_wac->features; -------- /* PAD is setup by wacom_setup_pad_input_capabilities later */ -------- return 1; -------- } -------- } else if (features->device_type == BTN_TOOL_PEN) { -------- __set_bit(INPUT_PROP_POINTER, input_dev->propbit); -------- __set_bit(BTN_TOOL_RUBBER, input_dev->keybit); -------- __set_bit(BTN_TOOL_PEN, input_dev->keybit); -------- __set_bit(BTN_STYLUS, input_dev->keybit); -------- __set_bit(BTN_STYLUS2, input_dev->keybit); -------- input_set_abs_params(input_dev, ABS_DISTANCE, 0, -------- features->distance_max, -------- 0, 0); ++++++++ input_dev->evbit[0] |= BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); ++++++++ ++++++++ if (!(features->device_type & WACOM_DEVICETYPE_TOUCH)) ++++++++ return -ENODEV; ++++++++ ++++++++ if (features->type == HID_GENERIC) ++++++++ /* setup has already been done */ ++++++++ return 0; ++++++++ ++++++++ __set_bit(BTN_TOUCH, input_dev->keybit); ++++++++ ++++++++ if (features->touch_max == 1) { ++++++++ input_set_abs_params(input_dev, ABS_X, 0, ++++++++ features->x_max, features->x_fuzz, 0); ++++++++ input_set_abs_params(input_dev, ABS_Y, 0, ++++++++ features->y_max, features->y_fuzz, 0); ++++++++ input_abs_set_res(input_dev, ABS_X, ++++++++ features->x_resolution); ++++++++ input_abs_set_res(input_dev, ABS_Y, ++++++++ features->y_resolution); ++++++++ } ++++++++ else if (features->touch_max > 1) { ++++++++ input_set_abs_params(input_dev, ABS_MT_POSITION_X, 0, ++++++++ features->x_max, features->x_fuzz, 0); ++++++++ input_set_abs_params(input_dev, ABS_MT_POSITION_Y, 0, ++++++++ features->y_max, features->y_fuzz, 0); ++++++++ input_abs_set_res(input_dev, ABS_MT_POSITION_X, ++++++++ features->x_resolution); ++++++++ input_abs_set_res(input_dev, ABS_MT_POSITION_Y, ++++++++ features->y_resolution); ++++++++ } ++++++++ ++++++++ switch (features->type) { ++++++++ case INTUOS5: ++++++++ case INTUOS5L: ++++++++ case INTUOSPM: ++++++++ case INTUOSPL: ++++++++ case INTUOS5S: ++++++++ case INTUOSPS: ++++++++ __set_bit(INPUT_PROP_POINTER, input_dev->propbit); ++++++++ ++++++++ input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, features->x_max, 0, 0); ++++++++ input_set_abs_params(input_dev, ABS_MT_TOUCH_MINOR, 0, features->y_max, 0, 0); ++++++++ input_mt_init_slots(input_dev, features->touch_max, INPUT_MT_POINTER); ++++++++ break; ++++++++ ++++++++ case WACOM_24HDT: ++++++++ input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, features->x_max, 0, 0); ++++++++ input_set_abs_params(input_dev, ABS_MT_WIDTH_MAJOR, 0, features->x_max, 0, 0); ++++++++ input_set_abs_params(input_dev, ABS_MT_WIDTH_MINOR, 0, features->y_max, 0, 0); ++++++++ input_set_abs_params(input_dev, ABS_MT_ORIENTATION, 0, 1, 0, 0); ++++++++ /* fall through */ ++++++++ ++++++++ case WACOM_27QHDT: ++++++++ case MTSCREEN: ++++++++ case MTTPC: ++++++++ case MTTPC_B: ++++++++ case TABLETPC2FG: ++++++++ input_mt_init_slots(input_dev, features->touch_max, INPUT_MT_DIRECT); ++++++++ /*fall through */ ++++++++ ++++++++ case TABLETPC: ++++++++ case TABLETPCE: ++++++++ __set_bit(INPUT_PROP_DIRECT, input_dev->propbit); ++++++++ break; ++++++++ ++++++++ case INTUOSHT: ++++++++ input_dev->evbit[0] |= BIT_MASK(EV_SW); ++++++++ __set_bit(SW_MUTE_DEVICE, input_dev->swbit); ++++++++ /* fall through */ ++++++++ ++++++++ case BAMBOO_PT: ++++++++ if (features->pktlen == WACOM_PKGLEN_BBTOUCH3) { ++++++++ input_set_abs_params(input_dev, ++++++++ ABS_MT_TOUCH_MAJOR, ++++++++ 0, features->x_max, 0, 0); ++++++++ input_set_abs_params(input_dev, ++++++++ ABS_MT_TOUCH_MINOR, ++++++++ 0, features->y_max, 0, 0); } ++++++++ input_mt_init_slots(input_dev, features->touch_max, INPUT_MT_POINTER); break; ++++++++ case BAMBOO_PAD: -------- __clear_bit(ABS_MISC, input_dev->absbit); input_mt_init_slots(input_dev, features->touch_max, INPUT_MT_POINTER); __set_bit(BTN_LEFT, input_dev->keybit); @@@@@@@@@@ -2456,6 -2456,6 -2453,6 -2456,6 -2456,6 -2453,6 -2453,6 -2453,6 -2513,9 +2516,9 @@@@@@@@@@ int wacom_setup_pad_input_capabilities( struct wacom_features *features = &wacom_wac->features; int i; ++++++++ if (!(features->device_type & WACOM_DEVICETYPE_PAD)) ++++++++ return -ENODEV; ++++++++ input_dev->evbit[0] |= BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); /* kept for making legacy xf86-input-wacom working with the wheels */ @@@@@@@@@@ -2592,10 -2592,10 -2589,10 -2592,10 -2592,10 -2589,10 -2589,10 -2589,10 -2652,6 +2655,6 @@@@@@@@@@ case INTUOS5S: case INTUOSPS: -------- /* touch interface does not have the pad device */ -------- if (features->device_type != BTN_TOOL_PEN) -------- return -ENODEV; -------- for (i = 0; i < 7; i++) __set_bit(BTN_0 + i, input_dev->keybit); @@@@@@@@@@ -2637,12 -2637,12 -2634,12 -2637,12 -2637,12 -2634,12 -2634,12 -2634,12 -2693,6 +2696,6 @@@@@@@@@@ case INTUOSHT: case BAMBOO_PT: -------- /* pad device is on the touch interface */ -------- if ((features->device_type != BTN_TOOL_FINGER) || -------- /* Bamboo Pen only tablet does not have pad */ -------- ((features->type == BAMBOO_PT) && !features->touch_max)) -------- return -ENODEV; -------- __clear_bit(ABS_MISC, input_dev->absbit); __set_bit(BTN_LEFT, input_dev->keybit); @@@@@@@@@@ -2922,6 -2922,6 -2919,6 -2922,6 -2922,6 -2919,6 -2919,6 -2919,6 -2972,9 +2975,9 @@@@@@@@@@ static const struct wacom_features waco { "Wacom DTU1031X", 22472, 12728, 511, 0, DTUSX, WACOM_INTUOS_RES, WACOM_INTUOS_RES, WACOM_DTU_OFFSET, WACOM_DTU_OFFSET }; ++++++++ static const struct wacom_features wacom_features_0x336 = ++++++++ { "Wacom DTU1141", 23472, 13203, 1023, 0, ++++++++ DTUS, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; static const struct wacom_features wacom_features_0x57 = { "Wacom DTK2241", 95640, 54060, 2047, 63, DTK, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, @@@@@@@@@@ -3275,6 -3275,6 -3272,6 -3275,6 -3275,6 -3272,6 -3272,6 -3272,6 -3328,7 +3331,7 @@@@@@@@@@ const struct hid_device_id wacom_ids[] { USB_DEVICE_WACOM(0x32F) }, { USB_DEVICE_WACOM(0x333) }, { USB_DEVICE_WACOM(0x335) }, ++++++++ { USB_DEVICE_WACOM(0x336) }, { USB_DEVICE_WACOM(0x4001) }, { USB_DEVICE_WACOM(0x4004) }, { USB_DEVICE_WACOM(0x5000) },