Commit c86daad2 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 layer fixes from Dmitry Torokhov:
 "Just a few fixups to a couple of drivers"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
  Input: elan_i2c - ignore signals when finishing updating firmware
  Input: elan_i2c - clear INT before resetting controller
  Input: atmel_mxt_ts - add T100 as a readable object
  Input: edt-ft5x06 - increase allowed data range for threshold parameter
parents e2a9aa5a a04f1440
...@@ -36,7 +36,7 @@ Optional properties: ...@@ -36,7 +36,7 @@ Optional properties:
control gpios control gpios
- threshold: allows setting the "click"-threshold in the range - threshold: allows setting the "click"-threshold in the range
from 20 to 80. from 0 to 80.
- gain: allows setting the sensitivity in the range from 0 to - gain: allows setting the sensitivity in the range from 0 to
31. Note that lower values indicate higher 31. Note that lower values indicate higher
......
...@@ -15,7 +15,7 @@ It has been tested with the following devices: ...@@ -15,7 +15,7 @@ It has been tested with the following devices:
The driver allows configuration of the touch screen via a set of sysfs files: The driver allows configuration of the touch screen via a set of sysfs files:
/sys/class/input/eventX/device/device/threshold: /sys/class/input/eventX/device/device/threshold:
allows setting the "click"-threshold in the range from 20 to 80. allows setting the "click"-threshold in the range from 0 to 80.
/sys/class/input/eventX/device/device/gain: /sys/class/input/eventX/device/device/gain:
allows setting the sensitivity in the range from 0 to 31. Note that allows setting the sensitivity in the range from 0 to 31. Note that
......
...@@ -554,32 +554,34 @@ static int elan_i2c_finish_fw_update(struct i2c_client *client, ...@@ -554,32 +554,34 @@ static int elan_i2c_finish_fw_update(struct i2c_client *client,
struct completion *completion) struct completion *completion)
{ {
struct device *dev = &client->dev; struct device *dev = &client->dev;
long ret;
int error; int error;
int len; int len;
u8 buffer[ETP_I2C_INF_LENGTH]; u8 buffer[ETP_I2C_REPORT_LEN];
len = i2c_master_recv(client, buffer, ETP_I2C_REPORT_LEN);
if (len != ETP_I2C_REPORT_LEN) {
error = len < 0 ? len : -EIO;
dev_warn(dev, "failed to read I2C data after FW WDT reset: %d (%d)\n",
error, len);
}
reinit_completion(completion); reinit_completion(completion);
enable_irq(client->irq); enable_irq(client->irq);
error = elan_i2c_write_cmd(client, ETP_I2C_STAND_CMD, ETP_I2C_RESET); error = elan_i2c_write_cmd(client, ETP_I2C_STAND_CMD, ETP_I2C_RESET);
if (!error)
ret = wait_for_completion_interruptible_timeout(completion,
msecs_to_jiffies(300));
disable_irq(client->irq);
if (error) { if (error) {
dev_err(dev, "device reset failed: %d\n", error); dev_err(dev, "device reset failed: %d\n", error);
return error; } else if (!wait_for_completion_timeout(completion,
} else if (ret == 0) { msecs_to_jiffies(300))) {
dev_err(dev, "timeout waiting for device reset\n"); dev_err(dev, "timeout waiting for device reset\n");
return -ETIMEDOUT; error = -ETIMEDOUT;
} else if (ret < 0) {
error = ret;
dev_err(dev, "error waiting for device reset: %d\n", error);
return error;
} }
disable_irq(client->irq);
if (error)
return error;
len = i2c_master_recv(client, buffer, ETP_I2C_INF_LENGTH); len = i2c_master_recv(client, buffer, ETP_I2C_INF_LENGTH);
if (len != ETP_I2C_INF_LENGTH) { if (len != ETP_I2C_INF_LENGTH) {
error = len < 0 ? len : -EIO; error = len < 0 ? len : -EIO;
......
...@@ -350,6 +350,7 @@ static bool mxt_object_readable(unsigned int type) ...@@ -350,6 +350,7 @@ static bool mxt_object_readable(unsigned int type)
case MXT_TOUCH_KEYARRAY_T15: case MXT_TOUCH_KEYARRAY_T15:
case MXT_TOUCH_PROXIMITY_T23: case MXT_TOUCH_PROXIMITY_T23:
case MXT_TOUCH_PROXKEY_T52: case MXT_TOUCH_PROXKEY_T52:
case MXT_TOUCH_MULTITOUCHSCREEN_T100:
case MXT_PROCI_GRIPFACE_T20: case MXT_PROCI_GRIPFACE_T20:
case MXT_PROCG_NOISE_T22: case MXT_PROCG_NOISE_T22:
case MXT_PROCI_ONETOUCH_T24: case MXT_PROCI_ONETOUCH_T24:
......
...@@ -471,7 +471,7 @@ static EDT_ATTR(gain, S_IWUSR | S_IRUGO, WORK_REGISTER_GAIN, ...@@ -471,7 +471,7 @@ static EDT_ATTR(gain, S_IWUSR | S_IRUGO, WORK_REGISTER_GAIN,
static EDT_ATTR(offset, S_IWUSR | S_IRUGO, WORK_REGISTER_OFFSET, static EDT_ATTR(offset, S_IWUSR | S_IRUGO, WORK_REGISTER_OFFSET,
M09_REGISTER_OFFSET, 0, 31); M09_REGISTER_OFFSET, 0, 31);
static EDT_ATTR(threshold, S_IWUSR | S_IRUGO, WORK_REGISTER_THRESHOLD, static EDT_ATTR(threshold, S_IWUSR | S_IRUGO, WORK_REGISTER_THRESHOLD,
M09_REGISTER_THRESHOLD, 20, 80); M09_REGISTER_THRESHOLD, 0, 80);
static EDT_ATTR(report_rate, S_IWUSR | S_IRUGO, WORK_REGISTER_REPORT_RATE, static EDT_ATTR(report_rate, S_IWUSR | S_IRUGO, WORK_REGISTER_REPORT_RATE,
NO_REGISTER, 3, 14); NO_REGISTER, 3, 14);
......
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