diff options
Diffstat (limited to 'firmware/target/arm/s5l8702/pcm-s5l8702.c')
-rw-r--r-- | firmware/target/arm/s5l8702/pcm-s5l8702.c | 9 |
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 | ||