Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 07 Aug 2013 15:48:29 +0200
From:      Hans Petter Selasky <hps@bitfrost.no>
To:        SAITOU Toshihide <toshi@ruby.ocn.ne.jp>
Cc:        freebsd-usb@FreeBSD.org
Subject:   Re: HS isochronous transfer on musb_otg
Message-ID:  <5202502D.20702@bitfrost.no>
In-Reply-To: <20130807.210258.112628314.toshi@ruby.ocn.ne.jp>
References:  <20130801.230713.74749403.toshi@ruby.ocn.ne.jp> <51FB5230.3000503@bitfrost.no> <20130807.210258.112628314.toshi@ruby.ocn.ne.jp>

next in thread | previous in thread | raw e-mail | index | archive | help
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.

--HPS




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