platform/kernel/linux-rpi.git
6 years agoMerge branch 'next' into for-linus
Dmitry Torokhov [Mon, 4 Sep 2017 16:22:54 +0000 (09:22 -0700)]
Merge branch 'next' into for-linus

Prepare input updates for 4.14 merge window.

6 years agoInput: byd - make array seq static, reduces object code size
Colin Ian King [Thu, 31 Aug 2017 16:30:44 +0000 (09:30 -0700)]
Input: byd - make array seq static, reduces object code size

Don't populate the array seq on the stack, instead make it static.
Makes the object code smaller by over 1100 bytes:

Before:
   text    data     bss     dec     hex filename
   6152    1216      64    7432    1d08 drivers/input/mouse/byd.o

After:
   text    data     bss     dec     hex filename
   4974    1280      64    6318    18ae drivers/input/mouse/byd.o

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: xilinx_ps2 - fix multiline comment style
Michal Simek [Thu, 31 Aug 2017 21:55:45 +0000 (14:55 -0700)]
Input: xilinx_ps2 - fix multiline comment style

Fix multiline comments style not to be reported by checkpatch.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: pxa27x_keypad - handle return value of clk_prepare_enable
Arvind Yadav [Thu, 31 Aug 2017 18:39:13 +0000 (11:39 -0700)]
Input: pxa27x_keypad - handle return value of clk_prepare_enable

clk_prepare_enable() can fail here and we must check its return value.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: tegra-kbc - handle return value of clk_prepare_enable
Arvind Yadav [Thu, 31 Aug 2017 18:35:29 +0000 (11:35 -0700)]
Input: tegra-kbc - handle return value of clk_prepare_enable

clk_prepare_enable() can fail here and we must check its return value.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: xpad - fix PowerA init quirk for some gamepad models
Cameron Gutman [Thu, 31 Aug 2017 18:52:20 +0000 (11:52 -0700)]
Input: xpad - fix PowerA init quirk for some gamepad models

The PowerA gamepad initialization quirk worked with the PowerA
wired gamepad I had around (0x24c6:0x543a), but a user reported [0]
that it didn't work for him, even though our gamepads shared the
same vendor and product IDs.

When I initially implemented the PowerA quirk, I wanted to avoid
actually triggering the rumble action during init. My tests showed
that my gamepad would work correctly even if it received a rumble
of 0 intensity, so that's what I went with.

Unfortunately, this apparently isn't true for all models (perhaps
a firmware difference?). This non-working gamepad seems to require
the real magic rumble packet that the Microsoft driver sends, which
actually vibrates the gamepad. To counteract this effect, I still
send the old zero-rumble PowerA quirk packet which cancels the
rumble effect before the motors can spin up enough to vibrate.

[0]: https://github.com/paroj/xpad/issues/48#issuecomment-313904867

Reported-by: Kyle Beauchamp <kyleabeauchamp@gmail.com>
Tested-by: Kyle Beauchamp <kyleabeauchamp@gmail.com>
Fixes: 81093c9848a7 ("Input: xpad - support some quirky Xbox One pads")
Cc: stable@vger.kernel.org # v4.12
Signed-off-by: Cameron Gutman <aicommander@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: synaptics - fix device info appearing different on reconnect
Anthony Martin [Mon, 28 Aug 2017 17:26:12 +0000 (10:26 -0700)]
Input: synaptics - fix device info appearing different on reconnect

User-modified input settings no longer survive a suspend/resume cycle.
Starting with 4.12, the touchpad is reinitialized on every reconnect
because the hardware appears to be different. This can be reproduced
by running the following as root:

    echo -n reconnect >/sys/devices/platform/i8042/serio1/drvctl

A line like the following will show up in dmesg:

    [30378.295794] psmouse serio1: synaptics: hardware appears to be
                   different: id(149271-149271), model(114865-114865),
                   caps(d047b3-d047b1), ext(b40000-b40000).

Note the single bit difference in caps: bit 1 (SYN_CAP_MULTIFINGER).

This happens because we modify our stored copy of the device info
capabilities when we enable advanced gesture mode but this change is
not reflected in the actual hardware capabilities.

It worked in the past because synaptics_query_hardware used to modify
the stored synaptics_device_info struct instead of filling in a new
one, as it does now.

Fix it by no longer faking the SYN_CAP_MULTIFINGER bit when setting
advanced gesture mode. This necessitated a small refactoring.

Fixes: 6c53694fb222 ("Input: synaptics - split device info into a separate structure")
Signed-off-by: Anthony Martin <ality@pbrane.org>
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: PS/2 gpio bit banging driver for serio bus
Danilo Krummrich [Mon, 28 Aug 2017 16:59:20 +0000 (09:59 -0700)]
Input: PS/2 gpio bit banging driver for serio bus

This driver provides PS/2 serio bus support by implementing bit banging
with the GPIO API. The GPIO pins, data and clock, can be configured with
a node in the device tree or by generic device properties (GDP).

Writing to a device is supported as well, though it is possible timings
can not be halt as they are tough and difficult to reach with bit banging.
Therefore it can be configured (also in DT and GDP) whether the serio
write function should be available for clients.

This driver is for development purposes and not recommended for productive
use. However, this driver can be useful e.g. when no USB port is available
or using old peripherals is desired as PS/2 controller chips getting rare.

