Pull motherboard into test branch
[powerpc.git] / drivers / media / video / usbvideo / quickcam_messenger.c
index 8ad9f6a..ec0ff22 100644 (file)
@@ -33,7 +33,7 @@
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/input.h>
-#include <linux/usb_input.h>
+#include <linux/usb/input.h>
 
 #include "usbvideo.h"
 #include "quickcam_messenger.h"
@@ -86,6 +86,7 @@ MODULE_DEVICE_TABLE(usb, qcm_table);
 static void qcm_register_input(struct qcm *cam, struct usb_device *dev)
 {
        struct input_dev *input_dev;
+       int error;
 
        usb_make_path(dev, cam->input_physname, sizeof(cam->input_physname));
        strncat(cam->input_physname, "/input0", sizeof(cam->input_physname));
@@ -106,7 +107,13 @@ static void qcm_register_input(struct qcm *cam, struct usb_device *dev)
 
        input_dev->private = cam;
 
-       input_register_device(cam->input);
+       error = input_register_device(cam->input);
+       if (error) {
+               warn("Failed to register camera's input device, err: %d\n",
+                    error);
+               input_free_device(cam->input);
+               cam->input = NULL;
+       }
 }
 
 static void qcm_unregister_input(struct qcm *cam)
@@ -125,7 +132,7 @@ static void qcm_report_buttonstat(struct qcm *cam)
        }
 }
 
-static void qcm_int_irq(struct urb *urb, struct pt_regs *regs)
+static void qcm_int_irq(struct urb *urb)
 {
        int ret;
        struct uvd *uvd = urb->context;
@@ -190,8 +197,7 @@ static int qcm_alloc_int_urb(struct qcm *cam)
 
 static void qcm_free_int(struct qcm *cam)
 {
-       if (cam->button_urb)
-               usb_free_urb(cam->button_urb);
+       usb_free_urb(cam->button_urb);
 }
 #endif /* CONFIG_INPUT */
 
@@ -343,7 +349,7 @@ static int qcm_sensor_set_gains(struct uvd *uvd, u16 hue,
        u16 saturation, u16 value)
 {
        int ret;
-       u16 r,g,b;
+       u16 r=0,g=0,b=0;
 
        /* this code is based on qc-usb-messenger */
        qcm_hsv2rgb(hue, saturation, value, &r, &g, &b);
@@ -606,7 +612,7 @@ static void resubmit_urb(struct uvd *uvd, struct urb *urb)
                err("usb_submit_urb error (%d)", ret);
 }
 
-static void qcm_isoc_irq(struct urb *urb, struct pt_regs *regs)
+static void qcm_isoc_irq(struct urb *urb)
 {
        int len;
        struct uvd *uvd = urb->context;