platform/kernel/linux-rpi.git
9 years agoInput: lpc32xx_ts - fix warnings caused by enabling unprepared clock
Vladimir Zapolskiy [Sat, 17 Oct 2015 18:30:15 +0000 (11:30 -0700)]
Input: lpc32xx_ts - fix warnings caused by enabling unprepared clock

If common clock framework is configured, the driver generates a warning,
which is fixed by this change:

    root@devkit3250:~# cat /dev/input/touchscreen0
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 720 at drivers/clk/clk.c:727 clk_core_enable+0x2c/0xa4()
    Modules linked in: sc16is7xx snd_soc_uda1380
    CPU: 0 PID: 720 Comm: cat Not tainted 4.3.0-rc2+ #199
    Hardware name: LPC32XX SoC (Flattened Device Tree)
    Backtrace:
    [<>] (dump_backtrace) from [<>] (show_stack+0x18/0x1c)
    [<>] (show_stack) from [<>] (dump_stack+0x20/0x28)
    [<>] (dump_stack) from [<>] (warn_slowpath_common+0x90/0xb8)
    [<>] (warn_slowpath_common) from [<>] (warn_slowpath_null+0x24/0x2c)
    [<>] (warn_slowpath_null) from [<>] (clk_core_enable+0x2c/0xa4)
    [<>] (clk_core_enable) from [<>] (clk_enable+0x24/0x38)
    [<>] (clk_enable) from [<>] (lpc32xx_setup_tsc+0x18/0xa0)
    [<>] (lpc32xx_setup_tsc) from [<>] (lpc32xx_ts_open+0x14/0x1c)
    [<>] (lpc32xx_ts_open) from [<>] (input_open_device+0x74/0xb0)
    [<>] (input_open_device) from [<>] (evdev_open+0x110/0x16c)
    [<>] (evdev_open) from [<>] (chrdev_open+0x1b4/0x1dc)
    [<>] (chrdev_open) from [<>] (do_dentry_open+0x1dc/0x2f4)
    [<>] (do_dentry_open) from [<>] (vfs_open+0x6c/0x70)
    [<>] (vfs_open) from [<>] (path_openat+0xb4c/0xddc)
    [<>] (path_openat) from [<>] (do_filp_open+0x40/0x8c)
    [<>] (do_filp_open) from [<>] (do_sys_open+0x124/0x1c4)
    [<>] (do_sys_open) from [<>] (SyS_open+0x2c/0x30)
    [<>] (SyS_open) from [<>] (ret_fast_syscall+0x0/0x38)

Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: cyapa - fix the copy paste error on electrodes_rx value
Dudley Du [Mon, 12 Oct 2015 17:16:16 +0000 (10:16 -0700)]
Input: cyapa - fix the copy paste error on electrodes_rx value

Fix the copy paste error on the electrodes_rx value set code which will
cause the electrodes_rx value be always set to the value of electrodes_y.

Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Signed-off-by: Dudley Du <dudl@cypress.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: ads7846 - correct the value got from SPI
Andrey Gelman [Tue, 6 Oct 2015 22:43:43 +0000 (15:43 -0700)]
Input: ads7846 - correct the value got from SPI

According to the touch controller spec, SPI return a 16 bit value, only 12
bits are valid, they are bit[14-3].

The value of MISO and MOSI can be configured when SPI is in idle mode.
Currently this touch driver assumes the SPI bus sets the MOSI and MISO in
low level when SPI bus is in idle mode. So the bit[15] of the value got
from SPI bus is always 0. But when SPI bus congfigures the MOSI and MISO in
high level during the SPI idle mode, the bit[15] of the value get from SPI
is always 1. If bit[15] is not masked, we may get the wrong value.

Mask the invalid bit to make sure the correct value gets returned.
Regardless of the SPI bus idle configuration.

Signed-off-by: Andrey Gelman <andrey.gelman@compulab.co.il>
Signed-off-by: Haibo Chen <haibo.chen@freescale.com>
Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoRevert "Input: synaptics - fix handling of disabling gesture mode"
Dmitry Torokhov [Fri, 2 Oct 2015 17:31:32 +0000 (10:31 -0700)]
Revert "Input: synaptics - fix handling of disabling gesture mode"

This reverts commit e51e38494a8ecc18650efb0c840600637891de2c: we
actually do want the device to work in extended W mode, as this is the
mode that allows us receiving multiple contact information.

Cc: stable@vger.kernel.org
9 years agoInput: psmouse - fix data race in __ps2_command
Dmitry Vyukov [Tue, 29 Sep 2015 22:54:58 +0000 (15:54 -0700)]
Input: psmouse - fix data race in __ps2_command

The data race happens on ps2dev->cmdcnt and ps2dev->cmdbuf contents.
__ps2_command reads that data concurrently with the interrupt handler. As
the result, for example, if a response arrives just after the timeout,
__ps2_command can copy out garbage from ps2dev->cmdbuf but then see that
ps2dev->cmdcnt is 0 and return success.

Stop the interrupt handler with serio_pause_rx() before reading the
results.

The data race was found with KernelThreadSanitizer (KTSAN).

Signed-off-by: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: elan_i2c - add all valid ic type for i2c/smbus
duson [Tue, 29 Sep 2015 00:17:01 +0000 (17:17 -0700)]
Input: elan_i2c - add all valid ic type for i2c/smbus

Signed-off-by: Duson Lin <dusonlin@emc.com.tw>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: zhenhua - ensure we have BITREVERSE
Andrew Morton [Mon, 28 Sep 2015 23:38:07 +0000 (16:38 -0700)]
Input: zhenhua - ensure we have BITREVERSE

It uses bitrev8(), so it must ensure that lib/bitrev.o gets included in
vmlinux.

Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: omap4-keypad - fix memory leak
Sudip Mukherjee [Mon, 28 Sep 2015 22:59:22 +0000 (15:59 -0700)]
Input: omap4-keypad - fix memory leak

If omap4_keypad_parse_dt() fails we returned the error code but we
missed releasing keypad_data.

Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: serio - fix blocking of parport
Sudip Mukherjee [Mon, 28 Sep 2015 00:13:55 +0000 (17:13 -0700)]
Input: serio - fix blocking of parport

If parkbd_allocate_serio() fails to allocate memory we are releasing the
parport but we missed unregistering the device. As a result this device
with exclusive access to that parport remains registered. And no other
device will be able to use that parport even though this driver has
failed to load.

Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: uinput - fix crash when using ABS events
Dmitry Torokhov [Sat, 19 Sep 2015 18:22:57 +0000 (11:22 -0700)]
Input: uinput - fix crash when using ABS events

Commit b6d30968d86c45a7bb599eaca13ff048d3fa576c (Input: uinput - switch to
using for_each_set_bit()) switched driver to use for_each_set_bit().
However during initial write of the uinput structure that contains min/max
data for all possible axes none of them are reflected in dev->absbit yet
and so we were skipping over all of them and were not allocating absinfo
memory which caused crash later when driver tried to sens EV_ABS events:

