]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/usb/misc/berry_charge.c
Merge branch 'topic/snd_card_new-err' into for-linus
[linux-2.6-omap-h63xx.git] / drivers / usb / misc / berry_charge.c
index 92c1d2768df9680afb7050d74b09b30c10db1d65..c05a85bc5925c7ce1407ef504ec7fcfe77d57a91 100644 (file)
@@ -71,7 +71,7 @@ static int magic_charge(struct usb_device *udev)
        if (retval != 2) {
                dev_err(&udev->dev, "First magic command failed: %d.\n",
                        retval);
-               return retval;
+               goto exit;
        }
 
        dbg(&udev->dev, "Sending second magic command\n");
@@ -80,7 +80,7 @@ static int magic_charge(struct usb_device *udev)
        if (retval != 0) {
                dev_err(&udev->dev, "Second magic command failed: %d.\n",
                        retval);
-               return retval;
+               goto exit;
        }
 
        dbg(&udev->dev, "Calling set_configuration\n");
@@ -88,6 +88,8 @@ static int magic_charge(struct usb_device *udev)
        if (retval)
                dev_err(&udev->dev, "Set Configuration failed :%d.\n", retval);
 
+exit:
+       kfree(dummy_buffer);
        return retval;
 }
 
@@ -112,6 +114,7 @@ static int magic_dual_mode(struct usb_device *udev)
        if (retval)
                dev_err(&udev->dev, "Set Configuration failed :%d.\n", retval);
 
+       kfree(dummy_buffer);
        return retval;
 }
 
@@ -120,6 +123,11 @@ static int berry_probe(struct usb_interface *intf,
 {
        struct usb_device *udev = interface_to_usbdev(intf);
 
+       if (udev->bus_mA < 500) {
+               dbg(&udev->dev, "Not enough power to charge available\n");
+               return -ENODEV;
+       }
+
        dbg(&udev->dev, "Power is set to %dmA\n",
            udev->actconfig->desc.bMaxPower * 2);