IRQ handler rewrite by Gabor Juhos, uses C no longer assembly
[openwrt.git] / target / linux / adm5120-2.6 / files / drivers / usb / host / adm5120-hcd.c
index 25ba4b8..8dabeeb 100644 (file)
@@ -376,7 +376,7 @@ static irqreturn_t adm5120hcd_irq(int irq, void *ptr, struct pt_regs *regs)
 }
 
 static int admhcd_urb_enqueue(struct usb_hcd *hcd, struct usb_host_endpoint *ep,
-    struct urb *urb, int mem_flags)
+    struct urb *urb, gfp_t mem_flags)
 {
        struct admhcd *ahcd = hcd_to_admhcd(hcd);
        struct admhcd_ed *ed;
@@ -704,7 +704,6 @@ static int __init adm5120hcd_probe(struct platform_device *pdev)
 {
        struct usb_hcd *hcd;
        struct admhcd *ahcd;
-       struct usb_device *udev;
        struct resource *addr, *data;
        void __iomem *addr_reg;
        void __iomem *data_reg;
@@ -717,7 +716,12 @@ static int __init adm5120hcd_probe(struct platform_device *pdev)
 
        data = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        addr = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-       irq = platform_get_irq(pdev, 0);
+
+       if (request_irq(data->start, adm5120hcd_irq, 0, hcd_name, hcd)) {
+               printk(KERN_WARNING "Could not request IRQ\n");
+               err = -EBUSY;
+               goto out;
+       }
 
        if (!addr || !data || irq < 0) {
                err = -ENODEV;
@@ -786,12 +790,8 @@ static int __init adm5120hcd_probe(struct platform_device *pdev)
 
 out_dev:
        usb_put_hcd(hcd);
-out_irq:
-       free_irq(pdev->resource[1].start, hcd);
 out_unmap:
        iounmap(addr_reg);
-out_hcd:
-       usb_put_hcd(hcd);
 out_mem:
        release_mem_region(addr->start, 2);
 out:
@@ -802,7 +802,6 @@ static int __init_or_module adm5120hcd_remove(struct platform_device *pdev)
 {
        struct usb_hcd *hcd = platform_get_drvdata(pdev);
        struct admhcd *ahcd;
-       struct resource *res;
 
        if (!hcd)
                return 0;
This page took 0.033579 seconds and 4 git commands to generate.