Merge tag 'v4.4-rc6' into devel
Linux 4.4-rc6
This commit is contained in:
@@ -2487,6 +2487,31 @@ static struct mxt_acpi_platform_data samus_platform_data[] = {
|
||||
{ }
|
||||
};
|
||||
|
||||
static unsigned int chromebook_tp_buttons[] = {
|
||||
KEY_RESERVED,
|
||||
KEY_RESERVED,
|
||||
KEY_RESERVED,
|
||||
KEY_RESERVED,
|
||||
KEY_RESERVED,
|
||||
BTN_LEFT
|
||||
};
|
||||
|
||||
static struct mxt_acpi_platform_data chromebook_platform_data[] = {
|
||||
{
|
||||
/* Touchpad */
|
||||
.hid = "ATML0000",
|
||||
.pdata = {
|
||||
.t19_num_keys = ARRAY_SIZE(chromebook_tp_buttons),
|
||||
.t19_keymap = chromebook_tp_buttons,
|
||||
},
|
||||
},
|
||||
{
|
||||
/* Touchscreen */
|
||||
.hid = "ATML0001",
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
static const struct dmi_system_id mxt_dmi_table[] = {
|
||||
{
|
||||
/* 2015 Google Pixel */
|
||||
@@ -2497,6 +2522,14 @@ static const struct dmi_system_id mxt_dmi_table[] = {
|
||||
},
|
||||
.driver_data = samus_platform_data,
|
||||
},
|
||||
{
|
||||
/* Other Google Chromebooks */
|
||||
.ident = "Chromebook",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"),
|
||||
},
|
||||
.driver_data = chromebook_platform_data,
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
@@ -2701,6 +2734,7 @@ static const struct i2c_device_id mxt_id[] = {
|
||||
{ "qt602240_ts", 0 },
|
||||
{ "atmel_mxt_ts", 0 },
|
||||
{ "atmel_mxt_tp", 0 },
|
||||
{ "maxtouch", 0 },
|
||||
{ "mXT224", 0 },
|
||||
{ }
|
||||
};
|
||||
|
@@ -1316,7 +1316,13 @@ static int __maybe_unused elants_i2c_suspend(struct device *dev)
|
||||
|
||||
disable_irq(client->irq);
|
||||
|
||||
if (device_may_wakeup(dev) || ts->keep_power_in_suspend) {
|
||||
if (device_may_wakeup(dev)) {
|
||||
/*
|
||||
* The device will automatically enter idle mode
|
||||
* that has reduced power consumption.
|
||||
*/
|
||||
ts->wake_irq_enabled = (enable_irq_wake(client->irq) == 0);
|
||||
} else if (ts->keep_power_in_suspend) {
|
||||
for (retry_cnt = 0; retry_cnt < MAX_RETRIES; retry_cnt++) {
|
||||
error = elants_i2c_send(client, set_sleep_cmd,
|
||||
sizeof(set_sleep_cmd));
|
||||
@@ -1326,10 +1332,6 @@ static int __maybe_unused elants_i2c_suspend(struct device *dev)
|
||||
dev_err(&client->dev,
|
||||
"suspend command failed: %d\n", error);
|
||||
}
|
||||
|
||||
if (device_may_wakeup(dev))
|
||||
ts->wake_irq_enabled =
|
||||
(enable_irq_wake(client->irq) == 0);
|
||||
} else {
|
||||
elants_i2c_power_off(ts);
|
||||
}
|
||||
@@ -1345,10 +1347,11 @@ static int __maybe_unused elants_i2c_resume(struct device *dev)
|
||||
int retry_cnt;
|
||||
int error;
|
||||
|
||||
if (device_may_wakeup(dev) && ts->wake_irq_enabled)
|
||||
disable_irq_wake(client->irq);
|
||||
|
||||
if (ts->keep_power_in_suspend) {
|
||||
if (device_may_wakeup(dev)) {
|
||||
if (ts->wake_irq_enabled)
|
||||
disable_irq_wake(client->irq);
|
||||
elants_i2c_sw_reset(client);
|
||||
} else if (ts->keep_power_in_suspend) {
|
||||
for (retry_cnt = 0; retry_cnt < MAX_RETRIES; retry_cnt++) {
|
||||
error = elants_i2c_send(client, set_active_cmd,
|
||||
sizeof(set_active_cmd));
|
||||
|
Reference in New Issue
Block a user