diff options
author | Jarod Wilson <jarod@redhat.com> | 2010-08-07 12:31:40 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-10-20 23:04:47 -0400 |
commit | 7a569f524dd36806b995c844f29e28ff40c444b2 (patch) | |
tree | f771e5bd298089fe007a74d654c756fda4c39f3e /include/media | |
parent | 516c714c6c823e412dc485ca9c5307348cddd097 (diff) |
V4L/DVB: IR/streamzap: functional in-kernel decoding
This patch makes in-kernel decoding with the stock Streamzap PC Remote
work out of the box. There are quite a few things going on in this
patch, all related to getting this working:
1) I had to enable reporting of a long space at the end of each signal,
or I had weird buffering and keybounce issues.
2) The keymap has been reworked slightly to match actual decoded values,
the first edition was missing the pre-data bits present in the lirc
config file for this remote.
3) There's a whole new decoder included, specifically for the
not-quite-RC5 15-bit protocol variant used by the Streamzap PC
Remote. The decoder, while usable with other recievers (tested with
an mceusb receiver), will only be loaded by the streamzap driver, as
its likely not of use in almost all other situations. This can be
revisited if/when all keytable loading (and disabling of unneeded
protocol decoder engines) is moved to userspace, but for now, I think
this makes the most sense.
Note that I did try to enable handling the streamzap RC5-ish protocol in
the current RC5 decoder, but there's no particularly easy way to tell if
its 14-bit RC5 or 15-bit Streamzap until we see bit 14, and even then,
in testing an attempted decoder merge, only 2/3 of the keys were
properly recognized as being the 15-bit variant and decoded correctly,
the rest were close enough to compliant with 14-bit that they were
decoded as such (but they have overlap with one another, and thus we
can't just shrug and use the 14-bit decoded values).
Also of note in this patch is the removal of the streamzap driver's
internal delay buffer. Per discussion w/Christoph, it shouldn't be
needed by lirc any longer anyway, and it doesn't seem to make any
difference to the in-kernel decoder engine. That being the case, I'm
yanking it all out, as it greatly simplifies the driver code.
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'include/media')
-rw-r--r-- | include/media/rc-map.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/media/rc-map.h b/include/media/rc-map.h index a9c041d49662..6c0324eb4914 100644 --- a/include/media/rc-map.h +++ b/include/media/rc-map.h | |||
@@ -17,12 +17,13 @@ | |||
17 | #define IR_TYPE_RC6 (1 << 2) /* Philips RC6 protocol */ | 17 | #define IR_TYPE_RC6 (1 << 2) /* Philips RC6 protocol */ |
18 | #define IR_TYPE_JVC (1 << 3) /* JVC protocol */ | 18 | #define IR_TYPE_JVC (1 << 3) /* JVC protocol */ |
19 | #define IR_TYPE_SONY (1 << 4) /* Sony12/15/20 protocol */ | 19 | #define IR_TYPE_SONY (1 << 4) /* Sony12/15/20 protocol */ |
20 | #define IR_TYPE_RC5_SZ (1 << 5) /* RC5 variant used by Streamzap */ | ||
20 | #define IR_TYPE_LIRC (1 << 30) /* Pass raw IR to lirc userspace */ | 21 | #define IR_TYPE_LIRC (1 << 30) /* Pass raw IR to lirc userspace */ |
21 | #define IR_TYPE_OTHER (1u << 31) | 22 | #define IR_TYPE_OTHER (1u << 31) |
22 | 23 | ||
23 | #define IR_TYPE_ALL (IR_TYPE_RC5 | IR_TYPE_NEC | IR_TYPE_RC6 | \ | 24 | #define IR_TYPE_ALL (IR_TYPE_RC5 | IR_TYPE_NEC | IR_TYPE_RC6 | \ |
24 | IR_TYPE_JVC | IR_TYPE_SONY | IR_TYPE_LIRC | \ | 25 | IR_TYPE_JVC | IR_TYPE_SONY | IR_TYPE_LIRC | \ |
25 | IR_TYPE_OTHER) | 26 | IR_TYPE_RC5_SZ | IR_TYPE_OTHER) |
26 | 27 | ||
27 | struct ir_scancode { | 28 | struct ir_scancode { |
28 | u32 scancode; | 29 | u32 scancode; |
@@ -114,10 +115,10 @@ void rc_map_init(void); | |||
114 | #define RC_MAP_PURPLETV "rc-purpletv" | 115 | #define RC_MAP_PURPLETV "rc-purpletv" |
115 | #define RC_MAP_PV951 "rc-pv951" | 116 | #define RC_MAP_PV951 "rc-pv951" |
116 | #define RC_MAP_RC5_HAUPPAUGE_NEW "rc-rc5-hauppauge-new" | 117 | #define RC_MAP_RC5_HAUPPAUGE_NEW "rc-rc5-hauppauge-new" |
117 | #define RC_MAP_RC5_STREAMZAP "rc-rc5-streamzap" | ||
118 | #define RC_MAP_RC5_TV "rc-rc5-tv" | 118 | #define RC_MAP_RC5_TV "rc-rc5-tv" |
119 | #define RC_MAP_RC6_MCE "rc-rc6-mce" | 119 | #define RC_MAP_RC6_MCE "rc-rc6-mce" |
120 | #define RC_MAP_REAL_AUDIO_220_32_KEYS "rc-real-audio-220-32-keys" | 120 | #define RC_MAP_REAL_AUDIO_220_32_KEYS "rc-real-audio-220-32-keys" |
121 | #define RC_MAP_STREAMZAP "rc-streamzap" | ||
121 | #define RC_MAP_TBS_NEC "rc-tbs-nec" | 122 | #define RC_MAP_TBS_NEC "rc-tbs-nec" |
122 | #define RC_MAP_TERRATEC_CINERGY_XS "rc-terratec-cinergy-xs" | 123 | #define RC_MAP_TERRATEC_CINERGY_XS "rc-terratec-cinergy-xs" |
123 | #define RC_MAP_TEVII_NEC "rc-tevii-nec" | 124 | #define RC_MAP_TEVII_NEC "rc-tevii-nec" |