[5/8,v3] Input: cyttsp - Reduce reset pulse timings

Message ID 20210408131153.3446138-6-linus.walleij@linaro.org
State Accepted
Commit c61ac36fd52cb3015acd93af5da01f8f8350051f
Headers show
Series
  • Update CYTTSP driver
Related show

Commit Message

Linus Walleij April 8, 2021, 1:11 p.m.
The data sheet for CY8CTMA340 specifies that the reset pulse
shall be at least 1 ms. Specify 1-2 ms with usleep_range()
to cut some slack for the scheduler.

Curiously the datasheet does not specify how long we have to
wait after a hard reset until the chip is up, but I have found
a vendor tree (Samsung GT-S7710) that has code for this touch
screen and there this is set to 5 ms so I use this with
the same 1 ms fuzz.

Reviewed-by: Javier Martinez Canillas <javier@dowhile0.org>

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

---
ChangeLog v1->v3:
- Collect Javier's Reviewed-by
---
 drivers/input/touchscreen/cyttsp_core.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

-- 
2.29.2

Comments

Dmitry Torokhov April 10, 2021, 7:32 a.m. | #1
On Thu, Apr 08, 2021 at 03:11:50PM +0200, Linus Walleij wrote:
> The data sheet for CY8CTMA340 specifies that the reset pulse

> shall be at least 1 ms. Specify 1-2 ms with usleep_range()

> to cut some slack for the scheduler.

> 

> Curiously the datasheet does not specify how long we have to

> wait after a hard reset until the chip is up, but I have found

> a vendor tree (Samsung GT-S7710) that has code for this touch

> screen and there this is set to 5 ms so I use this with

> the same 1 ms fuzz.

> 

> Reviewed-by: Javier Martinez Canillas <javier@dowhile0.org>

> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>


Applied, thank you.

-- 
Dmitry

Patch

diff --git a/drivers/input/touchscreen/cyttsp_core.c b/drivers/input/touchscreen/cyttsp_core.c
index 91f8f38b3f06..84f4f1c1a220 100644
--- a/drivers/input/touchscreen/cyttsp_core.c
+++ b/drivers/input/touchscreen/cyttsp_core.c
@@ -230,10 +230,16 @@  static int cyttsp_set_sysinfo_regs(struct cyttsp *ts)
 static void cyttsp_hard_reset(struct cyttsp *ts)
 {
 	if (ts->reset_gpio) {
+		/*
+		 * According to the CY8CTMA340 datasheet page 21, the external
+		 * reset pulse width should be >= 1 ms. The datasheet does not
+		 * specify how long we have to wait after reset but a vendor
+		 * tree specifies 5 ms here.
+		 */
 		gpiod_set_value_cansleep(ts->reset_gpio, 1);
-		msleep(CY_DELAY_DFLT);
+		usleep_range(1000, 2000);
 		gpiod_set_value_cansleep(ts->reset_gpio, 0);
-		msleep(CY_DELAY_DFLT);
+		usleep_range(5000, 6000);
 	}
 }