Re: [PATCH] input: Add support for the TSC2003 controller.
From: Kwangwoo Lee <hidden>
Date: 2009-05-06 04:27:48
Also in:
linux-omap, lkml
Hi Thierry, On Mon, May 4, 2009 at 11:57 PM, Thierry Reding [off-list ref] wrote:
* Trilok Soni wrote:quoted
Hi Thierry, On Mon, May 4, 2009 at 5:07 PM, Thierry Reding [off-list ref] wrote:quoted
* Kwangwoo Lee wrote:quoted
Hi Thierry and Trilok, On Wed, Apr 29, 2009 at 10:23 PM, Trilok Soni [off-list ref] wrote:quoted
Hi Thierry, I have added linux-omap community. How different is this chip from tsc2007. It looks to me that this chip is not much different from tsc2007 (this is just quick look at the driver). If they are similar please consider using i2c_device_id feature in tsc2007 to accommodate this chip.I agree with the Trilok's opinion.[snip] I only noticed the tsc2007 driver some time ago, when the tsc2003 was already finished (it's actually pretty old, I just never got around to submitting it). However I never got the tsc2007 to work on my platform because it uses sleeping functions inside the timer handler, which results in an oops right after the first touchscreen interrupt. I guess I could try and fix the tsc2007 properly instead of having a second, pretty similar driver in the tree.This could be because of improper locking? If you share a crash we can have look at it.Attached is a patch that fixes things for me. The problem was that the I2C transfers were done in interrupt context which fails for the controller I use (PXA270). The attached patch uses a struct work_struct to schedule the I2C transfers so they are executed in non-interrupt context.
Thanks for the patch. It looks good. :) The code in the patch is already merged in the main kernel tree.
@@ -235,7 +245,7 @@ static irqreturn_t tsc2007_irq(int irq, void *handle) spin_lock_irqsave(&ts->lock, flags); if (likely(ts->get_pendown_state())) { - disable_irq(ts->irq); + disable_irq_nosync(ts->irq); hrtimer_start(&ts->timer, ktime_set(0, TS_POLL_DELAY), HRTIMER_MODE_REL); }
Thanks.
I've tested the patch on a minimal system with tslib and it work fine with ts_calibrate and friends. Thierry
-- Kwangwoo Lee [off-list ref]