Merge 3.0-rc2 + Linus's latest into usb-linus
[pandora-kernel.git] / drivers / usb / gadget / s3c-hsudc.c
index d269019..d5e3e1e 100644 (file)
@@ -26,6 +26,7 @@
 #include <linux/clk.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
+#include <linux/prefetch.h>
 
 #include <mach/regs-s3c2443-clock.h>
 #include <plat/udc.h>
@@ -1133,7 +1134,7 @@ static irqreturn_t s3c_hsudc_irq(int irq, void *_dev)
 }
 
 int usb_gadget_probe_driver(struct usb_gadget_driver *driver,
-               int (*bind)(struct usb_gadget *))
+               int (*bind)(struct usb_gadget *))
 {
        struct s3c_hsudc *hsudc = the_controller;
        int ret;
@@ -1299,9 +1300,10 @@ static int s3c_hsudc_probe(struct platform_device *pdev)
        s3c_hsudc_setup_ep(hsudc);
 
        hsudc->uclk = clk_get(&pdev->dev, "usb-device");
-       if (hsudc->uclk == NULL) {
+       if (IS_ERR(hsudc->uclk)) {
                dev_err(dev, "failed to find usb-device clock source\n");
-               return -ENOENT;
+               ret = PTR_ERR(hsudc->uclk);
+               goto err_clk;
        }
        clk_enable(hsudc->uclk);
 
@@ -1310,7 +1312,8 @@ static int s3c_hsudc_probe(struct platform_device *pdev)
        disable_irq(hsudc->irq);
        local_irq_enable();
        return 0;
-
+err_clk:
+       free_irq(hsudc->irq, hsudc);
 err_irq:
        iounmap(hsudc->regs);