X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fdma.c;h=ba23ab7d95719d26f2b6d264a81335b11f44f85e;hb=a87d38e5a23ab489b6486ed4c62f30054719d39e;hp=9efade4292168e8fabe550557b4944f96085da15;hpb=4f58871ec2e25fb8cd7dfc19d1e4999453cf9555;p=gbajam21 diff --git a/src/dma.c b/src/dma.c index 9efade4..ba23ab7 100644 --- a/src/dma.c +++ b/src/dma.c @@ -25,30 +25,20 @@ static volatile uint32_t *reg_dma[4] = {(void*)0x040000b0, (void*)0x040000bc, (void*)0x040000c8, (void*)0x040000d4 }; -void AAS_DoDMA3(void*, void*, uint32_t); - /* --- perform a copy of words or halfwords using DMA --- */ void dma_copy32(int channel, void *dst, void *src, int words, unsigned int flags) { - if(channel == 3) { - AAS_DoDMA3(src, dst, words | flags | DMA_32 | DMA_ENABLE); - } else { - reg_dma[channel][DMA_SRC] = (uint32_t)src; - reg_dma[channel][DMA_DST] = (uint32_t)dst; - reg_dma[channel][DMA_CTRL] = words | flags | DMA_32 | DMA_ENABLE; - } + reg_dma[channel][DMA_SRC] = (uint32_t)src; + reg_dma[channel][DMA_DST] = (uint32_t)dst; + reg_dma[channel][DMA_CTRL] = words | flags | DMA_32 | DMA_ENABLE; } void dma_copy16(int channel, void *dst, void *src, int halfwords, unsigned int flags) { - if(channel == 3) { - AAS_DoDMA3(src, dst, halfwords | flags | DMA_16 | DMA_ENABLE); - } else { - reg_dma[channel][DMA_SRC] = (uint32_t)src; - reg_dma[channel][DMA_DST] = (uint32_t)dst; - reg_dma[channel][DMA_CTRL] = halfwords | flags | DMA_16 | DMA_ENABLE; - } + reg_dma[channel][DMA_SRC] = (uint32_t)src; + reg_dma[channel][DMA_DST] = (uint32_t)dst; + reg_dma[channel][DMA_CTRL] = halfwords | flags | DMA_16 | DMA_ENABLE; } /* --- fill a buffer with an ammount of words and halfwords using DMA --- */ @@ -58,23 +48,15 @@ static uint32_t fill[4]; void dma_fill32(int channel, void *dst, uint32_t val, int words) { fill[channel] = val; - if(channel == 3) { - AAS_DoDMA3(fill + channel, dst, words | DMA_SRC_FIX | DMA_TIMING_IMMED | DMA_32 | DMA_ENABLE); - } else { - reg_dma[channel][DMA_SRC] = (uint32_t)(fill + channel); - reg_dma[channel][DMA_DST] = (uint32_t)dst; - reg_dma[channel][DMA_CTRL] = words | DMA_SRC_FIX | DMA_TIMING_IMMED | DMA_32 | DMA_ENABLE; - } + reg_dma[channel][DMA_SRC] = (uint32_t)(fill + channel); + reg_dma[channel][DMA_DST] = (uint32_t)dst; + reg_dma[channel][DMA_CTRL] = words | DMA_SRC_FIX | DMA_TIMING_IMMED | DMA_32 | DMA_ENABLE; } void dma_fill16(int channel, void *dst, uint16_t val, int halfwords) { fill[channel] = val; - if(channel == 3) { - AAS_DoDMA3(fill + channel, dst, halfwords | DMA_SRC_FIX | DMA_TIMING_IMMED | DMA_16 | DMA_ENABLE); - } else { - reg_dma[channel][DMA_SRC] = (uint32_t)(fill + channel); - reg_dma[channel][DMA_DST] = (uint32_t)dst; - reg_dma[channel][DMA_CTRL] = halfwords | DMA_SRC_FIX | DMA_TIMING_IMMED | DMA_16 | DMA_ENABLE; - } + reg_dma[channel][DMA_SRC] = (uint32_t)(fill + channel); + reg_dma[channel][DMA_DST] = (uint32_t)dst; + reg_dma[channel][DMA_CTRL] = halfwords | DMA_SRC_FIX | DMA_TIMING_IMMED | DMA_16 | DMA_ENABLE; }