All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Marek Vasut <marex@denx.de>
Cc: linux-input@vger.kernel.org, Joe Hung <joe_hung@ilitek.com>,
	Luca Hsu <luca_hsu@ilitek.com>
Subject: Re: [PATCH] Input: ili210x - Improve polled sample spacing
Date: Sun, 7 Nov 2021 19:37:26 -0800	[thread overview]
Message-ID: <YYibdjD35P2RklGh@google.com> (raw)
In-Reply-To: <20211108005216.480525-1-marex@denx.de>

Hi Marek,

On Mon, Nov 08, 2021 at 01:52:16AM +0100, Marek Vasut wrote:
> Currently the ili210x driver implements a threaded interrupt handler which
> starts upon edge on the interrupt line, and then polls the touch controller
> for samples. Every time a sample is obtained from the controller, the thread
> function checks whether further polling is required, and if so, waits fixed
> amount of time before polling for next sample.
> 
> The delay between consecutive samples can thus vary greatly, because the
> I2C transfer required to retrieve the sample from the controller takes
> different amount of time on different platforms. Furthermore, different
> models of the touch controllers supported by this driver require different
> delays during retrieval of samples too.
> 
> Instead of waiting fixed amount of time before polling for next sample,
> determine how much time passed since the beginning of sampling cycle and
> then wait only the remaining amount of time within the sampling cycle.
> This makes the driver deliver samples with equal spacing between them.
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> Cc: Joe Hung <joe_hung@ilitek.com>
> Cc: Luca Hsu <luca_hsu@ilitek.com>
> ---
>  drivers/input/touchscreen/ili210x.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
> 
> 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?

> +			if (time_delta > 0)
> +				usleep_range(time_delta, time_delta + 1000);
> +		}
>  	} while (!priv->stop && keep_polling);
>  
>  	return IRQ_HANDLED;
> -- 
> 2.33.0
> 

Thanks.

-- 
Dmitry

  reply	other threads:[~2021-11-08  3:37 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-08  0:52 [PATCH] Input: ili210x - Improve polled sample spacing Marek Vasut
2021-11-08  3:37 ` Dmitry Torokhov [this message]
2021-11-08 11:04   ` Marek Vasut
2021-11-10  6:27     ` Dmitry Torokhov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YYibdjD35P2RklGh@google.com \
    --to=dmitry.torokhov@gmail.com \
    --cc=joe_hung@ilitek.com \
    --cc=linux-input@vger.kernel.org \
    --cc=luca_hsu@ilitek.com \
    --cc=marex@denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.