patch-2.1.50 linux/drivers/scsi/aic7xxx.c
Next file: linux/drivers/scsi/aic7xxx_reg.h
Previous file: linux/drivers/scsi/aic7xxx/aic7xxx.seq
Back to the patch index
Back to the overall index
- Lines: 38
- Date:
Wed Aug 13 09:50:32 1997
- Orig file:
v2.1.49/linux/drivers/scsi/aic7xxx.c
- Orig date:
Mon Aug 11 14:47:05 1997
diff -u --recursive --new-file v2.1.49/linux/drivers/scsi/aic7xxx.c linux/drivers/scsi/aic7xxx.c
@@ -829,6 +829,7 @@
unsigned char pause; /* pause value for HCNTRL */
unsigned char qcntmask;
unsigned char qfullcount;
+ unsigned char cmdoutcnt;
unsigned char curqincnt;
struct Scsi_Host *next; /* allow for multiple IRQs */
unsigned char activescbs; /* active scbs */
@@ -3880,6 +3881,19 @@
#endif
while (qoutcnt > 0)
{
+ if ((p->flags & PAGE_ENABLED) != 0)
+ {
+ p->cmdoutcnt += qoutcnt;
+ if (p->cmdoutcnt >= p->qfullcount)
+ {
+ /*
+ * Since paging only occurs on aic78x0 chips, we can use
+ * Auto Access Pause to clear the command count.
+ */
+ outb(0, p->base + CMDOUTCNT);
+ p->cmdoutcnt = 0;
+ }
+ }
for (i = 0; i < qoutcnt; i++)
{
scb_index = inb(p->base + QOUTFIFO);
@@ -5290,6 +5304,9 @@
* garbage in the upper bits of their QCNT registers.
*/
outb(p->qcntmask, p->base + QCNTMASK);
+
+ outb(p->qfullcount, p->base + FIFODEPTH);
+ outb(0, p->base + CMDOUTCNT);
/*
* We don't have any waiting selections or disconnected SCBs.
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov