diff -u -X ../dontdiff drivers/usb/storage.old/scsiglue.c drivers/usb/storage/scsiglue.c --- drivers/usb/storage.old/scsiglue.c Sun Aug 12 13:54:53 2001 +++ drivers/usb/storage/scsiglue.c Sat Sep 1 21:29:27 2001 @@ -1,7 +1,7 @@ /* Driver for USB Mass Storage compliant devices * SCSI layer glue code * - * $Id: scsiglue.c,v 1.21 2001/07/29 23:41:52 mdharm Exp $ + * $Id: scsiglue.c,v 1.22 2001/09/02 04:29:27 mdharm Exp $ * * Current development and maintenance by: * (c) 1999, 2000 Matthew Dharm (mdharm-usb@one-eyed-alien.net) diff -u -X ../dontdiff drivers/usb/storage.old/sddr09.c drivers/usb/storage/sddr09.c --- drivers/usb/storage.old/sddr09.c Sun Jul 29 21:11:50 2001 +++ drivers/usb/storage/sddr09.c Sat Sep 1 23:07:20 2001 @@ -1,6 +1,6 @@ /* Driver for SanDisk SDDR-09 SmartMedia reader * - * $Id: sddr09.c,v 1.18 2001/06/11 02:54:25 mdharm Exp $ + * $Id: sddr09.c,v 1.19 2001/09/02 06:07:20 mdharm Exp $ * * SDDR09 driver v0.1: * @@ -693,7 +693,7 @@ // scatterlist block i*64/128k = i*(2^6)*(2^-17) = i*(2^-11) for (i=0; i>11].address+(i<<6); + ptr = sg[i>>11].address+((i&0x7ff)<<6); if (ptr[0]!=0xFF || ptr[1]!=0xFF || ptr[2]!=0xFF || ptr[3]!=0xFF || ptr[4]!=0xFF || ptr[5]!=0xFF) { US_DEBUGP("PBA %04X has no logical mapping: reserved area = " diff -u -X ../dontdiff drivers/usb/storage.old/transport.c drivers/usb/storage/transport.c --- drivers/usb/storage.old/transport.c Sun Jul 29 21:11:50 2001 +++ drivers/usb/storage/transport.c Sat Aug 18 01:37:46 2001 @@ -1,6 +1,6 @@ /* Driver for USB Mass Storage compliant devices * - * $Id: transport.c,v 1.39 2001/03/10 16:46:28 zagor Exp $ + * $Id: transport.c,v 1.40 2001/08/18 08:37:46 mdharm Exp $ * * Current development and maintenance by: * (c) 1999, 2000 Matthew Dharm (mdharm-usb@one-eyed-alien.net) @@ -371,10 +371,9 @@ */ static void usb_stor_blocking_completion(urb_t *urb) { - wait_queue_head_t *wqh_ptr = (wait_queue_head_t *)urb->context; + struct completion *urb_done_ptr = (struct completion *)urb->context; - if (waitqueue_active(wqh_ptr)) - wake_up(wqh_ptr); + complete(urb_done_ptr); } /* This is our function to emulate usb_control_msg() but give us enough @@ -384,8 +383,7 @@ u8 request, u8 requesttype, u16 value, u16 index, void *data, u16 size) { - wait_queue_head_t wqh; - wait_queue_t wait; + struct completion urb_done; int status; devrequest *dr; @@ -402,9 +400,7 @@ dr->length = cpu_to_le16(size); /* set up data structures for the wakeup system */ - init_waitqueue_head(&wqh); - init_waitqueue_entry(&wait, current); - add_wait_queue(&wqh, &wait); + init_completion(&urb_done); /* lock the URB */ down(&(us->current_urb_sem)); @@ -412,33 +408,25 @@ /* fill the URB */ FILL_CONTROL_URB(us->current_urb, us->pusb_dev, pipe, (unsigned char*) dr, data, size, - usb_stor_blocking_completion, &wqh); + usb_stor_blocking_completion, &urb_done); us->current_urb->actual_length = 0; us->current_urb->error_count = 0; us->current_urb->transfer_flags = USB_ASYNC_UNLINK; /* submit the URB */ - set_current_state(TASK_UNINTERRUPTIBLE); status = usb_submit_urb(us->current_urb); if (status) { /* something went wrong */ up(&(us->current_urb_sem)); - set_current_state(TASK_RUNNING); - remove_wait_queue(&wqh, &wait); kfree(dr); return status; } /* wait for the completion of the URB */ up(&(us->current_urb_sem)); - while (us->current_urb->status == -EINPROGRESS) - schedule(); + wait_for_completion(&urb_done); down(&(us->current_urb_sem)); - /* we either timed out or got woken up -- clean up either way */ - set_current_state(TASK_RUNNING); - remove_wait_queue(&wqh, &wait); - /* return the actual length of the data transferred if no error*/ status = us->current_urb->status; if (status >= 0) @@ -456,45 +444,34 @@ int usb_stor_bulk_msg(struct us_data *us, void *data, int pipe, unsigned int len, unsigned int *act_len) { - wait_queue_head_t wqh; - wait_queue_t wait; + struct completion urb_done; int status; /* set up data structures for the wakeup system */ - init_waitqueue_head(&wqh); - init_waitqueue_entry(&wait, current); - add_wait_queue(&wqh, &wait); + init_completion(&urb_done); /* lock the URB */ down(&(us->current_urb_sem)); /* fill the URB */ FILL_BULK_URB(us->current_urb, us->pusb_dev, pipe, data, len, - usb_stor_blocking_completion, &wqh); + usb_stor_blocking_completion, &urb_done); us->current_urb->actual_length = 0; us->current_urb->error_count = 0; us->current_urb->transfer_flags = USB_ASYNC_UNLINK; /* submit the URB */ - set_current_state(TASK_UNINTERRUPTIBLE); status = usb_submit_urb(us->current_urb); if (status) { /* something went wrong */ up(&(us->current_urb_sem)); - set_current_state(TASK_RUNNING); - remove_wait_queue(&wqh, &wait); return status; } /* wait for the completion of the URB */ up(&(us->current_urb_sem)); - while (us->current_urb->status == -EINPROGRESS) - schedule(); + wait_for_completion(&urb_done); down(&(us->current_urb_sem)); - - /* we either timed out or got woken up -- clean up either way */ - set_current_state(TASK_RUNNING); - remove_wait_queue(&wqh, &wait); /* return the actual length of the data transferred */ *act_len = us->current_urb->actual_length; diff -u -X ../dontdiff drivers/usb/storage.old/unusual_devs.h drivers/usb/storage/unusual_devs.h --- drivers/usb/storage.old/unusual_devs.h Sat Sep 1 21:25:09 2001 +++ drivers/usb/storage/unusual_devs.h Sat Sep 1 22:31:11 2001 @@ -1,7 +1,7 @@ /* Driver for USB Mass Storage compliant devices * Ununsual Devices File * - * $Id: unusual_devs.h,v 1.16 2001/07/30 00:27:59 mdharm Exp $ + * $Id: unusual_devs.h,v 1.20 2001/09/02 05:12:57 mdharm Exp $ * * Current development and maintenance by: * (c) 2000 Matthew Dharm (mdharm-usb@one-eyed-alien.net) @@ -68,6 +68,19 @@ US_FL_START_STOP ), #endif +/* Made with the help of Edd Dumbill */ +UNUSUAL_DEV( 0x0451, 0x5409, 0x0001, 0x0001, + "Frontier Labs", + "Nex II Digital", + US_SC_SCSI, US_PR_BULK, NULL, US_FL_START_STOP), + +/* Reported by Paul Stewart + * This entry is needed because the device reports Sub=ff */ +UNUSUAL_DEV( 0x04a4, 0x0004, 0x0001, 0x0001, + "Hitachi", + "DVD-CAM DZ-MV100A Camcorder", + US_SC_SCSI, US_PR_CB, NULL, US_FL_SINGLE_LUN), + UNUSUAL_DEV( 0x04cb, 0x0100, 0x0000, 0x2210, "Fujifilm", "FinePix 1400Zoom", @@ -155,13 +168,20 @@ US_SC_SCSI, US_PR_CB, NULL, US_FL_SINGLE_LUN | US_FL_START_STOP | US_FL_MODE_XLATE ), +/* Reported by win@geeks.nl */ +UNUSUAL_DEV( 0x054c, 0x0025, 0x0100, 0x0100, + "Sony", + "Memorystick NW-MS7", + US_SC_UFI, US_PR_CB, NULL, + US_FL_SINGLE_LUN | US_FL_START_STOP ), + UNUSUAL_DEV( 0x054c, 0x002d, 0x0100, 0x0100, "Sony", "Memorystick MSAC-US1", US_SC_UFI, US_PR_CB, NULL, US_FL_SINGLE_LUN | US_FL_START_STOP ), -/* Submitted by Klaus Mueller */ +/* Submitted by Klaus Mueller */ UNUSUAL_DEV( 0x054c, 0x002e, 0x0106, 0x0310, "Sony", "Handycam", @@ -195,12 +215,6 @@ UNUSUAL_DEV( 0x05ab, 0x0031, 0x0100, 0x0110, "In-System", "USB/IDE Bridge (ATA/ATAPI)", - US_SC_ISD200, US_PR_BULK, isd200_Initialization, - 0 ), - -UNUSUAL_DEV( 0x05ab, 0x0060, 0x0100, 0x0110, - "In-System", - "USB 2.0/IDE Bridge (ATA/ATAPI)", US_SC_ISD200, US_PR_BULK, isd200_Initialization, 0 ),