V4L/DVB (6379): patch which improves GotView Saa7135 remote control
improve GoTView PCI7135 remote control working under linux. Acked-by: Hermann Pitton <hermann-pitton@arcor.de> Acked-by: Nickolay V. Shmyrev <nshmyrev@yandex.ru> Signed-off-by: Eugene M. Roginskii <roginovicci@nm.ru> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
11a5a10e0a
commit
0938e3194a
2 changed files with 56 additions and 37 deletions
|
@ -1074,41 +1074,41 @@ EXPORT_SYMBOL_GPL(ir_codes_manli);
|
|||
/* Mike Baikov <mike@baikov.com> */
|
||||
IR_KEYTAB_TYPE ir_codes_gotview7135[IR_KEYTAB_SIZE] = {
|
||||
|
||||
[ 0x21 ] = KEY_POWER,
|
||||
[ 0x69 ] = KEY_TV,
|
||||
[ 0x33 ] = KEY_0,
|
||||
[ 0x51 ] = KEY_1,
|
||||
[ 0x31 ] = KEY_2,
|
||||
[ 0x71 ] = KEY_3,
|
||||
[ 0x3b ] = KEY_4,
|
||||
[ 0x58 ] = KEY_5,
|
||||
[ 0x41 ] = KEY_6,
|
||||
[ 0x48 ] = KEY_7,
|
||||
[ 0x30 ] = KEY_8,
|
||||
[ 0x53 ] = KEY_9,
|
||||
[ 0x73 ] = KEY_AGAIN, /* LOOP */
|
||||
[ 0x0a ] = KEY_AUDIO,
|
||||
[ 0x61 ] = KEY_PRINT, /* PREVIEW */
|
||||
[ 0x7a ] = KEY_VIDEO,
|
||||
[ 0x20 ] = KEY_CHANNELUP,
|
||||
[ 0x40 ] = KEY_CHANNELDOWN,
|
||||
[ 0x18 ] = KEY_VOLUMEDOWN,
|
||||
[ 0x50 ] = KEY_VOLUMEUP,
|
||||
[ 0x10 ] = KEY_MUTE,
|
||||
[ 0x4a ] = KEY_SEARCH,
|
||||
[ 0x7b ] = KEY_SHUFFLE, /* SNAPSHOT */
|
||||
[ 0x22 ] = KEY_RECORD,
|
||||
[ 0x62 ] = KEY_STOP,
|
||||
[ 0x78 ] = KEY_PLAY,
|
||||
[ 0x39 ] = KEY_REWIND,
|
||||
[ 0x59 ] = KEY_PAUSE,
|
||||
[ 0x19 ] = KEY_FORWARD,
|
||||
[ 0x09 ] = KEY_ZOOM,
|
||||
[ 0x11 ] = KEY_POWER,
|
||||
[ 0x35 ] = KEY_TV,
|
||||
[ 0x1b ] = KEY_0,
|
||||
[ 0x29 ] = KEY_1,
|
||||
[ 0x19 ] = KEY_2,
|
||||
[ 0x39 ] = KEY_3,
|
||||
[ 0x1f ] = KEY_4,
|
||||
[ 0x2c ] = KEY_5,
|
||||
[ 0x21 ] = KEY_6,
|
||||
[ 0x24 ] = KEY_7,
|
||||
[ 0x18 ] = KEY_8,
|
||||
[ 0x2b ] = KEY_9,
|
||||
[ 0x3b ] = KEY_AGAIN, /* LOOP */
|
||||
[ 0x06 ] = KEY_AUDIO,
|
||||
[ 0x31 ] = KEY_PRINT, /* PREVIEW */
|
||||
[ 0x3e ] = KEY_VIDEO,
|
||||
[ 0x10 ] = KEY_CHANNELUP,
|
||||
[ 0x20 ] = KEY_CHANNELDOWN,
|
||||
[ 0x0c ] = KEY_VOLUMEDOWN,
|
||||
[ 0x28 ] = KEY_VOLUMEUP,
|
||||
[ 0x08 ] = KEY_MUTE,
|
||||
[ 0x26 ] = KEY_SEARCH, /*SCAN*/
|
||||
[ 0x3f ] = KEY_SHUFFLE, /* SNAPSHOT */
|
||||
[ 0x12 ] = KEY_RECORD,
|
||||
[ 0x32 ] = KEY_STOP,
|
||||
[ 0x3c ] = KEY_PLAY,
|
||||
[ 0x1d ] = KEY_REWIND,
|
||||
[ 0x2d ] = KEY_PAUSE,
|
||||
[ 0x0d ] = KEY_FORWARD,
|
||||
[ 0x05 ] = KEY_ZOOM, /*FULL*/
|
||||
|
||||
[ 0x52 ] = KEY_F21, /* LIVE TIMESHIFT */
|
||||
[ 0x1a ] = KEY_F22, /* MIN TIMESHIFT */
|
||||
[ 0x3a ] = KEY_F23, /* TIMESHIFT */
|
||||
[ 0x70 ] = KEY_F24, /* NORMAL TIMESHIFT */
|
||||
[ 0x2a ] = KEY_F21, /* LIVE TIMESHIFT */
|
||||
[ 0x0e ] = KEY_F22, /* MIN TIMESHIFT */
|
||||
[ 0x1e ] = KEY_F23, /* TIMESHIFT */
|
||||
[ 0x38 ] = KEY_F24, /* NORMAL TIMESHIFT */
|
||||
};
|
||||
|
||||
EXPORT_SYMBOL_GPL(ir_codes_gotview7135);
|
||||
|
|
|
@ -44,6 +44,14 @@ module_param(ir_rc5_remote_gap, int, 0644);
|
|||
static int ir_rc5_key_timeout = 115;
|
||||
module_param(ir_rc5_key_timeout, int, 0644);
|
||||
|
||||
static int repeat_delay = 500;
|
||||
module_param(repeat_delay, int, 0644);
|
||||
MODULE_PARM_DESC(repeat_delay, "delay before key repeat started");
|
||||
static int repeat_period = 33;
|
||||
module_param(repeat_period, int, 0644);
|
||||
MODULE_PARM_DESC(repeat_period, "repeat period between"
|
||||
"keypresses when key is down");
|
||||
|
||||
#define dprintk(fmt, arg...) if (ir_debug) \
|
||||
printk(KERN_DEBUG "%s/ir: " fmt, dev->name , ## arg)
|
||||
#define i2cdprintk(fmt, arg...) if (ir_debug) \
|
||||
|
@ -59,6 +67,13 @@ static int build_key(struct saa7134_dev *dev)
|
|||
struct card_ir *ir = dev->remote;
|
||||
u32 gpio, data;
|
||||
|
||||
/* here comes the additional handshake steps for some cards */
|
||||
switch (dev->board) {
|
||||
case SAA7134_BOARD_GOTVIEW_7135:
|
||||
saa_setb(SAA7134_GPIO_GPSTATUS1, 0x80);
|
||||
saa_clearb(SAA7134_GPIO_GPSTATUS1, 0x80);
|
||||
break;
|
||||
}
|
||||
/* rising SAA7134_GPIO_GPRESCAN reads the status */
|
||||
saa_clearb(SAA7134_GPIO_GPMODE3,SAA7134_GPIO_GPRESCAN);
|
||||
saa_setb(SAA7134_GPIO_GPMODE3,SAA7134_GPIO_GPRESCAN);
|
||||
|
@ -285,10 +300,10 @@ int saa7134_input_init1(struct saa7134_dev *dev)
|
|||
break;
|
||||
case SAA7134_BOARD_GOTVIEW_7135:
|
||||
ir_codes = ir_codes_gotview7135;
|
||||
mask_keycode = 0x0003EC;
|
||||
mask_keyup = 0x008000;
|
||||
mask_keycode = 0x0003CC;
|
||||
mask_keydown = 0x000010;
|
||||
polling = 50; // ms
|
||||
polling = 5; /* ms */
|
||||
saa_setb(SAA7134_GPIO_GPMODE1, 0x80);
|
||||
break;
|
||||
case SAA7134_BOARD_VIDEOMATE_TV_PVR:
|
||||
case SAA7134_BOARD_VIDEOMATE_GOLD_PLUS:
|
||||
|
@ -386,6 +401,10 @@ int saa7134_input_init1(struct saa7134_dev *dev)
|
|||
if (err)
|
||||
goto err_out_stop;
|
||||
|
||||
/* the remote isn't as bouncy as a keyboard */
|
||||
ir->dev->rep[REP_DELAY] = repeat_delay;
|
||||
ir->dev->rep[REP_PERIOD] = repeat_period;
|
||||
|
||||
return 0;
|
||||
|
||||
err_out_stop:
|
||||
|
|
Loading…
Reference in a new issue