summaryrefslogtreecommitdiff
path: root/drivers/input/touchscreen/gt1x
diff options
context:
space:
mode:
authorJeffy Chen <jeffy.chen@rock-chips.com>2018-06-15 12:35:17 +0800
committerTao Huang <huangtao@rock-chips.com>2018-06-21 10:56:29 +0800
commit141e813a3cb8a3b41cd55fad96dcffb577b69b67 (patch)
treeb952c2111ac3319f62af6dd75c7e4d17da03d2d4 /drivers/input/touchscreen/gt1x
parent88d0096ddc15036404aa77507ce4dad1b2ad389a (diff)
input: touchscreen: gt1x: Reuse the original power control flow
The official driver only has vdd_ana regulator, which matches our case: https://github.com/goodix/gt1x_driver_generic/blob/master/gt1x.c So remove the extra regulators, and reuse the original vdd_ana. Change-Id: Ia080344b3871e1c69b77c0f3048f601d57b8610a Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
Diffstat (limited to 'drivers/input/touchscreen/gt1x')
-rw-r--r--drivers/input/touchscreen/gt1x/gt1x.c31
-rw-r--r--drivers/input/touchscreen/gt1x/gt1x_generic.c6
2 files changed, 8 insertions, 29 deletions
diff --git a/drivers/input/touchscreen/gt1x/gt1x.c b/drivers/input/touchscreen/gt1x/gt1x.c
index 0fb37c2da167..f0cfa078b328 100644
--- a/drivers/input/touchscreen/gt1x/gt1x.c
+++ b/drivers/input/touchscreen/gt1x/gt1x.c
@@ -31,7 +31,6 @@ static const char *input_dev_phys = "input/ts";
#ifdef GTP_CONFIG_OF
int gt1x_rst_gpio;
int gt1x_int_gpio;
-struct regulator *gt1x_supply;
#endif
static int gt1x_register_powermanger(void);
@@ -293,8 +292,6 @@ exit_eint:
#ifdef GTP_CONFIG_OF
static struct regulator *vdd_ana;
-static struct regulator *vcc_i2c;
-
/**
* gt1x_parse_dt - parse platform infomation form devices tree.
*/
@@ -315,23 +312,16 @@ static int gt1x_parse_dt(struct device *dev)
return -EINVAL;
}
- gt1x_supply = devm_regulator_get(dev, "power");
- if (IS_ERR(gt1x_supply)) {
- GTP_ERROR("regulator get of power-supply failed");
- return PTR_ERR(gt1x_supply);
+ vdd_ana = devm_regulator_get_optional(dev, "vdd_ana");
+ if (PTR_ERR(vdd_ana) == -ENODEV) {
+ GTP_ERROR("vdd_ana not specified, fallback to power-supply");
+ vdd_ana = devm_regulator_get_optional(dev, "power");
}
-
- vdd_ana = devm_regulator_get(dev, "vdd_ana");
if (IS_ERR(vdd_ana)) {
- GTP_ERROR("regulator get of vdd_ana failed");
- vdd_ana = NULL;
+ GTP_ERROR("regulator get of vdd_ana/power-supply failed");
+ return PTR_ERR(vdd_ana);
}
- vcc_i2c = devm_regulator_get(dev, "vcc_i2c");
- if (IS_ERR(vcc_i2c)) {
- GTP_ERROR("regulator get of vcc_i2c failed");
- vcc_i2c = NULL;
- }
return 0;
}
@@ -345,18 +335,14 @@ int gt1x_power_switch(int on)
int ret;
struct i2c_client *client = gt1x_i2c_client;
- if (!client || !vdd_ana || !vcc_i2c)
+ if (!client || !vdd_ana)
return -1;
if (on) {
GTP_DEBUG("GTP power on.");
ret = regulator_enable(vdd_ana);
- udelay(2);
- ret = regulator_enable(vcc_i2c);
} else {
GTP_DEBUG("GTP power off.");
- ret = regulator_disable(vcc_i2c);
- udelay(2);
ret = regulator_disable(vdd_ana);
}
return ret;
@@ -372,9 +358,6 @@ static void gt1x_remove_gpio_and_power(void)
gpio_free(gt1x_rst_gpio);
#ifdef GTP_CONFIG_OF
- if (vcc_i2c)
- regulator_put(vcc_i2c);
-
if (vdd_ana)
regulator_put(vdd_ana);
#endif
diff --git a/drivers/input/touchscreen/gt1x/gt1x_generic.c b/drivers/input/touchscreen/gt1x/gt1x_generic.c
index 168b9e94685a..71b589debc97 100644
--- a/drivers/input/touchscreen/gt1x/gt1x_generic.c
+++ b/drivers/input/touchscreen/gt1x/gt1x_generic.c
@@ -944,6 +944,7 @@ static s32 gt1x_enter_sleep(void)
gt1x_power_switch(SWITCH_OFF);
return 0;
#else
+ int ret;
{
int ret;
s32 retry = 0;
@@ -955,7 +956,6 @@ static s32 gt1x_enter_sleep(void)
while (retry++ < 3) {
if (!gt1x_send_cmd(GTP_CMD_SLEEP, 0)) {
GTP_INFO("Enter sleep mode!");
- ret = regulator_disable(gt1x_supply);
if (ret < 0)
GTP_ERROR("disable power-supply error %d\n", ret);
return 0;
@@ -981,12 +981,8 @@ static s32 gt1x_wakeup_sleep(void)
s32 ret = -1;
int flag = 0;
#endif
- s32 ret = -1;
GTP_DEBUG("Wake up begin.");
gt1x_irq_disable();
- ret = regulator_enable(gt1x_supply);
- if (ret < 0)
- GTP_ERROR("enable power-supply error: %d\n", ret);
#if GTP_POWER_CTRL_SLEEP /* power manager unit control the procedure */
gt1x_power_reset();