Re: [PATCH 00/15] ir-core: Several improvements to allow adding LIRC and decoder plugins

2010-05-26 Thread Jarod Wilson
On Tue, May 25, 2010 at 5:05 PM, Jarod Wilson ja...@wilsonet.com wrote:
 On Wed, Apr 28, 2010 at 12:32 AM, Jarod Wilson ja...@wilsonet.com wrote:
 On Sat, Apr 24, 2010 at 1:12 AM, David Härdeman da...@hardeman.nu wrote:
 On Fri, Apr 23, 2010 at 01:40:34PM -0400, Jarod Wilson wrote:
 So now that I'm more or less done with porting the imon driver, I
 think I'm ready to start tackling the mceusb driver. But I'm debating
 on what approach to take with respect to lirc support. It sort of
 feels like we should have lirc_dev ported as an ir decoder
 driver/plugin before starting to port mceusb to ir-core, so that we
 can maintain lirc compat and transmit support. Alternatively, I could
 port mceusb without lirc support for now, leaving it to only use
 in-kernel decoding and have no transmit support for the moment, then
 re-add lirc support. I'm thinking that porting lirc_dev as, say,
 ir-lirc-decoder first is probably the way to go though. Anyone else
 want to share their thoughts on this?

 I think it would make sense to start with a mce driver without the TX
 and lirc bits first. Adding lirc rx support can be done as a separate
 raw decoder later (so its scope is outside the mce driver anyway) and
 TX support is not implemented in ir-core yet and we haven't had any
 discussion yet on which form it should take.

 So after looking at folks feedback, I did settle on starting the
 mceusb port first, my logic going more or less like this... Having a
 well-supported general-purpose IR receiver functional is a Good Thing
 for people wanting to work on protocol support (i.e., so they have a
 way to actually test protocol support). Having an
 already-ir-core-ified driver to test out an ir-lirc-decoder (lirc_dev
 port) would also be rather helpful. So rather than trying to port
 lirc_dev before there's anything that can actually make use of it,
 give myself something to work with. I'm kind of thinking that
 ir-lirc-decoder might actually be ir-lirc-codec, able to do xmit as
 well, maintaining full compat with lirc userspace, and then we'd have
 a separate input subsystem based xmit method at some point, which
 might be the preferred/blessed route. This means ripping a bunch of
 code out of lirc_mceusb.c only to put it back in later, but that's not
 terribly painful. I've already got as far as having an mceusb.c that
 has no lirc dependency, which builds, but doesn't actually do anything
 useful yet (not wired up to ir-core). Should be able to get something
 functional RSN, I hope...

 Got sidetracked for a few weeks, but I'm probably 95% of the way there
 as of this afternoon. Something isn't quite right with how I'm
 processing and handing off the raw IR data right now though, best as I
 can tell. Its also possible my first-gen mce device is throwing things
 for a loop, so I need to see if maybe things Just Work with a newer
 gen device so I know if its device-specific, or if something is still
 generally wrong. I did crib the simplified mce data processing routine
 from Jon's code, but the original lirc_mceusb.c has some changes
 specific to the first-gen mce device that were made to properly
 support it quite some time after Jon's port, so I may also try w/the
 uglier/more complex routine I know has been working on this device...

 David, you mentioned having something based on Jon's earlier port that
 was more or less working. I'd be curious to get a look at that if
 you're willing to drop me a copy, see if I've missed something
 blindingly stupid. :)

I was missing something blindingly stupid. Was accumulating duration
values in ms instead of us. Now alternating presses of the OK button
on the stock MCE remote get this:

ir_rc6_decode: RC6(6A) scancode 0x800f0422 (toggle: 1)
ir_rc6_decode: RC6(6A) scancode 0x800f0422 (toggle: 0)

This is with Jon's IR handling routine and a recent MCE device, still
need to go back and see how the older one behaves, but within the next
few days, I should have a patch worthy of submission.

-- 
Jarod Wilson
ja...@wilsonet.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/15] ir-core: Several improvements to allow adding LIRC and decoder plugins

