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 <richard.rojfors.ext@xxxxxxxxxxxxxxx> --- 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); -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html