Daer David,

I operated USB2.0 by 2.4.22-pre2. 
The following problems occurred in VT6202.

Socket status: 30000007
cs: IO port probe 0x0c00-0x0cff: clean.
cs: IO port probe 0x0100-0x04ff: excluding 0x378-0x37f 0x4d0-0x4d7
cs: IO port probe 0x0a00-0x0aff: clean.
Attached scsi CD-ROM sr0 at scsi0, channel 0, id 0, lun 0
sr0: scsi3-mmc drive: 40x/40x writer cd/rw xa/form2 cdda tray
Uniform CD-ROM driver Revision: 3.12
spurious 8259A interrupt: IRQ7.
usb_control/bulk_msg: timeout
usb_control/bulk_msg: timeout
usb_control/bulk_msg: timeout
hub.c: USB device not accepting new address (error=-71)
usb.c: USB disconnect on device 00:0c.2-1 address 2
hub.c: new USB device 00:0c.2-1, assigned address 3
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 3
usb-storage: host_reset() requested but not implemented
scsi: device set offline - command error recover failed: host 0 channel 0 id
0 lun 0
SCSI cdrom error : host 0 channel 0 id 0 lun 0 return code = 6050000
 I/O error: dev 0b:00, sector 523912
 I/O error: dev 0b:00, sector 523916
 I/O error: dev 0b:00, sector 524164
 I/O error: dev 0b:00, sector 523912

I investigated and corrected ehci-hcd.
When adapted in this my patch, 
it is operating satisfactory one day or more.
PD720100 of NEC is also operating satisfactory.

----- patch begin

diff -Naur linux-2.4.22-pre2/drivers/usb/host/ehci-q.c
linux-2.4.22-pre2-usb/drivers/usb/host/ehci-q.c
--- linux-2.4.22-pre2/drivers/usb/host/ehci-q.c 2003-06-30
17:34:14.000000000 +0900
+++ linux-2.4.22-pre2-usb/drivers/usb/host/ehci-q.c     2003-07-03 10:34:58.
000000000 +0900
@@ -328,7 +328,7 @@
 
                /* stop scanning when we reach qtds the hc is using */
                } else if (likely (!stopped
-                               && HCD_IS_RUNNING (ehci->hcd.state))) {
+                               || HCD_IS_RUNNING (ehci->hcd.state))) {
                        break;
 
                } else {
@@ -725,11 +725,12 @@
 
        /* NOTE:  if (PIPE_INTERRUPT) { scheduler sets s-mask } */
 
-       /* init as live, toggle clear, advance to dummy */
+       /* init as halted, toggle clear, advance to dummy */
        qh->qh_state = QH_STATE_IDLE;
        qh->hw_info1 = cpu_to_le32 (info1);
        qh->hw_info2 = cpu_to_le32 (info2);
        qh_update (ehci, qh, qh->dummy);
+       qh->hw_token = cpu_to_le32 (QTD_STS_HALT);
        usb_settoggle (urb->dev, usb_pipeendpoint (urb->pipe), !is_input,
1);
        return qh;
 }
diff -Naur linux-2.4.22-pre2/drivers/usb/hub.c
linux-2.4.22-pre2-usb/drivers/usb/hub.c
--- linux-2.4.22-pre2/drivers/usb/hub.c 2003-06-30 17:34:14.000000000 +0900
+++ linux-2.4.22-pre2-usb/drivers/usb/hub.c     2003-07-03
10:41:50.000000000 +0900
@@ -715,6 +715,8 @@
                        err("couldn't allocate usb_device");
                        break;
                }
+               
+               hub->children[port] = dev;
 
                /* Reset the device */
                if (usb_hub_port_reset(hub, port, dev, delay)) {
@@ -759,10 +761,8 @@
                        dev->bus->bus_name, dev->devpath, dev->devnum);
 
                /* Run it through the hoops (find a driver, etc) */
-               if (!usb_new_device(dev)) {
-                       hub->children[port] = dev;
+               if (!usb_new_device(dev))
                        goto done;
-               }
 
                /* Free the configuration if there was an error */
                usb_free_dev(dev);
@@ -771,6 +771,7 @@
                delay = HUB_LONG_RESET_TIME;
        }
 
+       hub->children[port] = NULL;
        usb_hub_port_disable(hub, port);
 done:
        up(&usb_address0_sem);
diff -Naur linux-2.4.22-pre2/drivers/usb/storage/scsiglue.c
linux-2.4.22-pre2-usb/drivers/usb/storage/scsiglue.c
--- linux-2.4.22-pre2/drivers/usb/storage/scsiglue.c    2003-06-13 23:51:37.
000000000 +0900
+++ linux-2.4.22-pre2-usb/drivers/usb/storage/scsiglue.c        2003-07-02
15:46:53.000000000 +0900
@@ -301,8 +301,8 @@
 /* FIXME: This doesn't do anything right now */
 static int host_reset( Scsi_Cmnd *srb )
 {
-       printk(KERN_CRIT "usb-storage: host_reset() requested but not
implemented\n" );
-       return FAILED;
+       printk(KERN_CRIT "usb-storage: host_reset() requested\n" );
+       return SUCCESS;
 }
-------------------- end of patch

Haruo


-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100006ave/direct;at.asp_061203_01/01
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to