1 --- linux-2.4.22/drivers/usb/storage/transport.c Fri Jul 9 10:56:27 2004
2 +++ linux-2.4.22/drivers/usb/storage/transport.c Fri Jul 9 11:51:14 2004
5 /* if the command transfered well, then we go to the data stage */
8 + /* Genesys Logic interface chips need a 100us delay between
9 + * the command phase and the data phase */
10 + if (us->pusb_dev->descriptor.idVendor == USB_VENDOR_ID_GENESYS)
13 /* send/receive data payload, if there is any */
14 if (bcb->DataTransferLength) {
15 usb_stor_transfer(srb, us);
16 --- linux-2.4.22/drivers/usb/storage/usb.c Fri Jul 9 11:44:53 2004
17 +++ linux-2.4.22/drivers/usb/storage/usb.c Fri Jul 9 11:49:44 2004
20 (struct us_data *)ss->htmplt.proc_dir = ss;
22 + /* According to the technical support people at Genesys Logic,
23 + * devices using their chips have problems transferring more
24 + * than 32 KB at a time. In practice people have found that
25 + * 64 KB works okay and that's what Windows does. But we'll
28 + if (ss->pusb_dev->descriptor.idVendor == USB_VENDOR_ID_GENESYS)
29 + ss->htmplt.max_sectors = 64;
31 /* Just before we start our control thread, initialize
32 * the device if it needs initialization */
33 if (unusual_dev && unusual_dev->initFunction)
34 --- linux-2.4.22/drivers/usb/storage/usb.h Fri Jul 9 10:56:03 2004
35 +++ linux-2.4.22/drivers/usb/storage/usb.h Fri Jul 9 11:45:49 2004
37 /* Function to fill an inquiry response. See usb.c for details */
38 extern void fill_inquiry_response(struct us_data *us,
39 unsigned char *data, unsigned int data_len);
41 +/* Vendor ID list for devices that require special handling */
42 +#define USB_VENDOR_ID_GENESYS 0x05e3 /* Genesys Logic */