Am 08.12.2010 04:55, schrieb Dmitri Belimov:
Hi Stefan
Am 06.12.2010 11:02, schrieb Dmitri Belimov:
Thank you. When I switched to this branch modules is not crash
when USB removed. But disable IR over interrupt after start
video/radio
With my best regards, Dmitry.
changing the interface configuration by initiation isoc urb can
deactivating the interrupt in endpoint
We configure USB stick when modules is loaded
/* Selects the proper interface */
rc = usb_set_interface(usbdev, 0, 1);
The USB controller reserved one half of bandwith for ISOC. Other
device on USB can work slowely. Much better:
when module loaded
/* Selects the proper interface */
rc = usb_set_interface(usbdev, 0, 2);
when start video/audio/TS
/* Selects the proper interface */
rc = usb_set_interface(usbdev, 0, 1);
when stop video/audio/TS
/* Selects the proper interface */
rc = usb_set_interface(usbdev, 0, 2);
And restart int pipe after each selection. What you mean about it?
Dynamic bandwith utilization.
With my best regards, Dmitry.
No. Here (tm6000_prepare_isoc) is that problem. It resetted the
active interrupt urb pipe and interrupt urb must reinitialize after
call usb_set_interface, I think.
static int tm6000_prepare_isoc(struct tm6000_core *dev, unsigned int
framesize)
{
struct tm6000_dmaqueue *dma_q =&dev->vidq;
int i, j, sb_size, pipe, size, max_packets, num_bufs = 8;
struct urb *urb;
/* De-allocates all pending stuff */
tm6000_uninit_isoc(dev);
usb_set_interface(dev->udev,
dev->isoc_in.bInterfaceNumber,
dev->isoc_in.bAlternateSetting);
pipe = usb_rcvisocpipe(dev->udev,
dev->isoc_in.endp->desc.bEndpointAddress&
USB_ENDPOINT_NUMBER_MASK);
size = usb_maxpacket(dev->udev, pipe, usb_pipeout(pipe));
Can you test without call "usb_set_interface"?
Of course. It works. The interrupt pipe is a live after start/stop watch TV.
Are you make a patch for this?
Mauro, what do you think about this?
Other point is IR remotes. The tm6010 may be tm5600/tm6000 too returned only
two right bytes when received extended nec.
Our remotes was send:
0x86 0x6B 0x00 0xFF
tm6010 return after decode:
0x86 0x00 0x86 0x00
If we use full lenght of key for ir_table
1. need add some code for restore losing byte.
if (ir_table.name == OUR_TV_CARD_IR_TABLE)
return to ir core byte1 0x6B byte0
Or
2. use only high byte of address for filtering a key.
I'll try number 2 as more robust.
What you mean about it?
second once are better, easier and need small code.
Stefan Ringel
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html