2010-05-25 Thread Jarod Wilson
On Wed, Apr 28, 2010 at 12:32 AM, Jarod Wilson ja...@wilsonet.com wrote:
 On Sat, Apr 24, 2010 at 1:12 AM, David Härdeman da...@hardeman.nu wrote:
 On Fri, Apr 23, 2010 at 01:40:34PM -0400, Jarod Wilson wrote:
 So now that I'm more or less done with porting the imon driver, I
 think I'm ready to start tackling the mceusb driver. But I'm debating
 on what approach to take with respect to lirc support. It sort of
 feels like we should have lirc_dev ported as an ir decoder
 driver/plugin before starting to port mceusb to ir-core, so that we
 can maintain lirc compat and transmit support. Alternatively, I could
 port mceusb without lirc support for now, leaving it to only use
 in-kernel decoding and have no transmit support for the moment, then
 re-add lirc support. I'm thinking that porting lirc_dev as, say,
 ir-lirc-decoder first is probably the way to go though. Anyone else
 want to share their thoughts on this?

 I think it would make sense to start with a mce driver without the TX
 and lirc bits first. Adding lirc rx support can be done as a separate
 raw decoder later (so its scope is outside the mce driver anyway) and
 TX support is not implemented in ir-core yet and we haven't had any
 discussion yet on which form it should take.

 So after looking at folks feedback, I did settle on starting the
 mceusb port first, my logic going more or less like this... Having a
 well-supported general-purpose IR receiver functional is a Good Thing
 for people wanting to work on protocol support (i.e., so they have a
 way to actually test protocol support). Having an
 already-ir-core-ified driver to test out an ir-lirc-decoder (lirc_dev
 port) would also be rather helpful. So rather than trying to port
 lirc_dev before there's anything that can actually make use of it,
 give myself something to work with. I'm kind of thinking that
 ir-lirc-decoder might actually be ir-lirc-codec, able to do xmit as
 well, maintaining full compat with lirc userspace, and then we'd have
 a separate input subsystem based xmit method at some point, which
 might be the preferred/blessed route. This means ripping a bunch of
 code out of lirc_mceusb.c only to put it back in later, but that's not
 terribly painful. I've already got as far as having an mceusb.c that
 has no lirc dependency, which builds, but doesn't actually do anything
 useful yet (not wired up to ir-core). Should be able to get something
 functional RSN, I hope...

Got sidetracked for a few weeks, but I'm probably 95% of the way there
as of this afternoon. Something isn't quite right with how I'm
processing and handing off the raw IR data right now though, best as I
can tell. Its also possible my first-gen mce device is throwing things
for a loop, so I need to see if maybe things Just Work with a newer
gen device so I know if its device-specific, or if something is still
generally wrong. I did crib the simplified mce data processing routine
from Jon's code, but the original lirc_mceusb.c has some changes
specific to the first-gen mce device that were made to properly
support it quite some time after Jon's port, so I may also try w/the
uglier/more complex routine I know has been working on this device...

David, you mentioned having something based on Jon's earlier port that
was more or less working. I'd be curious to get a look at that if
you're willing to drop me a copy, see if I've missed something
blindingly stupid. :)

What I get right now when I press a key:
...
ir_rc6_decode: RC6 decode failed at state 0 (0us space)
ir_rc6_decode: RC6 decode failed at state 0 (0us pulse)
ir_rc6_decode: RC6 decode failed at state 0 (0us pulse)
ir_rc6_decode: RC6 decode failed at state 0 (0us space)
ir_rc6_decode: RC6 decode failed at state 0 (1us pulse)
ir_rc6_decode: RC6 decode failed at state 0 (0us space)
ir_rc6_decode: RC6 decode failed at state 0 (0us pulse)
ir_rc6_decode: RC6 decode failed at state 0 (0us pulse)
ir_rc6_decode: RC6 decode failed at state 0 (0us space)
ir_rc6_decode: RC6 decode failed at state 0 (1us pulse)

Always fails at state 0, varying us values from 0 to 100, but mostly 0 and 1.

-- 
Jarod Wilson
ja...@wilsonet.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/15] ir-core: Several improvements to allow adding LIRC and decoder plugins

2010-04-27 Thread Jarod Wilson
On Sat, Apr 24, 2010 at 1:12 AM, David Härdeman da...@hardeman.nu wrote:
 On Fri, Apr 23, 2010 at 01:40:34PM -0400, Jarod Wilson wrote:
 So now that I'm more or less done with porting the imon driver, I
 think I'm ready to start tackling the mceusb driver. But I'm debating
 on what approach to take with respect to lirc support. It sort of
 feels like we should have lirc_dev ported as an ir decoder
 driver/plugin before starting to port mceusb to ir-core, so that we
 can maintain lirc compat and transmit support. Alternatively, I could
 port mceusb without lirc support for now, leaving it to only use
 in-kernel decoding and have no transmit support for the moment, then
 re-add lirc support. I'm thinking that porting lirc_dev as, say,
 ir-lirc-decoder first is probably the way to go though. Anyone else
 want to share their thoughts on this?

 I think it would make sense to start with a mce driver without the TX
 and lirc bits first. Adding lirc rx support can be done as a separate
 raw decoder later (so its scope is outside the mce driver anyway) and
 TX support is not implemented in ir-core yet and we haven't had any
 discussion yet on which form it should take.

So after looking at folks feedback, I did settle on starting the
mceusb port first, my logic going more or less like this... Having a
well-supported general-purpose IR receiver functional is a Good Thing
for people wanting to work on protocol support (i.e., so they have a
way to actually test protocol support). Having an
already-ir-core-ified driver to test out an ir-lirc-decoder (lirc_dev
port) would also be rather helpful. So rather than trying to port
lirc_dev before there's anything that can actually make use of it,
give myself something to work with. I'm kind of thinking that
ir-lirc-decoder might actually be ir-lirc-codec, able to do xmit as
well, maintaining full compat with lirc userspace, and then we'd have
a separate input subsystem based xmit method at some point, which
might be the preferred/blessed route. This means ripping a bunch of
code out of lirc_mceusb.c only to put it back in later, but that's not
terribly painful. I've already got as far as having an mceusb.c that
has no lirc dependency, which builds, but doesn't actually do anything
useful yet (not wired up to ir-core). Should be able to get something
functional RSN, I hope...

