aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/rc/ir-lirc-codec.c1
-rw-r--r--drivers/media/rc/lirc_dev.c10
-rw-r--r--include/media/lirc_dev.h1
3 files changed, 12 insertions, 0 deletions
diff --git a/drivers/media/rc/ir-lirc-codec.c b/drivers/media/rc/ir-lirc-codec.c
index e5be920c0599..ed2c8a1ed8ca 100644
--- a/drivers/media/rc/ir-lirc-codec.c
+++ b/drivers/media/rc/ir-lirc-codec.c
@@ -384,6 +384,7 @@ static int ir_lirc_register(struct rc_dev *dev)
384 drv->code_length = sizeof(struct ir_raw_event) * 8; 384 drv->code_length = sizeof(struct ir_raw_event) * 8;
385 drv->fops = &lirc_fops; 385 drv->fops = &lirc_fops;
386 drv->dev = &dev->dev; 386 drv->dev = &dev->dev;
387 drv->rdev = dev;
387 drv->owner = THIS_MODULE; 388 drv->owner = THIS_MODULE;
388 389
389 drv->minor = lirc_register_driver(drv); 390 drv->minor = lirc_register_driver(drv);
diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c
index 8dc057b273f2..dc5cbffcd5a2 100644
--- a/drivers/media/rc/lirc_dev.c
+++ b/drivers/media/rc/lirc_dev.c
@@ -35,6 +35,7 @@
35#include <linux/device.h> 35#include <linux/device.h>
36#include <linux/cdev.h> 36#include <linux/cdev.h>
37 37
38#include <media/rc-core.h>
38#include <media/lirc.h> 39#include <media/lirc.h>
39#include <media/lirc_dev.h> 40#include <media/lirc_dev.h>
40 41
@@ -467,6 +468,12 @@ int lirc_dev_fop_open(struct inode *inode, struct file *file)
467 goto error; 468 goto error;
468 } 469 }
469 470
471 if (ir->d.rdev) {
472 retval = rc_open(ir->d.rdev);
473 if (retval)
474 goto error;
475 }
476
470 cdev = ir->cdev; 477 cdev = ir->cdev;
471 if (try_module_get(cdev->owner)) { 478 if (try_module_get(cdev->owner)) {
472 ir->open++; 479 ir->open++;
@@ -511,6 +518,9 @@ int lirc_dev_fop_close(struct inode *inode, struct file *file)
511 518
512 WARN_ON(mutex_lock_killable(&lirc_dev_lock)); 519 WARN_ON(mutex_lock_killable(&lirc_dev_lock));
513 520
521 if (ir->d.rdev)
522 rc_close(ir->d.rdev);
523
514 ir->open--; 524 ir->open--;
515 if (ir->attached) { 525 if (ir->attached) {
516 ir->d.set_use_dec(ir->d.data); 526 ir->d.set_use_dec(ir->d.data);
diff --git a/include/media/lirc_dev.h b/include/media/lirc_dev.h
index 168dd0b1bae2..78f0637ca68d 100644
--- a/include/media/lirc_dev.h
+++ b/include/media/lirc_dev.h
@@ -139,6 +139,7 @@ struct lirc_driver {
139 struct lirc_buffer *rbuf; 139 struct lirc_buffer *rbuf;
140 int (*set_use_inc) (void *data); 140 int (*set_use_inc) (void *data);
141 void (*set_use_dec) (void *data); 141 void (*set_use_dec) (void *data);
142 struct rc_dev *rdev;
142 const struct file_operations *fops; 143 const struct file_operations *fops;
143 struct device *dev; 144 struct device *dev;
144 struct module *owner; 145 struct module *owner;