Methods (b) and (c) should both work. If (b) isn't working, the device must have crashed it's internal firmware pretty badly.
Matt On Thu, Jan 10, 2002 at 05:10:51PM +0100, Sancho Dauskardt wrote: > Hi all, > > in writing a driver for the OnSpec 90c36-LC1 CF/SM/MS/SD controller (aka. > DataFab 0xA109), I am currently stumbling over a big problem: > how should you really reset a device, for which no known reset command > exists (eg. after a card has been removed during a read access, and the > controller's crashed) ? > > What I tried: > a) hub.c's usb_reset_device() doesn't change anything (lower layer usb > responds, but bulk iface still dead). > > b) Find next higher up hub, and then > usb_clear_port_feature(hub, port + 1, USB_PORT_FEAT_ENABLE); > then > usb_reset_device() to get it going again. > Same results as with a) > > c) Find next higher up hub, and then > usb_clear_port_feature(hub, port + 1, USB_PORT_FEAT_POWER); > wait > usb_set_port_feature(hub, port + 1, USB_PORT_FEAT_POWER); > and now hope that the device will enumerate, and that usb-storage will > find the new > reincarnation and link it against the existing us_data. > Seems to work "quite often". > > Any comments / ideas how this should work best ? > > If the power hack is the only method, it would at least be nice to stop the > enumerating, and reuse the old device numbers. > > > FYI: The device I'm using here is a ACOMdATA MF6. It consists of 2x > 90C36-LC1 Controller (one for CF/SM, the other for SD/MS). The 2 chips are > connected via a 4-port hub. Btw. the datafab.c driver works for CF and SD > slot. > > Following match. > + > +UNUSUAL_DEV( 0x0c0b, 0xa109, 0x0000, 0xFFFF, > + "ACOMdATA", "LC1-CF/SM", > + US_SC_SCSI, US_PR_ONSPECLC1, init_onspec_lc1, > + US_FL_MODE_XLATE ), > + > +UNUSUAL_DEV( 0x0c0b, 0xa10C, 0x0000, 0xFFFF, > + "ACOMdATA", "LC1-SD/MS", > + US_SC_SCSI, US_PR_ONSPECLC1, init_onspec_lc1, > + US_FL_MODE_XLATE ), > + > Currently my driver work read-only on all 4 slots. Incase anyone's > interested, let me know. > > > Another device that has the same reset problem ist the DataFab ML4-USB. Is > has a storage-compliant plain bulk iface, but doesn't support the needed > US_BULK_RESET_REQUEST command. > > Again FYI: the ML4-USB consists of one chip for 3 ports CF/SM/SD + one chip > for MemoryStick + 4 port hub. Under the plastic housing you'll even find > usb-sockets for the 2 free ports ! > > The 3 slot chip needs US_FL_FIX_INQUIRY. As i have no idea who the real > vendor is, im using following: > > + > + UNUSUAL_DEV( 0x0aec, 0x5010, 0x0000, 0xFFFF, > + "V-0x0AEC", "D-0x5010", > + US_SC_SCSI, US_PR_BULK, NULL, > + US_FL_FIX_INQUIRY | US_FL_MODE_XLATE | US_FL_START_STOP ), > + > > The MemoryStick slot works like a charm (storage compliant, no reset > problem, fast, ...). > > As i'm trying to use the card readers in an embedded application, the reset > problem is quite essential (no chance of unplugging it by hand). > Sofar i've been using a 3 slot reader, for which i know the reset command... > > - sda > > > p.s. /proc/bus/usb/devices for the ML4-USB: > >------------------------------------------------------------------------------------------------------------------------------- > T: Bus=01 Lev=02 Prnt=02 Port=03 Cnt=01 Dev#= 3 Spd=12 MxCh= 4 > D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 > P: Vendor=03eb ProdID=3301 Rev= 3.00 > S: Product=Standard USB Hub > C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 64mA > I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub > E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255ms > T: Bus=01 Lev=03 Prnt=03 Port=00 Cnt=01 Dev#= 4 Spd=12 MxCh= 0 > D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=16 #Cfgs= 1 > P: Vendor=0aec ProdID=5010 Rev= 1.00 > S: Manufacturer= > S: Product= USB Storage Device > S: SerialNumber=0AEC501000001A00 > C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA > I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage > E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms > E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms > T: Bus=01 Lev=03 Prnt=03 Port=01 Cnt=02 Dev#= 5 Spd=12 MxCh= 0 > D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 > P: Vendor=07c4 ProdID=b00b Rev= 1.06 > S: Manufacturer=DataFab Systems Inc. > S: Product=USB Memory Stick > S: SerialNumber=D882761785 > C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA > I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage > E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms > E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms > >------------------------------------------------------------------------------------------------------------------------------- > > > And for the MF6: > >------------------------------------------------------------------------------------------------------------------------------- > T: Bus=01 Lev=02 Prnt=02 Port=03 Cnt=01 Dev#= 6 Spd=12 MxCh= 4 > D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 > P: Vendor=0451 ProdID=2046 Rev= 1.25 > C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA > I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub > E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255ms > T: Bus=01 Lev=03 Prnt=06 Port=00 Cnt=01 Dev#= 8 Spd=12 MxCh= 0 > D: Ver= 1.10 Cls=ff(vend.) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 > P: Vendor=0c0b ProdID=a109 Rev=17.08 > S: Manufacturer=ACOMdATA > S: Product=USB CF+SM > S: SerialNumber=ACDB88FCDB > C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=100mA > I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=usb-storage > E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms > E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms > T: Bus=01 Lev=03 Prnt=06 Port=01 Cnt=02 Dev#= 7 Spd=12 MxCh= 0 > D: Ver= 1.10 Cls=ff(vend.) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 > P: Vendor=0c0b ProdID=a10c Rev= 1.14 > S: Manufacturer=ACOMdATA > S: Product=USB SD+MS > C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=100mA > I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=usb-storage > E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms > E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms > >------------------------------------------------------------------------------------------------------------------------------- > > > _______________________________________________ > [EMAIL PROTECTED] > To unsubscribe, use the last form field at: > https://lists.sourceforge.net/lists/listinfo/linux-usb-devel -- Matthew Dharm Home: [EMAIL PROTECTED] Maintainer, Linux USB Mass Storage Driver C: They kicked your ass, didn't they? S: They were cheating! -- The Chief and Stef User Friendly, 11/19/1997
msg03868/pgp00000.pgp
Description: PGP signature