[PATCH 0/5][RFC] Touchscreen filters

From: Nelson Castillo
Date: Tue Jan 13 2009 - 18:39:57 EST


The following series implements a solution for a problem
we have: lots of noise in the touchscreen of the Openmoko
Neo1973/FreeRunner. This is the result of teamwork.

We are using a small touchscreen filtering framework
in kernel space for the S3C2410/S3C2442 touchscreen
controllers. The filters can be used by other drivers as
well (we have noticed a few drivers include averaging and some
other custom filters).

We do not want to port tslib to kernel space. The big
difference is that in tslib you cannot give feedback to an
interrupt handler. tslib does what it can, but we have the
power in kernel space to do better.

With the current implementation we try to get as many points
as we need to in order to provide a clean input event that
does not need further user-space mangling. If we fail to get
a valid point after some time we just ignore the event. In
our tests this approach has been performing very well. Some
of us think it would be nice if a program can gather clean
touchscreen data from /dev/inputX.

Here is a document that explains the filters with links to
source code that lives in our GIT repository and some videos
The videos are not polished but they illustrate what we
wish to show.

https://wiki.openmoko.org/wiki/Touchscreen_Filters

We hope this work is suitable for mainline inclusion.

We will be waiting for your comments.

Thanks,
Nelson, on behalf of all who contributed to what is proposed in this email.

drivers/input/touchscreen/Kconfig | 44 +++++
drivers/input/touchscreen/Makefile | 5 +
drivers/input/touchscreen/ts_filter.c | 64 ++++++++
drivers/input/touchscreen/ts_filter_group.c | 221 ++++++++++++++++++++++++++
drivers/input/touchscreen/ts_filter_linear.c | 178 +++++++++++++++++++++
drivers/input/touchscreen/ts_filter_mean.c | 172 ++++++++++++++++++++
drivers/input/touchscreen/ts_filter_median.c | 215 +++++++++++++++++++++++++
include/linux/ts_filter.h | 56 +++++++
include/linux/ts_filter_group.h | 39 +++++
include/linux/ts_filter_linear.h | 64 ++++++++
include/linux/ts_filter_mean.h | 34 ++++
include/linux/ts_filter_median.h | 36 ++++
12 files changed, 1128 insertions(+), 0 deletions(-)
create mode 100644 drivers/input/touchscreen/ts_filter.c
create mode 100644 drivers/input/touchscreen/ts_filter_group.c
create mode 100644 drivers/input/touchscreen/ts_filter_linear.c
create mode 100644 drivers/input/touchscreen/ts_filter_mean.c
create mode 100644 drivers/input/touchscreen/ts_filter_median.c
create mode 100644 include/linux/ts_filter.h
create mode 100644 include/linux/ts_filter_group.h
create mode 100644 include/linux/ts_filter_linear.h
create mode 100644 include/linux/ts_filter_mean.h
create mode 100644 include/linux/ts_filter_median.h

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/