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? 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? With my best regards, Dmitry. -- 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