This driver was tested on bcm2825 and on Kirin 960 and it worked well
together with the atkbd and psmouse driver.

Signed-off-by: Danilo Krummrich <danilokrummrich@dk-develop.de>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: xen-kbdfront - enable auto repeat for xen keyboard frontend driver
Liang Yan [Mon, 28 Aug 2017 16:41:08 +0000 (09:41 -0700)]
Input: xen-kbdfront - enable auto repeat for xen keyboard frontend driver

Long pressed key could not show right in XEN vncviewer after tigervnc
client changed the way how to send repeat keys, from "Down Up Down Up
..." to "Down Down ... Up". This will report autorepeat to input by
checking if same key being pressed, and let handler process it finally.

Signed-off-by: Liang Yan <lyan@suse.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: ambakmi - constify amba_id
Arvind Yadav [Wed, 23 Aug 2017 18:37:05 +0000 (11:37 -0700)]
Input: ambakmi - constify amba_id

amba_id are not supposed to change at runtime. All functions
working with const amba_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: ALPS - fix two-finger scroll breakage in right side on ALPS touchpad
Masaki Ota [Thu, 24 Aug 2017 22:44:36 +0000 (15:44 -0700)]
Input: ALPS - fix two-finger scroll breakage in right side on ALPS touchpad

Fixed the issue that two finger scroll does not work correctly
on V8 protocol. The cause is that V8 protocol X-coordinate decode
is wrong at SS4 PLUS device. I added SS4 PLUS X decode definition.

Mote notes:
the problem manifests itself by the commit e7348396c6d5 ("Input: ALPS
- fix V8+ protocol handling (73 03 28)"), where a fix for the V8+
protocol was applied.  Although the culprit must have been present
beforehand, the two-finger scroll worked casually even with the
wrongly reported values by some reason.  It got broken by the commit
above just because it changed x_max value, and this made libinput
correctly figuring the MT events.  Since the X coord is reported as
falsely doubled, the events on the right-half side go outside the
boundary, thus they are no longer handled.  This resulted as a broken
two-finger scroll.

One finger event is decoded differently, and it didn't suffer from
this problem.  The problem was only about MT events. --tiwai

Fixes: e7348396c6d5 ("Input: ALPS - fix V8+ protocol handling (73 03 28)")
Signed-off-by: Masaki Ota <masaki.ota@jp.alps.com>
Tested-by: Takashi Iwai <tiwai@suse.de>
Tested-by: Paul Donohue <linux-kernel@PaulSD.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: atmel_mxt_ts - add support for reset line
Sebastian Reichel [Tue, 25 Jul 2017 21:11:34 +0000 (14:11 -0700)]
Input: atmel_mxt_ts - add support for reset line

Provide support for controlling reset pin. If this is not driven
correctly the device will be held in reset and will not respond.

Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: atmel_mxt_ts - use more managed resources
Sebastian Reichel [Tue, 25 Jul 2017 21:08:48 +0000 (14:08 -0700)]
Input: atmel_mxt_ts - use more managed resources

Switch mxt_data and interrupt to resource managed allocation methods,
which cleans up the driver slightly and prepares for adding
reset GPIO support.

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: soc_button_array - silence -ENOENT error on Dell XPS13 9365
Hans de Goede [Sun, 20 Aug 2017 16:29:03 +0000 (09:29 -0700)]
Input: soc_button_array - silence -ENOENT error on Dell XPS13 9365

The Dell XPS13 9365 has an INT33D2 ACPI node with no GPIOs, causing
the following error in dmesg:

[    7.172275] soc_button_array: probe of INT33D2:00 failed with error -2

This commit silences this, by returning -ENODEV when there are no GPIOs.

BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=196679
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: wacom_w8001 - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:12:40 +0000 (17:12 -0700)]
Input: wacom_w8001 - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: tsc40 - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:12:29 +0000 (17:12 -0700)]
Input: tsc40 - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: touchwin - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:12:14 +0000 (17:12 -0700)]
Input: touchwin - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: touchright - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:12:03 +0000 (17:12 -0700)]
Input: touchright - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: touchit213 - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:11:56 +0000 (17:11 -0700)]
Input: touchit213 - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: penmount - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:11:48 +0000 (17:11 -0700)]
Input: penmount - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: mtouch - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:11:40 +0000 (17:11 -0700)]
Input: mtouch - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: inexio - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:11:32 +0000 (17:11 -0700)]
Input: inexio - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: hampshire - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:11:20 +0000 (17:11 -0700)]
Input: hampshire - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: gunze - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:11:12 +0000 (17:11 -0700)]
Input: gunze - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: fujitsu_ts - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:11:04 +0000 (17:11 -0700)]
Input: fujitsu_ts - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: elo - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:10:53 +0000 (17:10 -0700)]
Input: elo - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: dynapro - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:10:41 +0000 (17:10 -0700)]
Input: dynapro - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: wacom_serial4 - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:10:33 +0000 (17:10 -0700)]
Input: wacom_serial4 - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:10:24 +0000 (17:10 -0700)]
Input: constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: xtkbd - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:10:13 +0000 (17:10 -0700)]
Input: xtkbd - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: sunkbd - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:10:05 +0000 (17:10 -0700)]
Input: sunkbd - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: stowaway - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:09:50 +0000 (17:09 -0700)]
Input: stowaway - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: newtonkbd - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:09:41 +0000 (17:09 -0700)]
Input: newtonkbd - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: lkkbd - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:09:31 +0000 (17:09 -0700)]
Input: lkkbd - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: hil_kbd - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:09:21 +0000 (17:09 -0700)]
Input: hil_kbd - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: iatkbd - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:09:14 +0000 (17:09 -0700)]
Input: iatkbd - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: zhenhua - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:09:05 +0000 (17:09 -0700)]
Input: zhenhua - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: warrior - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:08:52 +0000 (17:08 -0700)]
Input: warrior - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: twidjoy - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:08:41 +0000 (17:08 -0700)]
Input: twidjoy - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: stinger - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:08:29 +0000 (17:08 -0700)]
Input: stinger - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: spaceorb - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:08:17 +0000 (17:08 -0700)]
Input: spaceorb - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: spaceball - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:08:02 +0000 (17:08 -0700)]
Input: spaceball - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: magellan - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:07:48 +0000 (17:07 -0700)]
Input: magellan - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: iforce - constify serio_device_id
Arvind Yadav [Sat, 19 Aug 2017 00:07:32 +0000 (17:07 -0700)]
Input: iforce - constify serio_device_id

