blob: 632e5fb3f4e8cf0fdef2f54a4ca7a9fa75f2ed62 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#ifndef __TS_FILTER_H__
#define __TS_FILTER_H__
/*
* Touchscreen filter.
*
* (c) 2008,2009 Andy Green <andy@warmcat.com>
*/
#include <linux/platform_device.h>
#define MAX_TS_FILTER_COORDS 3 /* X, Y and Z (pressure). */
struct ts_filter;
struct ts_filter_configuration;
/* Operations that a filter can perform. */
struct ts_filter_api {
/* Create the filter - mandatory. */
struct ts_filter * (*create)(
struct platform_device *pdev,
const struct ts_filter_configuration *config,
int count_coords);
/* Destroy the filter - mandatory. */
void (*destroy)(struct ts_filter *filter);
/* Clear the filter - optional. */
void (*clear)(struct ts_filter *filter);
/*
* The next three API functions only make sense if all of them are
* set for a filter. If a filter has the next three methods then
* it can propagate coordinates in the chain.
*/
/*
* Process the filter.
* It returns non-zero if the filter reaches an error.
*/
int (*process)(struct ts_filter *filter, int *coords);
/*
* Is the filter ready to return a point?
* Please do not code side effects in this function.
*/
int (*haspoint)(struct ts_filter *filter);
/*
* Get a point.
* Do not call unless the filter actually has a point to deliver.
*/
void (*getpoint)(struct ts_filter *filter, int *coords);
/*
* Scale the points - optional.
* A filter could only scale coordinates.
*/
void (*scale)(struct ts_filter *filter, int *coords);
};
/*
* Generic filter configuration. Actual configurations have this structure
* as a member.
*/
struct ts_filter_configuration {
};
struct ts_filter {
/* Operations for this filter. */
const struct ts_filter_api *api;
/* Number of coordinates to process. */
int count_coords;
};
#endif
|