Greg:

This patch changes the non-PCI-based OHCI-related host controller drivers,
removing the code that frees the driver-specific hcd structures.  
Unfortunately I am not able to test it, because I don't have the necessary
hardware.

Alan Stern



Signed-off-by: Alan Stern <[EMAIL PROTECTED]>

===== drivers/usb/host/ohci-lh7a404.c 1.3 vs edited =====
--- 1.3/drivers/usb/host/ohci-lh7a404.c 2004-10-20 12:38:09 -04:00
+++ edited/drivers/usb/host/ohci-lh7a404.c      2004-10-28 11:31:11 -04:00
@@ -146,6 +146,7 @@
 
        usb_bus_init (&hcd->self);
        hcd->self.op = &usb_hcd_operations;
+       hcd->self.release = &usb_hcd_release;
        hcd->self.hcpriv = (void *) hcd;
        hcd->self.bus_name = "lh7a404";
        hcd->product_desc = "LH7A404 OHCI";
@@ -165,9 +166,8 @@
 
  err2:
        hcd_buffer_destroy (hcd);
-       if (hcd)
-               driver->hcd_free(hcd);
  err1:
+       kfree(hcd);
        lh7a404_stop_hc(dev);
        release_mem_region(dev->resource[0].start,
                                dev->resource[0].end
@@ -191,8 +191,6 @@
  */
 void usb_hcd_lh7a404_remove (struct usb_hcd *hcd, struct platform_device *dev)
 {
-       void *base;
-
        pr_debug ("remove: %s, state %x", hcd->self.bus_name, hcd->state);
 
        if (in_interrupt ())
@@ -211,9 +209,6 @@
 
        usb_deregister_bus (&hcd->self);
 
-       base = hcd->regs;
-       hcd->driver->hcd_free (hcd);
-
        lh7a404_stop_hc(dev);
        release_mem_region(dev->resource[0].start,
                           dev->resource[0].end
@@ -265,7 +260,6 @@
         * memory lifecycle (except per-request)
         */
        .hcd_alloc =            ohci_hcd_alloc,
-       .hcd_free =             ohci_hcd_free,
 
        /*
         * managing i/o requests and associated device resources
===== drivers/usb/host/ohci-omap.c 1.16 vs edited =====
--- 1.16/drivers/usb/host/ohci-omap.c   2004-10-20 12:38:09 -04:00
+++ edited/drivers/usb/host/ohci-omap.c 2004-10-28 15:48:50 -04:00
@@ -322,7 +322,7 @@
 
        retval = omap_start_hc(ohci, pdev);
        if (retval < 0)
-               goto err2;
+               goto err1;
 
        retval = hcd_buffer_create (hcd);
        if (retval != 0) {
@@ -342,6 +342,7 @@
 
        usb_bus_init (&hcd->self);
        hcd->self.op = &usb_hcd_operations;
+       hcd->self.release = &usb_hcd_release;
        hcd->self.hcpriv = (void *) hcd;
        hcd->self.bus_name = pdev->dev.bus_id;
        hcd->product_desc = "OMAP OHCI";
@@ -359,9 +360,8 @@
 
  err2:
        hcd_buffer_destroy (hcd);
-       if (hcd)
-               driver->hcd_free(hcd);
  err1:
+       kfree(hcd);
        omap_stop_hc(pdev);
 
        release_mem_region(pdev->resource[0].start, 
@@ -387,8 +387,6 @@
  */
 void usb_hcd_omap_remove (struct usb_hcd *hcd, struct platform_device *pdev)
 {
-       void *base;
-
        dev_info(&pdev->dev, "remove: state %x\n", hcd->state);
 
        if (in_interrupt ())
@@ -410,9 +408,6 @@
 
        usb_deregister_bus (&hcd->self);
 
-       base = hcd->regs;
-       hcd->driver->hcd_free (hcd);
-
        omap_stop_hc(pdev);
 
        release_mem_region(pdev->resource[0].start, 
@@ -464,7 +459,6 @@
         * memory lifecycle (except per-request)
         */
        .hcd_alloc =            ohci_hcd_alloc,
-       .hcd_free =             ohci_hcd_free,
 
        /*
         * managing i/o requests and associated device resources
===== drivers/usb/host/ohci-pxa27x.c 1.1 vs edited =====
--- 1.1/drivers/usb/host/ohci-pxa27x.c  2004-10-20 12:28:19 -04:00
+++ edited/drivers/usb/host/ohci-pxa27x.c       2004-10-28 11:30:58 -04:00
@@ -243,6 +243,7 @@
 
        usb_bus_init (&hcd->self);
        hcd->self.op = &usb_hcd_operations;
+       hcd->self.release = &usb_hcd_release;
        hcd->self.hcpriv = (void *) hcd;
        hcd->self.bus_name = "pxa27x";
        hcd->product_desc = "PXA27x OHCI";
@@ -261,9 +262,8 @@
 
  err2:
        hcd_buffer_destroy (hcd);
-       if (hcd)
-               driver->hcd_free(hcd);
  err1:
+       kfree(hcd);
        pxa27x_stop_hc(dev);
        release_mem_region(dev->resource[0].start,
                                dev->resource[0].end
@@ -287,8 +287,6 @@
  */
 void usb_hcd_pxa27x_remove (struct usb_hcd *hcd, struct platform_device *dev)
 {
-       void *base;
-
        pr_debug ("remove: %s, state %x", hcd->self.bus_name, hcd->state);
 
        if (in_interrupt ())
@@ -307,9 +305,6 @@
 
        usb_deregister_bus (&hcd->self);
 
-       base = hcd->regs;
-       hcd->driver->hcd_free (hcd);
-
        pxa27x_stop_hc(dev);
        release_mem_region(dev->resource[0].start,
                           dev->resource[0].end - dev->resource[0].start + 1);
@@ -358,7 +353,6 @@
         * memory lifecycle (except per-request)
         */
        .hcd_alloc =            ohci_hcd_alloc,
-       .hcd_free =             ohci_hcd_free,
 
        /*
         * managing i/o requests and associated device resources
===== drivers/usb/host/ohci-sa1111.c 1.40 vs edited =====
--- 1.40/drivers/usb/host/ohci-sa1111.c 2004-10-20 12:38:10 -04:00
+++ edited/drivers/usb/host/ohci-sa1111.c       2004-10-28 11:31:46 -04:00
@@ -194,6 +194,7 @@
 
        usb_bus_init (&hcd->self);
        hcd->self.op = &usb_hcd_operations;
+       hcd->self.release = &usb_hcd_release;
        hcd->self.hcpriv = (void *) hcd;
        hcd->self.bus_name = "sa1111";
        hcd->product_desc = "SA-1111 OHCI";
@@ -213,9 +214,8 @@
 
  err2:
        hcd_buffer_destroy (hcd);
-       if (hcd)
-               driver->hcd_free(hcd);
  err1:
+       kfree(hcd);
        sa1111_stop_hc(dev);
        release_mem_region(dev->res.start, dev->res.end - dev->res.start + 1);
        return retval;
@@ -237,8 +237,6 @@
  */
 void usb_hcd_sa1111_remove (struct usb_hcd *hcd, struct sa1111_dev *dev)
 {
-       void *base;
-
        info ("remove: %s, state %x", hcd->self.bus_name, hcd->state);
 
        if (in_interrupt ())
@@ -257,9 +255,6 @@
 
        usb_deregister_bus (&hcd->self);
 
-       base = hcd->regs;
-       hcd->driver->hcd_free (hcd);
-
        sa1111_stop_hc(dev);
        release_mem_region(dev->res.start, dev->res.end - dev->res.start + 1);
 }
@@ -308,7 +303,6 @@
         * memory lifecycle (except per-request)
         */
        .hcd_alloc =            ohci_hcd_alloc,
-       .hcd_free =             ohci_hcd_free,
 
        /*
         * managing i/o requests and associated device resources



-------------------------------------------------------
This SF.Net email is sponsored by:
Sybase ASE Linux Express Edition - download now for FREE
LinuxWorld Reader's Choice Award Winner for best database on Linux.
http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to