-- 
Jarod Wilson
ja...@wilsonet.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/15] ir-core: Several improvements to allow adding LIRC and decoder plugins

2010-04-24 Thread Jon Smirl
On Sat, Apr 24, 2010 at 1:22 AM, David Härdeman da...@hardeman.nu wrote:
 On Fri, Apr 23, 2010 at 06:20:28PM -0400, Andy Walls wrote:
 Not that my commit rate has been  0 LOC lately, but I'd like to see
 lirc_dev, just to get transmit worked out for the CX23888 chip and
 cx23885 driver.

 I think this device will bring to light some assumptions LIRC currently
 makes about transmit that don't apply to the CX23888 (i.e. LIRC having
 to perform the pulse timing).  The cx23888-ir implementation has a kfifo
 for holding outgoing pulse data and the hardware itself has an 8 pulse
 measurement deep fifo.

 I think we're eventually going to want to let rc-core create a chardev
 per rc device to allow for things like reading out scancodes (when
 creating keymaps for new and unknown remotes), raw timings (for
 debugging in-kernel decoders and writing new ones), possibly also
 ioctl's (for e.g. setting all RX parameters in one go or to
 create/destroy additional keymaps, though I'm sure some will want all of
 that to go through sysfs).

That problem is handled differently in the graphics code.  You only
have one /dev device for graphics. IOCTLs on it are divided into
ranges - core and driver. The IOCTL call initially lands in the core
code, but if it is in the driver range it simply gets forwarded to the
specific driver and handled there.

Doing it that was avoids needing two /dev devices nodes for the same
device. Two device nodes has problems.  How do you keep them from
being open by two different users and different privilege levels, or
one is open and one closed, etc...

Splitting the IOCTL range is easy to add to input core and it won't
effect any existing user space code.

Don't forget about binary sysfs attributes. I have scars from
implementing sysfs attributes as text that other people thought should
have been binary.

There has long been talk of implementing sysfs transactions. I think
the closest thing that got implemented was to not make the attributes
take effect until an action occurs. For example, you would set all of
the RX parameters using sysfs. They would be written into shadow
variables. Then you write to a 'commit' attribute. The write triggers
the copy from the shadow variables to the real ones.

Why are the TX variables being set via sysfs? I think the attributes
were read only in the code I wrote. Instead I set them via commands in
the input stream. Setting via the stream make it easy to change them
on each transmit.  The input layer already supports transactions
wrapping in output. The same transactions could be used to wrap input
parameter setting.  Start an input transaction, set the TX variables,
send the pulse data, end the input transaction. I don't remember if I
got around to implementing that.



 That same chardev could also be used to implement TX, once a suitable
 interface has been fleshed out. The end result might not look exactly
 like lirc...

 --
 David Härdeman




-- 
Jon Smirl
jonsm...@gmail.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/15] ir-core: Several improvements to allow adding LIRC and decoder plugins

2010-04-24 Thread David Härdeman
On Sat, Apr 24, 2010 at 08:35:48AM -0400, Jon Smirl wrote:
 On Sat, Apr 24, 2010 at 1:22 AM, David Härdeman da...@hardeman.nu wrote:
  On Fri, Apr 23, 2010 at 06:20:28PM -0400, Andy Walls wrote:
  Not that my commit rate has been  0 LOC lately, but I'd like to see
  lirc_dev, just to get transmit worked out for the CX23888 chip and
  cx23885 driver.
 
  I think this device will bring to light some assumptions LIRC currently
  makes about transmit that don't apply to the CX23888 (i.e. LIRC having
  to perform the pulse timing).  The cx23888-ir implementation has a kfifo
  for holding outgoing pulse data and the hardware itself has an 8 pulse
  measurement deep fifo.
 
  I think we're eventually going to want to let rc-core create a chardev
  per rc device to allow for things like reading out scancodes (when
  creating keymaps for new and unknown remotes), raw timings (for
  debugging in-kernel decoders and writing new ones), possibly also
  ioctl's (for e.g. setting all RX parameters in one go or to
  create/destroy additional keymaps, though I'm sure some will want all of
  that to go through sysfs).
 
 That problem is handled differently in the graphics code.  You only
 have one /dev device for graphics. IOCTLs on it are divided into
 ranges - core and driver. The IOCTL call initially lands in the core
 code, but if it is in the driver range it simply gets forwarded to the
 specific driver and handled there.
 
 Doing it that was avoids needing two /dev devices nodes for the same
 device. Two device nodes has problems.  How do you keep them from
 being open by two different users and different privilege levels, or
 one is open and one closed, etc...

I'm not sure which two devices you're talking about. ir-core currently 
creates no device at all (unless you count the input device). And 
further down the road I think each rc (ir) device should support 
multiple keytables, each keytable having an associated input device.

Input device(s) would be used by the majority of applications that only 
want to react on keypresses, the rc device is used by rc-aware 
applications that want to create new keytables, send ir commands, tweak 
RX/TX parameters, etc. I do not see how any of your two-device concerns 
would apply to that division...

 Splitting the IOCTL range is easy to add to input core and it won't
 effect any existing user space code.

