patch-1.3.35 linux/drivers/scsi/aha1542.c
Next file: linux/drivers/scsi/eata_dma_proc.c
Previous file: linux/drivers/net/ppp.c
Back to the patch index
Back to the overall index
- Lines: 39
- Date:
Mon Oct 16 07:55:23 1995
- Orig file:
v1.3.34/linux/drivers/scsi/aha1542.c
- Orig date:
Mon Sep 18 14:53:55 1995
diff -u --recursive --new-file v1.3.34/linux/drivers/scsi/aha1542.c linux/drivers/scsi/aha1542.c
@@ -1198,7 +1198,24 @@
* we do this? Try this first, and we can add that later
* if it turns out to be useful.
*/
- outb(SCRST, CONTROL(SCpnt->host->io_port));
+ outb(HRST | SCRST, CONTROL(SCpnt->host->io_port));
+
+ /*
+ * Wait for the thing to settle down a bit. Unfortunately
+ * this is going to basically lock up the machine while we
+ * wait for this to complete. To be 100% correct, we need to
+ * check for timeout, and if we are doing something like this
+ * we are pretty desperate anyways.
+ */
+ WAIT(STATUS(SCpnt->host->io_port),
+ STATMASK, INIT|IDLE, STST|DIAGF|INVDCMD|DF|CDF);
+
+ /*
+ * We need to do this too before the 1542 can interact with
+ * us again.
+ */
+ setup_mailboxes(SCpnt->host->io_port, SCpnt->host);
+
/*
* Now try and pick up the pieces. Restart all commands
* that are currently active on the bus, and reset all of
@@ -1226,6 +1243,12 @@
* then report SUCCESS.
*/
return (SCSI_RESET_SUCCESS | SCSI_RESET_BUS_RESET);
+fail:
+ printk("aha1542.c: Unable to perform hard reset.\n");
+ printk("Power cycle machine to reset\n");
+ return (SCSI_RESET_ERROR | SCSI_RESET_BUS_RESET);
+
+
}
else
{
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov
with Sam's (original) version of this