serio_device_id are not supposed to change at runtime. All functions
working with serio_device_id provided by <linux/serio.h> work with
const serio_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: elan_i2c - support touchpads with two physical buttons
KT Liao [Fri, 18 Aug 2017 23:49:53 +0000 (16:49 -0700)]
Input: elan_i2c - support touchpads with two physical buttons

Elan touchpads on Asus ROG G752xx series laptops have 2 physical buttons.
Luckily we can query the touchpad to see if it is a clickpad variant and
adjust the behavior accordingly.

Signed-off-by: KT Liao <kt.liao@emc.com.tw>
Tested-by: Maxime Bellengé <maxime.bellenge@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: trackpoint - add new trackpoint firmware ID
Aaron Ma [Fri, 18 Aug 2017 19:17:21 +0000 (12:17 -0700)]
Input: trackpoint - add new trackpoint firmware ID

Synaptics add new TP firmware ID: 0x2 and 0x3, for now both lower 2 bits
are indicated as TP. Change the constant to bitwise values.

This makes trackpoint to be recognized on Lenovo Carbon X1 Gen5 instead
of it being identified as "PS/2 Generic Mouse".

Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: elan_i2c - add ELAN0602 ACPI ID to support Lenovo Yoga310
KT Liao [Fri, 18 Aug 2017 23:58:15 +0000 (16:58 -0700)]
Input: elan_i2c - add ELAN0602 ACPI ID to support Lenovo Yoga310

Add ELAN0602 to the list of known ACPI IDs to enable support for ELAN
touchpads found in Lenovo Yoga310.

Signed-off-by: KT Liao <kt.liao@emc.com.tw>
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: i8042 - constify pnp_device_id
Arvind Yadav [Thu, 17 Aug 2017 00:43:10 +0000 (17:43 -0700)]
Input: i8042 - constify pnp_device_id

pnp_device_id are not supposed to change at runtime. All functions
working with pnp_device_id provided by <linux/pnp.h> work with
const pnp_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: axp20x-pek - add support for AXP221 PEK
Quentin Schulz [Tue, 15 Aug 2017 05:19:42 +0000 (22:19 -0700)]
Input: axp20x-pek - add support for AXP221 PEK

The AXP221 has different values for startup time bits from the AXP20X.

Signed-off-by: Quentin Schulz <quentin.schulz@free-electrons.com>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: axp20x-pek - use driver_data of platform_device_id instead of extended attributes
Quentin Schulz [Tue, 15 Aug 2017 05:16:27 +0000 (22:16 -0700)]
Input: axp20x-pek - use driver_data of platform_device_id instead of extended attributes

To prepare an upcoming patch adding support for another PMIC that has
different startup and shutdown time, use driver_data of
platform_device_id instead of a fixed extended device attribute.

By doing so, we also remove a lot of nested structures that aren't
useful.

With this patch, a new PMIC can be easily supported by just filling
correctly its ax20x_info structure and adding a platform_device_id.

Moreover, since we get rid of extended attributes, rename
axp20x_store_ext_attr to axp20x_store_attr and axp20x_show_ext_attr to
axp20x_show_attr.

Signed-off-by: Quentin Schulz <quentin.schulz@free-electrons.com>
Acked-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: ati_remote2 - constify usb_device_id
Arvind Yadav [Tue, 15 Aug 2017 05:10:55 +0000 (22:10 -0700)]
Input: ati_remote2 - constify usb_device_id

usb_device_id are not supposed to change at runtime. All functions
working with usb_device_id provided by <linux/usb.h> work with
const usb_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: sun4i-ts - constify thermal_zone_of_device_ops structures
Julia Lawall [Tue, 15 Aug 2017 05:10:11 +0000 (22:10 -0700)]
Input: sun4i-ts - constify thermal_zone_of_device_ops structures

The thermal_zone_of_device_ops structure is only passed as the fourth
argument to devm_thermal_zone_of_sensor_register, which is declared
as const.  Thus the thermal_zone_of_device_ops structure itself can
be const.

Done with the help of Coccinelle.

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: pcspkr - fix code style and error value in pcspkr_event
Munir Contractor [Tue, 15 Aug 2017 05:02:08 +0000 (22:02 -0700)]
Input: pcspkr - fix code style and error value in pcspkr_event