The input maintainers have already NAK'ed adding any ir-specific ioctls 
to the input layer, and I tend to agree with them.

 Don't forget about binary sysfs attributes. I have scars from
 implementing sysfs attributes as text that other people thought should
 have been binary.
 
 There has long been talk of implementing sysfs transactions. I think
 the closest thing that got implemented was to not make the attributes
 take effect until an action occurs. For example, you would set all of
 the RX parameters using sysfs. They would be written into shadow
 variables. Then you write to a 'commit' attribute. The write triggers
 the copy from the shadow variables to the real ones.

I still fail to understand why sysfs is preferrable over ioctls.
 
 Why are the TX variables being set via sysfs? 

There's not a single line of TX code yet.

 I think the attributes
 were read only in the code I wrote. Instead I set them via commands in
 the input stream. Setting via the stream make it easy to change them
 on each transmit.  The input layer already supports transactions
 wrapping in output. The same transactions could be used to wrap input
 parameter setting.  Start an input transaction, set the TX variables,
 send the pulse data, end the input transaction. I don't remember if I
 got around to implementing that.

Again, the input maintainers have NAK'ed the kind of changes that would 
be necessary to support TX through the input layer. We're going to have 
to go with something ir-core specific.

-- 
David Härdeman
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/15] ir-core: Several improvements to allow adding LIRC and decoder plugins

2010-04-24 Thread Jon Smirl
On Sat, Apr 24, 2010 at 10:15 AM, David Härdeman da...@hardeman.nu wrote:
 On Sat, Apr 24, 2010 at 08:35:48AM -0400, Jon Smirl wrote:
 On Sat, Apr 24, 2010 at 1:22 AM, David Härdeman da...@hardeman.nu wrote:
  On Fri, Apr 23, 2010 at 06:20:28PM -0400, Andy Walls wrote:
  Not that my commit rate has been  0 LOC lately, but I'd like to see
  lirc_dev, just to get transmit worked out for the CX23888 chip and
  cx23885 driver.
 
  I think this device will bring to light some assumptions LIRC currently
  makes about transmit that don't apply to the CX23888 (i.e. LIRC having
  to perform the pulse timing).  The cx23888-ir implementation has a kfifo
  for holding outgoing pulse data and the hardware itself has an 8 pulse
  measurement deep fifo.
 
  I think we're eventually going to want to let rc-core create a chardev
  per rc device to allow for things like reading out scancodes (when
  creating keymaps for new and unknown remotes), raw timings (for
  debugging in-kernel decoders and writing new ones), possibly also
  ioctl's (for e.g. setting all RX parameters in one go or to
  create/destroy additional keymaps, though I'm sure some will want all of
  that to go through sysfs).

 That problem is handled differently in the graphics code.  You only
 have one /dev device for graphics. IOCTLs on it are divided into
 ranges - core and driver. The IOCTL call initially lands in the core
 code, but if it is in the driver range it simply gets forwarded to the
 specific driver and handled there.

 Doing it that was avoids needing two /dev devices nodes for the same
 device. Two device nodes has problems.  How do you keep them from
 being open by two different users and different privilege levels, or
 one is open and one closed, etc...

 I'm not sure which two devices you're talking about. ir-core currently
 creates no device at all (unless you count the input device). And
 further down the road I think each rc (ir) device should support
 multiple keytables, each keytable having an associated input device.

 Input device(s) would be used by the majority of applications that only
 want to react on keypresses, the rc device is used by rc-aware
 applications that want to create new keytables, send ir commands, tweak
 RX/TX parameters, etc. I do not see how any of your two-device concerns
 would apply to that division...

 Splitting the IOCTL range is easy to add to input core and it won't
 effect any existing user space code.

 The input maintainers have already NAK'ed adding any ir-specific ioctls
 to the input layer, and I tend to agree with them.

Based on my experience with DRM adding a split to the IOCTL range is a
good solution. The split does not add IR specific IOCTLs to the input
core. The input core just looks at the IOCTL number and if it is out
of range it forwards it down the chain - to IR core, which can process
it  or forward to the specific driver.  This model is already in use
and it works without problem.

 want to react on keypresses, the rc device is used by rc-aware
 applications that want to create new keytables, send ir commands, tweak
 RX/TX parameters, etc. I do not see how any of your two-device concerns

These would be implemented by IOCTL forwarding.

 Don't forget about binary sysfs attributes. I have scars from
 implementing sysfs attributes as text that other people thought should
 have been binary.

 There has long been talk of implementing sysfs transactions. I think
 the closest thing that got implemented was to not make the attributes
 take effect until an action occurs. For example, you would set all of
 the RX parameters using sysfs. They would be written into shadow
 variables. Then you write to a 'commit' attribute. The write triggers
 the copy from the shadow variables to the real ones.

 I still fail to understand why sysfs is preferrable over ioctls.

