[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <01aa2661875444ecc771dfce1f466b6846ac5eea.1452447124.git.oreste.salerno@tomtom.com>
Date: Sun, 10 Jan 2016 18:36:09 +0100
From: Oreste Salerno <oreste.salerno@...tom.com>
To: <linux-kernel@...r.kernel.org>
CC: <linux-input@...r.kernel.org>, <fery@...ress.com>,
<dmitry.torokhov@...il.com>, <robh+dt@...nel.org>,
<pawel.moll@....com>, <mark.rutland@....com>,
<ijc+devicetree@...lion.org.uk>, <galak@...eaurora.org>,
<devicetree@...r.kernel.org>, <oreste.salerno@...tom.com>
Subject: [PATCH v3 3/3] Input: cyttsp - add default init function
When using device trees, it's not possible to assign an init()
function in the platform data.
In case the init function has not been assigned, attempt to
perform a hard reset of the chip, using reset gpio defined in the
platform data / device tree.
Signed-off-by: Oreste Salerno <oreste.salerno@...tom.com>
---
drivers/input/touchscreen/cyttsp_core.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/input/touchscreen/cyttsp_core.c b/drivers/input/touchscreen/cyttsp_core.c
index 5dc6bf6..baf0fd5 100644
--- a/drivers/input/touchscreen/cyttsp_core.c
+++ b/drivers/input/touchscreen/cyttsp_core.c
@@ -239,6 +239,16 @@ static int cyttsp_set_sysinfo_regs(struct cyttsp *ts)
return retval;
}
+static void cyttsp_hard_reset(struct cyttsp *ts)
+{
+ if (ts->pdata->reset_gpio) {
+ gpiod_set_value_cansleep(ts->pdata->reset_gpio, 1);
+ msleep(CY_DELAY_DFLT);
+ gpiod_set_value_cansleep(ts->pdata->reset_gpio, 0);
+ msleep(CY_DELAY_DFLT);
+ }
+}
+
static int cyttsp_soft_reset(struct cyttsp *ts)
{
unsigned long timeout;
@@ -685,6 +695,8 @@ struct cyttsp *cyttsp_probe(const struct cyttsp_bus_ops *bus_ops,
error);
goto err_free_mem;
}
+ } else {
+ cyttsp_hard_reset(ts);
}
input_dev->name = pdata->name;
--
1.9.1
Powered by blists - more mailing lists