Re: tm6000 and IR

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

 



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


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux