From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Daniel Mack <daniel@zonque.org>
Cc: robh+dt@kernel.org, linux-input@vger.kernel.org,
devicetree@vger.kernel.org, Sven Neumann <Sven.Neumann@teufel.de>
Subject: Re: [PATCH 2/2] input: touch: eeti: read hardware state once after wakeup
Date: Sun, 28 Apr 2019 18:17:59 -0700 [thread overview]
Message-ID: <20190429011759.GA125935@dtor-ws> (raw)
In-Reply-To: <256962f1-7a75-b5f7-7104-d6e70f66b23d@zonque.org>
On Sun, Apr 28, 2019 at 09:50:35PM +0200, Daniel Mack wrote:
> On 28/4/2019 7:36 PM, Dmitry Torokhov wrote:
> > On Sun, Apr 28, 2019 at 09:18:46AM +0200, Daniel Mack wrote:
> >> On 23/4/2019 10:41 AM, Dmitry Torokhov wrote:
> >>> On Tue, Apr 23, 2019 at 06:51:32AM +0200, Daniel Mack wrote:
> >>>> Hi Dmitry,
> >>>>
> >>>> On 23/4/2019 5:17 AM, Dmitry Torokhov wrote:
> >>>>> On Mon, Apr 22, 2019 at 10:35:40AM +0200, Daniel Mack wrote:
> >>>>>> For systems in which the touch IRQ is acting as wakeup source, the interrupt
> >>>>>> controller might not latch the GPIO IRQ during sleep. In such cases, the
> >>>>>> interrupt will never occur again after resume, hence the touch screen
> >>>>>> appears dead.
> >>>>>>
> >>>>>> To fix this, call into eeti_ts_read() once to read the hardware status and
> >>>>>> to arm the IRQ again.
> >>>>>
> >>>>> Can you instead make the interrupt level-triggered?
> >>>>
> >>>> The hardware I'm working on doesn't support that unfortunately.
> >>>>
> >>>> In fact, the whole attn-gpio dance is there because of that, and the
> >>>> GPIO descriptor maps to the same pin that also causes the IRQ in my case.
> >>>
> >>> OK, if the interrupt controller is incapable of dealing with level
> >>> interrupts then we have to do what you propose.
> >>
> >> So you consider these patches for inclusion then? I'm just asking
> >> because I can't see them in your tree yet.
> >
> > I was about to, but now I wonder if we need a mutex in the isr code now,
> > otherwise there is a chance it will be running concurrently when we are
> > resuming if interrupt does latch.
>
> Actually, to address that, all we need to do is call into eeti_ts_read()
> before enable_irq(). See my v2.
This is still a bit racy as interrupt may come after you attempted to
read but before enable_irq() and then we need interrupt replaying code
to work reliably, which, as far as I understand, is not always the case.
I suppose we need at least add a comment that we rely on replays.
What kind of hardware is that? Is there no chance of making interrupt
controller handle level interrupts?
Thanks.
--
Dmitry
next prev parent reply other threads:[~2019-04-29 1:17 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-22 8:35 [PATCH 1/2] input: touch: eeti: move ISR code to own function Daniel Mack
2019-04-22 8:35 ` [PATCH 2/2] input: touch: eeti: read hardware state once after wakeup Daniel Mack
2019-04-23 3:17 ` Dmitry Torokhov
2019-04-23 4:51 ` Daniel Mack
2019-04-23 8:41 ` Dmitry Torokhov
2019-04-28 7:18 ` Daniel Mack
2019-04-28 17:36 ` Dmitry Torokhov
2019-04-28 19:30 ` Daniel Mack
2019-04-28 19:50 ` Daniel Mack
2019-04-29 1:17 ` Dmitry Torokhov [this message]
2019-04-29 5:49 ` Daniel Mack
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190429011759.GA125935@dtor-ws \
--to=dmitry.torokhov@gmail.com \
--cc=Sven.Neumann@teufel.de \
--cc=daniel@zonque.org \
--cc=devicetree@vger.kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox