[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4B1E5DA3.7000206@redhat.com>
Date: Tue, 08 Dec 2009 12:07:31 -0200
From: Mauro Carvalho Chehab <mchehab@...hat.com>
To: Krzysztof Halasa <khc@...waw.pl>
CC: Jon Smirl <jonsmirl@...il.com>,
Dmitry Torokhov <dmitry.torokhov@...il.com>,
hermann pitton <hermann-pitton@...or.de>,
Christoph Bartelmus <lirc@...telmus.de>, awalls@...ix.net,
j@...nau.net, jarod@...hat.com, jarod@...sonet.com,
kraxel@...hat.com, linux-input@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-media@...r.kernel.org,
superm1@...ntu.com
Subject: Re: [RFC] What are the goals for the architecture of an in-kernel
IR system?
Krzysztof Halasa wrote:
> Mauro Carvalho Chehab <mchehab@...hat.com> writes:
>
>>> What is the interface for attaching an in-kernel decoder?
>> IMO, it should use the kfifo for it. However, if we allow both raw data and
>> in-kernel decoders to read data there, we'll need a spinlock to protect the
>> kfifo.
>
> This may be an option, but I think we should be able to attach protocol
> decoders in parallel, directly to the IRQ handler. At least with RC-5
> (that's what I personally use) it means reliable decoding, no need for
> any timeouts, the code is clean, fast (can be a part of hard IRQ
> handler) and simple.
>
> The decoder needs something like
> rc5_signal_change(ptr, space_or_mark, microseconds).
>
> At least mark->space or space->mark events must be reported. For better
> reliability, both of them.
If you use a kfifo to store the event (space_or_mark, timestamp),
the IRQ handler can return immediately, and a separate kernel thread
can do the decode without needing to touch at the IRQ. It also helps to
have a decoder independent of the kernel driver.
Cheers,
Mauro.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists