summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-08-04 21:39:40 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-08-04 21:39:40 -0700
commit0b3e75a92b90f2cab4d0e4a8e56d17eb06a1bdcd (patch)
tree0a3af7b5e8b8f641e2e5d0f9be0658e350ff0a81
parentbf02aa69f520feda7ca96c9e7c4d58a0b280b98d (diff)
parent0e3bb05bcb52aab75d6816f5821f4c7c7c9bef1b (diff)
Merge "input: touchscreen: reduce lpm current of avdd reg for ITE tech"
-rw-r--r--Documentation/devicetree/bindings/input/touchscreen/it7258_ts_i2c.txt2
-rw-r--r--drivers/input/touchscreen/it7258_ts_i2c.c27
2 files changed, 29 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/input/touchscreen/it7258_ts_i2c.txt b/Documentation/devicetree/bindings/input/touchscreen/it7258_ts_i2c.txt
index 832ec34dbbda..3b2c272d7378 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/it7258_ts_i2c.txt
+++ b/Documentation/devicetree/bindings/input/touchscreen/it7258_ts_i2c.txt
@@ -45,6 +45,7 @@ Optional properties:
- ite,low-reset : boolean, if the controller needs low-state of the reset gpio while
initializing, and reset gpio should be made as high-state to reset the
controller. It means the controller needs "active-high" reset gpio.
+ - ite,avdd-lpm-cur : avdd lpm current value(mA) in suspend state.
Required properties palm-detect-en feature:
- ite,palm-detect-keycode : The keycode that is required to be sent when
@@ -76,5 +77,6 @@ Example:
ite,num-fingers = <2>;
ite,reset-delay = <20>;
ite,low-reset;
+ ite,vdd-lpm-cur = <3000>;
};
};
diff --git a/drivers/input/touchscreen/it7258_ts_i2c.c b/drivers/input/touchscreen/it7258_ts_i2c.c
index 5f1da30ecd88..c60a2b5a94b0 100644
--- a/drivers/input/touchscreen/it7258_ts_i2c.c
+++ b/drivers/input/touchscreen/it7258_ts_i2c.c
@@ -168,6 +168,7 @@ struct IT7260_ts_platform_data {
unsigned int disp_maxy;
unsigned num_of_fingers;
unsigned int reset_delay;
+ unsigned int avdd_lpm_cur;
bool low_reset;
};
@@ -1493,6 +1494,14 @@ static int IT7260_parse_dt(struct device *dev,
return rc;
}
+ rc = of_property_read_u32(np, "ite,avdd-lpm-cur", &temp_val);
+ if (!rc) {
+ pdata->avdd_lpm_cur = temp_val;
+ } else if (rc && (rc != -EINVAL)) {
+ dev_err(dev, "Unable to read avdd lpm current value %d\n", rc);
+ return rc;
+ }
+
pdata->low_reset = of_property_read_bool(np, "ite,low-reset");
rc = IT7260_get_dt_coords(dev, "ite,display-coords", pdata);
@@ -1872,6 +1881,15 @@ static int IT7260_ts_resume(struct device *dev)
if (device_may_wakeup(dev)) {
if (gl_ts->device_needs_wakeup) {
+ /* Set active current for the avdd regulator */
+ if (gl_ts->pdata->avdd_lpm_cur) {
+ retval = reg_set_optimum_mode_check(gl_ts->avdd,
+ IT_I2C_ACTIVE_LOAD_UA);
+ if (retval < 0)
+ dev_err(dev, "Regulator avdd set_opt failed at resume rc=%d\n",
+ retval);
+ }
+
gl_ts->device_needs_wakeup = false;
disable_irq_wake(gl_ts->client->irq);
}
@@ -1910,6 +1928,15 @@ static int IT7260_ts_suspend(struct device *dev)
/* put the device in low power idle mode */
IT7260_ts_chipLowPowerMode(PWR_CTL_LOW_POWER_MODE);
+ /* Set lpm current for avdd regulator */
+ if (gl_ts->pdata->avdd_lpm_cur) {
+ retval = reg_set_optimum_mode_check(gl_ts->avdd,
+ gl_ts->pdata->avdd_lpm_cur);
+ if (retval < 0)
+ dev_err(dev, "Regulator avdd set_opt failed at suspend rc=%d\n",
+ retval);
+ }
+
gl_ts->device_needs_wakeup = true;
enable_irq_wake(gl_ts->client->irq);
}