I don't care one way or the other. IOCTLs have portability issues with
word size and endianness. sysfs gets rid of those problems. But sysfs
doesn't have an explicit transaction mechanism. So both strategies
have issues.


 Why are the TX variables being set via sysfs?

 There's not a single line of TX code yet.

 I think the attributes
 were read only in the code I wrote. Instead I set them via commands in
 the input stream. Setting via the stream make it easy to change them
 on each transmit.  The input layer already supports transactions
 wrapping in output. The same transactions could be used to wrap input
 parameter setting.  Start an input transaction, set the TX variables,
 send the pulse data, end the input transaction. I don't remember if I
 got around to implementing that.

 Again, the input maintainers have NAK'ed the kind of changes that would
 be necessary to support TX through the input layer. We're going to have
 to go with something ir-core specific.

We already have two way devices in the input layer (keyboards with
displays). Why create a new mechanism?

The same concept of chained extensions can be used to keep the 

Re: [PATCH 00/15] ir-core: Several improvements to allow adding LIRC and decoder plugins

2010-04-24 Thread David Härdeman
On Sat, Apr 24, 2010 at 11:07:07AM -0400, Jon Smirl wrote:
 On Sat, Apr 24, 2010 at 10:15 AM, David Härdeman da...@hardeman.nu wrote:
  On Sat, Apr 24, 2010 at 08:35:48AM -0400, Jon Smirl wrote:
  On Sat, Apr 24, 2010 at 1:22 AM, David Härdeman da...@hardeman.nu wrote:
   I think we're eventually going to want to let rc-core create a 
   chardev
   per rc device to allow for things like reading out scancodes (when
   creating keymaps for new and unknown remotes), raw timings (for
   debugging in-kernel decoders and writing new ones), possibly also
   ioctl's (for e.g. setting all RX parameters in one go or to
   create/destroy additional keymaps, though I'm sure some will want all of
   that to go through sysfs).
 
  That problem is handled differently in the graphics code.  You only
  have one /dev device for graphics. IOCTLs on it are divided into
  ranges - core and driver. The IOCTL call initially lands in the core
  code, but if it is in the driver range it simply gets forwarded to the
  specific driver and handled there.
 
  Doing it that was avoids needing two /dev devices nodes for the same
  device. Two device nodes has problems.  How do you keep them from
  being open by two different users and different privilege levels, or
  one is open and one closed, etc...
 
  I'm not sure which two devices you're talking about. ir-core currently
  creates no device at all (unless you count the input device). And
  further down the road I think each rc (ir) device should support
  multiple keytables, each keytable having an associated input device.
 
  Input device(s) would be used by the majority of applications that only
  want to react on keypresses, the rc device is used by rc-aware
  applications that want to create new keytables, send ir commands, tweak
  RX/TX parameters, etc. I do not see how any of your two-device concerns
  would apply to that division...
 
  Splitting the IOCTL range is easy to add to input core and it won't
  effect any existing user space code.
 
  The input maintainers have already NAK'ed adding any ir-specific ioctls
  to the input layer, and I tend to agree with them.
 
 Based on my experience with DRM adding a split to the IOCTL range is a
 good solution. The split does not add IR specific IOCTLs to the input
 core. The input core just looks at the IOCTL number and if it is out
 of range it forwards it down the chain - to IR core, which can process
 it  or forward to the specific driver.  This model is already in use
 and it works without problem.

I don't care either way. Get the input maintainers to agree and I'll 
happily write patches that follow that approach (writing TX data to the 
input dev will also have to be supported).

The only real problem I see is if we implement  1 input device per 
rc/ir device (which I think we should do - each logical remote should 
have a separate keytable and input device).

-- 
David Härdeman
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/15] ir-core: Several improvements to allow adding LIRC and decoder plugins

2010-04-24 Thread Jon Smirl
On Sat, Apr 24, 2010 at 5:23 PM, David Härdeman da...@hardeman.nu wrote:
 I don't care either way. Get the input maintainers to agree and I'll
 happily write patches that follow that approach (writing TX data to the
 input dev will also have to be supported).

 The only real problem I see is if we implement  1 input device per
 rc/ir device (which I think we should do - each logical remote should
 have a separate keytable and input device).

I forgot about the many to 1 aspect of the receiver. You should have
started off with this point and I would have shut up, DRM does not
have many to 1 mappings. My radio receivers show up as network
devices. So I have multiple devices too.

I don't think we want a 'rc' device. The IR transceiver should be an
'ir' device. My radios are already 'net' devices. So my complaint
really is, I don't want an three devices - input, rc and net.

-- 
Jon Smirl
jonsm...@gmail.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/15] ir-core: Several improvements to allow adding LIRC and decoder plugins

2010-04-23 Thread Andy Walls
On Fri, 2010-04-23 at 14:06 -0400, Jon Smirl wrote:
 On Fri, Apr 23, 2010 at 1:40 PM, Jarod Wilson ja...@wilsonet.com wrote:
 
  So now that I'm more or less done with porting the imon driver, I
  think I'm ready to start tackling the mceusb driver. But I'm debating
  on what approach to take with respect to lirc support. It sort of
  feels like we should have lirc_dev ported as an ir decoder
  driver/plugin before starting to port mceusb to ir-core, so that we
  can maintain lirc compat and transmit support. Alternatively, I could
  port mceusb without lirc support for now, leaving it to only use
  in-kernel decoding and have no transmit support for the moment, then
  re-add lirc support. I'm thinking that porting lirc_dev as, say,
  ir-lirc-decoder first is probably the way to go though. Anyone else
  want to share their thoughts on this?
 
 I'd take whatever you think is the simplest path. It is more likely
 that initial testers will want to work with the new in-kernel system
 than the compatibility layer to LIRC. Existing users that are happy
 with the current LIRC should just keep on using it.

