ChangeSet 1.1673.8.11, 2004/03/25 16:06:44-08:00, [EMAIL PROTECTED]

[PATCH] USB: fix osdl bugid 2006 (timer init and fault paths)

Need to initialize timers a bit earlier to handle
certain initialization faults.


OSDL bug 2006

Need to initialize some timers a bit earlier to clean up safely
after very early init HCD failures.

Those early init faults were needlessly mysterious since they
didn't emit diagnostics except at HCD discretion.


 drivers/usb/core/hcd-pci.c  |    5 ++++-
 drivers/usb/host/ehci-hcd.c |    8 ++++----
 2 files changed, 8 insertions(+), 5 deletions(-)


diff -Nru a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c
--- a/drivers/usb/core/hcd-pci.c        Wed Apr 14 14:39:31 2004
+++ b/drivers/usb/core/hcd-pci.c        Wed Apr 14 14:39:31 2004
@@ -196,13 +196,16 @@
        hcd->self.op = &usb_hcd_operations;
        hcd->self.hcpriv = (void *) hcd;
        hcd->self.release = &hcd_pci_release;
+       init_timer (&hcd->rh_timer);
 
        INIT_LIST_HEAD (&hcd->dev_list);
 
        usb_register_bus (&hcd->self);
 
-       if ((retval = driver->start (hcd)) < 0)
+       if ((retval = driver->start (hcd)) < 0) {
+               dev_err (hcd->self.controller, "init error %d\n", retval);
                usb_hcd_pci_remove (dev);
+       }
 
        return retval;
 } 
diff -Nru a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
--- a/drivers/usb/host/ehci-hcd.c       Wed Apr 14 14:39:31 2004
+++ b/drivers/usb/host/ehci-hcd.c       Wed Apr 14 14:39:31 2004
@@ -374,6 +374,10 @@
        u32                     hcc_params;
        u8                      tempbyte;
 
+       init_timer (&ehci->watchdog);
+       ehci->watchdog.function = ehci_watchdog;
+       ehci->watchdog.data = (unsigned long) ehci;
+
        /*
         * hw default: 1K periodic list heads, one per frame.
         * periodic_size can shrink by USBCMD update if hcc_params allows.
@@ -467,10 +471,6 @@
        dbg_cmd (ehci, "init", temp);
 
        /* set async sleep time = 10 us ... ? */
-
-       init_timer (&ehci->watchdog);
-       ehci->watchdog.function = ehci_watchdog;
-       ehci->watchdog.data = (unsigned long) ehci;
 
        /* wire up the root hub */
        bus = hcd_to_bus (hcd);



-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id70&alloc_id638&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