aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/zr364xx.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/zr364xx.c')
-rw-r--r--drivers/media/video/zr364xx.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/media/video/zr364xx.c b/drivers/media/video/zr364xx.c
index b5d3364c94c7..6f1892585cbb 100644
--- a/drivers/media/video/zr364xx.c
+++ b/drivers/media/video/zr364xx.c
@@ -92,6 +92,7 @@ static struct usb_device_id device_table[] = {
92 {USB_DEVICE(0x0784, 0x0040), .driver_info = METHOD1 }, 92 {USB_DEVICE(0x0784, 0x0040), .driver_info = METHOD1 },
93 {USB_DEVICE(0x06d6, 0x0034), .driver_info = METHOD0 }, 93 {USB_DEVICE(0x06d6, 0x0034), .driver_info = METHOD0 },
94 {USB_DEVICE(0x0a17, 0x0062), .driver_info = METHOD2 }, 94 {USB_DEVICE(0x0a17, 0x0062), .driver_info = METHOD2 },
95 {USB_DEVICE(0x06d6, 0x003b), .driver_info = METHOD0 },
95 {} /* Terminating entry */ 96 {} /* Terminating entry */
96}; 97};
97 98
@@ -792,6 +793,7 @@ static int zr364xx_probe(struct usb_interface *intf,
792{ 793{
793 struct usb_device *udev = interface_to_usbdev(intf); 794 struct usb_device *udev = interface_to_usbdev(intf);
794 struct zr364xx_camera *cam = NULL; 795 struct zr364xx_camera *cam = NULL;
796 int err;
795 797
796 DBG("probing..."); 798 DBG("probing...");
797 799
@@ -799,12 +801,11 @@ static int zr364xx_probe(struct usb_interface *intf,
799 info("model %04x:%04x detected", udev->descriptor.idVendor, 801 info("model %04x:%04x detected", udev->descriptor.idVendor,
800 udev->descriptor.idProduct); 802 udev->descriptor.idProduct);
801 803
802 if ((cam = 804 cam = kzalloc(sizeof(struct zr364xx_camera), GFP_KERNEL);
803 kmalloc(sizeof(struct zr364xx_camera), GFP_KERNEL)) == NULL) { 805 if (cam == NULL) {
804 info("cam: out of memory !"); 806 info("cam: out of memory !");
805 return -ENODEV; 807 return -ENOMEM;
806 } 808 }
807 memset(cam, 0x00, sizeof(struct zr364xx_camera));
808 /* save the init method used by this camera */ 809 /* save the init method used by this camera */
809 cam->method = id->driver_info; 810 cam->method = id->driver_info;
810 811
@@ -812,7 +813,7 @@ static int zr364xx_probe(struct usb_interface *intf,
812 if (cam->vdev == NULL) { 813 if (cam->vdev == NULL) {
813 info("cam->vdev: out of memory !"); 814 info("cam->vdev: out of memory !");
814 kfree(cam); 815 kfree(cam);
815 return -ENODEV; 816 return -ENOMEM;
816 } 817 }
817 memcpy(cam->vdev, &zr364xx_template, sizeof(zr364xx_template)); 818 memcpy(cam->vdev, &zr364xx_template, sizeof(zr364xx_template));
818 video_set_drvdata(cam->vdev, cam); 819 video_set_drvdata(cam->vdev, cam);
@@ -858,12 +859,13 @@ static int zr364xx_probe(struct usb_interface *intf,
858 cam->brightness = 64; 859 cam->brightness = 64;
859 mutex_init(&cam->lock); 860 mutex_init(&cam->lock);
860 861
861 if (video_register_device(cam->vdev, VFL_TYPE_GRABBER, -1) == -1) { 862 err = video_register_device(cam->vdev, VFL_TYPE_GRABBER, -1);
863 if (err) {
862 info("video_register_device failed"); 864 info("video_register_device failed");
863 video_device_release(cam->vdev); 865 video_device_release(cam->vdev);
864 kfree(cam->buffer); 866 kfree(cam->buffer);
865 kfree(cam); 867 kfree(cam);
866 return -ENODEV; 868 return err;
867 } 869 }
868 870
869 usb_set_intfdata(intf, cam); 871 usb_set_intfdata(intf, cam);
@@ -905,7 +907,7 @@ static struct usb_driver zr364xx_driver = {
905static int __init zr364xx_init(void) 907static int __init zr364xx_init(void)
906{ 908{
907 int retval; 909 int retval;
908 retval = usb_register(&zr364xx_driver) < 0; 910 retval = usb_register(&zr364xx_driver);
909 if (retval) 911 if (retval)
910 info("usb_register failed!"); 912 info("usb_register failed!");
911 else 913 else