Jarod,

Not that my commit rate has been  0 LOC lately, but I'd like to see
lirc_dev, just to get transmit worked out for the CX23888 chip and
cx23885 driver.

I think this device will bring to light some assumptions LIRC currently
makes about transmit that don't apply to the CX23888 (i.e. LIRC having
to perform the pulse timing).  The cx23888-ir implementation has a kfifo
for holding outgoing pulse data and the hardware itself has an 8 pulse
measurement deep fifo.


But I'd recommend whatever helps you get more productive work done
first.  I've had no time for linux lately.

Regards,
Andy

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/15] ir-core: Several improvements to allow adding LIRC and decoder plugins

2010-04-23 Thread David Härdeman
On Fri, Apr 23, 2010 at 01:40:34PM -0400, Jarod Wilson wrote:
 So now that I'm more or less done with porting the imon driver, I
 think I'm ready to start tackling the mceusb driver. But I'm debating
 on what approach to take with respect to lirc support. It sort of
 feels like we should have lirc_dev ported as an ir decoder
 driver/plugin before starting to port mceusb to ir-core, so that we
 can maintain lirc compat and transmit support. Alternatively, I could
 port mceusb without lirc support for now, leaving it to only use
 in-kernel decoding and have no transmit support for the moment, then
 re-add lirc support. I'm thinking that porting lirc_dev as, say,
 ir-lirc-decoder first is probably the way to go though. Anyone else
 want to share their thoughts on this?

I think it would make sense to start with a mce driver without the TX 
and lirc bits first. Adding lirc rx support can be done as a separate 
raw decoder later (so its scope is outside the mce driver anyway) and 
TX support is not implemented in ir-core yet and we haven't had any 
discussion yet on which form it should take.

 (Actually, while sharing thoughts... Should drivers/media/IR become
 drivers/media/RC, ir-core.h become rc-core.h, ir-keytable.c become
 rc-keytable.c and so on?)

It will happen...and on a related note, I still think rc-core should in 
the end expose an API where drivers create rc devices and the input 
device(s) are kept as an internal detail in rc-core rather than the way 
it works now (where drivers create input devices and use ir-core to 
create a kind of addon device).

But that change is about as disruptive as the ir-core - rc-core change, 
so it can also wait to a more convenient time.

-- 
David Härdeman
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/15] ir-core: Several improvements to allow adding LIRC and decoder plugins

2010-04-23 Thread David Härdeman
On Fri, Apr 23, 2010 at 06:20:28PM -0400, Andy Walls wrote:
 Not that my commit rate has been  0 LOC lately, but I'd like to see
 lirc_dev, just to get transmit worked out for the CX23888 chip and
 cx23885 driver.
 
 I think this device will bring to light some assumptions LIRC currently
 makes about transmit that don't apply to the CX23888 (i.e. LIRC having
 to perform the pulse timing).  The cx23888-ir implementation has a kfifo
 for holding outgoing pulse data and the hardware itself has an 8 pulse
 measurement deep fifo.

I think we're eventually going to want to let rc-core create a chardev 
per rc device to allow for things like reading out scancodes (when 
creating keymaps for new and unknown remotes), raw timings (for 
debugging in-kernel decoders and writing new ones), possibly also 
ioctl's (for e.g. setting all RX parameters in one go or to 
create/destroy additional keymaps, though I'm sure some will want all of 
that to go through sysfs).

That same chardev could also be used to implement TX, once a suitable 
interface has been fleshed out. The end result might not look exactly 
like lirc...

-- 
David Härdeman
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/15] ir-core: Several improvements to allow adding LIRC and decoder plugins

2010-04-07 Thread David Härdeman
On Mon, Apr 05, 2010 at 04:49:10PM -0400, Jarod Wilson wrote:
 On Fri, Apr 2, 2010 at 6:20 AM, David Härdeman da...@hardeman.nu wrote:
  Porting the msmce driver to rc-core will be high on my list of
  priorities once I've done some more changes to the API.
 
 Very cool. Though note that the latest lirc_mceusb is quite heavily
 modified from what Jon had initially ported, and I still have a few
 outstanding enhancements to make, such as auto-detecting xmit mask to
 eliminate the crude inverted mask list and support for the mce IR
 keyboard/mouse, though that'll probably be trivial once RC5 and RC6
 in-kernel decoders are in place. I'd intended to start with porting
 the imon driver I'm working on over to this new infra (onboard
 hardware decoder, should be rather easy to port), and then hop over to
 the mceusb driver, but if you beat me to it, I've got no problem with
 you doing it instead. :)

