X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fdma.c;h=8d36edfdf8d8818bfe7a7213a654475eb0e8b5ec;hb=6e968b9e724d9626ed6bdf2119ac7de6a5248f14;hp=b6c46056a68ba1ef963bd6e104c25c2ae4e5a683;hpb=1e2ddab65ead32350d8ff87a6de74168e429666b;p=bootcensus 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));