projects
/
dos_auplay
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed 16bit playback. DMA page reg expects the page unshifted
[dos_auplay]
/
src
/
dma.c
diff --git
a/src/dma.c
b/src/dma.c
index
56ec5d9
..
3ff5fd0
100644
(file)
--- a/
src/dma.c
+++ b/
src/dma.c
@@
-42,6
+42,7
@@
void dma_in(int chan, uint32_t phyaddr, int size, unsigned int flags)
static void dma_io(int chan, uint32_t phyaddr, int size, unsigned int flags, unsigned int dir)
\r
{
\r
unsigned int mode;
\r
static void dma_io(int chan, uint32_t phyaddr, int size, unsigned int flags, unsigned int dir)
\r
{
\r
unsigned int mode;
\r
+ unsigned char page;
\r
\r
mask(chan);
\r
outp(clrff_port[chan], 0);
\r
\r
mask(chan);
\r
outp(clrff_port[chan], 0);
\r
@@
-52,6
+53,8
@@
static void dma_io(int chan, uint32_t phyaddr, int size, unsigned int flags, uns
if(flags & DMA_AUTO) mode |= MODE_AUTO;
\r
outp(mode_port[chan], mode);
\r
\r
if(flags & DMA_AUTO) mode |= MODE_AUTO;
\r
outp(mode_port[chan], mode);
\r
\r
+ page = (phyaddr >> 16) & 0xff;
\r
+
\r
if(IS_16BIT(chan)) {
\r
phyaddr >>= 1;
\r
size >>= 1;
\r
if(IS_16BIT(chan)) {
\r
phyaddr >>= 1;
\r
size >>= 1;
\r
@@
-59,7
+62,7
@@
static void dma_io(int chan, uint32_t phyaddr, int size, unsigned int flags, uns
\r
outp(addr_port[chan], phyaddr & 0xff);
\r
outp(addr_port[chan], (phyaddr >> 8) & 0xff);
\r
\r
outp(addr_port[chan], phyaddr & 0xff);
\r
outp(addr_port[chan], (phyaddr >> 8) & 0xff);
\r
- outp(page_port[chan], (phyaddr >> 16) & 0xff);
\r
+ outp(page_port[chan], page);
\r
\r
size--;
\r
outp(count_port[chan], size & 0xff);
\r
\r
size--;
\r
outp(count_port[chan], size & 0xff);
\r