mirror of https://gitee.com/openkylin/linux.git
V4L/DVB: staging/lirc: port lirc_streamzap to ir-core
This ports lirc_streamzap.c over to ir-core in-place, to be followed by a patch moving the driver over to drivers/media/IR/streamzap.c and enabling the proper Kconfig bits. Presently, the in-kernel keymap doesn't work, as the stock Streamzap remote uses an RC-5-like, but not-quite-RC-5 protocol, which the in-kernel RC-5 decoder doesn't cope with. The remote can be used right now with the lirc bridge driver though, and other remotes (at least an RC-6(A) MCE remote) work perfectly with the driver. I'll take a look at making the existing RC-5 decoder cope with this odd duck, possibly implement another standalone decoder engine, or just throw up my hands and say "meh, use lirc"... But the driver itself should be perfectly sound. Remaining items on the streamzap TODO list: - add LIRC_SET_REC_TIMEOUT-alike support - add LIRC_GET_M{AX,IN}_TIMEOUT-alike support - add LIRC_GET_REC_RESOLUTION-alike support All of the above should be trivial to add. There are patches pending to add this support to ir-core from Maxim Levitsky, and I'll take care of these once his patches get integrated. None of them are currently essential though. Signed-off-by: Jarod Wilson <jarod@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
7c294402d5
commit
8e9e606400
|
@ -59,6 +59,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
|
|||
rc-purpletv.o \
|
||||
rc-pv951.o \
|
||||
rc-rc5-hauppauge-new.o \
|
||||
rc-rc5-streamzap.o \
|
||||
rc-rc5-tv.o \
|
||||
rc-rc6-mce.o \
|
||||
rc-real-audio-220-32-keys.o \
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
/* rc-rc5-streamzap.c - Keytable for Streamzap PC Remote, for use
|
||||
* with the Streamzap PC Remote IR Receiver.
|
||||
*
|
||||
* Copyright (c) 2010 by Jarod Wilson <jarod@redhat.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
#include <media/rc-map.h>
|
||||
|
||||
static struct ir_scancode rc5_streamzap[] = {
|
||||
/*
|
||||
* FIXME: The Streamzap remote isn't actually true RC-5, it has an extra
|
||||
* bit in it, which presently throws the in-kernel RC-5 decoder for a loop.
|
||||
* We either have to enhance the decoder to support it, add a new decoder,
|
||||
* or just rely on lirc userspace decoding.
|
||||
*/
|
||||
{ 0x00, KEY_NUMERIC_0 },
|
||||
{ 0x01, KEY_NUMERIC_1 },
|
||||
{ 0x02, KEY_NUMERIC_2 },
|
||||
{ 0x03, KEY_NUMERIC_3 },
|
||||
{ 0x04, KEY_NUMERIC_4 },
|
||||
{ 0x05, KEY_NUMERIC_5 },
|
||||
{ 0x06, KEY_NUMERIC_6 },
|
||||
{ 0x07, KEY_NUMERIC_7 },
|
||||
{ 0x08, KEY_NUMERIC_8 },
|
||||
{ 0x0a, KEY_POWER },
|
||||
{ 0x0b, KEY_MUTE },
|
||||
{ 0x0c, KEY_CHANNELUP },
|
||||
{ 0x0d, KEY_VOLUMEUP },
|
||||
{ 0x0e, KEY_CHANNELDOWN },
|
||||
{ 0x0f, KEY_VOLUMEDOWN },
|
||||
{ 0x10, KEY_UP },
|
||||
{ 0x11, KEY_LEFT },
|
||||
{ 0x12, KEY_OK },
|
||||
{ 0x13, KEY_RIGHT },
|
||||
{ 0x14, KEY_DOWN },
|
||||
{ 0x15, KEY_MENU },
|
||||
{ 0x16, KEY_EXIT },
|
||||
{ 0x17, KEY_PLAY },
|
||||
{ 0x18, KEY_PAUSE },
|
||||
{ 0x19, KEY_STOP },
|
||||
{ 0x1a, KEY_BACK },
|
||||
{ 0x1b, KEY_FORWARD },
|
||||
{ 0x1c, KEY_RECORD },
|
||||
{ 0x1d, KEY_REWIND },
|
||||
{ 0x1e, KEY_FASTFORWARD },
|
||||
{ 0x20, KEY_RED },
|
||||
{ 0x21, KEY_GREEN },
|
||||
{ 0x22, KEY_YELLOW },
|
||||
{ 0x23, KEY_BLUE },
|
||||
|
||||
};
|
||||
|
||||
static struct rc_keymap rc5_streamzap_map = {
|
||||
.map = {
|
||||
.scan = rc5_streamzap,
|
||||
.size = ARRAY_SIZE(rc5_streamzap),
|
||||
.ir_type = IR_TYPE_RC5,
|
||||
.name = RC_MAP_RC5_STREAMZAP,
|
||||
}
|
||||
};
|
||||
|
||||
static int __init init_rc_map_rc5_streamzap(void)
|
||||
{
|
||||
return ir_register_map(&rc5_streamzap_map);
|
||||
}
|
||||
|
||||
static void __exit exit_rc_map_rc5_streamzap(void)
|
||||
{
|
||||
ir_unregister_map(&rc5_streamzap_map);
|
||||
}
|
||||
|
||||
module_init(init_rc_map_rc5_streamzap)
|
||||
module_exit(exit_rc_map_rc5_streamzap)
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Jarod Wilson <jarod@redhat.com>");
|
File diff suppressed because it is too large
Load Diff
|
@ -114,6 +114,7 @@ void rc_map_init(void);
|
|||
#define RC_MAP_PURPLETV "rc-purpletv"
|
||||
#define RC_MAP_PV951 "rc-pv951"
|
||||
#define RC_MAP_RC5_HAUPPAUGE_NEW "rc-rc5-hauppauge-new"
|
||||
#define RC_MAP_RC5_STREAMZAP "rc-rc5-streamzap"
|
||||
#define RC_MAP_RC5_TV "rc-rc5-tv"
|
||||
#define RC_MAP_RC6_MCE "rc-rc6-mce"
|
||||
#define RC_MAP_REAL_AUDIO_220_32_KEYS "rc-real-audio-220-32-keys"
|
||||
|
|
Loading…
Reference in New Issue