Commit 6d90b4f9 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

Pull input updates from Dmitry Torokhov:
 "Small driver fixups"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
  Input: elants_i2c - avoid divide by 0 errors on bad touchscreen data
  Input: adxl34x - make it enumerable in ACPI environment
  Input: ALPS - fix TrackStick Y axis handling for SS5 hardware
  Input: synaptics-rmi4 - fix F03 build error when serio is module
  Input: xpad - use correct product id for x360w controllers
  Input: synaptics_i2c - change msleep to usleep_range for small msecs
  Input: i8042 - add Pegatron touchpad to noloop table
  Input: joydev - remove unused linux/miscdevice.h include
parents 557ed56c 1c3415a0
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/miscdevice.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/poll.h> #include <linux/poll.h>
#include <linux/init.h> #include <linux/init.h>
......
...@@ -1377,6 +1377,12 @@ static int xpad_init_input(struct usb_xpad *xpad) ...@@ -1377,6 +1377,12 @@ static int xpad_init_input(struct usb_xpad *xpad)
input_dev->name = xpad->name; input_dev->name = xpad->name;
input_dev->phys = xpad->phys; input_dev->phys = xpad->phys;
usb_to_input_id(xpad->udev, &input_dev->id); usb_to_input_id(xpad->udev, &input_dev->id);
if (xpad->xtype == XTYPE_XBOX360W) {
/* x360w controllers and the receiver have different ids */
input_dev->id.product = 0x02a1;
}
input_dev->dev.parent = &xpad->intf->dev; input_dev->dev.parent = &xpad->intf->dev;
input_set_drvdata(input_dev, xpad); input_set_drvdata(input_dev, xpad);
......
...@@ -136,7 +136,6 @@ static const struct i2c_device_id adxl34x_id[] = { ...@@ -136,7 +136,6 @@ static const struct i2c_device_id adxl34x_id[] = {
MODULE_DEVICE_TABLE(i2c, adxl34x_id); MODULE_DEVICE_TABLE(i2c, adxl34x_id);
#ifdef CONFIG_OF
static const struct of_device_id adxl34x_of_id[] = { static const struct of_device_id adxl34x_of_id[] = {
/* /*
* The ADXL346 is backward-compatible with the ADXL345. Differences are * The ADXL346 is backward-compatible with the ADXL345. Differences are
...@@ -153,13 +152,12 @@ static const struct of_device_id adxl34x_of_id[] = { ...@@ -153,13 +152,12 @@ static const struct of_device_id adxl34x_of_id[] = {
}; };
MODULE_DEVICE_TABLE(of, adxl34x_of_id); MODULE_DEVICE_TABLE(of, adxl34x_of_id);
#endif
static struct i2c_driver adxl34x_driver = { static struct i2c_driver adxl34x_driver = {
.driver = { .driver = {
.name = "adxl34x", .name = "adxl34x",
.pm = &adxl34x_i2c_pm, .pm = &adxl34x_i2c_pm,
.of_match_table = of_match_ptr(adxl34x_of_id), .of_match_table = adxl34x_of_id,
}, },
.probe = adxl34x_i2c_probe, .probe = adxl34x_i2c_probe,
.remove = adxl34x_i2c_remove, .remove = adxl34x_i2c_remove,
......
...@@ -114,7 +114,7 @@ enum SS4_PACKET_ID { ...@@ -114,7 +114,7 @@ enum SS4_PACKET_ID {
(_b[1] & 0x7F) \ (_b[1] & 0x7F) \
) )
#define SS4_TS_Y_V2(_b) (s8)( \ #define SS4_TS_Y_V2(_b) -(s8)( \
((_b[3] & 0x01) << 7) | \ ((_b[3] & 0x01) << 7) | \
(_b[2] & 0x7F) \ (_b[2] & 0x7F) \
) )
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
* after soft reset, we should wait for 1 ms * after soft reset, we should wait for 1 ms
* before the device becomes operational * before the device becomes operational
*/ */
#define SOFT_RESET_DELAY_MS 3 #define SOFT_RESET_DELAY_US 3000
/* and after hard reset, we should wait for max 500ms */ /* and after hard reset, we should wait for max 500ms */
#define HARD_RESET_DELAY_MS 500 #define HARD_RESET_DELAY_MS 500
...@@ -311,7 +311,7 @@ static int synaptics_i2c_reset_config(struct i2c_client *client) ...@@ -311,7 +311,7 @@ static int synaptics_i2c_reset_config(struct i2c_client *client)
if (ret) { if (ret) {
dev_err(&client->dev, "Unable to reset device\n"); dev_err(&client->dev, "Unable to reset device\n");
} else { } else {
msleep(SOFT_RESET_DELAY_MS); usleep_range(SOFT_RESET_DELAY_US, SOFT_RESET_DELAY_US + 100);
ret = synaptics_i2c_config(client); ret = synaptics_i2c_config(client);
if (ret) if (ret)
dev_err(&client->dev, "Unable to config device\n"); dev_err(&client->dev, "Unable to config device\n");
......
...@@ -41,7 +41,8 @@ config RMI4_SMB ...@@ -41,7 +41,8 @@ config RMI4_SMB
config RMI4_F03 config RMI4_F03
bool "RMI4 Function 03 (PS2 Guest)" bool "RMI4 Function 03 (PS2 Guest)"
depends on RMI4_CORE && SERIO depends on RMI4_CORE
depends on SERIO=y || RMI4_CORE=SERIO
help help
Say Y here if you want to add support for RMI4 function 03. Say Y here if you want to add support for RMI4 function 03.
......
...@@ -211,6 +211,12 @@ static const struct dmi_system_id __initconst i8042_dmi_noloop_table[] = { ...@@ -211,6 +211,12 @@ static const struct dmi_system_id __initconst i8042_dmi_noloop_table[] = {
DMI_MATCH(DMI_PRODUCT_VERSION, "Rev 1"), DMI_MATCH(DMI_PRODUCT_VERSION, "Rev 1"),
}, },
}, },
{
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "PEGATRON CORPORATION"),
DMI_MATCH(DMI_PRODUCT_NAME, "C15B"),
},
},
{ } { }
}; };
......
...@@ -914,9 +914,9 @@ static irqreturn_t elants_i2c_irq(int irq, void *_dev) ...@@ -914,9 +914,9 @@ static irqreturn_t elants_i2c_irq(int irq, void *_dev)
case QUEUE_HEADER_NORMAL: case QUEUE_HEADER_NORMAL:
report_count = ts->buf[FW_HDR_COUNT]; report_count = ts->buf[FW_HDR_COUNT];
if (report_count > 3) { if (report_count == 0 || report_count > 3) {
dev_err(&client->dev, dev_err(&client->dev,
"too large report count: %*ph\n", "bad report count: %*ph\n",
HEADER_SIZE, ts->buf); HEADER_SIZE, ts->buf);
break; break;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment