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
prev 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.