Input: cyttsp - reduce reset pulse timings
authorLinus Walleij <linus.walleij@linaro.org>
Sat, 10 Apr 2021 07:31:52 +0000 (00:31 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sat, 10 Apr 2021 07:45:51 +0000 (00:45 -0700)
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>
Link: https://lore.kernel.org/r/20210408131153.3446138-6-linus.walleij@linaro.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/touchscreen/cyttsp_core.c

index 4dc387659e2a4de1eb0ebb2ba7f2f6125248af46..42e353f119764bdf9aed2082831246c2cd82152e 100644 (file)
@@ -229,10 +229,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);
        }
 }