diff options
Diffstat (limited to 'drivers/media/video/saa7134/saa7134-input.c')
-rw-r--r-- | drivers/media/video/saa7134/saa7134-input.c | 20 |
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 | ||
154 | static void saa7134_input_timer(unsigned long data) | 154 | static 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 | ||
165 | static void saa7134_ir_start(struct saa7134_dev *dev, struct card_ir *ir) | 163 | static 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); |