Re: tm6000 and USB3.0

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

 



Hello

> On Tue, Apr 10, 2012 at 08:29:54AM -0300, Mauro Carvalho Chehab wrote:
> > Em 10-04-2012 04:47, Dmitri Belimov escreveu:
> > > Hello
> > > 
> > > Are you test work tm6000 devices with USB 3.0 controllers??
> > > 
> > > Some our customers reported about problem.
> 
> Have you tried running with the latest bleeding-edge kernel, 3.4-rc2?
> That kernel includes dynamic ring expansion, which should fix any
> problems you have with error messages like "No room on endpoint ring".
> I'd like to figure out if that solves you issue before we blame it on
> bandwidth claiming.

I use for get new kernel

git clone git://github.com/torvalds/linux.git v4l-dvb
cd v4l-dvb
git remote add linuxtv git://linuxtv.org/media_tree.git
git remote update
git checkout -b media-master remotes/linuxtv/staging/for_v3.5
    
dmesg

[ 9145.418290] Linux video capture interface: v2.00
[ 9145.451820] usb 3-1: ep 0x82 - rounding interval to 32768 microframes,
ep desc says 0 microframes
[ 9145.453686] tm6000: alt 0, interface 0, class 255
[ 9145.453691] tm6000: alt 0, interface 0, class 255
[ 9145.453694] tm6000: Bulk IN endpoint: 0x82 (max size=512 bytes)
[ 9145.453697] tm6000: alt 0, interface 0, class 255
[ 9145.453699] tm6000: alt 1, interface 0, class 255
[ 9145.453702] tm6000: ISOC IN endpoint: 0x81 (max size=3072 bytes)
[ 9145.453705] tm6000: alt 1, interface 0, class 255
[ 9145.453707] tm6000: alt 1, interface 0, class 255
[ 9145.453710] tm6000: INT IN endpoint: 0x83 (max size=4 bytes)
[ 9145.453712] tm6000: alt 2, interface 0, class 255
[ 9145.453714] tm6000: alt 2, interface 0, class 255
[ 9145.453717] tm6000: alt 2, interface 0, class 255
[ 9145.453719] tm6000: alt 3, interface 0, class 255
[ 9145.453722] tm6000: alt 3, interface 0, class 255
[ 9145.453724] tm6000: alt 3, interface 0, class 255
[ 9145.453727] tm6000: New video device @ 480 Mbps (6000:dec3, ifnum 0)
[ 9145.453730] tm6000: Found Beholder Voyager Lite TV/FM USB2.0
[ 9145.460517] Found tm6010
[ 9146.080614] tm6000 #0: i2c eeprom 00: 42 59 54 45 12 01 00 02 00 00 00
40 00 60 c3 de  BYTE.......@.`..
[ 9146.198613] tm6000 #0: i2c eeprom 10: 01 00 10 20 40 01 28 03 42 00 65
00 68 00 6f 00  ... @.(.B.e.h.o.
[ 9146.316710] tm6000 #0: i2c eeprom 20: 6c 00 64 00 65 00 72 00 20 00 49
00 6e 00 74 00  l.d.e.r. .I.n.t.
[ 9146.434810] tm6000 #0: i2c eeprom 30: 6c 00 2e 00 20 00 4c 00 74 00 64
00 2e 00 ff ff  l... .L.t.d.....
[ 9146.552892] tm6000 #0: i2c eeprom 40: 2a 03 42 00 65 00 68 00 6f 00 6c
00 64 00 54 00  *.B.e.h.o.l.d.T.
[ 9146.670882] tm6000 #0: i2c eeprom 50: 56 00 20 00 56 00 6f 00 79 00 61
00 67 00 65 00  V. .V.o.y.a.g.e.
[ 9146.788983] tm6000 #0: i2c eeprom 60: 20 00 4c 00 69 00 74 00 65 00 1a
03 56 00 69 00   .L.i.t.e...V.i.
[ 9146.907076] tm6000 #0: i2c eeprom 70: 64 00 65 00 6f 00 43 00 61 00 70
00 74 00 75 00  d.e.o.C.a.p.t.u.
[ 9147.025175] tm6000 #0: i2c eeprom 80: 72 00 65 00 ff ff ff ff ff ff ff
ff ff ff ff ff  r.e.............
[ 9147.143148] tm6000 #0: i2c eeprom 90: ff ff ff ff 16 03 30 00 30 00 30
00 30 00 30 00  ......0.0.0.0.0.
[ 9147.261247] tm6000 #0: i2c eeprom a0: 30 00 39 00 46 00 38 00 36 00 ff
ff ff ff ff ff  0.9.F.8.6.......
[ 9147.379343] tm6000 #0: i2c eeprom b0: ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff  ................
[ 9147.497441] tm6000 #0: i2c eeprom c0: ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff  ................
[ 9147.615544] tm6000 #0: i2c eeprom d0: ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff  ................
[ 9147.733514] tm6000 #0: i2c eeprom e0: ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff  ................
[ 9147.851612] tm6000 #0: i2c eeprom f0: ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff  ................
[ 9148.021749] i2c-core: driver [tuner] using legacy suspend method
[ 9148.021751] i2c-core: driver [tuner] using legacy resume method
[ 9148.021941] tuner 1-0061: Tuner -1 found with type(s) Radio TV.
[ 9148.021948] xc5000 1-0061: creating new instance
[ 9148.047421] xc5000: Successfully identified at address 0x61
[ 9148.047424] xc5000: Firmware has not been loaded previously
[ 9148.101684] xc5000: waiting for firmware upload
(dvb-fe-xc5000-1.6.114.fw)...
[ 9148.112659] xc5000: firmware read 12401 bytes.
[ 9148.112661] xc5000: firmware uploading...
[ 9151.137162] xc5000: firmware upload complete...
[ 9152.758812] tm6000 #0: registered device video0
[ 9152.758838] tm6000 #0: registered device radio0
[ 9152.758840] Trident TVMaster TM5600/TM6000/TM6010 USB2 board (Load
status: 0)
[ 9152.758870] usb 3-2: ep 0x82 - rounding interval to 32768 microframes,
ep desc says 0 microframes
[ 9152.759082] usb 3-2: Not enough bandwidth for new device state.
[ 9152.759087] usb 3-2: Not enough bandwidth for altsetting 1
[ 9152.759088] tm6000: Error -28 while registering
[ 9152.759112] tm6000: probe of 3-2:1.0 failed with error -28
[ 9152.759128] usbcore: registered new interface driver tm6000
[ 9152.820740] tm6000 #0: Initialized (TM6000 Audio Extension) extension
[ 9153.809026] usb 3-1: ep 0x82 - rounding interval to 32768 microframes,
ep desc says 0 microframes
[ 9154.417316] usb 3-1: ep 0x82 - rounding interval to 32768 microframes,
ep desc says 0 microframes
[ 9154.418865] usb 3-1: ep 0x82 - rounding interval to 32768 microframes,
ep desc says 0 microframes

Init second TV card is FAIL.

With my best regards, Dmitry.

> Sarah Sharp
> 
> > Hi Dmitri,
> > 
> > I don't have any system here with an USB 3.0 controller. I suspect,
> > however, that this may not work, due to the way the USB 3.0 core
> > reserves bandwidth for ISOC transfers. We had some discussions with
> > Sarah (the maintainer of the USB 3.0 stack) in the past (in
> > particular at the USB mini-summit), but I'm not sure if any changes
> > were applied at the USB 3.0 driver.
> > 
> > This is the summary for the bandwidth discussions we had there:
> > 
> > > Bandwidth discussions
> > > ---------------------
> > > 
> > > I talked a bit with Hans and Mauro about what sorts of things
> > > media drivers might need if the USB core were to provide an
> > > interface to allow drivers to declare they use less bandwidth
> > > than the device advertises.
> > > 
> > > I described one of the logitech cameras I have where the uvcvideo
> > > driver always attempts to use the most bandwidth-intensive
> > > interface (alt setting 11), and Hans suggested that the device
> > > might be falsely advertising that it needs alt setting 11 for all
> > > the video resolutions it provides.  He suggested I look at the
> > > FIX_BANDWIDTH quirk in the uvcvideo driver.
> > > 
> > > Alan already pointed out that for devices with non-zero
> > > "additional service opportunities per microframe", we can't
> > > reduce the packet size.  I tried to explore whether devices that
> > > didn't fall into that categories could have their packet size
> > > reduced, or if the driver could use less extra service
> > > opportunities for those alt settings that do advertise it.
> > > 
> > > Hans said that cameras will often want to send full packets in a
> > > burst, using all service opportunities, and then send a bunch of
> > > zero packets between frames. He said many of them will "barf" if
> > > the driver tries to use a smaller buffer size or less service
> > > opportunities to make the camera send a steady stream of bytes.
> > > It was unclear whether all the cameras suffer from this, so more
> > > experimentation on my part is probably needed.
> > > 
> > > As for devices that have the wrong endpoint interval advertised
> > > (e.g. HS cameras specifying the interval in frames instead of
> > > microframes), Hans said that only a few devices have the wrong
> > > endpoint interval advertised.
> > 
> > > With my best regards, Dmitry.
> > 
> > Sarah,
> > 
> > In the specific case of tm5600/6000/6010 chipsets, we found several
> > bugs on those chipsets, especially at the I2C part of it. I won't
> > doubt if it would have some bug at the USB part as well.
> > 
> > Anyway, despite what it requests, the driver can estimate the
> > required bandwidth for it, as, for analog mode. A rough estimation
> > would would be to do something like: video_res = 2 bytes per pixel
> > * horizontal resolution * vertical resolution video_payload_header
> > = (video_res / 180) * 4 video_payload_bandwidth = frames_per_second
> > * (video_res + video_payload_header) audio_res = 48000 * 2 channels
> > * 2 bytes audio_payload_header = (audio_res / 180) * 4
> > 	audio_payload_bandwidth = 8 * (audio_res +
> > audio_payload_header)
> > 
> > 
> > If I didn't made any wrong calculus, the worse case is a net
> > bandwidth of 171 Mbps for the payload (due to USB headers, this is,
> > actually, about 240 Mbps).
> > 
> > For digital mode, it is even lower than that. I couldn't find the
> > max bw on the TM6xxx datasheets, but, this is limited by the
> > digital standard, so, it is lower than 22 Mbps for terrestrial
> > transmissions like DVB-T and ISDB-T, as documented at the video
> > standard specifications. For DVB-C it is typically not bigger than
> > 44 Mbps. In any case, for digital TV, the driver can calculate it,
> > as it is a function of the spectrum bandwidth for the TV channel
> > and the video standard modulation.
> > 
> > In any case, the USB core has no glue about the audio/video
> > resolutions or about the upper bandwidth limit found on a digital
> > TV standard. So, it is very likely that it is over-estimating the
> > maximum bandwidth causing troubles for the drivers.
> > 
> > The right fix, IMHO, seems to have some way for the driver to
> > calculate the amount of needed bandwidth, overriding whatever
> > calculus is done by the USB core.
> > 
> > Regards,
> > Mauro
--
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