2009-07-09 16:53:30

by Richard Röjfors

[permalink] [raw]
Subject: [PATCH 1/1] tsc2007: Cancel work sync, increase polling frequency, make exit platform hw callback optional

In the remove function, ancel the work using the _sync version,
to make sure any running "work" is finished. Make the
exit_platform_hw callback optional since it's not needed on all
platforms.

When the screen is touched, the polling frequency is increased
to reduce the risk of missing taps.

Signed-off-by: Richard R?jfors <[email protected]>
---
Index: linux-2.6.30/drivers/input/touchscreen/tsc2007.c
===================================================================
--- linux-2.6.30/drivers/input/touchscreen/tsc2007.c (revision 945)
+++ linux-2.6.30/drivers/input/touchscreen/tsc2007.c (revision 999)
@@ -27,7 +27,7 @@
#include <linux/i2c.h>
#include <linux/i2c/tsc2007.h>

-#define TS_POLL_PERIOD msecs_to_jiffies(5) /* ms delay between samples */
+#define TS_POLL_PERIOD msecs_to_jiffies(1) /* ms delay between samples */

#define TSC2007_MEASURE_TEMP0 (0x0 << 4)
#define TSC2007_MEASURE_AUX (0x2 << 4)
@@ -332,11 +332,11 @@
struct tsc2007 *ts = i2c_get_clientdata(client);
struct tsc2007_platform_data *pdata;

- /* cancel any work */
- cancel_delayed_work(&ts->work);
+ cancel_delayed_work_sync(&ts->work);

pdata = client->dev.platform_data;
- pdata->exit_platform_hw();
+ if (pdata->exit_platform_hw)
+ pdata->exit_platform_hw();

free_irq(ts->irq, ts);
input_unregister_device(ts->input);