X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=bootcensus;a=blobdiff_plain;f=src%2Fdma.c;h=8d36edfdf8d8818bfe7a7213a654475eb0e8b5ec;hp=b6c46056a68ba1ef963bd6e104c25c2ae4e5a683;hb=41e4fa8d02a2ca85c871c8cc3a4c6c93331cdfb3;hpb=0626040a5133ff8f8e071a20e9165c9618eb8c4a diff --git a/src/dma.c b/src/dma.c index b6c4605..8d36edf 100644 --- a/src/dma.c +++ b/src/dma.c @@ -117,8 +117,8 @@ static void dma_io(int chan, uint32_t phyaddr, int size, unsigned int flags, uns mask(chan); outb(0, DMA_CLR_FLIPFLOP(chan)); - /* 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; outb(mode, DMA_MODE(chan));