This patch fixes the following issues in pcspkr:

* Return -EINVAL when input arguments are not valid in pcspkr_event
  function instead of -1.
* Replace <asm/io.h> with <linux/io.h>
* Fix indentation of case blocks in switch statement
* Reduce length of line 28 to less than 80 characters

The style issues were discovered by checkpatch.pl script.

Signed-off-by: Munir Contractor <munircontractor@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: mxs-lradc - make symbol mxs_lradc_ts_irq_names static
Wei Yongjun [Mon, 14 Aug 2017 17:31:13 +0000 (10:31 -0700)]
Input: mxs-lradc - make symbol mxs_lradc_ts_irq_names static

Fixes the following sparse warning:

drivers/input/touchscreen/mxs-lradc-ts.c:33:12: warning:
 symbol 'mxs_lradc_ts_irq_names' was not declared. Should it be static?

Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
[dtor: changed to static const char * const]
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: mxs-lradc - use correct error check
Pan Bian [Mon, 14 Aug 2017 17:29:13 +0000 (10:29 -0700)]
Input: mxs-lradc - use correct error check

Function devm_ioremap() will return a NULL pointer on failure. However,
in function mxs_lradc_ts_probe(), its return value is checked with
IS_ERR(), which cannot detect the exceptional case.

Signed-off-by: Pan Bian <bianpan2016@163.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: mxs-lradc - do a NULL check on iores
Fabio Estevam [Mon, 14 Aug 2017 17:26:27 +0000 (10:26 -0700)]
Input: mxs-lradc - do a NULL check on iores

platform_get_resource() may fail, so we should better do a NULL check
and return error on failure.

Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: elan_i2c - Add antoher Lenovo ACPI ID for upcoming Lenovo NB
KT Liao [Tue, 15 Aug 2017 03:11:59 +0000 (20:11 -0700)]
Input: elan_i2c - Add antoher Lenovo ACPI ID for upcoming Lenovo NB

Add 2 new IDs (ELAN0609 and ELAN060B) to the list of ACPI IDs that should
be handled by the driver.

Signed-off-by: KT Liao <kt.liao@emc.com.tw>
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: elan_i2c - add ELAN0608 to the ACPI table
Kai-Heng Feng [Tue, 15 Aug 2017 03:11:26 +0000 (20:11 -0700)]
Input: elan_i2c - add ELAN0608 to the ACPI table

