diff options
author | merge <null@invalid> | 2008-12-29 12:11:49 +0000 |
---|---|---|
committer | Andy Green <agreen@pads.home.warmcat.com> | 2008-12-29 12:11:49 +0000 |
commit | 4f0d7f43b8a9d35be25f520834bbb13f2dae10f3 (patch) | |
tree | c75c07e7c55a1004996754651484514e7530d38e /drivers/input/touchscreen/ts_filter.c | |
parent | 39a497b0421174c3f23ef3dffb0675a4db3aa3a0 (diff) |
MERGE-via-pending-tracking-hist-this-patch-gets-the-linux-mci-
pending-tracking-hist top was this-patch-gets-the-linux-mci- / f45f6d893a0dc65a6041a2c0127e9970427a85da ... parent commitmessage:
From: Balaji Rao <balajirrao@openmoko.org>
This patch gets the Linux mci stack to use the voltage it negotiated before
with the uSD card on resume. Without this, it always reverts to and stays at
3.3V.
Signed-off-by: Balaji Rao <balajirrao@openmoko.org>
Diffstat (limited to 'drivers/input/touchscreen/ts_filter.c')
-rw-r--r-- | drivers/input/touchscreen/ts_filter.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/input/touchscreen/ts_filter.c b/drivers/input/touchscreen/ts_filter.c index 4c650a5c66f..15083882e1c 100644 --- a/drivers/input/touchscreen/ts_filter.c +++ b/drivers/input/touchscreen/ts_filter.c @@ -20,8 +20,9 @@ #include <linux/device.h> #include <linux/ts_filter.h> -int ts_filter_create_chain(struct ts_filter_api **api, void **config, - struct ts_filter **list, int count_coords) +int ts_filter_create_chain(struct platform_device *pdev, + struct ts_filter_api **api, void **config, + struct ts_filter **list, int count_coords) { int count = 0; struct ts_filter *last = NULL; @@ -29,13 +30,13 @@ int ts_filter_create_chain(struct ts_filter_api **api, void **config, if (!api) return 0; - while (*api && (count < MAX_TS_FILTER_CHAIN)) { - *list = ((*api)->create)(*config++, count_coords); + while (*api && count < MAX_TS_FILTER_CHAIN) { + *list = ((*api)->create)(pdev, *config++, count_coords); if (!*list) { printk(KERN_ERR "Filter %d failed init\n", count); return count; } - (*list)->api = (struct ts_filter_api *)*api++; + (*list)->api = *api++; if (last) last->next = *list; last = *list; @@ -47,12 +48,15 @@ int ts_filter_create_chain(struct ts_filter_api **api, void **config, } EXPORT_SYMBOL_GPL(ts_filter_create_chain); -void ts_filter_destroy_chain(struct ts_filter **list) +void ts_filter_destroy_chain(struct platform_device *pdev, + struct ts_filter **list) { struct ts_filter **first; + int count = 0; + first = list; - while (*list) { - ((*list)->api->destroy)(*list); + while (*list && count++ < MAX_TS_FILTER_CHAIN) { + ((*list)->api->destroy)(pdev, *list); list++; } *first = NULL; |