S3C64XX DMA Issues
From: jassisinghbrar@gmail.com (jassi brar)
Date: 2009-09-17 07:57:22
Hi I wanted to list out the issues in the s3c64xx dma driver. Since currently only I2S makes use of the DMA driver, the symptoms can be seen while playing(rather trying to) audio. 1) The current implementation doesn't work if the client wants to manage queue length of 2. The problem arises because by the time the client enqueues a new buffer, DMAC has already read the LLI of the last(at the time of IRQ) buffer which, obviously, comes out to be zero. As a result, the state machine stops after just two buffer xfers. As a consequence, S3C standard minimum periods(2) set for I2S doesn't work. Minimum periods has to be set to 3 or more. The work around maybe simple(set periods_min=3) but the DMA state-machine has a problem nevertheless. 2) As already explained in my emails, the dma driver hogs memory with simple traditional usage. Stereo, 16bpc @44.1KHz playback fails within half an hour, complaining "no memory for lli".