# Re: \[PATCH\] Input: ili210x - Improve polled sample spacing

- From: Dmitry Torokhov \<dmitry.torokhov@gmail.com\>
- Date: 2021-11-10 06:27:58 
- List: linux-input
- Page: https://ratatoskr.run/linux-input/2021/11/8933562
- Thread: https://ratatoskr.run/linux-input/2021/11/8933555/t.md

```text
On Mon, Nov 08, 2021 at 12:04:30PM +0100, Marek Vasut wrote:
> On 11/8/21 4:37 AM, Dmitry Torokhov wrote:
> > Hi Marek,
> 
> Hi,
> 
> [...]
> 
> > > diff --git a/drivers/input/touchscreen/ili210x.c b/drivers/input/touchscreen/ili210x.c
> > > index a3b71a9511eb3..b2d9fe1e1c707 100644
> > > --- a/drivers/input/touchscreen/ili210x.c
> > > +++ b/drivers/input/touchscreen/ili210x.c
> > > @@ -328,10 +328,13 @@ static irqreturn_t ili210x_irq(int irq, void *irq_data)
> > >   	const struct ili2xxx_chip *chip = priv->chip;
> > >   	u8 touchdata[ILI210X_DATA_SIZE] = { 0 };
> > >   	bool keep_polling;
> > > +	ktime_t time_next;
> > > +	s64 time_delta;
> > >   	bool touch;
> > >   	int error;
> > >   	do {
> > > +		time_next = ktime_add_ms(ktime_get(), ILI2XXX_POLL_PERIOD);
> > >   		error = chip->get_touch_data(client, touchdata);
> > >   		if (error) {
> > >   			dev_err(&client->dev,
> > > @@ -341,8 +344,11 @@ static irqreturn_t ili210x_irq(int irq, void *irq_data)
> > >   		touch = ili210x_report_events(priv, touchdata);
> > >   		keep_polling = chip->continue_polling(touchdata, touch);
> > > -		if (keep_polling)
> > > -			msleep(ILI2XXX_POLL_PERIOD);
> > > +		if (keep_polling) {
> > > +			time_delta = ktime_us_delta(time_next, ktime_get());
> > 
> > Do we really need to use exact time, or ktime_get_coarse() is good
> > enough, as it is cheaper?
> 
> ktime_get_coarse() introduces multi-millisecond jitter into the samples if
> you have low HZ setting, which isn't really nice. That's also why I use
> ktime and not jiffies here, jiffies has the same problem.

Applied, thank you.

-- 
Dmitry
```
