From: Jonathan McDowell <noodles@earth.li>

Try the attached; I wrote it a while back and made a cleanup based on comments
from James Bottomley, but no one else seemed to be using the driver.  It
worked for me however.


---

 25-akpm/drivers/scsi/ini9100u.c |   14 +++++++++++++-
 25-akpm/drivers/scsi/ini9100u.h |    3 ++-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff -puN drivers/scsi/ini9100u.c~initio-ini-9x00u-uw-error-handling-in-26 drivers/scsi/ini9100u.c
--- 25/drivers/scsi/ini9100u.c~initio-ini-9x00u-uw-error-handling-in-26	Mon May  3 13:21:29 2004
+++ 25-akpm/drivers/scsi/ini9100u.c	Mon May  3 13:21:29 2004
@@ -106,6 +106,8 @@
  *		- Changed the assumption that HZ = 100
  * 10/17/03 mc	- v1.04
  *		- added new DMA API support
+ * 06/01/04 jmd	- v1.04a
+ *		- Re-add reset_bus support
  **************************************************************************/
 
 #define CVT_LINUX_VERSION(V,P,S)        (V * 65536 + P * 256 + S)
@@ -149,6 +151,7 @@ static Scsi_Host_Template driver_templat
 	.queuecommand	= i91u_queue,
 //	.abort		= i91u_abort,
 //	.reset		= i91u_reset,
+	.eh_bus_reset_handler = i91u_bus_reset,
 	.bios_param	= i91u_biosparam,
 	.can_queue	= 1,
 	.this_id	= 1,
@@ -161,7 +164,7 @@ static Scsi_Host_Template driver_templat
 char *i91uCopyright = "Copyright (C) 1996-98";
 char *i91uInitioName = "by Initio Corporation";
 char *i91uProductName = "INI-9X00U/UW";
-char *i91uVersion = "v1.04";
+char *i91uVersion = "v1.04a";
 
 #define TULSZ(sz)     (sizeof(sz) / sizeof(sz[0]))
 #define TUL_RDWORD(x,y)         (short)(inl((int)((ULONG)((ULONG)x+(UCHAR)y)) ))
@@ -550,6 +553,15 @@ int i91u_reset(Scsi_Cmnd * SCpnt, unsign
 		return tul_device_reset(pHCB, (ULONG) SCpnt, SCpnt->device->id, reset_flags);
 }
 
+int i91u_bus_reset(Scsi_Cmnd * SCpnt)
+{
+	HCS *pHCB;
+
+	pHCB = (HCS *) SCpnt->device->host->base;
+	tul_reset_scsi(pHCB, 0);
+	return SUCCESS;
+}
+
 /*
  * Return the "logical geometry"
  */
diff -puN drivers/scsi/ini9100u.h~initio-ini-9x00u-uw-error-handling-in-26 drivers/scsi/ini9100u.h
--- 25/drivers/scsi/ini9100u.h~initio-ini-9x00u-uw-error-handling-in-26	Mon May  3 13:21:29 2004
+++ 25-akpm/drivers/scsi/ini9100u.h	Mon May  3 13:21:29 2004
@@ -82,10 +82,11 @@ extern int i91u_command(Scsi_Cmnd *);
 extern int i91u_queue(Scsi_Cmnd *, void (*done) (Scsi_Cmnd *));
 extern int i91u_abort(Scsi_Cmnd *);
 extern int i91u_reset(Scsi_Cmnd *, unsigned int);
+extern int i91u_bus_reset(Scsi_Cmnd *);
 extern int i91u_biosparam(struct scsi_device *, struct block_device *,
 		sector_t, int *);
 
-#define i91u_REVID "Initio INI-9X00U/UW SCSI device driver; Revision: 1.03g"
+#define i91u_REVID "Initio INI-9X00U/UW SCSI device driver; Revision: 1.04a"
 
 #define VIRT_TO_BUS(i)  (unsigned int) virt_to_bus((void *)(i))
 #define ULONG   unsigned long

_