X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=dos_sbtest;a=blobdiff_plain;f=src%2Fdma.c;h=17baead8b0e3b0c1fc5a86c483a4b1d7b7d26ee3;hp=92f0a1b00c6962ac0d111a37f7842271d3b9ccd8;hb=b4ee0075a2a231ef06e333b77510187aeb22f8fa;hpb=07c19444f4f2a55abf97d181ab62aeaa51033c62 diff --git a/src/dma.c b/src/dma.c index 92f0a1b..17baead 100644 --- a/src/dma.c +++ b/src/dma.c @@ -100,8 +100,8 @@ static void dma_io(int chan, uint32_t phyaddr, int size, unsigned int flags, uns mask(chan); outp(DMA_CLR_FLIPFLOP(chan), 0); - /* single / block / cascade */ - mode = ((flags & 3) << 6) | MODE_CHAN(chan); + /* first 2 bits of flags correspond to the mode bits 6,7 */ + mode = ((flags & 3) << 6) | dir | MODE_CHAN(chan); if(flags & DMA_DECR) mode |= MODE_DECR; if(flags & DMA_AUTO) mode |= MODE_AUTO; outp(DMA_MODE(chan), mode);