<1>[   15.064330] BUG: unable to handle kernel NULL pointer dereference at 0000000000000024
<1>[   15.064336] IP: [<ffffffff8163f142>] input_handle_event+0x232/0x4e0
<4>[   15.064343] PGD 0
<4>[   15.064345] Oops: 0000 [#1] SMP

Fixes: b6d30968d86c45a7bb599eaca13ff048d3fa576c
Cc: stable@vger.kernel.org
Reported-by: Stephen Chandler Paul <cpaul@redhat.com>
Tested-by: Stephen Chandler Paul <cpaul@redhat.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: elan_i2c - expand maximum product_id form 0xFF to 0xFFFF
Duson Lin [Mon, 21 Sep 2015 16:26:46 +0000 (09:26 -0700)]
Input: elan_i2c - expand maximum product_id form 0xFF to 0xFFFF

In order to support more projects in the future, we expand the
maximum product_id value form 0xFF to 0xFFFF.

Signed-off by: Duson Lin <dusonlin@emc.com.tw>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: elan_i2c - add ic type 0x03
Duson Lin [Mon, 21 Sep 2015 16:24:46 +0000 (09:24 -0700)]
Input: elan_i2c - add ic type 0x03

The 0x03 is valid 3000 serial ic type too.

Signed-off-by: Duson Lin <dusonlin@emc.com.tw>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: elan_i2c - don't require known iap version
Daniel Drake [Sat, 19 Sep 2015 16:49:45 +0000 (09:49 -0700)]
Input: elan_i2c - don't require known iap version

The Asus X456UA has an ELAN1000 touchpad with IAP version 0xe.  This is
unknown to elan_get_fwinfo() so driver probe fails and I am left with an
unusable touchpad.

However, the fwinfo is not required for general driver usage, it is only
needed if the user decides to upload new firmware.

Adjust the driver so that we do not abort probe when we encounter
unexpected IAP version, but rather warn user that firmware update feature
of the driver will not work.

Signed-off-by: Daniel Drake <drake@endlessm.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: imx6ul_tsc - fix controller name
Fabio Estevam [Mon, 14 Sep 2015 17:37:55 +0000 (10:37 -0700)]
Input: imx6ul_tsc - fix controller name

We should better write "Touchscreen".

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: imx6ul_tsc - use the preferred method for kzalloc()
Fabio Estevam [Mon, 14 Sep 2015 17:37:31 +0000 (10:37 -0700)]
Input: imx6ul_tsc - use the preferred method for kzalloc()

According to Documentation/CodingStyle:

"The preferred form for passing a size of a struct is the following:

p = kmalloc(sizeof(*p), ...);"

so do as suggested.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: imx6ul_tsc - check for negative return value
Fabio Estevam [Mon, 14 Sep 2015 17:37:08 +0000 (10:37 -0700)]
Input: imx6ul_tsc - check for negative return value

We should check for negative values returned by platform_get_irq().

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: imx6ul_tsc - propagate the errors
Fabio Estevam [Mon, 14 Sep 2015 17:36:35 +0000 (10:36 -0700)]
Input: imx6ul_tsc - propagate the errors

imx6ul_adc_init() may fail in two cases, so we should better
propagate the errors and make sure that the callers of
this function also check and propagate the errors accordingly.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: walkera0701 - fix abs() calculations on 64 bit values
Dmitry Torokhov [Sat, 5 Sep 2015 17:19:38 +0000 (10:19 -0700)]
Input: walkera0701 - fix abs() calculations on 64 bit values

abs() function can not be used with 64 bit values, so let's switch to
abs64(). From include/linux/kernel.h:

/*
 * abs() handles unsigned and signed longs, ints, shorts and chars.
 * For all input types abs() returns a signed long.
 * abs() should not be used for 64-bit types (s64, u64, long long)
 * - use abs64() for those.
 */

Reported-by: Joe Perches <joe@perches.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: mms114 - remove unneded semicolons
Javier Martinez Canillas [Mon, 14 Sep 2015 17:38:39 +0000 (10:38 -0700)]
Input: mms114 - remove unneded semicolons

They aren't needed and are just creating null statements so remove it.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: pm8941-pwrkey - remove unneded semicolon
Javier Martinez Canillas [Mon, 14 Sep 2015 17:38:31 +0000 (10:38 -0700)]
Input: pm8941-pwrkey - remove unneded semicolon

It's not needed and is just creating a null statement so remove it.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: fix typo in MT documentation
Daniel Martin [Sat, 19 Sep 2015 18:27:19 +0000 (11:27 -0700)]
Input: fix typo in MT documentation

Section "Event Computation" had this:
    ...
    ABS_MT_TOOL_X := C_X
    ABS_MT_TOOL_X := C_Y

Replace the second ABS_MT_TOOL_X with ABS_MT_TOOL_Y.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: cyapa - fix address of Gen3 devices in device tree documentation
Dudley Du [Sat, 19 Sep 2015 17:39:32 +0000 (10:39 -0700)]
Input: cyapa - fix address of Gen3 devices in device tree documentation

All of the Gen3 touchpads are fixed with I2C address 0x67, so correct the
reg value description from 0x24 to 0x67.

Signed-off-by: Dudley Du <dudl@cypress.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoMerge branch 'next' into for-linus
Dmitry Torokhov [Fri, 11 Sep 2015 16:02:36 +0000 (09:02 -0700)]
Merge branch 'next' into for-linus

Prepare second round of input updates for 4.3 merge window.

9 years agoInput: imx_keypad - remove obsolete comment
Fabio Estevam [Wed, 19 Feb 2014 21:38:13 +0000 (13:38 -0800)]
Input: imx_keypad - remove obsolete comment

Since commit 81e8f2bc (Input: imx_keypad - add pm suspend and resume
support) the imx_keypad driver supports power management, so let's remove
the obsolete comment.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: touchscreen - add imx6ul_tsc driver support
Haibo Chen [Sat, 5 Sep 2015 18:31:21 +0000 (11:31 -0700)]
Input: touchscreen - add imx6ul_tsc driver support

Freescale i.MX6UL contains a internal touchscreen controller,
this patch add a driver to support this controller.

Signed-off-by: Haibo Chen <haibo.chen@freescale.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: Add touchscreen support for Colibri VF50
Sanchayan Maity [Sat, 5 Sep 2015 17:32:09 +0000 (10:32 -0700)]
Input: Add touchscreen support for Colibri VF50

The Colibri Vybrid VF50 module supports 4-wire touchscreens using
FETs and ADC inputs. This driver uses the IIO consumer interface
and relies on the vf610_adc driver based on the IIO framework.

Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: i8042 - lower log level for "no controller" message
Takashi Iwai [Sat, 5 Sep 2015 17:29:09 +0000 (10:29 -0700)]
Input: i8042 - lower log level for "no controller" message

Nowadays the machines without i8042 controller is popular, and no need
to print "No controller found" message in the error log level, which
annoys at booting in quiet mode.  Let's lower it info level.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: evdev - do not report errors form flush()
Takashi Iwai [Fri, 4 Sep 2015 05:20:00 +0000 (22:20 -0700)]
Input: evdev - do not report errors form flush()

We've got bug reports showing the old systemd-logind (at least
system-210) aborting unexpectedly, and this turned out to be because
of an invalid error code from close() call to evdev devices.  close()
is supposed to return only either EINTR or EBADFD, while the device
returned ENODEV.  logind was overreacting to it and decided to kill
itself when an unexpected error code was received.  What a tragedy.

