attached is a patch against 2.4.25 for the Adaptec USB2Xchange USB 2.0 --> SCSI converter.
This does two things (two kernel config options):
1. Send Adaptec binary firmware (extracted from adpusbld.sys) to 0x03f3 / 0x2002
The protocol used for firmware upload is pretty much cypress EZ-USB, except the reset register is at 0xe600 (FX2 ???).
2. Unusual_devs entry for 0x03f3 / 0x2003.
This includes a short two-command reset sequence needed __after__ reenumeration.
Without this connected SCSI devices don't identify properly.
The first part could easily be done in userspace (fxload ?) but I need it as a kernel part for an embedded system.
The second reset sequence needs to be done from within the storage driver anyway.
After reenumerating, the devices looks like a well-behaved bulk-only usb-storage device.
I've only tested it with a SCSI-printer, and found out that some internal buffer ist smaller than 64K. Limiting all transfers to 32K works fine.
Thus I guess that when using this with a disk, a ".max_sectors = 64" setting is needed in the host template (or sysfs setting for 2.6 ?).
I assume there are copyright issues regarding the contained firmware stopping us from integrating this into the kernel.
The firmware is freely available at http://download.adaptec.com/usb/usb2xchg_win_drv_v200.exe File: Adpusbld.sys Offset: 0x2FE0 (589 records).
Anybody from Adaptec listening ?
Have fun, - sda
__usb2xchg.patch.gz
Description: Binary data