USB CDRW ScanLogic: Quirk does not work?
Federico Galvez-Durand
federicogalvezdurand at yahoo.com
Sun Feb 6 09:05:06 PST 2005
http://lists.freebsd.org/pipermail/freebsd-usb/2004-December/000318.html
Hello, I am replying to my own message, in case it is
interesting for someone else.
I managed to mount my CDRW (using ScanLogic SL11R)
by patching umass.c (patch enclosed at the end of this
email)
Unfortunately it is not recognised as a CD device but
as a DA device.
I can do "mount -t cd9660 /dev/da0 /mnt" and read a
video file
with fairly good quality.
Now I am trying to figure out why it is not recognised
as
a CD device.
Obviously, cdrecord does not find any CDRW device.
I did not achieve my primary goal yet: write a data
CD.
Fico
patch applied to umass.c ($FreeBSD:
src/sys/dev/usb/umass.c,v 1.117 2004/11/28 21:49:30
iedowse Exp
$)
--- umass.c.orig Sun Feb 6 17:02:16 2005
+++ umass.c Sun Feb 6 17:35:22 2005
@@ -313,4 +313,6 @@
/* Device cannot handle INQUIRY EVPD, return
CHECK CONDITION */
# define NO_INQUIRY_EVPD 0x0800
+ /* Device has firmware problems*/
+# define WRONG_CSWTag 0x1000
};
@@ -420,5 +422,5 @@
{ USB_VENDOR_SCANLOGIC,
USB_PRODUCT_SCANLOGIC_SL11R, RID_WILDCARD,
UMASS_PROTO_ATAPI | UMASS_PROTO_BBB,
- NO_INQUIRY
+ NO_INQUIRY | WRONG_CSWTag
},
{ USB_VENDOR_SHUTTLE,
USB_PRODUCT_SHUTTLE_EUSB, RID_WILDCARD,
@@ -1614,14 +1616,16 @@
umass_bbb_reset(sc,
STATUS_WIRE_FAILED);
return;
- } else if (UGETDW(sc->csw.dCSWTag)
- !=
UGETDW(sc->cbw.dCBWTag)) {
- printf("%s: Invalid CSW: tag
%d should be %d\n",
-
USBDEVNAME(sc->sc_dev),
-
UGETDW(sc->csw.dCSWTag),
-
UGETDW(sc->cbw.dCBWTag));
-
- umass_bbb_reset(sc,
STATUS_WIRE_FAILED);
- return;
-
+ } else if (UGETDW(sc->csw.dCSWTag) !=
UGETDW(sc->cbw.dCBWTag)) {
+ if (sc->quirks & WRONG_CSWTag) {
+
USETDW(sc->csw.dCSWTag,UGETDW(sc->cbw.dCBWTag));
+ } else {
+ printf("%s: Invalid CSW: tag %d
should be %d\n",
+ USBDEVNAME(sc->sc_dev),
+ UGETDW(sc->csw.dCSWTag),
+ UGETDW(sc->cbw.dCBWTag));
+
+ umass_bbb_reset(sc,
STATUS_WIRE_FAILED);
+ return;
+ }
/* CSW is valid here */
} else if (sc->csw.bCSWStatus >
CSWSTATUS_PHASE) {
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
More information about the freebsd-usb
mailing list