These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / media / pci / zoran / zoran_card.c
index cec5b75..1136d92 100644 (file)
@@ -1049,8 +1049,9 @@ static int zr36057_init (struct zoran *zr)
        /*
         *   Now add the template and register the device unit.
         */
-       memcpy(zr->video_dev, &zoran_template, sizeof(zoran_template));
+       *zr->video_dev = zoran_template;
        zr->video_dev->v4l2_dev = &zr->v4l2_dev;
+       zr->video_dev->lock = &zr->lock;
        strcpy(zr->video_dev->name, ZR_DEVNAME(zr));
        /* It's not a mem2mem device, but you can both capture and output from
           one and the same device. This should really be split up into two
@@ -1116,6 +1117,7 @@ static void zoran_remove(struct pci_dev *pdev)
        pci_disable_device(zr->pci_dev);
        video_unregister_device(zr->video_dev);
 exit_free:
+       v4l2_ctrl_handler_free(&zr->hdl);
        v4l2_device_unregister(&zr->v4l2_dev);
        kfree(zr);
 }
@@ -1219,9 +1221,11 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        zr->pci_dev = pdev;
        zr->id = nr;
        snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)), "MJPEG[%u]", zr->id);
+       if (v4l2_ctrl_handler_init(&zr->hdl, 10))
+               goto zr_unreg;
+       zr->v4l2_dev.ctrl_handler = &zr->hdl;
        spin_lock_init(&zr->spinlock);
-       mutex_init(&zr->resource_lock);
-       mutex_init(&zr->other_lock);
+       mutex_init(&zr->lock);
        if (pci_enable_device(pdev))
                goto zr_unreg;
        zr->revision = zr->pci_dev->revision;
@@ -1443,6 +1447,7 @@ zr_free_irq:
 zr_unmap:
        iounmap(zr->zr36057_mem);
 zr_unreg:
+       v4l2_ctrl_handler_free(&zr->hdl);
        v4l2_device_unregister(&zr->v4l2_dev);
 zr_free_mem:
        kfree(zr);