devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sean Young <sean@mess.org>
To: Eric Nelson <eric@nelint.com>
Cc: linux-media@vger.kernel.org, robh+dt@kernel.org,
	pawel.moll@arm.com, mchehab@osg.samsung.com,
	mark.rutland@arm.com, ijc+devicetree@hellion.org.uk,
	galak@codeaurora.org, patrice.chotard@st.com, fabf@skynet.be,
	wsa@the-dreams.de, heiko@sntech.de, devicetree@vger.kernel.org,
	otavio@ossystems.com.br
Subject: Re: [PATCH][resend] rc: gpio-ir-recv: allow flush space on idle
Date: Mon, 14 Sep 2015 16:35:32 +0100	[thread overview]
Message-ID: <20150914153532.GA24422@gofer.mess.org> (raw)
In-Reply-To: <55F6E234.5050502@nelint.com>

On Mon, Sep 14, 2015 at 08:05:24AM -0700, Eric Nelson wrote:
> Thanks again Sean,
> 
> On 09/14/2015 07:54 AM, Sean Young wrote:
> > On Mon, Sep 14, 2015 at 07:34:10AM -0700, Eric Nelson wrote:
> >> Thanks Shawn,
> >>
> >> On 09/14/2015 03:00 AM, Sean Young wrote:
> >>> On Fri, Sep 11, 2015 at 07:00:24AM -0700, Eric Nelson wrote:
> >>>> Many decoders require a trailing space (period without IR illumination)
> >>>> to be delivered before completing a decode.
> >>>>
> >>>> Since the gpio-ir-recv driver only delivers events on gpio transitions,
> >>>> a single IR symbol (caused by a quick touch on an IR remote) will not
> >>>> be properly decoded without the use of a timer to flush the tail end
> >>>> state of the IR receiver.
> >>>
> >>> This is a problem other IR drivers suffer from too. It might be better
> >>> to send a IR timeout event like st_rc_send_lirc_timeout() in st_rc.c,
> >>> with the duration set to what the timeout was. That is what irraw 
> >>> timeouts are for; much better than fake transitions.
> >>>
> >>
> >> If I'm understanding this correctly, this would require modification
> >> of each decoder to handle what seems to be a special case regarding
> >> the GPIO IR driver (which needs an edge to trigger an interrupt).
> > 
> > No, this is not a special case. Many drivers do have extra code to generate
> > some sort of end-of-signal message: redrat3; igorplugusb; st_rc. They don't
> > handle it consistently but this should be fixed.
> > 
> > Secondly, the decoders already handle it. A timeout event matches 
> > is_timing_event(), so it's processed by the decoders. The duration should 
> > be set correctly.
> > 
> 
> I think I did misunderstand you.
> 
> You're suggesting that I re-work the patch to gpio-ir-recv.c to
> produce a timeout instead of an edge. Is that right?

Yes, that's right.

I'm thinking about patches the other drivers that don't do this and to test
all drivers that they always output "[pulse space].. pulse timeout". At least
for the hardware I've got.

> >> Isn't it better to have the device interface handle this in one place?
> > 
> >>>> This patch adds an optional device tree node "flush-ms" which, if
> >>>> present, will use a jiffie-based timer to complete the last pulse
> >>>> stream and allow decode.
> >>>
> >>> A common value for this is 100ms, I'm not sure what use it has to have
> >>> it configurable. It's nice to have it exposed in rc_dev->timeout.
> >>>
> >>
> >> I'm enough of a n00b regarding the details of the various decoders
> >> not to know that...
> >>
> >> I looked through the couple of decoders my customer was using (NEC and
> >> RC6) and came up with a value of 100ms though...
> >>
> >> Implementing this through DT and having the default as 0 (disabled)
> >> provides an interim solution if the choice is made to change each of
> >> the decoders, since I would expect that to take a while and a bunch of
> >> remote control devices for testing.
> > 
> > Many other drivers use 100ms just fine and I don't remember ever seeing
> > any bug reports on that.
> > 
> 
> So you'd like to see this as a constant?

The way this can be configured with other drivers is using the ioctl 
LIRC_SET_REC_TIMEOUT, I'm not sure we need a new method for this in
device tree.

So you could either just have a default of 100ms; or in addition you can
simply set the min_timeout and max_timeout on rcdev; give rcdev a default
and then read the value of rcdev->timeout whenever a timeout is necessary.

See how ite-cir.c does it for example.

Actually it might be good to have #define IR_DEFAULT_TIMEOUT MS_TO_NS(100)
in include/media/rc-core.h


Sean

  reply	other threads:[~2015-09-14 15:35 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-11 14:00 [PATCH][resend] rc: gpio-ir-recv: allow flush space on idle Eric Nelson
     [not found] ` <1441980024-1944-1-git-send-email-eric-SeqgQ6RdavfQT0dZR+AlfA@public.gmane.org>
2015-09-14 10:00   ` Sean Young
2015-09-14 14:34     ` Eric Nelson
2015-09-14 14:54       ` Sean Young
2015-09-14 15:05         ` Eric Nelson
2015-09-14 15:35           ` Sean Young [this message]
2015-09-21 19:08 ` [PATCH V2 0/2] rc: Add timeout support to gpio-ir-recv Eric Nelson
2015-09-21 19:08 ` Eric Nelson
2015-09-21 19:08   ` [PATCH V2 1/2] rc-core: define a default timeout for drivers Eric Nelson
     [not found]     ` <1442862524-3694-2-git-send-email-eric-SeqgQ6RdavfQT0dZR+AlfA@public.gmane.org>
2015-10-03 14:25       ` Mauro Carvalho Chehab
     [not found]         ` <20151003112510.54fe2a25-+RedX5hVuTR+urZeOPWqwQ@public.gmane.org>
2015-10-03 14:52           ` Eric Nelson
2015-10-03 15:18         ` Eric Nelson
2015-09-21 19:08   ` [PATCH V2 2/2] rc: gpio-ir-recv: add timeout on idle Eric Nelson
2015-09-23 13:26     ` Sean Young
2015-09-23 13:52       ` Eric Nelson
     [not found]         ` <5602AE95.9000505-SeqgQ6RdavfQT0dZR+AlfA@public.gmane.org>
2015-09-23 14:07           ` [PATCH V3 " Eric Nelson
     [not found]             ` <1443017228-16499-1-git-send-email-eric-SeqgQ6RdavfQT0dZR+AlfA@public.gmane.org>
2015-09-23 14:26               ` Sean Young
2015-10-03 14:27   ` [PATCH V2 0/2] rc: Add timeout support to gpio-ir-recv Mauro Carvalho Chehab
2015-10-03 15:10     ` Eric Nelson

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=20150914153532.GA24422@gofer.mess.org \
    --to=sean@mess.org \
    --cc=devicetree@vger.kernel.org \
    --cc=eric@nelint.com \
    --cc=fabf@skynet.be \
    --cc=galak@codeaurora.org \
    --cc=heiko@sntech.de \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=linux-media@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mchehab@osg.samsung.com \
    --cc=otavio@ossystems.com.br \
    --cc=patrice.chotard@st.com \
    --cc=pawel.moll@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=wsa@the-dreams.de \
    /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;
as well as URLs for NNTP newsgroup(s).