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
This commit is contained in:
commit
c86daad2c2
5 changed files with 20 additions and 17 deletions
|
@ -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:
|
||||||
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,
|
||||||
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)
|
||||||
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,
|
||||||
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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue