1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-10-19 02:29:40 +00:00

Some revisions of the aic7880 have a problem where, if the

data fifo is full, but the PCI input latch is not empty,
HDMAEN cannot be cleared.  The fix used here is to attempt
to drain the data fifo until there is space for the input
latch to drain and HDMAEN de-asserts.

This is a 1 instruction fix, so it should have no performance
impact.
This commit is contained in:
Justin T. Gibbs 1998-06-28 02:58:57 +00:00
parent 14c35d6ca0
commit b66655cf37
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=37223

View File

@ -35,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: aic7xxx.seq,v 1.75 1997/08/13 17:02:28 gibbs Exp $
* $Id: aic7xxx.seq,v 1.76 1997/09/27 19:37:27 gibbs Exp $
*/
#include <dev/aic7xxx/aic7xxx.reg>
@ -944,7 +944,15 @@ dma_fifoempty:
dma_dmadone:
and DFCNTRL, ~(SCSIEN|SDMAEN|HDMAEN);
dma_halt:
test DFCNTRL, (SCSIEN|SDMAEN|HDMAEN) jnz dma_halt;
/*
* Some revisions of the aic7880 have a problem where, if the
* data fifo is full, but the PCI input latch is not empty,
* HDMAEN cannot be cleared. The fix used here is to attempt
* to drain the data fifo until there is space for the input
* latch to drain and HDMAEN de-asserts.
*/
mov NONE, DFDAT;
test DFCNTRL, HDMAEN jnz dma_halt;
return:
ret;