Similar to commit 722c5ac708b4f ("Input: elan_i2c - add ELAN0605 to the
ACPI table"), ELAN0608 should be handled by elan_i2c.

This touchpad can be found in Lenovo ideapad 320-14IKB.

BugLink: https://bugs.launchpad.net/bugs/1708852
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: xpad - constify usb_device_id
Arvind Yadav [Tue, 8 Aug 2017 03:04:13 +0000 (20:04 -0700)]
Input: xpad - constify usb_device_id

usb_device_id are not supposed to change at runtime. All functions
working with usb_device_id provided by <linux/usb.h> work with
const usb_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: kbtab - constify usb_device_id
Arvind Yadav [Tue, 8 Aug 2017 02:45:14 +0000 (19:45 -0700)]
Input: kbtab - constify usb_device_id

usb_device_id are not supposed to change at runtime. All functions
working with usb_device_id provided by <linux/usb.h> work with
const usb_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: acecad - constify usb_device_idi and fix space before '[' error
Arvind Yadav [Tue, 8 Aug 2017 02:44:49 +0000 (19:44 -0700)]
Input: acecad - constify usb_device_idi and fix space before '[' error

usb_device_id are not supposed to change at runtime. All functions
working with usb_device_id provided by <linux/usb.h> work with
const usb_device_id. So mark the non-const structs as const.

Fix checkpatch.pl error:
ERROR: space prohibited before open square bracket '['.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: synaptics_usb - constify usb_device_id
Arvind Yadav [Tue, 8 Aug 2017 02:44:37 +0000 (19:44 -0700)]
Input: synaptics_usb - constify usb_device_id

usb_device_id are not supposed to change at runtime. All functions
working with usb_device_id provided by <linux/usb.h> work with
const usb_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: appletouch - constify usb_device_id
Arvind Yadav [Tue, 8 Aug 2017 02:44:25 +0000 (19:44 -0700)]
Input: appletouch - constify usb_device_id

usb_device_id are not supposed to change at runtime. All functions
working with usb_device_id provided by <linux/usb.h> work with
const usb_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: powermate - constify usb_device_id and fix space before '[' error
Arvind Yadav [Tue, 8 Aug 2017 02:44:10 +0000 (19:44 -0700)]
Input: powermate - constify usb_device_id and fix space before '[' error

usb_device_id are not supposed to change at runtime. All functions
working with usb_device_id provided by <linux/usb.h> work with
const usb_device_id. So mark the non-const structs as const.

Fix checkpatch.pl error:
ERROR: space prohibited before open square bracket '['.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: keyspan_remote - constify usb_device_id
Arvind Yadav [Tue, 8 Aug 2017 02:43:52 +0000 (19:43 -0700)]
Input: keyspan_remote - constify usb_device_id

usb_device_id are not supposed to change at runtime. All functions
working with usb_device_id provided by <linux/usb.h> work with
const usb_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: iforce - constify usb_device_id and fix space before '[' error
Arvind Yadav [Tue, 8 Aug 2017 02:43:18 +0000 (19:43 -0700)]
Input: iforce - constify usb_device_id and fix space before '[' error

usb_device_id are not supposed to change at runtime. All functions
working with usb_device_id provided by <linux/usb.h> work with
const usb_device_id. So mark the non-const structs as const.

Fix checkpatch.pl error:
ERROR: space prohibited before open square bracket '['.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: mousedev - fix implicit conversion warning
Nick Desaulniers [Sun, 25 Jun 2017 05:50:12 +0000 (22:50 -0700)]
Input: mousedev - fix implicit conversion warning

Clang warns:

drivers/input/mousedev.c:653:63: error: implicit conversion from 'int'
to 'signed char' changes value from 200 to -56
[-Wconstant-conversion]
  client->ps2[1] = 0x60; client->ps2[2] = 3; client->ps2[3] = 200;
                                                            ~ ^~~
As the PS2 data is really a stream of bytes, let's switch to using u8 type
for it, which silences this warning.

Signed-off-by: Nick Desaulniers <nick.desaulniers@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoARM: pxa/raumfeld: mark rotary encoder properties as __initconst
Dmitry Torokhov [Mon, 23 Jan 2017 07:46:50 +0000 (23:46 -0800)]
ARM: pxa/raumfeld: mark rotary encoder properties as __initconst

device_add_properties() performs deep copy of supplied array of properties,
which means that we can discard the original array.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoInput: add power key driver for Rockchip RK805 PMIC
Joseph Chen [Mon, 24 Jul 2017 22:57:12 +0000 (15:57 -0700)]
Input: add power key driver for Rockchip RK805 PMIC

This driver provides a input driver for the power key on the Rockchip RK805
PMIC.

Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
6 years agoMerge branch 'bind_unbind' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
Dmitry Torokhov [Mon, 24 Jul 2017 23:51:18 +0000 (16:51 -0700)]
Merge branch 'bind_unbind' of git://git./linux/kernel/git/gregkh/driver-core into next

This brings in devm_device_add_group() and friends so that we can create
driver-specific device attributes as managed resources.

7 years agoInput: axp20x-pek - switch to using devm_device_add_group()
Dmitry Torokhov [Thu, 20 Jul 2017 00:24:36 +0000 (17:24 -0700)]
Input: axp20x-pek - switch to using devm_device_add_group()

Now that we have proper managed API to create device attributes, let's
use it instead of installing a custom devm action.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7 years agoInput: synaptics_rmi4 - use devm_device_add_group() for attributes in F01
Dmitry Torokhov [Thu, 20 Jul 2017 00:24:35 +0000 (17:24 -0700)]
Input: synaptics_rmi4 - use devm_device_add_group() for attributes in F01

Now that we have proper managed API to create device attributes, let's
start using it instead of the manual unwinding.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7 years agoInput: gpio_keys - use devm_device_add_group() for attributes
Dmitry Torokhov [Thu, 20 Jul 2017 00:24:34 +0000 (17:24 -0700)]
Input: gpio_keys - use devm_device_add_group() for attributes

Now that we have proper managed API to create device attributes, let's
start using it instead of the manual unwinding.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7 years agodriver core: add devm_device_add_group() and friends
Dmitry Torokhov [Thu, 20 Jul 2017 00:24:33 +0000 (17:24 -0700)]
driver core: add devm_device_add_group() and friends

Many drivers create additional driver-specific device attributes when
binding to the device, and providing managed version of
device_create_group() will simplify unbinding and error handling in probe
path for such drivers.

Without managed version driver writers either have to mix manual and
managed resources, which is prone to errors, or open-code this function by
providing a wrapper to device_add_group() and use it with devm_add_action()
or devm_add_action_or_reset().

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7 years agodriver core: add device_{add|remove}_group() helpers
Dmitry Torokhov [Thu, 20 Jul 2017 00:24:32 +0000 (17:24 -0700)]
driver core: add device_{add|remove}_group() helpers

We have helpers that work with NULL terminated array of groups, but many
drivers only create a single supplemental group, and do not want to declare
a group array. Let's provide them with helpers working with a single group.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7 years agodriver core: make device_{add|remove}_groups() public
Dmitry Torokhov [Thu, 20 Jul 2017 00:24:31 +0000 (17:24 -0700)]
driver core: make device_{add|remove}_groups() public

Many drivers create additional driver-specific device attributes when
binding to the device. To avoid them calling SYSFS API directly, let's
export these helpers.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7 years agodriver core: emit uevents when device is bound to a driver
Dmitry Torokhov [Thu, 20 Jul 2017 00:24:30 +0000 (17:24 -0700)]
driver core: emit uevents when device is bound to a driver

There are certain touch controllers that may come up in either normal
(application) or boot mode, depending on whether firmware/configuration is
corrupted when they are powered on. In boot mode the kernel does not create
input device instance (because it does not necessarily know the
characteristics of the input device in question).

Another number of controllers does not store firmware in a non-volatile
memory, and they similarly need to have firmware loaded before input device
instance is created. There are also other types of devices with similar
behavior.

There is a desire to be able to trigger firmware loading via udev, but it
has to happen only when driver is bound to a physical device (i2c or spi).
These udev actions can not use ADD events, as those happen too early, so we
are introducing BIND and UNBIND events that are emitted at the right
moment.

Also, many drivers create additional driver-specific device attributes
when binding to the device, to provide userspace with additional controls.
The new events allow userspace to adjust these driver-specific attributes
without worrying that they are not there yet.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7 years agoInput: trackpoint - assume 3 buttons when buttons detection fails
Oscar Campos [Wed, 19 Jul 2017 00:20:36 +0000 (17:20 -0700)]
Input: trackpoint - assume 3 buttons when buttons detection fails

Trackpoint buttons detection fails on ThinkPad 570 and 470 series,
this makes the middle button of the trackpoint to not being recogized.
As I don't believe there is any trackpoint with less than 3 buttons this
patch just assumes three buttons when the extended button information
read fails.

Signed-off-by: Oscar Campos <oscar.campos@member.fsf.org>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: sur40 - skip all blobs that are not touches
Florian Echtler [Mon, 10 Jul 2017 17:40:28 +0000 (10:40 -0700)]
Input: sur40 - skip all blobs that are not touches

The SUR40 labels all reported blobs as touch, token, or generic blob.
Previously, all blobs were reported as touch regardless of type, causing
lots of false positives. Present patch fixes this.

Signed-off-by: Martin Kaltenbrunner <modin@yuri.at>
Signed-off-by: Florian Echtler <floe@butterbrot.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: sur40 - silence unnecessary noisy debug output
Florian Echtler [Mon, 10 Jul 2017 17:39:48 +0000 (10:39 -0700)]
Input: sur40 - silence unnecessary noisy debug output

This information is unneccessary, even as debug output.
Leave commented out as documentation of the packet ID quirk.

Signed-off-by: Martin Kaltenbrunner <modin@yuri.at>
Signed-off-by: Florian Echtler <floe@butterbrot.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: sur40 - add additional reverse-engineered information
Florian Echtler [Mon, 10 Jul 2017 17:39:27 +0000 (10:39 -0700)]
Input: sur40 - add additional reverse-engineered information

Due to recent reverse engineering efforts, a lot more information is now
available about the internals of the SUR40. We document this in the kernel
driver for future use.

Signed-off-by: Martin Kaltenbrunner <modin@yuri.at>
Signed-off-by: Florian Echtler <floe@butterbrot.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: ads7846 - constify attribute_group structures
Arvind Yadav [Tue, 11 Jul 2017 03:23:34 +0000 (20:23 -0700)]
Input: ads7846 - constify attribute_group structures

attribute_groups are not supposed to change at runtime. All functions
working with attribute_groups provided by <linux/sysfs.h> work with const
attribute_group. So mark the non-const structs as const.

File size before:
   text    data     bss     dec     hex filename
   9086     624       0    9710    25ee drivers/input/touchscreen/ads7846.o

File size After adding 'const':
   text    data     bss     dec     hex filename
   9198     496       0    9694    25de drivers/input/touchscreen/ads7846.o

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: elants_i2c - constify attribute_group structures
Arvind Yadav [Tue, 11 Jul 2017 03:23:18 +0000 (20:23 -0700)]
Input: elants_i2c - constify attribute_group structures

attribute_groups are not supposed to change at runtime. All functions
working with attribute_groups provided by <linux/sysfs.h> work with const
attribute_group. So mark the non-const structs as const.

File size before:
   text    data     bss     dec     hex filename
   9448    1008       0   10456    28d8 drivers/input/touchscreen/elants_i2c.o

File size After adding 'const':
   text    data     bss     dec     hex filename
   9496     944       0   10440    28c8 drivers/input/touchscreen/elants_i2c.o

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: raydium_i2c_ts - constify attribute_group structures
Arvind Yadav [Tue, 11 Jul 2017 03:23:06 +0000 (20:23 -0700)]
Input: raydium_i2c_ts - constify attribute_group structures

attribute_groups are not supposed to change at runtime. All functions
working with attribute_groups provided by <linux/sysfs.h> work with const
attribute_group. So mark the non-const structs as const.

File size before:
   text    data     bss     dec     hex filename
   7801     560       0    8361    20a9 drivers/input/touchscreen/raydium_i2c_ts.o

File size After adding 'const':
   text    data     bss     dec     hex filename
   7849     496       0    8345    2099 drivers/input/touchscreen/raydium_i2c_ts.o

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: psmouse - constify attribute_group structures
Arvind Yadav [Tue, 11 Jul 2017 03:22:54 +0000 (20:22 -0700)]
Input: psmouse - constify attribute_group structures

attribute_groups are not supposed to change at runtime. All functions
working with attribute_groups provided by <linux/sysfs.h> work with const
attribute_group. So mark the non-const structs as const.

File size before:
   text    data     bss     dec     hex filename
  12850     740      12   13602    3522 drivers/input/mouse/psmouse-base.o

File size After adding 'const':
   text    data     bss     dec     hex filename
  12914     676      12   13602    3522 drivers/input/mouse/psmouse-base.o

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: elantech - constify attribute_group structures
Arvind Yadav [Tue, 11 Jul 2017 03:22:40 +0000 (20:22 -0700)]
Input: elantech - constify attribute_group structures

attribute_groups are not supposed to change at runtime. All functions
working with attribute_groups provided by <linux/sysfs.h> work with const
attribute_group. So mark the non-const structs as const.

File size before:
   text    data     bss     dec     hex filename
  16815    1424       0   18239    473f drivers/input/mouse/elantech.o

File size After adding 'const':
   text    data     bss     dec     hex filename
  16879    1360       0   18239    473f drivers/input/mouse/elantech.o

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: gpio_keys - constify attribute_group structures
Arvind Yadav [Tue, 11 Jul 2017 03:22:20 +0000 (20:22 -0700)]
Input: gpio_keys - constify attribute_group structures

attribute_groups are not supposed to change at runtime. All functions
working with attribute_groups provided by <linux/sysfs.h> work with const
attribute_group. So mark the non-const structs as const.

File size before:
   text    data     bss     dec     hex filename
   5693     464       0    6157    180d drivers/input/keyboard/gpio_keys.o

File size After adding 'const':
   text    data     bss     dec     hex filename
   5749     400       0    6149    1805 drivers/input/keyboard/gpio_keys.o

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: yealink - constify attribute_group structures
Arvind Yadav [Tue, 11 Jul 2017 03:21:06 +0000 (20:21 -0700)]
Input: yealink - constify attribute_group structures

attribute_groups are not supposed to change at runtime. All functions
working with attribute_groups provided by <linux/sysfs.h> work with const
attribute_group. So mark the non-const structs as const.

File size before:
   text    data     bss     dec     hex filename
   6039     944       0    6983    1b47 drivers/input/misc/yealink.o

File size After adding 'const':
   text    data     bss     dec     hex filename
   6103     880       0    6983    1b47 drivers/input/misc/yealink.o

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Henk Vergonet <henk.vergonet@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: ims-pcu - constify attribute_group structures
Arvind Yadav [Tue, 11 Jul 2017 03:18:03 +0000 (20:18 -0700)]
Input: ims-pcu - constify attribute_group structures

attribute_groups are not supposed to change at runtime. All functions
working with attribute_groups provided by <linux/sysfs.h> work with const
attribute_group. So mark the non-const structs as const.

File size before:
   text    data     bss     dec     hex filename
  13547    1600       0   15147    3b2b drivers/input/misc/ims-pcu.o

File size After adding 'const':
   text    data     bss     dec     hex filename
  13675    1472       0   15147    3b2b drivers/input/misc/ims-pcu.o

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: synaptics-rmi4 - constify attribute_group structures in F01
Arvind Yadav [Tue, 11 Jul 2017 03:17:05 +0000 (20:17 -0700)]
Input: synaptics-rmi4 - constify attribute_group structures in F01

attribute_groups are not supposed to change at runtime. All functions
working with attribute_groups provided by <linux/sysfs.h> work with const
attribute_group. So mark the non-const structs as const.

File size before:
   text    data     bss     dec     hex filename
   4777     480       0    5257    1489 drivers/input/rmi4/rmi_f01.o

File size After adding 'const':
   text    data     bss     dec     hex filename
   4817     416       0    5233    1471 drivers/input/rmi4/rmi_f01.o

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: synaptics-rmi4 - constify attribute_group structures in F34
Arvind Yadav [Tue, 11 Jul 2017 03:16:07 +0000 (20:16 -0700)]
Input: synaptics-rmi4 - constify attribute_group structures in F34

attribute_groups are not supposed to change at runtime. All functions
working with attribute_groups provided by <linux/sysfs.h> work with const
attribute_group. So mark the non-const structs as const.

File size before:
   text    data     bss     dec     hex filename
   5287     448       0    5735    1667 drivers/input/rmi4/rmi_f34.o

File size After adding 'const':
   text    data     bss     dec     hex filename
   5339     384       0    5723    165b drivers/input/rmi4/rmi_f34.o

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: constify attribute_group structures
Arvind Yadav [Tue, 11 Jul 2017 03:15:49 +0000 (20:15 -0700)]
Input: constify attribute_group structures

attribute_groups are not supposed to change at runtime. All functions
working with attribute_groups provided by <linux/sysfs.h> work with const
attribute_group. So mark the non-const structs as const.

File size before:
   text    data     bss     dec     hex filename
  17755    1312      16   19083    4a8b drivers/input/input.o

File size After adding 'const':
   text    data     bss     dec     hex filename
  17947    1120      16   19083    4a8b drivers/input/input.o

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: aiptek - constify attribute_group structures
Arvind Yadav [Tue, 11 Jul 2017 03:15:30 +0000 (20:15 -0700)]
Input: aiptek - constify attribute_group structures

attribute_groups are not supposed to change at runtime. All functions
working with attribute_groups provided by <linux/sysfs.h> work with const
attribute_group. So mark the non-const structs as const.

File size before:
   text    data     bss     dec     hex filename
   9941    1560       0   11501    2ced drivers/input/tablet/aiptek.o

File size After adding 'const':
   text    data     bss     dec     hex filename
  10005    1496       0   11501    2ced drivers/input/tablet/aiptek.o

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: serio - constify attribute_group structures
Arvind Yadav [Tue, 11 Jul 2017 03:14:59 +0000 (20:14 -0700)]
Input: serio - constify attribute_group structures

attribute_groups are not supposed to change at runtime. All functions
working with attribute_groups provided by <linux/sysfs.h> work with const
attribute_group. So mark the non-const structs as const.

File size before:
   text    data     bss     dec     hex filename
   6862    1008       4    7874    1ec2 drivers/input/serio/serio.o

File size After adding 'const':
   text    data     bss     dec     hex filename
   6990     880       4    7874    1ec2 drivers/input/serio/serio.o

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoMerge branch 'next' into for-linus
Dmitry Torokhov [Wed, 12 Jul 2017 21:17:17 +0000 (14:17 -0700)]
Merge branch 'next' into for-linus

Prepare second round of input updates for 4.13 merge window.

7 years agoInput: i8042 - fix crash at boot time
Chen Hong [Sun, 2 Jul 2017 22:11:10 +0000 (15:11 -0700)]
Input: i8042 - fix crash at boot time

The driver checks port->exists twice in i8042_interrupt(), first when
trying to assign temporary "serio" variable, and second time when deciding
whether it should call serio_interrupt(). The value of port->exists may
change between the 2 checks, and we may end up calling serio_interrupt()
with a NULL pointer:

BUG: unable to handle kernel NULL pointer dereference at 0000000000000050
IP: [<ffffffff8150feaf>] _spin_lock_irqsave+0x1f/0x40
PGD 0
Oops: 0002 [#1] SMP
last sysfs file:
CPU 0
Modules linked in:

Pid: 1, comm: swapper Not tainted 2.6.32-358.el6.x86_64 #1 QEMU Standard PC (i440FX + PIIX, 1996)
RIP: 0010:[<ffffffff8150feaf>]  [<ffffffff8150feaf>] _spin_lock_irqsave+0x1f/0x40
RSP: 0018:ffff880028203cc0  EFLAGS: 00010082
RAX: 0000000000010000 RBX: 0000000000000000 RCX: 0000000000000000
RDX: 0000000000000282 RSI: 0000000000000098 RDI: 0000000000000050
RBP: ffff880028203cc0 R08: ffff88013e79c000 R09: ffff880028203ee0
R10: 0000000000000298 R11: 0000000000000282 R12: 0000000000000050
R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000098
FS:  0000000000000000(0000) GS:ffff880028200000(0000) knlGS:0000000000000000
CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
CR2: 0000000000000050 CR3: 0000000001a85000 CR4: 00000000001407f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process swapper (pid: 1, threadinfo ffff88013e79c000, task ffff88013e79b500)
Stack:
ffff880028203d00 ffffffff813de186 ffffffffffffff02 0000000000000000
<d> 0000000000000000 0000000000000000 0000000000000000 0000000000000098
<d> ffff880028203d70 ffffffff813e0162 ffff880028203d20 ffffffff8103b8ac
Call Trace:
<IRQ>
 [<ffffffff813de186>] serio_interrupt+0x36/0xa0
[<ffffffff813e0162>] i8042_interrupt+0x132/0x3a0
[<ffffffff8103b8ac>] ? kvm_clock_read+0x1c/0x20
[<ffffffff8103b8b9>] ? kvm_clock_get_cycles+0x9/0x10
[<ffffffff810e1640>] handle_IRQ_event+0x60/0x170
[<ffffffff8103b154>] ? kvm_guest_apic_eoi_write+0x44/0x50
[<ffffffff810e3d8e>] handle_edge_irq+0xde/0x180
[<ffffffff8100de89>] handle_irq+0x49/0xa0
[<ffffffff81516c8c>] do_IRQ+0x6c/0xf0
[<ffffffff8100b9d3>] ret_from_intr+0x0/0x11
[<ffffffff81076f63>] ? __do_softirq+0x73/0x1e0
[<ffffffff8109b75b>] ? hrtimer_interrupt+0x14b/0x260
[<ffffffff8100c1cc>] ? call_softirq+0x1c/0x30
[<ffffffff8100de05>] ? do_softirq+0x65/0xa0
[<ffffffff81076d95>] ? irq_exit+0x85/0x90
[<ffffffff81516d80>] ? smp_apic_timer_interrupt+0x70/0x9b
[<ffffffff8100bb93>] ? apic_timer_interrupt+0x13/0x20

To avoid the issue let's change the second check to test whether serio is
NULL or not.

Also, let's take i8042_lock in i8042_start() and i8042_stop() instead of
trying to be overly smart and using memory barriers.

Signed-off-by: Chen Hong <chenhong3@huawei.com>
[dtor: take lock in i8042_start()/i8042_stop()]
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: gpio_keys - handle the missing key press event in resume phase
Joseph Lo [Sun, 2 Jul 2017 20:38:31 +0000 (13:38 -0700)]
Input: gpio_keys - handle the missing key press event in resume phase

The GPIO key press event might be missed in the resume phase, if the key
had been released before the system had been resumed to the stage that it
could capture the press event. So we simulate the wakeup key press event
in case the key had been released by the time we got interrupt handler
to run.

Signed-off-by: Joseph Lo <josephl@nvidia.com>
Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoInput: xen-kbdfront - add multi-touch support
Oleksandr Andrushchenko [Thu, 29 Jun 2017 07:20:19 +0000 (00:20 -0700)]
Input: xen-kbdfront - add multi-touch support

Extend xen_kbdfront to provide multi-touch support to unprivileged domains.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
[dtor: factor out various sub-protocols - multitouch, single touch, keys]
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
7 years agoMerge branch 'next' into for-linus
Dmitry Torokhov [Thu, 6 Jul 2017 20:51:43 +0000 (13:51 -0700)]
Merge branch 'next' into for-linus

Prepare input updates for 4.13 merge window.

7 years agoLinux 4.12
Linus Torvalds [Sun, 2 Jul 2017 23:07:02 +0000 (16:07 -0700)]
Linux 4.12