Hello,
I think someone forgot an 'I' in edma_stop. Writing to ECR seems
pointless to me. I am assuming they meant to do SH_IECR instead of
SH_ECR. This also happens to fix the problem I was having with audio
stalls on dm6446.
Tested using.
while [ 1 ] ; do speaker-test ; done
while [ 1 ]; do killall speaker-test ; usleep 200000 ; done
Let me know if I am overlooking something here. This is against current
davinci-git kernel. I have merged the current GIT code back into our
2.6.26 stable branch and tested. Perhaps something else is fixing it in
davinci-git.
Thanks
diff --git a/arch/arm/mach-davinci/dma.c b/arch/arm/mach-davinci/dma.c
index 898eb02..557da31 100644
--- a/arch/arm/mach-davinci/dma.c
+++ b/arch/arm/mach-davinci/dma.c
@@ -1077,10 +1077,11 @@ void edma_stop(unsigned channel)
unsigned int mask = (1 << (channel & 0x1f));
edma_shadow0_write_array(SH_EECR, j, mask);
- edma_shadow0_write_array(SH_ECR, j, mask);
+ edma_shadow0_write_array(SH_IECR, j, mask);
edma_shadow0_write_array(SH_SECR, j, mask);
edma_write_array(EDMA_EMCR, j, mask);
-
+ edma_write_array(EDMA_EEVAL, j, mask);
+
dev_dbg(&edma_dev.dev, "EER%d %08x\n", j,
edma_shadow0_read_array(SH_EER, j));
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source