The bad error code comes from flush fops, and actually evdev_flush()
returns ENODEV when device is disconnected or client's access to it is
revoked. But in these cases the fact that flush did not actually happen is
not an error, but rather normal behavior. For non-disconnected devices
result of flush is also not that interesting as there is no potential of
data loss and even if it fails application has no way of handling the
error. Because of that we are better off always returning success from
evdev_flush().

Also returning EINTR from flush()/close() is discouraged (as it is not
clear how application should handle this error), so let's stop taking
evdev->mutex interruptibly.

Bugzilla: http://bugzilla.suse.com/show_bug.cgi?id=939834
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: elants_i2c - extend the calibration timeout to 12 seconds
James Chen [Fri, 4 Sep 2015 05:12:38 +0000 (22:12 -0700)]
Input: elants_i2c - extend the calibration timeout to 12 seconds

The 23 inch device found in Chrome project buddy requires 9.2~10.5 seconds
to complete calibration. Let's increase calibration timeout to 12 seconds
to give the device enough time.

Signed-off-by: James Chen <james.chen@emc.com.tw>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: sparcspkr - fix module autoload for OF platform drivers
Luis de Bethencourt [Thu, 3 Sep 2015 17:50:57 +0000 (10:50 -0700)]
Input: sparcspkr - fix module autoload for OF platform drivers

These platform drivers have a OF device ID table but the OF module
alias information is not created so module autoloading won't work.

Signed-off-by: Luis de Bethencourt <luis@debethencourt.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: regulator-haptic - fix module autoload for OF platform driver
Luis de Bethencourt [Thu, 3 Sep 2015 17:50:21 +0000 (10:50 -0700)]
Input: regulator-haptic - fix module autoload for OF platform driver

This platform driver has a OF device ID table but the OF module
alias information is not created so module autoloading won't work.

Signed-off-by: Luis de Bethencourt <luis@debethencourt.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: pwm-beeper - fix module autoload for OF platform driver
Luis de Bethencourt [Thu, 3 Sep 2015 17:49:46 +0000 (10:49 -0700)]
Input: pwm-beeper - fix module autoload for OF platform driver

This platform driver has a OF device ID table but the OF module
alias information is not created so module autoloading won't work.

Signed-off-by: Luis de Bethencourt <luis@debethencourt.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: ab8500-ponkey - Fix module autoload for OF platform driver
Luis de Bethencourt [Thu, 3 Sep 2015 17:49:17 +0000 (10:49 -0700)]
Input: ab8500-ponkey - Fix module autoload for OF platform driver

This platform driver has a OF device ID table but the OF module
alias information is not created so module autoloading won't work.

Signed-off-by: Luis de Bethencourt <luis@debethencourt.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: cyttsp - remove unnecessary MODULE_ALIAS()
Javier Martinez Canillas [Thu, 3 Sep 2015 17:47:25 +0000 (10:47 -0700)]
Input: cyttsp - remove unnecessary MODULE_ALIAS()

The drivers have a I2C device ID table that is used to create the module
aliases and also "cyttsp" and "cyttsp4" are not supported I2C device IDs
so these module aliases are never used.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: elan_i2c - add ACPI ID "ELAN1000"
João Paulo Rechi Vita [Thu, 3 Sep 2015 17:04:49 +0000 (10:04 -0700)]
Input: elan_i2c - add ACPI ID "ELAN1000"

This ACPI ID present in the DSDT of the ASUS E202SA laptop.

Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoMerge branch 'next' into for-linus
Dmitry Torokhov [Thu, 3 Sep 2015 17:01:44 +0000 (10:01 -0700)]
Merge branch 'next' into for-linus

Prepare first round of input updates for 4.3 merge window.

9 years agoInput: elan_i2c - use iap_version to get firmware information
Duson Lin [Thu, 3 Sep 2015 16:46:45 +0000 (09:46 -0700)]
Input: elan_i2c - use iap_version to get firmware information

When driver is in IAP mode ic_type query may return 0xff. However
iap_version will always be valid, so let's use it to determine parameters
of the firmware that the controller is supposed to accept.

Signed-off-by: Duson Lin <dusonlin@emc.com.tw>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: max8997_haptic - fix module alias
Javier Martinez Canillas [Sat, 29 Aug 2015 00:30:46 +0000 (17:30 -0700)]
Input: max8997_haptic - fix module alias

The driver is a platform driver and not a I2C driver so its modalias
should be exported with MODULE_DEVICE_TABLE(platform,...) instead of
MODULE_DEVICE_TABLE(i2c,...).

Also, remove the unnecessary MODULE_ALIAS("platform:max8997-haptic")
now that the correct module alias is created.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: elan_i2c - fix typos for validpage_count
Benson Leung [Sat, 29 Aug 2015 00:30:16 +0000 (17:30 -0700)]
Input: elan_i2c - fix typos for validpage_count

Search for "vaildpage_count" and replace with "validpage_count".

Signed-off-by: Benson Leung <bleung@chromium.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: psmouse - add small delay for IBM trackpoint pass-through mode
Stefan Assmann [Wed, 26 Aug 2015 20:11:49 +0000 (13:11 -0700)]
Input: psmouse - add small delay for IBM trackpoint pass-through mode

There are trackpoint devices that fail to respond to the PS2 command
PSMOUSE_CMD_GETID if immediately queried after the parent device is
deactivated. Add a small delay for the hardware to get in a sane state
before sending any PS2 commands.

One example of such a system is:
Lenovo ThinkPad X120e, model 30515QG
synaptics: Touchpad model: 1, fw: 8.0, id: 0x1e2b1, caps: 0xd001a3/0x940300/0x121c00, board id: 1811, fw id: 797391

Signed-off-by: Stefan Assmann <sassmann@kpanic.de>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: synaptics - fix handling of disabling gesture mode
Dmitry Torokhov [Thu, 20 Aug 2015 21:28:48 +0000 (14:28 -0700)]
Input: synaptics - fix handling of disabling gesture mode

Bit 2 of the mode byte has dual meaning: it can disable reporting of
gestures when touchpad works in Relative mode or normal Absolute mode,
or it can enable so called Extended W-Mode when touchpad uses enhanced
Absolute mode (W-mode). The extended W-Mode confuses our driver and
causes missing button presses on some Thinkpads (x250, T450s), so let's
make sure we do not enable it.

