diff mbox series

Input: cyttsp5 - ensure minimum reset pulse width

Message ID 20250204190100.2210863-1-hugo@hugovil.com (mailing list archive)
State New
Headers show
Series Input: cyttsp5 - ensure minimum reset pulse width | expand

Commit Message

Hugo Villeneuve Feb. 4, 2025, 7:01 p.m. UTC
From: Hugo Villeneuve <hvilleneuve@dimonoff.com>

The current reset pulse width is measured to be 5us on a
Renesas RZ/G2L SOM. The manufacturer's minimum reset pulse width is
specified as 10us.

Extend reset pulse width to make sure it is long enough on all platforms.

Also reword confusing comments about reset pin assertion.

Fixes: 5b0c03e24a06 ("Input: Add driver for Cypress Generation 5 touchscreen")
Cc: <stable@vger.kernel.org>
Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
---
 drivers/input/touchscreen/cyttsp5.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)


base-commit: 0de63bb7d91975e73338300a57c54b93d3cc151c

Comments

Alistair Feb. 5, 2025, 10:15 a.m. UTC | #1
On Wed, 5 Feb 2025, at 5:01 AM, Hugo Villeneuve wrote:
> From: Hugo Villeneuve <hvilleneuve@dimonoff.com>
> 
> The current reset pulse width is measured to be 5us on a
> Renesas RZ/G2L SOM. The manufacturer's minimum reset pulse width is
> specified as 10us.
> 
> Extend reset pulse width to make sure it is long enough on all platforms.
> 
> Also reword confusing comments about reset pin assertion.
> 
> Fixes: 5b0c03e24a06 ("Input: Add driver for Cypress Generation 5 touchscreen")
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>

Acked-by: Alistair Francis <alistair@alistair23.me>

