summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>1997-01-29 05:19:46 +0000
committergibbs <gibbs@FreeBSD.org>1997-01-29 05:19:46 +0000
commitdeadaf1cb770694563d2323e43c6b65818678f98 (patch)
tree654ec98904c3616cbf64f1a35fb864e9ba8c41ee /sys
parent3bdfe7960a8add5eb7d176ad801622ed9e2530cc (diff)
downloadFreeBSD-src-deadaf1cb770694563d2323e43c6b65818678f98.zip
FreeBSD-src-deadaf1cb770694563d2323e43c6b65818678f98.tar.gz
Add 1997 to my copyright.
Expand the boundaries of a pause disabled region to close of possible race condition. Revert a portion of the DMA code to fix false overruns. Add a missing "add_scb_to_free_list" so we don't leak SCBs.
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/aic7xxx/aic7xxx.seq21
-rw-r--r--sys/dev/aic7xxx/aic7xxx_reg.h2
2 files changed, 7 insertions, 16 deletions
diff --git a/sys/dev/aic7xxx/aic7xxx.seq b/sys/dev/aic7xxx/aic7xxx.seq
index 2d7c804..7d7928b 100644
--- a/sys/dev/aic7xxx/aic7xxx.seq
+++ b/sys/dev/aic7xxx/aic7xxx.seq
@@ -7,7 +7,7 @@
*
*FreeBSD, Twin, Wide, 2 command per target support, tagged queuing,
*SCB paging and other optimizations:
- *Copyright (c) 1994, 1995, 1996 Justin Gibbs. All rights reserved.
+ *Copyright (c) 1994, 1995, 1996, 1997 Justin Gibbs. All rights reserved.
*
*Redistribution and use in source and binary forms, with or without
*modification, are permitted provided that the following conditions
@@ -152,9 +152,9 @@ dma_queued_scb:
*/
test_busy:
test SCB_CONTROL, TAG_ENB jnz start_scb
+ mvi SEQCTL,0x50 /* PAUSEDIS|FASTMODE */
mov SAVED_SCBPTR, SCBPTR
mov SCB_TCL call index_untagged_scb
- mvi SEQCTL,0x50 /* PAUSEDIS|FASTMODE */
mov ARG_1, SINDIR /*
* ARG_1 should
* now have the SCB ID of
@@ -191,9 +191,9 @@ simple_busy_link:
mvi SEQCTL,0x10 /* FASTMODE */
jmp poll_for_work
make_busy:
- mvi SEQCTL,0x10 /* FASTMODE */
mov DINDIR, CUR_SCBID
mov SCBPTR, SAVED_SCBPTR
+ mvi SEQCTL,0x10 /* FASTMODE */
start_scb:
/*
@@ -505,19 +505,9 @@ p_command:
call set_stcnt_from_hcnt
- mvi DFCNTRL, 0x3d /* SCSIEN|SDMAEN|HDMAEN
+ mvi 0x3d call dma /* SCSIEN|SDMAEN|HDMAEN
* |DIRECTION|FIFORESET
*/
-p_command_dma:
- test SSTAT0, SDONE jnz p_command_dma_done
- test SSTAT1, PHASEMIS jz p_command_dma
- test SSTAT0, SDONE jnz p_command_dma_done
- clr DFCNTRL
- jmp ITloop
-p_command_dma_done:
- and DFCNTRL, 0xc7 /* ~(SCSIEN|SDMAEN|HDMAEN) */
-p_command_dma_clear:
- test DFCNTRL, 0x38 jnz p_command_dma_clear
jmp ITloop
/*
@@ -945,7 +935,7 @@ dma5:
/* disable DMA */
and DFCNTRL, 0xc7 /* ~(SCSIEN|SDMAEN|HDMAEN|DIRECTION) */
dma6:
- test DFCNTRL, HDMAENACK jnz dma6
+ test DFCNTRL, 0x38 jnz dma6 /* (SCSIEN|SDMAEN|HDMAEN|DIRECTION) */
return:
ret
@@ -1001,6 +991,7 @@ find_dma_scb:
mvi DMAPARAMS, 0xd /* HDMAEN|DIRECTION|FIFORESET */
mov ARG_1 call dma_scb
test SCB_CONTROL, ABORT_SCB jz return
+ call add_scb_to_free_list
find_error:
mvi SINDEX, SCB_LIST_NULL ret
findBySCBID:
diff --git a/sys/dev/aic7xxx/aic7xxx_reg.h b/sys/dev/aic7xxx/aic7xxx_reg.h
index d30d8b0..c7e640d 100644
--- a/sys/dev/aic7xxx/aic7xxx_reg.h
+++ b/sys/dev/aic7xxx/aic7xxx_reg.h
@@ -1,7 +1,7 @@
/*
* Aic7xxx register and scratch ram definitions.
*
- * Copyright (c) 1994, 1995, 1996 Justin T. Gibbs.
+ * Copyright (c) 1994, 1995, 1996, 1997 Justin T. Gibbs.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
OpenPOWER on IntegriCloud