Also, according to the spec W mode "... bit is defined only in Absolute
mode on pads whose capExtended capability bit is set. In Relative mode and
in TouchPads without this capability, the bit is reserved and should be
left at 0.", so let's make sure we respect this requirement as well.

Reported-by: Nick Bowler <nbowler@draconx.ca>
Suggested-by: Gabor Balla <gaborwho@gmail.com>
Tested-by: Gabor Balla <gaborwho@gmail.com>
Tested-by: Nick Bowler <nbowler@draconx.ca>
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: elan_i2c - enable ELAN0100 acpi panels
Michele Curti [Mon, 24 Aug 2015 17:49:29 +0000 (10:49 -0700)]
Input: elan_i2c - enable ELAN0100 acpi panels

Enable ELAN0100 touchpad driver, found on a Asus X205TA laptop, to
gai 2,3 fingers tap and 2 fingers scroll.

Signed-off-by: Michele Curti <michele.curti@gmail.com>
Reviewed-by: Duson Lin <dusonlin@emc.com.tw>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: gpio-keys - report error when disabling unsupported key
Peng Fan [Mon, 24 Aug 2015 17:42:25 +0000 (10:42 -0700)]
Input: gpio-keys - report error when disabling unsupported key

When trying to disable a key that is not supported by the device we should
report error, not do nothing and report success:

root@yocto:/sys/devices/soc0/gpio-keys# cat keys
114-116
root@yocto:/sys/devices/soc0/gpio-keys# echo 77 > keys
root@yocto:/sys/devices/soc0/gpio-keys#

We want 'echo 77 > keys' to report an error, but silence to give us an
illusion that all is 'ok'.

Signed-off-by: Peng Fan <van.freenix@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: sur40 - fix error return code
Julia Lawall [Mon, 24 Aug 2015 17:51:04 +0000 (10:51 -0700)]
Input: sur40 - fix error return code

Propagate error code on failure, or upper layers will be confused by
returned 0 (success) code.

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: sentelic - silence some underflow warnings
Dan Carpenter [Fri, 21 Aug 2015 16:29:50 +0000 (09:29 -0700)]
Input: sentelic - silence some underflow warnings

I have a static checker that complains when we check for an upper bound
but don't have a corresponding check for a lower bound.  With this code,
the upper bound check seems not really required, so it is not a bug to
leave the lower bound check out as well.  But let's silence the warning
by making these variables unsigned.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: zhenhua - switch to using bitrev8()
Yalin Wang [Fri, 21 Aug 2015 00:41:42 +0000 (17:41 -0700)]
Input: zhenhua - switch to using bitrev8()

Instead of custom zhenhua_bitreverse() let's use generic bitrev8().

Signed-off-by: Yalin Wang <yalin.wang2010@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: gpio_keys_polled - request GPIO pin as input.
Vincent Pelletier [Thu, 20 Aug 2015 19:00:19 +0000 (12:00 -0700)]
Input: gpio_keys_polled - request GPIO pin as input.

GPIOF_IN flag was lost in:
Commit 633a21d80b4a("input: gpio_keys_polled: Add support for GPIO
descriptors").

Without this flag, legacy code path (for non-descriptor GPIO declarations)
would configure GPIO as output (0 meaning GPIOF_DIR_OUT | GPIOF_INIT_LOW).

Cc: stable@vger.kernel.org
Signed-off-by: Vincent Pelletier <plr.vincent@gmail.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: cros_ec_keyb - replace KEYBOARD_CROS_EC dependency
Javier Martinez Canillas [Wed, 19 Aug 2015 21:20:45 +0000 (14:20 -0700)]
Input: cros_ec_keyb - replace KEYBOARD_CROS_EC dependency

The ChromeOS EC keyboard driver config depends on CROS_EC_PROTO but
MFD_CROS_EC selects CROS_EC_PROTO instead. Mixing select and depends
on is bad practice as it may lead to circular Kconfig dependencies.

Since the platform device that is matched with the keyboard driver
is registered by the ChromeOS EC mfd driver, KEYBOARD_CROS_EC really
should depend on MFD_CROS_EC. And because this config option selects
CROS_EC_PROTO, that dependency is met as well. So make the driver
to depend on MFD_CROS_EC instead of CROS_EC_PROTO.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: cap11xx - add LED support
Matt Ranostay [Mon, 17 Aug 2015 06:04:53 +0000 (23:04 -0700)]
Input: cap11xx - add LED support

Several cap11xx variants have LEDs that be can be controlled; let's plug
the driver into the LED subsystem.

Signed-off-by: Matt Ranostay <mranostay@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: elants_i2c - fix for devm_gpiod_get API change
Stephen Rothwell [Mon, 10 Aug 2015 05:37:46 +0000 (22:37 -0700)]
Input: elants_i2c - fix for devm_gpiod_get API change

Flags are now mandatory for devm_gpiod_get(). So let's use proper flag
to configure gpio for output instead of doing this by hand.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
[Dmitry: GPIOD_ASIS -> GPIOD_OUT_LOW]
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: elan_i2c - enable asynchronous probing
Dmitry Torokhov [Wed, 5 Aug 2015 19:01:30 +0000 (12:01 -0700)]
Input: elan_i2c - enable asynchronous probing

It takes a bit of time to go through controller power up sequence and
initialization. To not stall the overall boot progress let's probe the
controller asynchronously, given that userspace is usually prepared for
hot-plugging of input devices and thus does not rely on particular
ordering.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: elants_i2c - enable asynchronous probing
Dmitry Torokhov [Wed, 15 Apr 2015 01:18:34 +0000 (18:18 -0700)]
Input: elants_i2c - enable asynchronous probing

It takes a bit of time to go through controller power up sequence and
initialization. To not stall the overall boot progress let's probe the
controller asynchronously, given that userspace is usually prepared for
hot-plugging of input devices and thus does not rely on particular
ordering.

Signed-off-by: Dmitry Torokhov <dtor@chromium.org>
Reviewed-by: Benson Leung <bleung@chromium.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: elants_i2c - wire up regulator support
Dmitry Torokhov [Fri, 17 Apr 2015 01:14:55 +0000 (18:14 -0700)]
Input: elants_i2c - wire up regulator support

Elan touchscreen controllers use two power supplies, vcc33 and vccio,
and we need to enable them before trying to access the device. On X86
firmware usually does this, but on ARM it is usually left to the kernel.

Signed-off-by: Dmitry Torokhov <dtor@chromium.org>
Reviewed-by: Benson Leung <bleung@chromium.org>
Reviewed-by: Scott Liu <scott.liu@emc.com.tw>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: do not emit unneeded EV_SYN when suspending
Dmitry Torokhov [Fri, 7 Aug 2015 02:15:30 +0000 (19:15 -0700)]
Input: do not emit unneeded EV_SYN when suspending

Do not emit EV_SYN/SYN_REPORT on suspend if there were no keys that are
still pressed as we are suspending the device (and in all other cases when
input core is forcibly releasing keys via input_dev_release_keys() call).

Reviewed-by: Benson Leung <bleung@chromium.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: elantech - add special check for fw_version 0x470f01 touchpad
Duson Lin [Fri, 7 Aug 2015 21:37:24 +0000 (14:37 -0700)]
Input: elantech - add special check for fw_version 0x470f01 touchpad

It is no need to check the packet[0] for sanity check when doing
elantech_packet_check_v4() function for fw_version = 0x470f01 touchpad.

Signed-off by: Duson Lin <dusonlin@emc.com.tw>
Reviewed-by: Ulrik De Bie <ulrik.debie-os@e2big.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: twl4030-vibra - fix ERROR: Bad of_node_put() warning
Marek Belisko [Wed, 29 Jul 2015 21:02:19 +0000 (14:02 -0700)]
Input: twl4030-vibra - fix ERROR: Bad of_node_put() warning

Fix following:
[    8.862274] ERROR: Bad of_node_put() on /ocp/i2c@48070000/twl@48/audio
[    8.869293] CPU: 0 PID: 1003 Comm: modprobe Not tainted 4.2.0-rc2-letux+ #1175
[    8.876922] Hardware name: Generic OMAP36xx (Flattened Device Tree)
[    8.883514] [<c00159e0>] (unwind_backtrace) from [<c0012488>] (show_stack+0x10/0x14)
[    8.891693] [<c0012488>] (show_stack) from [<c05cb810>] (dump_stack+0x78/0x94)
[    8.899322] [<c05cb810>] (dump_stack) from [<c02cfd5c>] (kobject_release+0x68/0x7c)
[    8.907409] [<c02cfd5c>] (kobject_release) from [<bf0040c4>] (twl4030_vibra_probe+0x74/0x188 [twl4030_vibra])
[    8.917877] [<bf0040c4>] (twl4030_vibra_probe [twl4030_vibra]) from [<c03816ac>] (platform_drv_probe+0x48/0x90)
[    8.928497] [<c03816ac>] (platform_drv_probe) from [<c037feb4>] (really_probe+0xd4/0x238)
[    8.937103] [<c037feb4>] (really_probe) from [<c0380160>] (driver_probe_device+0x30/0x48)
[    8.945678] [<c0380160>] (driver_probe_device) from [<c03801e0>] (__driver_attach+0x68/0x8c)
[    8.954589] [<c03801e0>] (__driver_attach) from [<c037ea60>] (bus_for_each_dev+0x50/0x84)
[    8.963226] [<c037ea60>] (bus_for_each_dev) from [<c037f828>] (bus_add_driver+0xcc/0x1e4)
[    8.971832] [<c037f828>] (bus_add_driver) from [<c0380b60>] (driver_register+0x9c/0xe0)
[    8.980255] [<c0380b60>] (driver_register) from [<c00097e0>] (do_one_initcall+0x100/0x1b8)
[    8.988983] [<c00097e0>] (do_one_initcall) from [<c00b8008>] (do_init_module+0x58/0x1c0)
[    8.997497] [<c00b8008>] (do_init_module) from [<c00b8cac>] (SyS_init_module+0x54/0x64)
[    9.005950] [<c00b8cac>] (SyS_init_module) from [<c000ed20>] (ret_fast_syscall+0x0/0x54)
[    9.015838] input: twl4030:vibrator as /devices/platform/68000000.ocp/48070000.i2c/i2c-0/0-0048/48070000.i2c:twl@48:audio/input/input2

node passed to of_find_node_by_name is put inside that function and new node
is returned if found. Free returned node not already freed node.

Signed-off-by: Marek Belisko <marek@goldelico.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: elants_i2c - disable idle mode before updating firmware
James Chen [Mon, 20 Jul 2015 18:16:36 +0000 (11:16 -0700)]
Input: elants_i2c - disable idle mode before updating firmware

If the device is in idle mode and is in the middle of a scan it may not
have a chance to react to the reset and then IAP commands within required
time interval and firmware update may fail. Let's bring the device out of
idle mode before attempting to reset it so that the scan period is smaller
and thus it can react to the command quicker.

Signed-off-by: James Chen <james.chen@emc.com.tw>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoMAINTAINERS: Add maintainer for atmel_mxt_ts
Nick Dyer [Tue, 4 Aug 2015 23:22:54 +0000 (16:22 -0700)]
MAINTAINERS: Add maintainer for atmel_mxt_ts

Signed-off-by: Nick Dyer <nick.dyer@itdev.co.uk>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: atmel_mxt_ts - remove warning on zero T44 count
Nick Dyer [Tue, 4 Aug 2015 23:58:05 +0000 (16:58 -0700)]
Input: atmel_mxt_ts - remove warning on zero T44 count

Signed-off-by: Nick Dyer <nick.dyer@itdev.co.uk>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: atmel_mxt_ts - initialise input slots with INPUT_MT_DIRECT
Nick Dyer [Tue, 4 Aug 2015 23:57:40 +0000 (16:57 -0700)]
Input: atmel_mxt_ts - initialise input slots with INPUT_MT_DIRECT

This indicates the device coordinates should be directly mapped to screen.
This is valid since scaling/flipping/rotation should be done by configuring
the MXT device.

It also flags to Android using INPUT_PROP_DIRECT that the device should be
treated as a touch screen by default, and removes the necessity for a
default IDC file.

Signed-off-by: Nick Dyer <nick.dyer@itdev.co.uk>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: atmel_mxt_ts - disable interrupt for 50ms after reset
Nick Dyer [Tue, 4 Aug 2015 23:57:25 +0000 (16:57 -0700)]
Input: atmel_mxt_ts - disable interrupt for 50ms after reset

The CHG/interrupt line is momentarily set (approximately 100 ms) as an
input after power-up or reset for diagnostic purposes. This may cause
spurious interrupts, so disable interrupt handler during this period.

Signed-off-by: Nick Dyer <nick.dyer@itdev.co.uk>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: atmel_mxt_ts - improve device tree parsing
Nick Dyer [Tue, 4 Aug 2015 23:53:16 +0000 (16:53 -0700)]
Input: atmel_mxt_ts - improve device tree parsing

Use function rather than loop, define np to reduce wrapping.

Signed-off-by: Nick Dyer <nick.dyer@itdev.co.uk>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: atmel_mxt_ts - suspend/resume causes panic if input_dev fails to init
Pan Xinhui [Tue, 4 Aug 2015 23:53:04 +0000 (16:53 -0700)]
Input: atmel_mxt_ts - suspend/resume causes panic if input_dev fails to init

input_dev may be NULL if mxt_initialize_input_device fails. But pm ops is
still available and suspend/resume assume
input_dev is not NULL. To fix this issue, we add a check if (!input_dev).

Signed-off-by: Pan Xinhui <xinhuix.pan@intel.com>
Signed-off-by: Nick Dyer <nick.dyer@itdev.co.uk>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: atmel_mxt_ts - remove unused defines
Nick Dyer [Tue, 4 Aug 2015 23:49:34 +0000 (16:49 -0700)]
Input: atmel_mxt_ts - remove unused defines

Many of these values are out of date and they aren't used in the driver
- all they do is increase the size of the kernel source.

Signed-off-by: Nick Dyer <nick.dyer@itdev.co.uk>
Acked-by: Benson Leung <bleung@chromium.org>
Acked-by: Yufeng Shen <miletus@chromium.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: atmel_mxt_ts - use deep sleep mode when stopped
Nick Dyer [Tue, 4 Aug 2015 23:36:29 +0000 (16:36 -0700)]
Input: atmel_mxt_ts - use deep sleep mode when stopped

The hardcoded 0x83 CTRL setting overrides other settings in that byte,
enabling extra reporting that may not be useful on a particular platform.

Implement improved suspend mechanism via deep sleep. By writing zero to
both the active and idle cycle times the maXTouch device can be put into a
deep sleep mode, using minimal power. It is necessary to issue a calibrate
command after the chip has spent any time in deep sleep, however a soft
reset is unnecessary.

Use the old method on Chromebook Pixel via platform data option.

This patch also deals with the situation where the power configuration is
zero on probe, which would mean that the device never wakes up to execute
commands.

After a config download, the T7 power configuration may have changed so it
is necessary to re-read it.

Signed-off-by: Nick Dyer <nick.dyer@itdev.co.uk>
Acked-by: Benson Leung <bleung@chromium.org>
Acked-by: Yufeng Shen <miletus@chromium.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: Allow compile test of GPIO consumers if !GPIOLIB
Geert Uytterhoeven [Tue, 4 Aug 2015 18:43:40 +0000 (11:43 -0700)]
Input: Allow compile test of GPIO consumers if !GPIOLIB

The GPIO subsystem provides dummy GPIO consumer functions if GPIOLIB is
not enabled. Hence drivers that depend on GPIOLIB, but use GPIO consumer
functionality only, can still be compiled if GPIOLIB is not enabled.

Relax the dependency on GPIOLIB if COMPILE_TEST is enabled, where
appropriate.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: alps - only Dell laptops have separate button bits for v2 dualpoint sticks
Hans de Goede [Mon, 3 Aug 2015 21:06:24 +0000 (14:06 -0700)]
Input: alps - only Dell laptops have separate button bits for v2 dualpoint sticks

It turns out that only Dell laptops have the separate button bits for
v2 dualpoint sticks and that commit 92bac83dd79e ("Input: alps - non
interleaved V2 dualpoint has separate stick button bits") causes
regressions on Toshiba laptops.

This commit adds a check for Dell laptops to the code for handling these
extra button bits, fixing this regression.

This patch has been tested on a Dell Latitude D620 to make sure that it
does not reintroduce the original problem.

Reported-and-tested-by: Douglas Christman <douglaschristman@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: axp20x-pek - add module alias
Chen-Yu Tsai [Mon, 3 Aug 2015 20:29:29 +0000 (13:29 -0700)]
Input: axp20x-pek - add module alias

Add a proper module alias so the driver can be autoloaded when the
parent axp20x mfd driver registers its cells.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Carlo Caione <carlo@caione.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: turbografx - fix potential out of bound access
Dmitry Torokhov [Thu, 30 Jul 2015 18:01:13 +0000 (11:01 -0700)]
Input: turbografx - fix potential out of bound access

Patch 17dd3f0f7aa7: "[PATCH] drivers/input/joystick: convert to dynamic
input_dev allocation" from Sep 15, 2005, leads to the following static
checker warning:

        drivers/input/joystick/turbografx.c:235 tgfx_probe()
        error: buffer overflow 'tgfx_buttons' 5 <= 5

drivers/input/joystick/turbografx.c
   195          for (i = 0; i < n_devs; i++) {
   196                  if (n_buttons[i] < 1)
   197                          continue;
   198
   199                  if (n_buttons[i] > 6) {
                            ^^^^^^^^^^^^^^^^
Possibly off by one.  >= 6.

Let's change the upper value to ARRAY_SIZE(tgfx_buttons) to ensure we do
not reach past the end of the array.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: zforce - make the interrupt GPIO optional
Dirk Behme [Mon, 3 Aug 2015 20:03:09 +0000 (13:03 -0700)]
Input: zforce - make the interrupt GPIO optional

Add support for hardware which uses an I2C Serializer / Deserializer
(SerDes) to communicate with the zFroce touch driver. In this case the
SerDes will be configured as an interrupt controller and the zForce driver
will have no access to poll the GPIO line.

To support this, we add two dedicated new GPIOs in the device tree:
reset-gpios and irq-gpios, with the irq-gpios being optional.

To not break the existing device trees, the index based 'gpios' entries
are still supported, but marked as deprecated.

With this, if the interrupt GPIO is available, either via the old or new
device tree style, the while loop will read and handle the packets as long
as the GPIO indicates that the interrupt is asserted (existing, unchanged
driver behavior).

If the interrupt GPIO isn't available, i.e. not configured via the new
device tree style, we are falling back to one read per ISR invocation
(new behavior to support the SerDes).

Note that the gpiod functions help to handle the optional GPIO:
devm_gpiod_get_index_optional() will return NULL in case the interrupt
GPIO isn't available. And gpiod_get_value_cansleep() does cover this, too,
by returning 0 in this case.

Signed-off-by: Dirk Behme <dirk.behme@de.bosch.com>
Reviewed-by: Heiko Stuebner <heiko.stuebner@bq.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: cyapa - do not try to enable proximity reporting on older devices
Dudley Du [Thu, 30 Jul 2015 18:26:39 +0000 (11:26 -0700)]
Input: cyapa - do not try to enable proximity reporting on older devices

Avoid the driver generate warning message when the cyapa driver working
with the old Gen5 trackpad device which does not support the proximity
function.  Those old Gen5 trackpad device all have the platform version
less than 2.

Signed-off-by: Dudley Du <dudl@cypress.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: cyapa - introduce device tree binding
Dudley Du [Thu, 30 Jul 2015 18:24:16 +0000 (11:24 -0700)]
Input: cyapa - introduce device tree binding

Add device tree support for  Cypress trackpad devices.

Signed-off-by: Dudley Du <dudl@cypress.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: cyapa - add regulator vcc support
Dudley Du [Thu, 30 Jul 2015 18:19:18 +0000 (11:19 -0700)]
Input: cyapa - add regulator vcc support

We need to power up the chip before we can initialize it.

On systems that delegate task of powering up regulators to firmware we
assume that we'll be simply given a dummy regulator.

Signed-off-by: Dudley Du <dudl@cypress.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: touchscreen - export OF module alias information
Javier Martinez Canillas [Thu, 30 Jul 2015 17:39:28 +0000 (10:39 -0700)]
Input: touchscreen - export OF module alias information

The I2C core always reports the MODALIAS uevent as "i2c:<client name"
regardless if the driver was matched using the I2C id_table or the
of_match_table. So technically there's no need for a driver to export
the OF table since currently it's not used.

In fact, the I2C device ID table is mandatory for I2C drivers since
a i2c_device_id is passed to the driver's probe function even if the
I2C core used the OF table to match the driver.

And since the I2C core uses different tables, OF-only drivers needs to
have duplicated data that has to be kept in sync and also the dev node
compatible manufacturer prefix is stripped when reporting the MODALIAS.

To avoid the above, the I2C core behavior may be changed in the future
to not require an I2C device table for OF-only drivers and report the
OF module alias. So, it's better to also export the OF table to prevent
breaking module autoloading if that happens.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: export I2C module alias information in missing drivers
Javier Martinez Canillas [Thu, 30 Jul 2015 17:38:52 +0000 (10:38 -0700)]
Input: export I2C module alias information in missing drivers

The I2C core always reports the MODALIAS uevent as "i2c:<client name"
regardless if the driver was matched using the I2C id_table or the
of_match_table. So the driver needs to export the I2C table and this
be built into the module or udev won't have the necessary information
to auto load the correct module when the device is added.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoRevert "Input: zforce - don't overwrite the stack"
Dmitry Torokhov [Tue, 28 Jul 2015 17:25:03 +0000 (10:25 -0700)]
Revert "Input: zforce - don't overwrite the stack"

This reverts commit 7d01cd261c76f95913c81554a751968a1d282d3a because
with given FRAME_MAXSIZE of 257 the check will never trigger and it
causes warnings from GCC (with -Wtype-limits). Also the check was
incorrect as it was not accounting for the already read 2 bytes of data
stored in the buffer.

9 years agoInput: tsc2005 - convert to gpiod
Sebastian Reichel [Tue, 28 Jul 2015 00:28:58 +0000 (17:28 -0700)]
Input: tsc2005 - convert to gpiod

The GPIOD API can be used from boardcode, so that the DT check can be
removed. To avoid breaking existing boardcode, _optional() variant has been
chosen. For completely removing the DT check, the regulator has also been
made optional, so that it could be supplied from boardcode.

As a side-effect the patch fixes the after-probe reset GPIO state, so that
the device is not kept in reset state.

Signed-off-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: tsc2005 - simplify drvdata acquisition
Sebastian Reichel [Tue, 28 Jul 2015 00:28:37 +0000 (17:28 -0700)]
Input: tsc2005 - simplify drvdata acquisition

Using dev_*_drvdata() instead of spi_*_drvdata() reduces lines of code and
prepares the driver for possible tsc2004 support, which is i2c based.

Signed-off-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: tsc2005 - convert to regmap
Sebastian Reichel [Tue, 28 Jul 2015 00:27:25 +0000 (17:27 -0700)]
Input: tsc2005 - convert to regmap

Convert driver so that it uses regmap instead of directly using
spi_transfer for all register accesses.

Signed-off-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: tsc2005 - fix Kconfig indentation
Sebastian Reichel [Tue, 28 Jul 2015 00:27:09 +0000 (17:27 -0700)]
Input: tsc2005 - fix Kconfig indentation

Replace spaces with tab, so that the tsc2005 Kconfig entry matches the
other entries in drivers/input/touchscreen/Kconfig.

Signed-off-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: tsc2005 - improve readability of register defines
Sebastian Reichel [Tue, 28 Jul 2015 00:26:38 +0000 (17:26 -0700)]
Input: tsc2005 - improve readability of register defines

Improve defines for first control byte by removing 0x00 prefix (the defines
are for 8 bit values and not for 16 bit values) and expose register
structure by exposing the shift.

Signed-off-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: bcm5974 - add support for the 2015 Macbook Pro
John Horan [Fri, 24 Jul 2015 21:45:33 +0000 (14:45 -0700)]
Input: bcm5974 - add support for the 2015 Macbook Pro

Add support for the MacBookPro12,1 model. This patch needs to be
applied together with the accompanied HID patch, as usual.

Tested-by: John Horan <knasher@gmail.com>
Tested-by: Jochen Radmacher <jradmacher@gmx.de>
Tested-by: Yang Hongyang <burnef@gmail.com>
Tested-by: Yen-Chin, Lee <coldnew.tw@gmail.com>
Tested-by: George Hilios <ghilios@gmail.com>
Tested-by: Janez Urevc <janez@janezurevc.name>
Signed-off-by: Henrik Rydberg <rydberg@bitmath.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoHID: apple: Add support for the 2015 Macbook Pro
Henrik Rydberg [Fri, 24 Jul 2015 21:45:05 +0000 (14:45 -0700)]
HID: apple: Add support for the 2015 Macbook Pro

This patch adds keyboard support for MacbookPro12,1 as WELLSPRING9
(0x0272, 0x0273, 0x0274). The touchpad is handled in a separate
bcm5974 patch, as usual.

Tested-by: John Horan <knasher@gmail.com>
Tested-by: Jochen Radmacher <jradmacher@gmx.de>
Tested-by: Yang Hongyang <burnef@gmail.com>
Tested-by: Yen-Chin, Lee <coldnew.tw@gmail.com>
Tested-by: George Hilios <ghilios@gmail.com>
Tested-by: Janez Urevc <janez@janezurevc.name>
Signed-off-by: Henrik Rydberg <rydberg@bitmath.org>
Acked-by: Jiri Kosina <jkosina@suse.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: bcm5974 - prepare for a new trackpad generation
Henrik Rydberg [Fri, 24 Jul 2015 21:44:37 +0000 (14:44 -0700)]
Input: bcm5974 - prepare for a new trackpad generation

With the advent of the Macbook Pro 12, we see a new generation of
trackpads, capable of force sensoring and haptic feedback.

This patch prepares for the new device by adding configuration data
for the code paths that would otherwise look different.

Tested-by: John Horan <knasher@gmail.com>
Tested-by: Jochen Radmacher <jradmacher@gmx.de>
Tested-by: Yang Hongyang <burnef@gmail.com>
Tested-by: Yen-Chin, Lee <coldnew.tw@gmail.com>
Tested-by: George Hilios <ghilios@gmail.com>
Tested-by: Janez Urevc <janez@janezurevc.name>
Signed-off-by: Henrik Rydberg <rydberg@bitmath.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: synaptics - dump ext10 capabilities as well
Jiri Kosina [Fri, 24 Jul 2015 21:33:21 +0000 (14:33 -0700)]
Input: synaptics - dump ext10 capabilities as well

Make extended capabilities obtained through $10 query also available in
touchpad identification.

Signed-off-by: Jiri Kosina <jkosina@suse.com>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: goodix - fix touch coordinates on WinBook TW100 and TW700
Bastien Nocera [Fri, 24 Jul 2015 16:08:53 +0000 (09:08 -0700)]
Input: goodix - fix touch coordinates on WinBook TW100 and TW700

The touchscreen on the WinBook TW100 and TW700 don't match the default
display, with 0,0 touches being reported when touching at the bottom
right of the screen.

  1280,800             0,800
         +-------------+
         |             |
         |             |
         |             |
         +-------------+
    1280,0             0,0

It's unfortunately impossible to detect this problem with data from the
DSDT, or other auxiliary metadata, so fallback to quirking this specific
model of tablet instead.

Signed-off-by: Bastien Nocera <hadess@hadess.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: LEDs - skip unnamed LEDs
Dmitry Torokhov [Wed, 22 Jul 2015 21:56:39 +0000 (14:56 -0700)]
Input: LEDs - skip unnamed LEDs

Devices may declare more LEDs than what is known to input-leds
(HID does this for some devices). Instead of showing ugly warnings
on connect and, even worse, oopsing on disconnect, let's simply
ignore LEDs that are not known to us.

Reported-and-tested-by: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: arizona-haptic - convert to use managed input devices
Dmitry Torokhov [Mon, 6 Jul 2015 17:32:27 +0000 (10:32 -0700)]
Input: arizona-haptic - convert to use managed input devices

Using managed input device (via devm_input_allocate_device) simplifies
error handling and driver removal paths and also silences CID# 712569.

Reviewed-by: Joshua Clayton <stillcompiling@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: cyapa - add ACPI HID CYAP0002 for Gen6 devices
Dudley Du [Tue, 21 Jul 2015 00:15:46 +0000 (17:15 -0700)]
Input: cyapa - add ACPI HID CYAP0002 for Gen6 devices

Add CYTP0002 to the list of ACPI HIDs recognized by the driver.

Signed-off-by: Dudley Du <dudl@cypress.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: cyapa - fully support runtime suspend power management
Dudley Du [Tue, 21 Jul 2015 00:09:59 +0000 (17:09 -0700)]
Input: cyapa - fully support runtime suspend power management

Fix the the runtime suspend power management not working issue when system
starts up and before user touches the trackpad device.
TEST=test on Chromebook.

Signed-off-by: Dudley Du <dudl@cypress.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: cyapa - add proximity support for gen5 and gen6 modules
Dudley Du [Mon, 20 Jul 2015 23:57:53 +0000 (16:57 -0700)]
Input: cyapa - add proximity support for gen5 and gen6 modules

Gen5 and Gen6 trackpad devices are able to detect and report object
proximity data/events, add this function support in the cyapa driver
through the ABS_DISTANCE event.

Signed-off-by: Dudley Du <dudl@cypress.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: cyapa - add gen6 device module support
Dudley Du [Mon, 20 Jul 2015 23:53:30 +0000 (16:53 -0700)]
Input: cyapa - add gen6 device module support

Based on the cyapa core, add support for basic functionality of the gen6
trackpad devices. The driver can automatically determine what protocol
(gen3, gen5, or gen6) should be used with the attached trackpad device.

Signed-off-by: Dudley Du <dudl@cypress.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: cyapa - rename 'gen5' to 'pip' for chared code
Dudley Du [Mon, 20 Jul 2015 23:49:06 +0000 (16:49 -0700)]
Input: cyapa - rename 'gen5' to 'pip' for chared code

Change 'gen5' to 'pip' for all macros, variables and functions that are
shared between gen5 and gen6 modules to make naming more clear and
readable.

Also fix a few spelling errors.

Signed-off-by: Dudley Du <dudl@cypress.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: tc3589x-keypad - switch to using managed resources
Himangi Saraogi [Mon, 26 May 2014 05:33:13 +0000 (22:33 -0700)]
Input: tc3589x-keypad - switch to using managed resources

Let's switch the driver to use managed resources, this will simplify
error handling and driver unbinding logic.

Signed-off-by: Himangi Saraogi <himangi774@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: tc3589x-keypad - change name of wakeup property
Dmitry Torokhov [Sat, 18 Jul 2015 00:08:02 +0000 (17:08 -0700)]
Input: tc3589x-keypad - change name of wakeup property

Wakeup property of device is not Linux-specific, it describes intended
system behavior regardless of the OS being used. Therefore let's drop
"linux," prefix, and, while at it, use the same name as I2C bus does:
"wakeup-source".

We keep parsing old name to keep compatibility with old DTSes.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: samsung-keypad - change name of wakeup property
Dmitry Torokhov [Sat, 18 Jul 2015 00:04:10 +0000 (17:04 -0700)]
Input: samsung-keypad - change name of wakeup property

Wakeup property of device is not Linux-specific, it describes intended
system behavior regardless of the OS being used. Therefore let's drop
"linux," prefix, and, while at it, use the same name as I2C bus does:
"wakeup-source".

We keep parsing old name to keep compatibility with old DTSes.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: gpio_keys[_polled] - change name of wakeup property
Dmitry Torokhov [Thu, 16 Jul 2015 19:10:05 +0000 (12:10 -0700)]
Input: gpio_keys[_polled] - change name of wakeup property

Wakeup property of device is not Linux-specific, it describes intended
system behavior regardless of the OS being used. Therefore let's drop
"linux," prefix, and, while at it, use the same name as I2C bus does:
"wakeup-source".

We keep parsing old name to keep compatibility with old DTSes.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: pmic8xxx-keypad - change name of wakeup property
Dmitry Torokhov [Thu, 16 Jul 2015 19:15:24 +0000 (12:15 -0700)]
Input: pmic8xxx-keypad - change name of wakeup property

Wakeup property of device is not Linux-specific, it describes intended
system behavior regardless of the OS being used. Therefore let's drop
"linux," prefix, and, while at it, use the same name as I2C bus does:
"wakeup-source".

We keep parsing old name to keep compatibility with old DTSes.

Acked-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: ads7846 - change name of wakeup property to "wakeup-source"
Dmitry Torokhov [Thu, 16 Jul 2015 19:03:39 +0000 (12:03 -0700)]
Input: ads7846 - change name of wakeup property to "wakeup-source"

Wakeup property of device is not Linux-specific, it describes intended
system behavior regardless of the OS being used. Therefore let's drop
"linux," prefix, and, while at it, use the same name as I2C bus does:
"wakeup-source".

We keep parsing old name to keep compatibility with old DTSes.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
9 years agoInput: matrix_keypad - change name of wakeup property to "wakeup-source"
Dmitry Torokhov [Thu, 16 Jul 2015 18:54:14 +0000 (11:54 -0700)]
Input: matrix_keypad - change name of wakeup property to "wakeup-source"

Wakeup property of device is not Linux-specific, it describes intended
system behavior regardless of the OS being used. Therefore let's drop
"linux," prefix, and, while at it, use the same name as I2C bus does:
"wakeup-source".

We keep parsing old name to keep compatibility with old DTSes.

Cc: Lothar Waßmann <LW@KARO-electronics.de>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>