I'd be happy with you doing it, you seem to know the hardware better 
than me. The mceusb driver I'm using right now with ir-core is based on 
Jon's driver which is in turn based on a version of lirc_mceusb which is 
quite old by now. My version of the driver is basically just random bits 
and pieces thrown together, enough to get pulse/space durations flowing 
through ir-core so that I can test the decoders, but not much more - so 
it's not something I'd even consider useful as a starting point :)

Note however that you won't be able to actually port the mceusb driver 
over until ir-core is taught to use durations (first version of the 
patch is at [1], second version still brewing but I still need to 
convince Mauro though).

[1] http://www.spinics.net/lists/linux-input/msg07859.html

-- 
David Härdeman
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/15] ir-core: Several improvements to allow adding LIRC and decoder plugins

2010-04-05 Thread Jarod Wilson
On Fri, Apr 2, 2010 at 6:20 AM, David Härdeman da...@hardeman.nu wrote:
 On Thu, Apr 01, 2010 at 09:44:12PM -0400, Jon Smirl wrote:
 On Thu, Apr 1, 2010 at 1:56 PM, Mauro Carvalho Chehab
 mche...@redhat.com wrote:
  This series of 15 patches improves support for IR, as discussed at the
  What are the goals for the architecture of an in-kernel IR system?
  thread.
 
  It basically adds a raw decoder layer at ir-core, allowing decoders to plug
  into IR core, and preparing for the addition of a lirc_dev driver that will
  allow raw IR codes to be sent to userspace.
 
  There's no lirc patch in this series. I have also a few other patches from
  David Härdeman that I'm about to test/review probably later today, but
  as I prefer to first merge what I have at V4L/DVB tree, before applying
  them.

 Has anyone ported the MSMCE driver onto these patches yet? That would
 be a good check to make sure that rc-core has the necessary API.

 I still plan to make lots of changes to the rc-core API (I just have to
 convince Mauro first, but I'll get there). What I have done is to port
 your port of the msmce driver to the suggested rc-core subsystem I sent
 you in private a week or so ago, and it works fine (I've bought the
 hardware and tested it with 20 or so different protocols).

 The subsystem I suggested is basically what I'm using as inspiration
 while working with Mauro in improving rc-core so msmce should work well
 with the end product...but there's still some ground to cover.

 Porting the msmce driver to rc-core will be high on my list of
 priorities once I've done some more changes to the API.

Very cool. Though note that the latest lirc_mceusb is quite heavily
modified from what Jon had initially ported, and I still have a few
outstanding enhancements to make, such as auto-detecting xmit mask to
eliminate the crude inverted mask list and support for the mce IR
keyboard/mouse, though that'll probably be trivial once RC5 and RC6
in-kernel decoders are in place. I'd intended to start with porting
the imon driver I'm working on over to this new infra (onboard
hardware decoder, should be rather easy to port), and then hop over to
the mceusb driver, but if you beat me to it, I've got no problem with
you doing it instead. :)

 Cooler if it works both through LIRC and with an internal protocol
 decoder. The MSMCE driver in my old patches was very simplified, it
 removed about half of the code from the LIRC version.

 Yes, and it was a great help to me at least...thanks :)

Yeah, copy that. Good to see we've got some major momentum going now,
just need to get off my butt and do some more work on it myself...

-- 
Jarod Wilson
ja...@wilsonet.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/15] ir-core: Several improvements to allow adding LIRC and decoder plugins

2010-04-02 Thread David Härdeman
On Thu, Apr 01, 2010 at 09:44:12PM -0400, Jon Smirl wrote:
 On Thu, Apr 1, 2010 at 1:56 PM, Mauro Carvalho Chehab
 mche...@redhat.com wrote:
  This series of 15 patches improves support for IR, as discussed at the
  What are the goals for the architecture of an in-kernel IR system?
  thread.
 
  It basically adds a raw decoder layer at ir-core, allowing decoders to plug
  into IR core, and preparing for the addition of a lirc_dev driver that will
  allow raw IR codes to be sent to userspace.
 
  There's no lirc patch in this series. I have also a few other patches from
  David Härdeman that I'm about to test/review probably later today, but
  as I prefer to first merge what I have at V4L/DVB tree, before applying
  them.
 
 Has anyone ported the MSMCE driver onto these patches yet? That would
 be a good check to make sure that rc-core has the necessary API.

I still plan to make lots of changes to the rc-core API (I just have to 
convince Mauro first, but I'll get there). What I have done is to port 
your port of the msmce driver to the suggested rc-core subsystem I sent 
you in private a week or so ago, and it works fine (I've bought the 
hardware and tested it with 20 or so different protocols).

The subsystem I suggested is basically what I'm using as inspiration 
while working with Mauro in improving rc-core so msmce should work well 
with the end product...but there's still some ground to cover.

Porting the msmce driver to rc-core will be high on my list of 
priorities once I've done some more changes to the API.

 Cooler if it works both through LIRC and with an internal protocol
 decoder. The MSMCE driver in my old patches was very simplified, it
 removed about half of the code from the LIRC version.

Yes, and it was a great help to me at least...thanks :)

-- 
David Härdeman
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/15] ir-core: Several improvements to allow adding LIRC and decoder plugins

