From: Nelson Castillo <[email protected]> This is a cleanup patch fixing simple mistakes and coding conventions. It also applies feedback we got from upstream.
Signed-off-by: Nelson Castillo <[email protected]> --- 0 files changed, 0 insertions(+), 0 deletions(-) diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig index 5db7a67..014a9e7 100644 --- a/drivers/input/touchscreen/Kconfig +++ b/drivers/input/touchscreen/Kconfig @@ -50,7 +50,7 @@ config TOUCHSCREEN_FILTER_LINEAR depends on INPUT_TOUCHSCREEN && TOUCHSCREEN_FILTER default Y help - Say Y here if you want to use the Mean touchscreen filter, it + Say Y here if you want to use the Linear touchscreen filter, it enables the use of calibration data for the touchscreen. endif diff --git a/drivers/input/touchscreen/ts_filter.c b/drivers/input/touchscreen/ts_filter.c index 1508388..d936e45 100644 --- a/drivers/input/touchscreen/ts_filter.c +++ b/drivers/input/touchscreen/ts_filter.c @@ -20,9 +20,11 @@ #include <linux/device.h> #include <linux/ts_filter.h> +static DEFINE_MUTEX(chain_mutex); + int ts_filter_create_chain(struct platform_device *pdev, struct ts_filter_api **api, void **config, - struct ts_filter **list, int count_coords) + struct ts_filter **arr, int count_coords) { int count = 0; struct ts_filter *last = NULL; @@ -30,35 +32,42 @@ int ts_filter_create_chain(struct platform_device *pdev, if (!api) return 0; - while (*api && count < MAX_TS_FILTER_CHAIN) { - *list = ((*api)->create)(pdev, *config++, count_coords); - if (!*list) { + mutex_lock(&chain_mutex); + + while (*api) { + *arr = ((*api)->create)(pdev, *config++, count_coords); + if (!*arr) { printk(KERN_ERR "Filter %d failed init\n", count); return count; } - (*list)->api = *api++; + (*arr)->api = *api++; if (last) - last->next = *list; - last = *list; - list++; + last->next = *arr; + last = *arr; + arr++; count++; } + mutex_unlock(&chain_mutex); + return count; } EXPORT_SYMBOL_GPL(ts_filter_create_chain); void ts_filter_destroy_chain(struct platform_device *pdev, - struct ts_filter **list) + struct ts_filter **arr) { - struct ts_filter **first; - int count = 0; + struct ts_filter **first = arr; - first = list; - while (*list && count++ < MAX_TS_FILTER_CHAIN) { - ((*list)->api->destroy)(pdev, *list); - list++; + mutex_lock(&chain_mutex); + + while (*arr) { + ((*arr)->api->destroy)(pdev, *arr); + arr++; } *first = NULL; + + mutex_unlock(&chain_mutex); } EXPORT_SYMBOL_GPL(ts_filter_destroy_chain); + diff --git a/drivers/input/touchscreen/ts_filter_linear.c b/drivers/input/touchscreen/ts_filter_linear.c index 4803e17..3322c69 100644 --- a/drivers/input/touchscreen/ts_filter_linear.c +++ b/drivers/input/touchscreen/ts_filter_linear.c @@ -30,9 +30,7 @@ #include <linux/string.h> -/* - * sysfs functions - */ +/* sysfs functions */ static ssize_t const_attr_show(struct kobject *kobj, @@ -82,9 +80,7 @@ static ssize_t const_store(struct const_obj *obj, struct const_attribute *attr, return count; } -/* - * filter functions - */ +/* filter functions */ static struct ts_filter *ts_filter_linear_create(struct platform_device *pdev, void *conf, int count_coords) @@ -118,7 +114,6 @@ static struct ts_filter *ts_filter_linear_create(struct platform_device *pdev, tsfl->const_ktype.default_attrs = tsfl->attrs; tsfl->c_obj.tsfl = tsfl; /* kernel frees tsfl in const_release */ - /* TODO: /sys/ts-calibration is not OK */ ret = kobject_init_and_add(&tsfl->c_obj.kobj, &tsfl->const_ktype, &pdev->dev.kobj, "calibration"); if (ret) { diff --git a/drivers/input/touchscreen/ts_filter_mean.c b/drivers/input/touchscreen/ts_filter_mean.c index a7b4a5a..409ccc7 100644 --- a/drivers/input/touchscreen/ts_filter_mean.c +++ b/drivers/input/touchscreen/ts_filter_mean.c @@ -63,7 +63,7 @@ static struct ts_filter *ts_filter_mean_create(struct platform_device *pdev, int n; struct ts_filter_mean *tsfs = kzalloc( sizeof(struct ts_filter_mean), GFP_KERNEL); - + if (!tsfs) return NULL; @@ -112,8 +112,9 @@ static void ts_filter_mean_scale(struct ts_filter *tsf, int *coords) (tsf->next->api->scale)(tsf->next, coords); } -/* give us the raw sample data in x and y, and if we return 1 then you can - * get a filtered coordinate from tsm->x and tsm->y: if we return 0 you didn't +/* + * Give us the raw sample data in x and y, and if we return 1 then you can + * get a filtered coordinate from tsm->x and tsm->y. If we return 0 you didn't * fill the filter with samples yet. */ @@ -125,7 +126,8 @@ static int ts_filter_mean_process(struct ts_filter *tsf, int *coords) for (n = 0; n < tsf->count_coords; n++) { - /* has he moved far enough away that we should abandon current + /* + * Has he moved far enough away that we should abandon current * low pass filtering state? */ if ((coords[n] < (tsfs->reported[n] - diff --git a/drivers/input/touchscreen/ts_filter_median.c b/drivers/input/touchscreen/ts_filter_median.c index 883ab06..a033716 100644 --- a/drivers/input/touchscreen/ts_filter_median.c +++ b/drivers/input/touchscreen/ts_filter_median.c @@ -141,8 +141,9 @@ static void ts_filter_median_scale(struct ts_filter *tsf, int *coords) (tsf->next->api->scale)(tsf->next, coords); } -/* give us the raw sample data coords, and if we return 1 then you can - * get a filtered coordinate from coords: if we return 0 you didn't +/* + * Give us the raw sample data coords, and if we return 1 then you can + * get a filtered coordinate from coords. If we return 0 you didn't * fill all the filters with samples yet. */ @@ -169,9 +170,10 @@ static int ts_filter_median_process(struct ts_filter *tsf, int *coords) /* discard the oldest sample in median sorted array */ tsfm->valid--; - /* sum the middle 3 in the median sorted arrays. We don't divide back + /* + * Sum the middle 3 in the median sorted arrays. We don't divide back * down which increases the sum resolution by a factor of 3 until the - * scale API is called + * scale API is called. */ for (n = 0; n < tsfm->tsf.count_coords; n++) /* perform the deletion of the oldest sample */ diff --git a/include/linux/ts_filter.h b/include/linux/ts_filter.h index 1671044..5578e93 100644 --- a/include/linux/ts_filter.h +++ b/include/linux/ts_filter.h @@ -2,20 +2,20 @@ #define __TS_FILTER_H__ /* - * touchscreen filter + * Touchscreen filter. * * (c) 2008 Andy Green <[email protected]> */ #include <linux/platform_device.h> -#define MAX_TS_FILTER_CHAIN 4 /* max filters you can chain up */ -#define MAX_TS_FILTER_COORDS 3 /* X, Y and Z (pressure) */ +#define MAX_TS_FILTER_CHAIN 8 /* Max. filters we can chain up. */ +#define MAX_TS_FILTER_COORDS 3 /* X, Y and Z (pressure). */ struct ts_filter; -/* operations that a filter can perform - */ +/* Operations that a filter can perform. */ + struct ts_filter_api { struct ts_filter * (*create)(struct platform_device *pdev, void *config, int count_coords); @@ -25,32 +25,33 @@ struct ts_filter_api { void (*scale)(struct ts_filter *filter, int *coords); }; -/* this is the common part of all filters, the result - * we use this type as an otherwise opaque handle on to +/* + * This is the common part of all filters. + * We use this type as an otherwise opaque handle on to * the actual filter. Therefore you need one of these - * at the start of your actual filter struct + * at the start of your actual filter struct. */ struct ts_filter { - struct ts_filter *next; /* next in chain */ - struct ts_filter_api *api; /* operations to use for this object */ + struct ts_filter *next; /* Next in chain. */ + struct ts_filter_api *api; /* Operations to use for this object. */ int count_coords; int coords[MAX_TS_FILTER_COORDS]; }; /* - * helper to create a filter chain from array of API pointers and - * array of config ints... leaves pointers to created filters in list - * array and fills in ->next pointers to create the chain + * Helper to create a filter chain from an array of API pointers and + * array of config ints. Leaves pointers to created filters in arr + * array and fills in ->next pointers to create the chain. */ extern int ts_filter_create_chain(struct platform_device *pdev, struct ts_filter_api **api, void **config, - struct ts_filter **list, int count_coords); + struct ts_filter **arr, int count_coords); -/* helper to destroy a whole chain from the list of filter pointers */ +/* Helper to destroy a whole chain from the list of filter pointers. */ extern void ts_filter_destroy_chain(struct platform_device *pdev, - struct ts_filter **list); + struct ts_filter **arr); #endif diff --git a/include/linux/ts_filter_linear.h b/include/linux/ts_filter_linear.h index dab5390..b4dd8e4 100644 --- a/include/linux/ts_filter_linear.h +++ b/include/linux/ts_filter_linear.h @@ -5,7 +5,7 @@ #include <linux/kobject.h> /* - * touchscreen linear filter. + * Touchscreen linear filter. * * Copyright (C) 2008 by Openmoko, Inc. * Author: Nelson Castillo <[email protected]> diff --git a/include/linux/ts_filter_mean.h b/include/linux/ts_filter_mean.h index 46ff01a..7bf7df6 100644 --- a/include/linux/ts_filter_mean.h +++ b/include/linux/ts_filter_mean.h @@ -4,7 +4,7 @@ #include <linux/ts_filter.h> /* - * touchscreen filter + * Touchscreen filter. * * mean * diff --git a/include/linux/ts_filter_median.h b/include/linux/ts_filter_median.h index d816428..eb56eaa 100644 --- a/include/linux/ts_filter_median.h +++ b/include/linux/ts_filter_median.h @@ -4,7 +4,7 @@ #include <linux/ts_filter.h> /* - * touchscreen filter + * Touchscreen filter. * * median *
