Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 08 Aug 2013 22:09:39 +0900 (JST)
From:      SAITOU Toshihide <toshi@ruby.ocn.ne.jp>
To:        freebsd-usb@FreeBSD.org
Subject:   Re: HS isochronous transfer on musb_otg
Message-ID:  <20130808.220939.219630261.toshi@ruby.ocn.ne.jp>
In-Reply-To: <5202502D.20702@bitfrost.no>
References:  <51FB5230.3000503@bitfrost.no> <20130807.210258.112628314.toshi@ruby.ocn.ne.jp> <5202502D.20702@bitfrost.no>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <5202502D.20702@bitfrost.no>
            Hans Petter Selasky <hps@bitfrost.no> writes:
> On 08/07/13 14:02, SAITOU Toshihide wrote:
>> In message: <51FB5230.3000503@bitfrost.no>
>>              Hans Petter Selasky <hps@bitfrost.no> writes:
>>> On 08/01/13 16:07, SAITOU Toshihide wrote:
>>>> My UVC cam is not working with the musb_otg driver and
>>>> libusb(3) on the BeagleBone Black.
>>>>
>>>
>>> Hi,
>>>
>>> It might be that the packet multiplier is not set
>>> correctly. Try to figure out which register this is, and
>>> simply set the bits correctly.
>>>
>>> Thank you!
>>>
>>> --HPS
>>>
>>>> With the following changes to the musb_otg.c, it feels like
>>>> the transaction is performed as expected but the data
>>>> doesn't pass to the libusb_transfer's buffer. Does anyone
>>>> know what is wrong?
>>
>>
>> Thank you for your information, but still I don't understand
>> what is the packet multiplier. Fortunately, there is a
>> progress.
>>
>> With the patch at the end, the data from the UVC camera is
>> arrived into the libusb_transfer's buffer. Now the problem
>> is
>> that the data of each transaction is scattered into the
>> buffer
>> of the packet.
>>
>>   (now)
>>
>>    | packet size | packet size | packet size | packet size |
>>    |    DATA0    |    DATA1    |    DATA2    |    DATA0    |...
>>
>>
>>   (expected)
>>
>>    | packet size | packet size | packet size |
>>    |  DATA0,1,2  |  DATA0,1,2  |  DATA0,1,2  |...
>>
>>
>> I think if the length of the packet is set using
>> libusb_set_iso_packet_length, all transaction data for the
>> packet should be packed into it, at this time, max packet
>> size
>> is declared in the device descriptor so the device doesn't
>> send the packet larger than that.  Are these right?  If so,
>> is
>> the musbotg_host_data_rx of musb_otg.c need to modify?
>>
> 
> Hi,
> 
> The scattering is a bug in the MUSB driver's handling of
> incoming data. It should collect more data before advancing
> to the next frame!
> 
> See:
> 
> mustbotg_host_data_rx() function.

I have confirmed the scattering is fixed by modifying the
mustbotg_host_data_rx(), althought the modification I have
made breaks other transfer type at the moment.

Thank you,

SAITOU Toshihide



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130808.220939.219630261.toshi>