• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/drivers/media/IR/

Lines Matching defs:ir

75 static void init_irctl(struct irctl *ir)
77 dev_dbg(ir->d.dev, LOGHEAD "initializing irctl\n",
78 ir->d.name, ir->d.minor);
79 mutex_init(&ir->irctl_lock);
80 ir->d.minor = NOPLUG;
83 static void cleanup(struct irctl *ir)
85 dev_dbg(ir->d.dev, LOGHEAD "cleaning up\n", ir->d.name, ir->d.minor);
87 device_destroy(lirc_class, MKDEV(MAJOR(lirc_base_dev), ir->d.minor));
89 if (ir->buf != ir->d.rbuf) {
90 lirc_buffer_free(ir->buf);
91 kfree(ir->buf);
93 ir->buf = NULL;
100 static int add_to_buf(struct irctl *ir)
102 if (ir->d.add_to_buf) {
111 res = ir->d.add_to_buf(ir->d.data, ir->buf);
118 kthread_stop(ir->task);
130 struct irctl *ir = irctl;
132 dev_dbg(ir->d.dev, LOGHEAD "poll thread started\n",
133 ir->d.name, ir->d.minor);
136 if (ir->open) {
137 if (ir->jiffies_to_wait) {
139 schedule_timeout(ir->jiffies_to_wait);
143 if (!add_to_buf(ir))
144 wake_up_interruptible(&ir->buf->wait_poll);
151 dev_dbg(ir->d.dev, LOGHEAD "poll thread ended\n",
152 ir->d.name, ir->d.minor);
168 static int lirc_cdev_add(struct irctl *ir)
171 struct lirc_driver *d = &ir->d;
174 cdev_init(&ir->cdev, d->fops);
175 ir->cdev.owner = d->owner;
177 cdev_init(&ir->cdev, &fops);
178 ir->cdev.owner = THIS_MODULE;
180 kobject_set_name(&ir->cdev.kobj, "lirc%d", d->minor);
182 retval = cdev_add(&ir->cdev, MKDEV(MAJOR(lirc_base_dev), d->minor), 1);
184 kobject_put(&ir->cdev.kobj);
191 struct irctl *ir;
275 ir = kzalloc(sizeof(struct irctl), GFP_KERNEL);
276 if (!ir) {
280 init_irctl(ir);
281 irctls[minor] = ir;
285 ir->jiffies_to_wait = HZ / d->sample_rate;
288 ir->jiffies_to_wait = 0;
300 ir->buf = d->rbuf;
302 ir->buf = kmalloc(sizeof(struct lirc_buffer), GFP_KERNEL);
303 if (!ir->buf) {
307 err = lirc_buffer_init(ir->buf, chunk_size, buffer_size);
309 kfree(ir->buf);
313 ir->chunk_size = ir->buf->chunk_size;
318 ir->d = *d;
319 ir->d.minor = minor;
321 device_create(lirc_class, ir->d.dev,
322 MKDEV(MAJOR(lirc_base_dev), ir->d.minor), NULL,
323 "lirc%u", ir->d.minor);
327 ir->task = kthread_run(lirc_thread, (void *)ir, "lirc_dev");
328 if (IS_ERR(ir->task)) {
337 err = lirc_cdev_add(ir);
341 ir->attached = 1;
344 dev_info(ir->d.dev, "lirc_dev: driver %s registered at minor = %d\n",
345 ir->d.name, ir->d.minor);
349 device_destroy(lirc_class, MKDEV(MAJOR(lirc_base_dev), ir->d.minor));
359 struct irctl *ir;
368 ir = irctls[minor];
372 if (ir->d.minor != minor) {
380 if (ir->task)
381 kthread_stop(ir->task);
383 dev_dbg(ir->d.dev, "lirc_dev: driver %s unregistered from minor = %d\n",
384 ir->d.name, ir->d.minor);
386 ir->attached = 0;
387 if (ir->open) {
388 dev_dbg(ir->d.dev, LOGHEAD "releasing opened driver\n",
389 ir->d.name, ir->d.minor);
390 wake_up_interruptible(&ir->buf->wait_poll);
391 mutex_lock(&ir->irctl_lock);
392 ir->d.set_use_dec(ir->d.data);
393 module_put(ir->d.owner);
394 mutex_unlock(&ir->irctl_lock);
395 cdev_del(&ir->cdev);
397 cleanup(ir);
398 cdev_del(&ir->cdev);
399 kfree(ir);
411 struct irctl *ir;
423 ir = irctls[iminor(inode)];
424 if (!ir) {
428 file->private_data = ir;
430 dev_dbg(ir->d.dev, LOGHEAD "open called\n", ir->d.name, ir->d.minor);
432 if (ir->d.minor == NOPLUG) {
437 if (ir->open) {
442 if (try_module_get(ir->d.owner)) {
443 ++ir->open;
444 retval = ir->d.set_use_inc(ir->d.data);
447 module_put(ir->d.owner);
448 --ir->open;
450 lirc_buffer_clear(ir->buf);
452 if (ir->task)
453 wake_up_process(ir->task);
457 if (ir)
458 dev_dbg(ir->d.dev, LOGHEAD "open result = %d\n",
459 ir->d.name, ir->d.minor, retval);
469 struct irctl *ir = irctls[iminor(inode)];
471 dev_dbg(ir->d.dev, LOGHEAD "close called\n", ir->d.name, ir->d.minor);
475 --ir->open;
476 if (ir->attached) {
477 ir->d.set_use_dec(ir->d.data);
478 module_put(ir->d.owner);
480 cleanup(ir);
481 irctls[ir->d.minor] = NULL;
482 kfree(ir);
493 struct irctl *ir = irctls[iminor(file->f_dentry->d_inode)];
496 dev_dbg(ir->d.dev, LOGHEAD "poll called\n", ir->d.name, ir->d.minor);
498 if (!ir->attached) {
499 mutex_unlock(&ir->irctl_lock);
503 poll_wait(file, &ir->buf->wait_poll, wait);
505 if (ir->buf)
506 if (lirc_buffer_empty(ir->buf))
513 dev_dbg(ir->d.dev, LOGHEAD "poll result = %d\n",
514 ir->d.name, ir->d.minor, ret);
524 struct irctl *ir = file->private_data;
526 dev_dbg(ir->d.dev, LOGHEAD "ioctl called (0x%x)\n",
527 ir->d.name, ir->d.minor, cmd);
529 if (ir->d.minor == NOPLUG || !ir->attached) {
530 dev_dbg(ir->d.dev, LOGHEAD "ioctl result = -ENODEV\n",
531 ir->d.name, ir->d.minor);
535 mutex_lock(&ir->irctl_lock);
539 result = put_user(ir->d.features, (unsigned long *)arg);
542 if (!(ir->d.features & LIRC_CAN_REC_MASK)) {
548 (ir->d.features & LIRC_CAN_REC_MASK),
552 if (!(ir->d.features & LIRC_CAN_REC_MASK)) {
558 if (!result && !(LIRC_MODE2REC(mode) & ir->d.features))
562 result = put_user(ir->d.code_length, (unsigned long *)arg);
565 if (!(ir->d.features & LIRC_CAN_SET_REC_TIMEOUT) ||
566 ir->d.min_timeout == 0) {
571 result = put_user(ir->d.min_timeout, (unsigned long *)arg);
574 if (!(ir->d.features & LIRC_CAN_SET_REC_TIMEOUT) ||
575 ir->d.max_timeout == 0) {
580 result = put_user(ir->d.max_timeout, (unsigned long *)arg);
586 dev_dbg(ir->d.dev, LOGHEAD "ioctl result = %d\n",
587 ir->d.name, ir->d.minor, result);
589 mutex_unlock(&ir->irctl_lock);
600 struct irctl *ir = irctls[iminor(file->f_dentry->d_inode)];
601 unsigned char buf[ir->chunk_size];
605 dev_dbg(ir->d.dev, LOGHEAD "read called\n", ir->d.name, ir->d.minor);
607 if (mutex_lock_interruptible(&ir->irctl_lock))
609 if (!ir->attached) {
610 mutex_unlock(&ir->irctl_lock);
614 if (length % ir->chunk_size) {
615 dev_dbg(ir->d.dev, LOGHEAD "read result = -EINVAL\n",
616 ir->d.name, ir->d.minor);
617 mutex_unlock(&ir->irctl_lock);
626 add_wait_queue(&ir->buf->wait_poll, &wait);
634 if (lirc_buffer_empty(ir->buf)) {
650 mutex_unlock(&ir->irctl_lock);
654 if (mutex_lock_interruptible(&ir->irctl_lock)) {
656 remove_wait_queue(&ir->buf->wait_poll, &wait);
661 if (!ir->attached) {
666 lirc_buffer_read(ir->buf, buf);
668 ir->buf->chunk_size);
669 written += ir->buf->chunk_size;
673 remove_wait_queue(&ir->buf->wait_poll, &wait);
675 mutex_unlock(&ir->irctl_lock);
678 dev_dbg(ir->d.dev, LOGHEAD "read result = %s (%d)\n",
679 ir->d.name, ir->d.minor, ret ? "-EFAULT" : "OK", ret);
691 struct irctl *ir;
692 ir = irctls[iminor(file->f_dentry->d_inode)];
693 data = ir->d.data;
704 struct irctl *ir = irctls[iminor(file->f_dentry->d_inode)];
706 dev_dbg(ir->d.dev, LOGHEAD "write called\n", ir->d.name, ir->d.minor);
708 if (!ir->attached)