2010-04-01 Thread Jon Smirl
On Thu, Apr 1, 2010 at 1:56 PM, Mauro Carvalho Chehab
mche...@redhat.com wrote:
 This series of 15 patches improves support for IR, as discussed at the
 What are the goals for the architecture of an in-kernel IR system?
 thread.

 It basically adds a raw decoder layer at ir-core, allowing decoders to plug
 into IR core, and preparing for the addition of a lirc_dev driver that will
 allow raw IR codes to be sent to userspace.

 There's no lirc patch in this series. I have also a few other patches from
 David Härdeman that I'm about to test/review probably later today, but
 as I prefer to first merge what I have at V4L/DVB tree, before applying
 them.

Has anyone ported the MSMCE driver onto these patches yet? That would
be a good check to make sure that rc-core has the necessary API.
Cooler if it works both through LIRC and with an internal protocol
decoder. The MSMCE driver in my old patches was very simplified, it
removed about half of the code from the LIRC version.


 There are two patches on this series that deserve a better analysis, IMO:

 -  V4L/DVB: ir-core: rename sysfs remote controller class from ir to rc

 As discussed, IR is not a good name, as this infrastructure could later
 be used by other types of Remote Controllers, as it has nothing that
 is specific to IR inside the code, except for the name. So, I'm proposing
 to replace the sysfs notes do rc, instead of ir. The sooner we do
 such changes, the better, as userspace apps using it are still under
 development. So, an API change is still possible, without causing
 much hurt.

 Also, as some RC devices allow RC code transmission, we probably need to add
 a TX node somewhere, associated with the same RX part (as some devices
 don't allow simultaneous usage of TX and RX).

 So, we have a few alternatives for the RC device sysfs node:
 a) /sys/class/rc/rc0
                 |-- rx
                 --- tx
 b) /sys/class/rc/rcrcv0
   /sys/class/rc/rctx0

 c) /sys/class/rc/rc0
  and have there the RX and TX nodes/attributes mixed. IMO, (b) is a bad idea,
 so, I am between (a) and (c).

 -  V4L/DVB: input: Add support for EVIO[CS]GKEYCODEBIG

 Adds two new ioctls in order to handle with big keycode tables. As already
 said, we'll need another ioctl, in order to get the maximum keycode supported
 by a given device. I didn't wrote the patch for the new ioctl yet.
 This patch will probably have a small conflict with upstream input, but I
 prefer to keep it on my tree and fix the upstream conflicts when submiting
 it, as the rest of the new IR code is also on my tree, and this patch is
 needed to procced with the IR code development.

 Mauro Carvalho Chehab (15):
  V4L/DVB: ir-core: be less pedantic with RC protocol name
  V4L/DVB: saa7134: use a full scancode table for M135A
  V4L/DVB: saa7134: add code to allow changing IR protocol
  V4L/DVB: ir-core: Add logic to decode IR protocols at the IR core
  V4L/DVB: ir-core: add two functions to report keyup/keydown events
  V4L/DVB: ir-core/saa7134: Move ir keyup/keydown code to the ir-core
  V4L/DVB: saa7134: don't wait too much to generate an IR event on raw_decode
  V4L/DVB: ir-core: dynamically load the compiled IR protocols
  V4L/DVB: ir-core: prepare to add more operations for ir decoders
  V4L/DVB: ir-nec-decoder: Add sysfs node to enable/disable per irrcv
  V4L/DVB: saa7134: clear warning noise
  V4L/DVB: ir-core: rename sysfs remote controller class from ir to rc
  V4L/DVB: ir-core: Add callbacks for input/evdev open/close on IR core
  V4L/DVB: cx88: Only start IR if the input device is opened
  V4L/DVB: input: Add support for EVIO[CS]GKEYCODEBIG

  drivers/input/evdev.c                       |   39 +++
  drivers/input/input.c                       |  260 ++--
  drivers/media/IR/Kconfig                    |    9 +
  drivers/media/IR/Makefile                   |    3 +-
  drivers/media/IR/ir-keymaps.c               |   98 
  drivers/media/IR/ir-keytable.c              |   75 ++-
  drivers/media/IR/ir-nec-decoder.c           |  351 
 +++
  drivers/media/IR/ir-raw-event.c             |  231 ++
  drivers/media/IR/ir-sysfs.c                 |   29 ++-
  drivers/media/video/cx88/cx88-input.c       |   69 +-
  drivers/media/video/cx88/cx88-video.c       |    6 +-
  drivers/media/video/cx88/cx88.h             |    6 +-
  drivers/media/video/saa7134/saa7134-core.c  |    2 +-
  drivers/media/video/saa7134/saa7134-input.c |  207 +++--
  drivers/media/video/saa7134/saa7134.h       |    4 +-
  include/linux/input.h                       |   40 +++-
  include/media/ir-common.h                   |    9 +-
  include/media/ir-core.h                     |   59 +-
  18 files changed, 1368 insertions(+), 129 deletions(-)
  create mode 100644 drivers/media/IR/ir-nec-decoder.c
  create mode 100644 drivers/media/IR/ir-raw-event.c

 --
 To unsubscribe from this list: send the line unsubscribe linux-input in
 the body of a message to