Re: [PATCH 2/3] MUSB : Fix for DaVinci CPPI DMA incorrect handling of actual_len field

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux