On Thu, Jul 10, 2014 at 8:32 AM, jonsm...@gmail.com <jonsm...@gmail.com> wrote: > On Wed, Jul 9, 2014 at 11:41 PM, Emilio López <emi...@elopez.com.ar> wrote: >> Hi everyone, >> >> As some of you may know, I'm currently participating in Google Summer of >> Code under the Linux Foundation, working on a proposal titled "Improve >> Allwinner SoCs support on mainline Linux". There is a great quantity of >> devices out there that are powered by Allwinner processors, including but >> not limited to the various Cubieboards, OLinuXinos, STBs, Tablets and “Mini >> PCs”. However, to date, support on mainline Linux is not yet feature >> complete. My proposal on particular focuses on DMA and analog audio on the >> earlier SoCs, and improved A23 support. >> >> The idea here is to make a weekly status report of the project. As we are >> starting mid-program, this one will be a bit different and I'll outline what >> has been worked on so far since the beginning. >> >> To date, I have been mainly working on the DMA driver for sun4i, sun5i and >> sun7i. Despite having completely different drivers on SDK kernels, the >> hardware block looks and behaves the same, so we are using a single driver >> for these three SoC families. I have sent a series of patches[1] as well as >> a follow-up v2[2], and I will keep iterating over it until it's accepted. I >> have also sent two trivial patches[3][4] as a side-effect. >> >> The main challenges while writing this driver can be summarized as a lack of >> documentation. First of all, it took me a bit to get to know DMAEngine. As >> there is not much documentation on it, most of my learning took place by >> reading pre-existing drivers and consulting with my mentor. Secondly, as the >> Allwinner documentation is mostly a register list with bitfield details, I >> also had to read the SDK drivers and do some trial and error testing to >> discover magic values and understand others. >> >> Lately, I have also been working on the audio part, now that I have a >> working DMA driver. After implementing cyclic DMA transfers and some clock >> code, and armed with a Buildroot image with mpg123 and an OpenBSD release >> track[5] in mp3 format, I've been trying to get some sound out of my >> Cubietruck's headphone jack, but without much success so far. I have >> verified my userspace stack and hardware by running these same binaries on >> top of the linux-sunxi 3.4 kernel, and it worked fine. I have since then >> been dumping relevant registers with devmem and comparing them, resolving >> issues as I see them - hopefully this will yield some audible results. >> > > Check out the last commit in this branch. It is based on your current > DMA branch. > https://github.com/jonsmirl/lpc31xx/tree/linus > > I am getting noise out of the codec but it is not the right noise. > Plus the cyclic transfer falls over when the buffer wraps. There is no > need to use the CONT bit on the Allwinner DMA hardware to implement > cyclic. > > The DMA interrupt routine should directly program in the next transfer > in the promise chain when the previous one completes. Doing it from > the tasklet opens a window where kernel task swap delays can cause DMA > underrun.
This commit is my WIP code. https://github.com/jonsmirl/lpc31xx/commit/dcbab1749af5fd82a65d72670a7a77f7ee734ba8 Where is yours? I don't see it in your repo. > > > > >> Interestingly enough, Allwinner themselves do not seem to be using cyclic >> DMA transfers on their driver[6]. I hope this is not a sign of a hardware >> bug that's not documented. >> >> To give some closure to this status report, I'd like to thank Maxime for his >> mentoring so far, Ezequiel for letting me pick his brain, and the Linux >> Foundation and Google for giving me this opportunity, as well as everyone on >> the kernel and sunxi communities who have come forward to review and test >> patches. You can expect a new report soon, in about a week's time or less. >> >> Emilio >> >> [1] http://www.spinics.net/lists/dmaengine/msg01148.html >> [2] http://www.spinics.net/lists/arm-kernel/msg344766.html >> [3] https://lkml.org/lkml/2014/5/11/166 >> [4] https://lkml.org/lkml/2014/7/1/486 >> [5] http://www.openbsd.org/lyrics.html, maybe I should consider using some >> other song for better luck >> [6] >> https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/sound/soc/sunxi/sunxi-codec.c#L1137 >> >> -- >> You received this message because you are subscribed to the Google Groups >> "linux-sunxi" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to linux-sunxi+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. > > > > -- > Jon Smirl > jonsm...@gmail.com -- Jon Smirl jonsm...@gmail.com -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.