diff options
-rw-r--r-- | drivers/media/rc/ir-lirc-codec.c | 1 | ||||
-rw-r--r-- | drivers/media/rc/lirc_dev.c | 10 | ||||
-rw-r--r-- | include/media/lirc_dev.h | 1 |
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; |