All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Matthias Brugger <matthias.bgg@googlemail.com>
Cc: linux-input@vger.kernel.org, grinberg@compulab.co.il,
	Matthias Brugger <matthias.bgg@gmail.com>
Subject: Re: [PATCH 1/2] touchscreen/ads7846.c: Alloc filter data only when needed.
Date: Wed, 24 Oct 2012 11:21:57 -0700	[thread overview]
Message-ID: <20121024182157.GC18122@core.coreip.homeip.net> (raw)
In-Reply-To: <1351078736-16785-1-git-send-email-matthias.bgg@gmail.com>

On Wed, Oct 24, 2012 at 01:38:55PM +0200, Matthias Brugger wrote:
> This patch encapsulates the variables used by the default debounce
> filter in a struct. The values are allocated only if the debounce filter
> is used by the platform.
> 
> Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
> ---
>  drivers/input/touchscreen/ads7846.c |   42 ++++++++++++++++++++++-------------
>  1 file changed, 27 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
> index f02028e..9e61a4b 100644
> --- a/drivers/input/touchscreen/ads7846.c
> +++ b/drivers/input/touchscreen/ads7846.c
> @@ -90,6 +90,15 @@ struct ads7846_packet {
>  	u8			read_x_cmd[3], read_y_cmd[3], pwrdown_cmd[3];
>  };
>  
> +struct ads7846_filterd {
> +	int			read_cnt;
> +	int			read_rep;
> +	int			last_read;
> +	u16			debounce_max;
> +	u16			debounce_tol;
> +	u16			debounce_rep;
> +};
> +
>  struct ads7846 {
>  	struct input_dev	*input;
>  	char			phys[32];
> @@ -121,14 +130,6 @@ struct ads7846 {
>  
>  	bool			pendown;
>  
> -	int			read_cnt;
> -	int			read_rep;
> -	int			last_read;
> -
> -	u16			debounce_max;
> -	u16			debounce_tol;
> -	u16			debounce_rep;
> -
>  	u16			penirq_recheck_delay_usecs;
>  
>  	struct mutex		lock;
> @@ -643,9 +644,14 @@ static void null_wait_for_sync(void)
>  {
>  }
>  
> +static void ads7864_filter_cleanup(void *data)
> +{
> +	kfree(data);
> +}
> +
>  static int ads7846_debounce_filter(void *ads, int data_idx, int *val)
>  {
> -	struct ads7846 *ts = ads;
> +	struct ads7846_filterd *ts = (struct ads7846_filterd*) ads;
>  
>  	if (!ts->read_cnt || (abs(ts->last_read - *val) > ts->debounce_tol)) {
>  		/* Start over collecting consistent readings. */
> @@ -1261,13 +1267,19 @@ static int __devinit ads7846_probe(struct spi_device *spi)
>  		ts->filter = pdata->filter;
>  		ts->filter_cleanup = pdata->filter_cleanup;
>  	} else if (pdata->debounce_max) {
> -		ts->debounce_max = pdata->debounce_max;
> -		if (ts->debounce_max < 2)
> -			ts->debounce_max = 2;
> -		ts->debounce_tol = pdata->debounce_tol;
> -		ts->debounce_rep = pdata->debounce_rep;
> +		struct ads7846_filterd *fdata = kmalloc(sizeof(struct ads7846_filterd), GFP_KERNEL);
> +		if (!fdata) {
> +			err = -ENOMEM;
> +			goto err_free_mem;
> +		}
> +		fdata->debounce_max = pdata->debounce_max;
> +		if (fdata->debounce_max < 2)
> +			fdata->debounce_max = 2;
> +		fdata->debounce_tol = pdata->debounce_tol;
> +		fdata->debounce_rep = pdata->debounce_rep;
>  		ts->filter = ads7846_debounce_filter;
> -		ts->filter_data = ts;
> +		ts->filter_cleanup = ads7864_filter_cleanup;
> +		ts->filter_data = fdata;

So you are maybe saving 18 bytes if data in ads7846 at the expense
of more code... Not really see the great benefit. Maybe just embed
your new ads7846_debounce_data structure in ads7846 to provide logical
separation?

-- 
Dmitry

      parent reply	other threads:[~2012-10-24 18:22 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-24 11:38 [PATCH 1/2] touchscreen/ads7846.c: Alloc filter data only when needed Matthias Brugger
2012-10-24 11:38 ` [PATCH 2/2] touchscreen/ads7846.c: move filter variables to global include Matthias Brugger
2012-10-24 18:17   ` Dmitry Torokhov
2012-10-24 18:21 ` Dmitry Torokhov [this message]

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=20121024182157.GC18122@core.coreip.homeip.net \
    --to=dmitry.torokhov@gmail.com \
    --cc=grinberg@compulab.co.il \
    --cc=linux-input@vger.kernel.org \
    --cc=matthias.bgg@gmail.com \
    --cc=matthias.bgg@googlemail.com \
    /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.