Re: [PATCH] USB: DWC3: Fix missed isoc IN transaction

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

 



On 5/21/2012 3:09 PM, Pratyush Anand wrote:
On 5/21/2012 2:46 PM, Felipe Balbi wrote:
Hi,

On Mon, May 21, 2012 at 02:41:13PM +0530, Pratyush Anand wrote:
If I call
dwc3_gadget_start_isoc_uf(dwc, dep, cur_uf)

with cur_uf obtained from __dwc3_gadget_get_frame(dwc) , it does
not work.

I guess you have already this bug :-)


even if we correct the mask, there would be issue.
So frame number from DSTS is of 14 bits.
Correct value of DSTS was 0x3C8FC.
After correction of mask it will give uf as 0x391F which is not
0x791F coming from event->parameter.

the missing bit on the mask fixes it, if you look at those numbers,
0x391f only missed bit 14, which was missing on your mask ;-)


No.. to avoid confusion:

At one instance:
event->parameters is *0x791f*.
DSTS is 0x3C8FC.

Our mask is (0x3fff << 3) = 0x1fff8
(0x3C8FC & 0x1fff8) = 0x1C8FC
(0x1C8FC >> 3) = *0x391f*

Also, since one has 16 bit space while other has 14 bit, so they can not
be same always.


Here is the reply from synopsys:

"
You need to use the value coming from the XferNotReady event based number for setting up the TRBs. This value doesn't reflect the exact number you get from the DSTS because there are two extra bits used internally by the core. The number in the DSTS reflects the USB bus uframe number which is not supposed to be used for setting the TRBs"

So, now what is your suggestion? Probably we need to keep event saved in dep as in PATCH V1.


--
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