From 9fb5c6f3f4d3d8039e186c5a16b299a8d09182fe Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Sun, 1 May 2011 13:54:54 -0300 Subject: [PATCH] ubb-vga.c: moved some DMA settings from per-line to per-session setup - ubb-vga.c (setup_noirq, line): moved DMA channel command setting to per-session setup - ubb-vga.c (setup_noirq, line): moved DMA request type setting to per-session setup - ubb-vga.c (line): added commend that the target address needs to be set for each transfer, even if it doesn't change --- ubb-vga/ubb-vga.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ubb-vga/ubb-vga.c b/ubb-vga/ubb-vga.c index 426039e..51b43e8 100644 --- a/ubb-vga/ubb-vga.c +++ b/ubb-vga/ubb-vga.c @@ -249,6 +249,11 @@ static void setup_noirq(void) DMAC = 1; DCS(DMA) = (1 << 3) | (1 << 2); DCS(DMA) = 0; + + DCM(DMA) = + (1 << 23) | /* source address increment */ + (4 << 8); /* transfer size is 32 bytes */ + DRT(DMA) = 26; /* MSC transmit-fifo-empty transfer request */ } @@ -269,12 +274,8 @@ static void line(unsigned long line) // DCS(DMA) = (1 << 31) | (1 << 3) | (1 << 2); DCS(DMA) = 1 << 31; DSA(DMA) = line; - DTA(DMA) = REG_PADDR(MSC_TXFIFO); + DTA(DMA) = REG_PADDR(MSC_TXFIFO); /* MUST set this each time */ DTC(DMA) = mode->xres >> 6; - DCM(DMA) = - (1 << 23) | /* source address increment */ - (4 << 8); /* transfer size is 32 bytes */ - DRT(DMA) = 26; /* MSC transmit-fifo-empty transfer request */ until(US(0.79));