Date: Sun, 6 Feb 2005 09:05:04 -0800 (PST) From: Federico Galvez-Durand <federicogalvezdurand@yahoo.com> To: freebsd-usb@freebsd.org Subject: USB CDRW ScanLogic: Quirk does not work? Message-ID: <20050206170505.21405.qmail@web61006.mail.yahoo.com>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050206170505.21405.qmail>