patch-2.4.19 linux-2.4.19/drivers/usb/storage/datafab.c
Next file: linux-2.4.19/drivers/usb/storage/debug.c
Previous file: linux-2.4.19/drivers/usb/storage/Makefile
Back to the patch index
Back to the overall index
- Lines: 60
- Date:
Fri Aug 2 17:39:45 2002
- Orig file:
linux-2.4.18/drivers/usb/storage/datafab.c
- Orig date:
Mon Feb 25 11:38:07 2002
diff -urN linux-2.4.18/drivers/usb/storage/datafab.c linux-2.4.19/drivers/usb/storage/datafab.c
@@ -1,16 +1,25 @@
/* Driver for Datafab USB Compact Flash reader
*
+ * $Id: datafab.c,v 1.7 2002/02/25 00:40:13 mdharm Exp $
+ *
* datafab driver v0.1:
*
* First release
*
* Current development and maintenance by:
* (c) 2000 Jimmie Mayfield (mayfield+datafab@sackheads.org)
- * many thanks to Robert Baruch for the SanDisk SmartMedia reader driver
+ *
+ * Many thanks to Robert Baruch for the SanDisk SmartMedia reader driver
* which I used as a template for this driver.
+ *
* Some bugfixes and scatter-gather code by Gregory P. Smith
* (greg-usb@electricrain.com)
*
+ * Fix for media change by Joerg Schneider (js@joergschneider.com)
+ *
+ * Other contributors:
+ * (c) 2002 Alan Stern <stern@rowland.org>
+ *
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2, or (at your option) any
@@ -102,7 +111,7 @@
if (result == -EPIPE) {
US_DEBUGP("datafab_raw_bulk: EPIPE. clearing endpoint halt for"
" pipe 0x%x, stalled at %d bytes\n", pipe, act_len);
- usb_clear_halt(us->pusb_dev, pipe);
+ usb_stor_clear_halt(us, pipe);
}
if (result) {
@@ -801,6 +810,23 @@
return USB_STOR_TRANSPORT_GOOD;
}
+ if (srb->cmnd[0] == START_STOP) {
+ /* this is used by sd.c'check_scsidisk_media_change to detect
+ media change */
+ US_DEBUGP("datafab_transport: START_STOP.\n");
+ /* the first datafab_id_device after a media change returns
+ an error (determined experimentally) */
+ rc = datafab_id_device(us, info);
+ if (rc == USB_STOR_TRANSPORT_GOOD) {
+ info->sense_key = NO_SENSE;
+ srb->result = SUCCESS;
+ } else {
+ info->sense_key = UNIT_ATTENTION;
+ srb->result = CHECK_CONDITION;
+ }
+ return rc;
+ }
+
US_DEBUGP("datafab_transport: Gah! Unknown command: %d (0x%x)\n", srb->cmnd[0], srb->cmnd[0]);
return USB_STOR_TRANSPORT_ERROR;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)