Re: [RESEND][PATCH] input: Added TSC2003

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[Cc'ing Kwangwoo Lee]

* Richard Röjfors wrote:
> On 09-06-16 08.20, Thierry Reding wrote:
> >>>>
> >>> Meaning? I think I2C transaction can sleep.
> >> Yes that's what it means, and that's bad in a HR timer callback.
> > 
> > Note that my patch to the tsc2007 to support the tsc2003 exactly fixes this
> > problem. It moves the actual I2C transfers into a workqueue, so no sleeping
> > functions are called from the hrtimer callback.
> 
> Ah good! The IRQ is disabled no sync too.
> We actually don't have the possibility to implement a pen down state callback,
> so I need to modify the code slightly to work even without one. (but not be
> as accurate when the callback is not available)
> 
> Your patch where it schedules work rather than calling the I2C function directly
> isn't in mainline.
> I saw a patch where you added the work scheduling, and a later patch where you
> fixed some spinlock stuff, have you resent the patch for the work scheduling?

I think there were still some issues with that patch. Kwangwoo Lee was the
last to comment. This is from the previous thread:

> On Tue, May 12, 2009 at 12:41 AM, Dmitry Torokhov
> <dmitry.torokhov@xxxxxxxxx> wrote:
> > On Mon, May 11, 2009 at 08:38:09AM -0700, Dmitry Torokhov wrote:
> >> Hi,
> >> On Mon, May 11, 2009 at 08:44:00PM +0900, Kwangwoo Lee wrote:
> >> > From d5de0d22109de7564f9bf1df688acbe6b18f41db Mon Sep 17 00:00:00 2001
> >> > From: Kwangwoo Lee <kwangwoo.lee@xxxxxxxxx>
> >> > Date: Mon, 11 May 2009 20:05:50 +0900
> >> > Subject: [PATCH 2/2] Input: tsc2007: do I2C transfers in non-interrupt
> >> > context.
> >> >
> >> > This patch enhances pointer movements much smoother.
> >> > The original patch is written by Thierry.
> >> >
> >> > --- a/drivers/input/touchscreen/tsc2007.c
> >> > +++ b/drivers/input/touchscreen/tsc2007.c
> >> > @@ -70,6 +70,7 @@ struct ts_event {
> >> >  struct tsc2007 {
> >> >     struct input_dev        *input;
> >> >     char                    phys[32];
> >> > +   struct work_struct      work;
> >>
> >> Every time I see a work_struct in a driver and don't see
> >> cancel_work_sync() anywhere I know there are issues...
> >>
> 
> Thanks for your comment. I also missed that thing, sorry.
> 
> > Also, why do we need to chain irq->timer->work now? Surely we can bypass
> > the timer if we have to read in process context.
> 
> It's good point. I'll check again.
> Thanks.

So perhaps some more work is required to get this mainlined.

Thierry
--
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

[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux