]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/media/rc/ir-lirc-codec.c
Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[karo-tx-linux.git] / drivers / media / rc / ir-lirc-codec.c
index de85f1d7ce434058390ffeeda813831a511e962a..d2223c04e9ad08ddc93065e5fa3802bdfa0805d8 100644 (file)
@@ -266,7 +266,7 @@ static long ir_lirc_ioctl(struct file *filep, unsigned int cmd,
                if (!dev->rx_resolution)
                        return -ENOTTY;
 
-               val = dev->rx_resolution;
+               val = dev->rx_resolution / 1000;
                break;
 
        case LIRC_SET_WIDEBAND_RECEIVER:
@@ -327,16 +327,6 @@ static long ir_lirc_ioctl(struct file *filep, unsigned int cmd,
        return ret;
 }
 
-static int ir_lirc_open(void *data)
-{
-       return 0;
-}
-
-static void ir_lirc_close(void *data)
-{
-       return;
-}
-
 static const struct file_operations lirc_fops = {
        .owner          = THIS_MODULE,
        .write          = ir_lirc_transmit_ir,
@@ -354,7 +344,6 @@ static const struct file_operations lirc_fops = {
 static int ir_lirc_register(struct rc_dev *dev)
 {
        struct lirc_driver *drv;
-       struct lirc_buffer *rbuf;
        int rc = -ENOMEM;
        unsigned long features = 0;
 
@@ -362,19 +351,12 @@ static int ir_lirc_register(struct rc_dev *dev)
        if (!drv)
                return rc;
 
-       rbuf = kzalloc(sizeof(struct lirc_buffer), GFP_KERNEL);
-       if (!rbuf)
-               goto rbuf_alloc_failed;
-
-       rc = lirc_buffer_init(rbuf, sizeof(int), LIRCBUF_SIZE);
-       if (rc)
-               goto rbuf_init_failed;
-
        if (dev->driver_type != RC_DRIVER_IR_RAW_TX) {
                features |= LIRC_CAN_REC_MODE2;
                if (dev->rx_resolution)
                        features |= LIRC_CAN_GET_REC_RESOLUTION;
        }
+
        if (dev->tx_ir) {
                features |= LIRC_CAN_SEND_PULSE;
                if (dev->s_tx_mask)
@@ -403,10 +385,10 @@ static int ir_lirc_register(struct rc_dev *dev)
        drv->minor = -1;
        drv->features = features;
        drv->data = &dev->raw->lirc;
-       drv->rbuf = rbuf;
-       drv->set_use_inc = &ir_lirc_open;
-       drv->set_use_dec = &ir_lirc_close;
+       drv->rbuf = NULL;
        drv->code_length = sizeof(struct ir_raw_event) * 8;
+       drv->chunk_size = sizeof(int);
+       drv->buffer_size = LIRCBUF_SIZE;
        drv->fops = &lirc_fops;
        drv->dev = &dev->dev;
        drv->rdev = dev;
@@ -415,19 +397,15 @@ static int ir_lirc_register(struct rc_dev *dev)
        drv->minor = lirc_register_driver(drv);
        if (drv->minor < 0) {
                rc = -ENODEV;
-               goto lirc_register_failed;
+               goto out;
        }
 
        dev->raw->lirc.drv = drv;
        dev->raw->lirc.dev = dev;
        return 0;
 
-lirc_register_failed:
-rbuf_init_failed:
-       kfree(rbuf);
-rbuf_alloc_failed:
+out:
        kfree(drv);
-
        return rc;
 }
 
@@ -436,9 +414,8 @@ static int ir_lirc_unregister(struct rc_dev *dev)
        struct lirc_codec *lirc = &dev->raw->lirc;
 
        lirc_unregister_driver(lirc->drv->minor);
-       lirc_buffer_free(lirc->drv->rbuf);
-       kfree(lirc->drv->rbuf);
        kfree(lirc->drv);
+       lirc->drv = NULL;
 
        return 0;
 }