> ---
> drivers/input/touchscreen/cyttsp5.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/input/touchscreen/cyttsp5.c b/drivers/input/touchscreen/cyttsp5.c
> index eafe5a9b8964..bb09e84d0e92 100644
> --- a/drivers/input/touchscreen/cyttsp5.c
> +++ b/drivers/input/touchscreen/cyttsp5.c
> @@ -870,13 +870,16 @@ static int cyttsp5_probe(struct device *dev, struct regmap *regmap, int irq,
> ts->input->phys = ts->phys;
> input_set_drvdata(ts->input, ts);
>  
> - /* Reset the gpio to be in a reset state */
> + /* Assert gpio to be in a reset state */
> ts->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
> if (IS_ERR(ts->reset_gpio)) {
> error = PTR_ERR(ts->reset_gpio);
> dev_err(dev, "Failed to request reset gpio, error %d\n", error);
> return error;
> }
> +
> + fsleep(1000); /* Ensure long-enough reset pulse (minimum 10us). */
> +
> gpiod_set_value_cansleep(ts->reset_gpio, 0);
>  
> /* Need a delay to have device up */
> 
> base-commit: 0de63bb7d91975e73338300a57c54b93d3cc151c
> -- 
> 2.39.5
> 
>
Dmitry Torokhov Feb. 5, 2025, 3:33 p.m. UTC | #2
On Tue, Feb 04, 2025 at 02:01:00PM -0500, Hugo Villeneuve wrote:
> From: Hugo Villeneuve <hvilleneuve@dimonoff.com>
> 
> The current reset pulse width is measured to be 5us on a
> Renesas RZ/G2L SOM. The manufacturer's minimum reset pulse width is
> specified as 10us.
> 
> Extend reset pulse width to make sure it is long enough on all platforms.
> 
> Also reword confusing comments about reset pin assertion.
> 
> Fixes: 5b0c03e24a06 ("Input: Add driver for Cypress Generation 5 touchscreen")
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
> ---
>  drivers/input/touchscreen/cyttsp5.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/input/touchscreen/cyttsp5.c b/drivers/input/touchscreen/cyttsp5.c
> index eafe5a9b8964..bb09e84d0e92 100644
> --- a/drivers/input/touchscreen/cyttsp5.c
> +++ b/drivers/input/touchscreen/cyttsp5.c
> @@ -870,13 +870,16 @@ static int cyttsp5_probe(struct device *dev, struct regmap *regmap, int irq,
>  	ts->input->phys = ts->phys;
>  	input_set_drvdata(ts->input, ts);
>  
> -	/* Reset the gpio to be in a reset state */
> +	/* Assert gpio to be in a reset state */
>  	ts->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
>  	if (IS_ERR(ts->reset_gpio)) {
>  		error = PTR_ERR(ts->reset_gpio);
>  		dev_err(dev, "Failed to request reset gpio, error %d\n", error);
>  		return error;
>  	}
> +
> +	fsleep(1000); /* Ensure long-enough reset pulse (minimum 10us). */
> +

If the manufacturer specified that 10us is enough why do we want to wait
100 times longer?

Thanks.
Hugo Villeneuve Feb. 5, 2025, 3:50 p.m. UTC | #3
On Wed, 5 Feb 2025 07:33:36 -0800
Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote:

> On Tue, Feb 04, 2025 at 02:01:00PM -0500, Hugo Villeneuve wrote:
> > From: Hugo Villeneuve <hvilleneuve@dimonoff.com>
> > 
> > The current reset pulse width is measured to be 5us on a
> > Renesas RZ/G2L SOM. The manufacturer's minimum reset pulse width is
> > specified as 10us.
> > 
> > Extend reset pulse width to make sure it is long enough on all platforms.
> > 
> > Also reword confusing comments about reset pin assertion.
> > 
> > Fixes: 5b0c03e24a06 ("Input: Add driver for Cypress Generation 5 touchscreen")
> > Cc: <stable@vger.kernel.org>
> > Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
> > ---
> >  drivers/input/touchscreen/cyttsp5.c | 5 ++++-
> >  1 file changed, 4 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/input/touchscreen/cyttsp5.c b/drivers/input/touchscreen/cyttsp5.c
> > index eafe5a9b8964..bb09e84d0e92 100644
> > --- a/drivers/input/touchscreen/cyttsp5.c
> > +++ b/drivers/input/touchscreen/cyttsp5.c
> > @@ -870,13 +870,16 @@ static int cyttsp5_probe(struct device *dev, struct regmap *regmap, int irq,
> >  	ts->input->phys = ts->phys;
> >  	input_set_drvdata(ts->input, ts);
> >  
> > -	/* Reset the gpio to be in a reset state */
> > +	/* Assert gpio to be in a reset state */
> >  	ts->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
> >  	if (IS_ERR(ts->reset_gpio)) {
> >  		error = PTR_ERR(ts->reset_gpio);
> >  		dev_err(dev, "Failed to request reset gpio, error %d\n", error);
> >  		return error;
> >  	}
> > +
> > +	fsleep(1000); /* Ensure long-enough reset pulse (minimum 10us). */
> > +
> 
> If the manufacturer specified that 10us is enough why do we want to wait
> 100 times longer?

Hi,
10us would do fine. I simply put 1ms because it is then much easier to
see the reset pulse on an oscilloscope when correlating it
with other signals.

Hugo.
diff mbox series

Patch

diff --git a/drivers/input/touchscreen/cyttsp5.c b/drivers/input/touchscreen/cyttsp5.c
index eafe5a9b8964..bb09e84d0e92 100644
--- a/drivers/input/touchscreen/cyttsp5.c
+++ b/drivers/input/touchscreen/cyttsp5.c
@@ -870,13 +870,16 @@  static int cyttsp5_probe(struct device *dev, struct regmap *regmap, int irq,
 	ts->input->phys = ts->phys;
 	input_set_drvdata(ts->input, ts);
 
-	/* Reset the gpio to be in a reset state */
+	/* Assert gpio to be in a reset state */
 	ts->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
 	if (IS_ERR(ts->reset_gpio)) {
 		error = PTR_ERR(ts->reset_gpio);
 		dev_err(dev, "Failed to request reset gpio, error %d\n", error);
 		return error;
 	}
+
+	fsleep(1000); /* Ensure long-enough reset pulse (minimum 10us). */
+
 	gpiod_set_value_cansleep(ts->reset_gpio, 0);
 
 	/* Need a delay to have device up */