summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/target/arm/s5l8702/pcm-s5l8702.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/firmware/target/arm/s5l8702/pcm-s5l8702.c b/firmware/target/arm/s5l8702/pcm-s5l8702.c
index 52a040c35a..b58ef0f4d3 100644
--- a/firmware/target/arm/s5l8702/pcm-s5l8702.c
+++ b/firmware/target/arm/s5l8702/pcm-s5l8702.c
@@ -71,7 +71,7 @@ void INT_DMAC0C0(void)
71 if (!pcm_remaining) 71 if (!pcm_remaining)
72 { 72 {
73 pcm_lli->nextlli = NULL; 73 pcm_lli->nextlli = NULL;
74 pcm_lli->control = 0x75249000; 74 pcm_lli->control = 0x7524a000;
75 commit_dcache(); 75 commit_dcache();
76 return; 76 return;
77 } 77 }
@@ -92,7 +92,7 @@ void INT_DMAC0C0(void)
92 pcm_lli[i].srcaddr = (void*)dataptr; 92 pcm_lli[i].srcaddr = (void*)dataptr;
93 pcm_lli[i].dstaddr = (void*)((int)&I2STXDB0); 93 pcm_lli[i].dstaddr = (void*)((int)&I2STXDB0);
94 pcm_lli[i].nextlli = chunksize ? &pcm_lli[i + 1] : lastlli; 94 pcm_lli[i].nextlli = chunksize ? &pcm_lli[i + 1] : lastlli;
95 pcm_lli[i].control = (chunksize ? 0x75249000 : 0xf5249000) | (thislli / 2); 95 pcm_lli[i].control = (chunksize ? 0x7524a000 : 0xf524a000) | (thislli / 2);
96 dataptr += thislli; 96 dataptr += thislli;
97 i++; 97 i++;
98 } 98 }
@@ -105,7 +105,7 @@ void INT_DMAC0C0(void)
105 else lastlli->srcaddr = dataptr; 105 else lastlli->srcaddr = dataptr;
106 lastlli->dstaddr = (void*)((int)&I2STXDB0); 106 lastlli->dstaddr = (void*)((int)&I2STXDB0);
107 lastlli->nextlli = last ? NULL : pcm_lli; 107 lastlli->nextlli = last ? NULL : pcm_lli;
108 lastlli->control = (last ? 0xf5249000 : 0x75249000) | (lastsize / 2); 108 lastlli->control = (last ? 0xf524a000 : 0x7524a000) | (lastsize / 2);
109 dataptr += lastsize; 109 dataptr += lastsize;
110 commit_dcache(); 110 commit_dcache();
111 if (!(DMAC0C0CONFIG & 1) && (pcm_lli[0].control & 0xfff)) 111 if (!(DMAC0C0CONFIG & 1) && (pcm_lli[0].control & 0xfff))
@@ -123,7 +123,6 @@ void pcm_play_dma_start(const void* addr, size_t size)
123 dataptr = (const unsigned char*)addr; 123 dataptr = (const unsigned char*)addr;
124 pcm_remaining = size; 124 pcm_remaining = size;
125 I2STXCOM = 0xe; 125 I2STXCOM = 0xe;
126 DMAC0CONFIG |= 4;
127 INT_DMAC0C0(); 126 INT_DMAC0C0();
128} 127}
129 128
@@ -145,7 +144,7 @@ void pcm_play_dma_init(void)
145 PWRCON(0) &= ~(1 << 4); 144 PWRCON(0) &= ~(1 << 4);
146 PWRCON(1) &= ~(1 << 7); 145 PWRCON(1) &= ~(1 << 7);
147 I2S40 = 0x110; 146 I2S40 = 0x110;
148 I2STXCON = 0xb100059; 147 I2STXCON = 0xb100019;
149 I2SCLKCON = 1; 148 I2SCLKCON = 1;
150 VIC0INTENABLE = 1 << IRQ_DMAC0; 149 VIC0INTENABLE = 1 << IRQ_DMAC0;
151 150