isp1760-if: make module unloads correctly
authorMichael Grzeschik <m.grzeschik@pengutronix.de>
Thu, 5 Apr 2012 12:56:07 +0000 (14:56 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 18 Apr 2012 20:50:44 +0000 (13:50 -0700)
Without this patch, the prepared disable routines
will not be called on module unloading.

Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/isp1760-if.c

index 4592dc17a9f9e1e0978e5ff2b68f841fdfa0577c..fff114fd546155382d092b883547a12bca306ce2 100644 (file)
@@ -398,6 +398,9 @@ static int __devinit isp1760_plat_probe(struct platform_device *pdev)
        hcd = isp1760_register(mem_res->start, mem_size, irq_res->start,
                               irqflags, -ENOENT,
                               &pdev->dev, dev_name(&pdev->dev), devflags);
+
+       dev_set_drvdata(&pdev->dev, hcd);
+
        if (IS_ERR(hcd)) {
                pr_warning("isp1760: Failed to register the HCD device\n");
                ret = -ENODEV;
@@ -417,11 +420,16 @@ static int __devexit isp1760_plat_remove(struct platform_device *pdev)
 {
        struct resource *mem_res;
        resource_size_t mem_size;
+       struct usb_hcd *hcd = dev_get_drvdata(&pdev->dev);
+
+       usb_remove_hcd(hcd);
 
        mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        mem_size = resource_size(mem_res);
        release_mem_region(mem_res->start, mem_size);
 
+       usb_put_hcd(hcd);
+
        return 0;
 }