Browse Source

Input: cyttsp - perform hard reset of the chip during probe

Since we removed support for calling an init() callback from
the platform data, introduce a function which initializes
the chip by performing a hard reset, using the reset gpio
defined in the device properties.

Signed-off-by: Oreste Salerno <oreste.salerno@tomtom.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Oreste Salerno 10 years ago
parent
commit
8fb81d2001
1 changed files with 12 additions and 0 deletions
  1. 12 0
      drivers/input/touchscreen/cyttsp_core.c

+ 12 - 0
drivers/input/touchscreen/cyttsp_core.c

@@ -240,6 +240,16 @@ static int cyttsp_set_sysinfo_regs(struct cyttsp *ts)
 	return retval;
 	return retval;
 }
 }
 
 
+static void cyttsp_hard_reset(struct cyttsp *ts)
+{
+	if (ts->reset_gpio) {
+		gpiod_set_value_cansleep(ts->reset_gpio, 1);
+		msleep(CY_DELAY_DFLT);
+		gpiod_set_value_cansleep(ts->reset_gpio, 0);
+		msleep(CY_DELAY_DFLT);
+	}
+}
+
 static int cyttsp_soft_reset(struct cyttsp *ts)
 static int cyttsp_soft_reset(struct cyttsp *ts)
 {
 {
 	unsigned long timeout;
 	unsigned long timeout;
@@ -666,6 +676,8 @@ struct cyttsp *cyttsp_probe(const struct cyttsp_bus_ops *bus_ops,
 
 
 	disable_irq(ts->irq);
 	disable_irq(ts->irq);
 
 
+	cyttsp_hard_reset(ts);
+
 	error = cyttsp_power_on(ts);
 	error = cyttsp_power_on(ts);
 	if (error)
 	if (error)
 		return ERR_PTR(error);
 		return ERR_PTR(error);