Input: bcm5974 - turn wellspring mode off if failed to start traffic
authorLuo Jinghua <sunmoon1997@gmail.com>
Tue, 8 Jun 2010 08:01:48 +0000 (01:01 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Tue, 8 Jun 2010 08:26:36 +0000 (01:26 -0700)
If we fail to submit URBs we should take touchpad out of wellsping
mode.

Signed-off-by: Luo Jinghua <sunmoon1997@gmail.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/mouse/bcm5974.c

index 6dedded272228131c4a047fa43c0f667215e5370..354c578ec9d3b6ecaf3c979713bfaeef9fbf6e9d 100644 (file)
@@ -580,23 +580,30 @@ exit:
  */
 static int bcm5974_start_traffic(struct bcm5974 *dev)
 {
-       if (bcm5974_wellspring_mode(dev, true)) {
+       int error;
+
+       error = bcm5974_wellspring_mode(dev, true);
+       if (error) {
                dprintk(1, "bcm5974: mode switch failed\n");
-               goto error;
+               goto err_out;
        }
 
-       if (usb_submit_urb(dev->bt_urb, GFP_KERNEL))
-               goto error;
+       error = usb_submit_urb(dev->bt_urb, GFP_KERNEL);
+       if (error)
+               goto err_reset_mode;
 
-       if (usb_submit_urb(dev->tp_urb, GFP_KERNEL))
+       error = usb_submit_urb(dev->tp_urb, GFP_KERNEL);
+       if (error)
                goto err_kill_bt;
 
        return 0;
 
 err_kill_bt:
        usb_kill_urb(dev->bt_urb);
-error:
-       return -EIO;
+err_reset_mode:
+       bcm5974_wellspring_mode(dev, false);
+err_out:
+       return error;
 }
 
 static void bcm5974_pause_traffic(struct bcm5974 *dev)