diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-30 12:39:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-30 12:39:15 -0400 |
commit | 5ffd1a6aaacc25be8cd0770a51ec6d46add3a276 (patch) | |
tree | 5b076c44f8b7ff88dba9a554d7748c6f083c9071 /drivers/media/video/cx88/cx88-input.c | |
parent | 0cd43f83d381c4246a08cd775834833d6fd64805 (diff) | |
parent | 8dd86eebc5315910ebfd9f30f1674254308be4b3 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb
* master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb: (180 commits)
V4L/DVB (4641): Trivial: use lowercase letters in hex subsystem ids
V4L/DVB (4639): Cx88: add autodetection for alternate revision of Leadtek PVR
V4L/DVB (4638): Basic DVB-T and analog TV support for the HVR1300.
V4L/DVB (4637): Add a default method for VIDIOC_G_PARM
V4L/DVB (4635): Extend bttv and saa7134 to check for both AGP and PCI PCI failure case
V4L/DVB (4634): Zr36120: implement pcipci checks
V4L/DVB (4632): Zoran: Implement pcipci failure check
V4L/DVB (4631): Av7110: remove V4L2_CAP_VBI_CAPTURE flag
V4L/DVB (4630): Av7110: FW_LOADER depemdency fixed
V4L/DVB (4629): Saa7134: add card support for Proteus Pro 2309
V4L/DVB (4628): Fix VIDIOC_ENUMSTD ioctl in videodev.c
V4L/DVB (4627): Vivi crashes with mplayer
V4L/DVB (4626): On saa7111/7113, LUMA_CTRL need a different value
V4L/DVB (4624): Tvaudio: Replaced kernel_thread() with kthread_run()
V4L/DVB (4622): Copy-paste bug in videodev.c
V4L/DVB (4620): Fix AGC configuration for MOD3000P-based boards
V4L/DVB (4619): Fixes some I2C dependencies on V4L devices
V4L/DVB (4617): Problem with dibusb-mb.c USB IDs
V4L/DVB (4616): [PATCH] Nebula DigiTV USB RC support
V4L/DVB (4614): Export symbol saa7134_tvaudio_setmute from saa7134 for saa7134-alsa
...
Diffstat (limited to 'drivers/media/video/cx88/cx88-input.c')
-rw-r--r-- | drivers/media/video/cx88/cx88-input.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/media/video/cx88/cx88-input.c b/drivers/media/video/cx88/cx88-input.c index c25564648993..83ebf7a3c054 100644 --- a/drivers/media/video/cx88/cx88-input.c +++ b/drivers/media/video/cx88/cx88-input.c | |||
@@ -107,7 +107,15 @@ static void cx88_ir_handle_key(struct cx88_IR *ir) | |||
107 | (gpio & ir->mask_keydown) ? " down" : "", | 107 | (gpio & ir->mask_keydown) ? " down" : "", |
108 | (gpio & ir->mask_keyup) ? " up" : ""); | 108 | (gpio & ir->mask_keyup) ? " up" : ""); |
109 | 109 | ||
110 | if (ir->mask_keydown) { | 110 | if (ir->core->board == CX88_BOARD_NORWOOD_MICRO) { |
111 | u32 gpio_key = cx_read(MO_GP0_IO); | ||
112 | |||
113 | data = (data << 4) | ((gpio_key & 0xf0) >> 4); | ||
114 | |||
115 | ir_input_keydown(ir->input, &ir->ir, data, data); | ||
116 | ir_input_nokey(ir->input, &ir->ir); | ||
117 | |||
118 | } else if (ir->mask_keydown) { | ||
111 | /* bit set on keydown */ | 119 | /* bit set on keydown */ |
112 | if (gpio & ir->mask_keydown) { | 120 | if (gpio & ir->mask_keydown) { |
113 | ir_input_keydown(ir->input, &ir->ir, data, data); | 121 | ir_input_keydown(ir->input, &ir->ir, data, data); |
@@ -187,6 +195,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) | |||
187 | case CX88_BOARD_HAUPPAUGE_NOVASE2_S1: | 195 | case CX88_BOARD_HAUPPAUGE_NOVASE2_S1: |
188 | case CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1: | 196 | case CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1: |
189 | case CX88_BOARD_HAUPPAUGE_HVR1100: | 197 | case CX88_BOARD_HAUPPAUGE_HVR1100: |
198 | case CX88_BOARD_HAUPPAUGE_HVR1300: | ||
190 | ir_codes = ir_codes_hauppauge_new; | 199 | ir_codes = ir_codes_hauppauge_new; |
191 | ir_type = IR_TYPE_RC5; | 200 | ir_type = IR_TYPE_RC5; |
192 | ir->sampling = 1; | 201 | ir->sampling = 1; |
@@ -248,6 +257,13 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) | |||
248 | ir_type = IR_TYPE_PD; | 257 | ir_type = IR_TYPE_PD; |
249 | ir->sampling = 0xff00; /* address */ | 258 | ir->sampling = 0xff00; /* address */ |
250 | break; | 259 | break; |
260 | case CX88_BOARD_NORWOOD_MICRO: | ||
261 | ir_codes = ir_codes_norwood; | ||
262 | ir->gpio_addr = MO_GP1_IO; | ||
263 | ir->mask_keycode = 0x0e; | ||
264 | ir->mask_keyup = 0x80; | ||
265 | ir->polling = 50; /* ms */ | ||
266 | break; | ||
251 | case CX88_BOARD_NPGTECH_REALTV_TOP10FM: | 267 | case CX88_BOARD_NPGTECH_REALTV_TOP10FM: |
252 | ir_codes = ir_codes_npgtech; | 268 | ir_codes = ir_codes_npgtech; |
253 | ir->gpio_addr = MO_GP0_IO; | 269 | ir->gpio_addr = MO_GP0_IO; |
@@ -402,6 +418,7 @@ void cx88_ir_irq(struct cx88_core *core) | |||
402 | case CX88_BOARD_HAUPPAUGE_NOVASE2_S1: | 418 | case CX88_BOARD_HAUPPAUGE_NOVASE2_S1: |
403 | case CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1: | 419 | case CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1: |
404 | case CX88_BOARD_HAUPPAUGE_HVR1100: | 420 | case CX88_BOARD_HAUPPAUGE_HVR1100: |
421 | case CX88_BOARD_HAUPPAUGE_HVR1300: | ||
405 | ircode = ir_decode_biphase(ir->samples, ir->scount, 5, 7); | 422 | ircode = ir_decode_biphase(ir->samples, ir->scount, 5, 7); |
406 | ir_dprintk("biphase decoded: %x\n", ircode); | 423 | ir_dprintk("biphase decoded: %x\n", ircode); |
407 | if ((ircode & 0xfffff000) != 0x3000) | 424 | if ((ircode & 0xfffff000) != 0x3000) |