Based on work by Rene Engelhard, and reports from others
on the LKML list, it looks like a fix is near final.

The following patch adds support for my ScanLogic-based
adapter, OEM'd by H45 technology corp (www.h45.com)

There are other folk who have written about this device,
and as it seems to have the same issue as the device that
Rene wrote his patch for.

I've verified that this patch works for my device. What's needed
is to see if this dev entry could be consolidated with the version
that Rene uses.

Rene -- would you be willing to give this a go?  The only thing
that would need to be changed is the Minimum Rev, so that it matched
yours (0x0074)

This patch is originally against 2.4.16, but should apply to 2.5 series.

--- unusual_devs.h.dist Fri Dec 14 16:17:51 2001
+++ unusual_devs.h      Tue Jan  8 07:47:57 2002
@@ -86,6 +86,12 @@
                "FinePix 1400Zoom",
                US_SC_8070, US_PR_CBI, NULL, US_FL_FIX_INQUIRY),
 
+UNUSUAL_DEV(  0x04ce, 0x0002, 0x0200, 0x0240, 
+               "H45 Technology Corp",
+               "ScanLogic USB ATA/ATAPI Adapter",
+               US_SC_SCSI, US_PR_BULK, NULL,
+               US_FL_FIX_INQUIRY | US_FL_SL_IDE_BUG ),
+
 /* Most of the following entries were developed with the help of
  * Shuttle/SCM directly.
  */
--- usb.h.dist  Fri Dec 14 16:17:44 2001
+++ usb.h       Mon Jan  7 20:40:13 2002
@@ -101,6 +101,7 @@
 #define US_FL_IGNORE_SER      0x00000010 /* Ignore the serial number given
*/
 #define US_FL_SCM_MULT_TARG   0x00000020 /* supports multiple targets */
 #define US_FL_FIX_INQUIRY     0x00000040 /* INQUIRY response needs fixing
*/
+#define US_FL_SL_IDE_BUG      0x00000100 /* ScanLogic usb-ide workaround */
 
 #define USB_STOR_STRING_LEN 32
 
--- transport.c.dist    Fri Nov  9 13:37:14 2001
+++ transport.c Tue Jan  8 07:51:10 2002
@@ -1157,7 +1157,7 @@
                  le32_to_cpu(bcs.Signature), bcs.Tag, 
                  bcs.Residue, bcs.Status);
        if (bcs.Signature != cpu_to_le32(US_BULK_CS_SIGN) || 
-           bcs.Tag != bcb.Tag || 
+           ((bcs.Tag != bcb.Tag ) && (!(us->flags & US_FL_SL_IDE_BUG))) || 
            bcs.Status > US_BULK_STAT_PHASE || partial != 13) {
                US_DEBUGP("Bulk logical error\n");
                return USB_STOR_TRANSPORT_ERROR;



Attachment: usbat.diff
Description: Binary data

Reply via email to