aboutsummaryrefslogtreecommitdiff
path: root/drivers/input/touchscreen/ts_filter.h
diff options
context:
space:
mode:
authormerge <null@invalid>2009-01-19 00:47:51 +0000
committerAndy Green <agreen@octopus.localdomain>2009-01-19 00:47:51 +0000
commit3779b1cf0be55e0affcff56379cdfb8a07fdd840 (patch)
treef7b05d2e2188885a37ac3be6fd3c0bf075fe05ac /drivers/input/touchscreen/ts_filter.h
parent3a01f98ede89d2d0791393c43625e824f03c3065 (diff)
MERGE-via-pending-tracking-hist-MERGE-via-stable-tracking-fix-touchscreen-filter-include-1232325217
pending-tracking-hist top was MERGE-via-stable-tracking-fix-touchscreen-filter-include-1232325217 / d063e8c6d85c48de80b3d158bfa98d5a97149711 ... parent commitmessage: From: merge <null@invalid> MERGE-via-stable-tracking-hist-fix-touchscreen-filter-include stable-tracking-hist top was fix-touchscreen-filter-include / bb151f28fc8e8923baad96e0f3e8f0ae57af95f5 ... parent commitmessage: From: Nelson Castillo <arhuaco@freaks-unidos.net> Fix touchscreen filter includes Fix #includes to make the kernel compile again. Signed-off-by: Nelson Castillo <arhuaco@freaks-unidos.net>
Diffstat (limited to 'drivers/input/touchscreen/ts_filter.h')
-rw-r--r--drivers/input/touchscreen/ts_filter.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/drivers/input/touchscreen/ts_filter.h b/drivers/input/touchscreen/ts_filter.h
new file mode 100644
index 00000000000..5578e936b91
--- /dev/null
+++ b/drivers/input/touchscreen/ts_filter.h
@@ -0,0 +1,57 @@
+#ifndef __TS_FILTER_H__
+#define __TS_FILTER_H__
+
+/*
+ * Touchscreen filter.
+ *
+ * (c) 2008 Andy Green <andy@openmoko.com>
+ */
+
+#include <linux/platform_device.h>
+
+#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. */
+
+struct ts_filter_api {
+ struct ts_filter * (*create)(struct platform_device *pdev, void *config,
+ int count_coords);
+ void (*destroy)(struct platform_device *pdev, struct ts_filter *filter);
+ void (*clear)(struct ts_filter *filter);
+ int (*process)(struct ts_filter *filter, int *coords);
+ void (*scale)(struct ts_filter *filter, int *coords);
+};
+
+/*
+ * 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.
+ */
+
+struct ts_filter {
+ 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 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 **arr, int count_coords);
+
+/* 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 **arr);
+
+#endif