aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/saa7134/saa7134-input.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/saa7134/saa7134-input.c')
-rw-r--r--drivers/media/video/saa7134/saa7134-input.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/media/video/saa7134/saa7134-input.c b/drivers/media/video/saa7134/saa7134-input.c
index c0de37e3f5c6..1b6dfd801cc1 100644
--- a/drivers/media/video/saa7134/saa7134-input.c
+++ b/drivers/media/video/saa7134/saa7134-input.c
@@ -153,21 +153,18 @@ void saa7134_input_irq(struct saa7134_dev *dev)
153 153
154static void saa7134_input_timer(unsigned long data) 154static void saa7134_input_timer(unsigned long data)
155{ 155{
156 struct saa7134_dev *dev = (struct saa7134_dev*)data; 156 struct saa7134_dev *dev = (struct saa7134_dev *)data;
157 struct card_ir *ir = dev->remote; 157 struct card_ir *ir = dev->remote;
158 unsigned long timeout;
159 158
160 build_key(dev); 159 build_key(dev);
161 timeout = jiffies + (ir->polling * HZ / 1000); 160 mod_timer(&ir->timer, jiffies + msecs_to_jiffies(ir->polling));
162 mod_timer(&ir->timer, timeout);
163} 161}
164 162
165static void saa7134_ir_start(struct saa7134_dev *dev, struct card_ir *ir) 163static void saa7134_ir_start(struct saa7134_dev *dev, struct card_ir *ir)
166{ 164{
167 if (ir->polling) { 165 if (ir->polling) {
168 init_timer(&ir->timer); 166 setup_timer(&ir->timer, saa7134_input_timer,
169 ir->timer.function = saa7134_input_timer; 167 (unsigned long)dev);
170 ir->timer.data = (unsigned long)dev;
171 ir->timer.expires = jiffies + HZ; 168 ir->timer.expires = jiffies + HZ;
172 add_timer(&ir->timer); 169 add_timer(&ir->timer);
173 } else if (ir->rc5_gpio) { 170 } else if (ir->rc5_gpio) {
@@ -314,6 +311,7 @@ int saa7134_input_init1(struct saa7134_dev *dev)
314 mask_keycode = 0x003F00; 311 mask_keycode = 0x003F00;
315 mask_keyup = 0x040000; 312 mask_keyup = 0x040000;
316 break; 313 break;
314 case SAA7134_BOARD_FLYDVBS_LR300:
317 case SAA7134_BOARD_FLYDVBT_LR301: 315 case SAA7134_BOARD_FLYDVBT_LR301:
318 case SAA7134_BOARD_FLYDVBTDUO: 316 case SAA7134_BOARD_FLYDVBTDUO:
319 ir_codes = ir_codes_flydvb; 317 ir_codes = ir_codes_flydvb;
@@ -333,6 +331,12 @@ int saa7134_input_init1(struct saa7134_dev *dev)
333 mask_keyup = 0x040000; 331 mask_keyup = 0x040000;
334 polling = 50; // ms 332 polling = 50; // ms
335 break; 333 break;
334 case SAA7134_BOARD_10MOONSTVMASTER3:
335 ir_codes = ir_codes_encore_enltv;
336 mask_keycode = 0x5f80000;
337 mask_keyup = 0x8000000;
338 polling = 50; //ms
339 break;
336 } 340 }
337 if (NULL == ir_codes) { 341 if (NULL == ir_codes) {
338 printk("%s: Oops: IR config error [card=%d]\n", 342 printk("%s: Oops: IR config error [card=%d]\n",
@@ -374,7 +378,7 @@ int saa7134_input_init1(struct saa7134_dev *dev)
374 input_dev->id.vendor = dev->pci->vendor; 378 input_dev->id.vendor = dev->pci->vendor;
375 input_dev->id.product = dev->pci->device; 379 input_dev->id.product = dev->pci->device;
376 } 380 }
377 input_dev->cdev.dev = &dev->pci->dev; 381 input_dev->dev.parent = &dev->pci->dev;
378 382
379 dev->remote = ir; 383 dev->remote = ir;
380 saa7134_ir_start(dev, ir); 384 saa7134_ir_start(dev, ir);