* Returns NULL on error, a pointer to usb_usbvision else.
  *
  */
-static struct usb_usbvision *usbvision_alloc(struct usb_device *dev)
+static struct usb_usbvision *usbvision_alloc(struct usb_device *dev,
+                                            struct usb_interface *intf)
 {
        struct usb_usbvision *usbvision;
 
                return NULL;
 
        usbvision->dev = dev;
-       if (v4l2_device_register(&dev->dev, &usbvision->v4l2_dev))
+       if (v4l2_device_register(&intf->dev, &usbvision->v4l2_dev))
                goto err_free;
 
        mutex_init(&usbvision->lock);   /* available */
                return -ENODEV;
        }
 
-       if ((usbvision = usbvision_alloc(dev)) == NULL) {
+       usbvision = usbvision_alloc(dev, intf);
+       if (usbvision == NULL) {
                dev_err(&intf->dev, "%s: couldn't allocate USBVision struct\n", __func__);
                return -ENOMEM;
        }