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