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]

 



Hello.

Felipe Balbi 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.

   It won't work on the host Tx path -- you'll see why RSN.

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.

   No, we'll have to.

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.

   :-)

WBR, Sergei
--
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