On Sun, Feb 01, 2009 at 11:10:53PM +0300, Sergei Shtylyov wrote:
>>   CPPI basically fails now with the bulk transfers, at least under the  
>> high load -- the patch is coming... I don't feel sure but looking at 
>> the Inventra DMA code it seems that it might have the same issue when 
>> using DMA mode 1 -- I don't see where it clears TXCSR.DMAReqMode bit if 
>> it decides to set TxPktRdy instead of calling musb_dma_completion(), so 
>> it should never be getting another interrupt on TxPktRdy = 0...
>
>    Ah, it implicitly clears DMA bits by writing only 
> MUSB_TXCSR_TXPKTDRY... but that violates the programming guide then which 
> says that DMAReq{Enab|Mode} can't be cleared at once -- DMAReqMode must 
> always be cleared after DMAReqEnab.

There's another thing I'm experimenting with... Taking musb_gadget.c as
example, I'm setting correct [RT}XCSR registers on musb_gadget_enable()
time, meaning that DMAReqEnab and DMAReqMode would be set there and
never touched again.

It seems to work for gadget side. So I just have to play with
[RT]XPKTRDY bit.

I still have some glitches but seems that we don't have to keep
enabling/disabling DMA bits in [RT]XCSR registers. Still need some more
experimentation to see until when will that really work or if it's
working due to some strange scenario I'm always in.

-- 
balbi

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to