From owner-freebsd-usb@FreeBSD.ORG Wed Aug 7 12:03:05 2013 Return-Path: Delivered-To: freebsd-usb@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 689B6B31 for ; Wed, 7 Aug 2013 12:03:05 +0000 (UTC) (envelope-from toshi@ruby.ocn.ne.jp) Received: from msgw002-02.ocn.ad.jp (msgw002-02.ocn.ad.jp [180.37.203.77]) by mx1.freebsd.org (Postfix) with ESMTP id 338672661 for ; Wed, 7 Aug 2013 12:03:04 +0000 (UTC) Received: from localhost (p10039-ipngn100305sizuokaden.shizuoka.ocn.ne.jp [153.183.0.39]) by msgw002-02.ocn.ad.jp (Postfix) with ESMTP id AE6CF1F7097; Wed, 7 Aug 2013 21:02:57 +0900 (JST) Date: Wed, 07 Aug 2013 21:02:58 +0900 (JST) Message-Id: <20130807.210258.112628314.toshi@ruby.ocn.ne.jp> To: freebsd-usb@FreeBSD.org Subject: Re: HS isochronous transfer on musb_otg From: SAITOU Toshihide In-Reply-To: <51FB5230.3000503@bitfrost.no> References: <20130801.230713.74749403.toshi@ruby.ocn.ne.jp> <51FB5230.3000503@bitfrost.no> X-GPG-fingerprint: 34B3 0B6A 8520 F5B0 EBC7 69F6 C055 9F8A 0D49 F8FC X-Mailer: Mew version 6.2.51 on Emacs 22.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Aug 2013 12:03:05 -0000 In message: <51FB5230.3000503@bitfrost.no> Hans Petter Selasky 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? 1729c1729 < MUSB2_WRITE_1(sc, MUSB2_REG_RXNAKLIMIT, 0); --- > MUSB2_WRITE_1(sc, MUSB2_REG_RXNAKLIMIT, MAX_NAK_TO); 3162c3162 < frx = 12; /* 4K */ --- > frx = 10; /* 1K */ 3164c3164 < MUSB2_VAL_FIFOSZ_4096 | --- > MUSB2_VAL_FIFOSZ_512 | 4046c4046 < parm->hc_max_frame_size = 0xc00; --- > parm->hc_max_frame_size = 0x400; SAITOU Toshihide