Re: [PATCH 2/3] input: serio: allow more than one byte to be sent at once

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

 



On Thu, May 07, 2020 at 09:59:18PM +0100, Sean Young wrote:
> On Thu, May 07, 2020 at 01:25:46PM -0700, Dmitry Torokhov wrote:
> > On Thu, May 07, 2020 at 02:53:36PM +0100, Sean Young wrote:
> > > serio drivers can only send one byte at a time. If the underlying tty
> > > is a usb serial port, then each byte will be put into separate usb
> > > urbs, which is not efficient.
> > > 
> > > Additionally, the Infrared Toy device refuses to transmit IR if the
> > > IR data is sent one byte at a time. IR data is formatted in u16 values,
> > > and the firmware expects complete u16 values in the packet.
> > > 
> > > https://github.com/DangerousPrototypes/USB_IR_Toy/blob/master/Firmware-main/IRs.c#L240
> > 
> > Ummm, serial protocol data size is at most 9 bits so I have no earthly
> > idea how they expect to get 16.
> 
> serio is a layer on top several serial protocols, including ttys. ttys allow
> more than one byte to be written at a time, see struct tty_operations:
> 
>         int  (*write)(struct tty_struct * tty,
>                       const unsigned char *buf, int count);
> 
> ttys would be very inefficient if you could only write one byte at a time,
> and they are very serial.
> 
> This patch exposes the underlying tty write() functionality to serio. When
> the underlying tty is a usb serial port this makes for far fewer usb packets
> being used to send the same data, and fixes my driver problem, and it
> would reduce the number of calls in a few other cases too.
> 
> I'm happy to rework the patch if there are comments on the style or
> approach.

Why not just use the ir-usb.c driver for this device instead?

thanks,

greg k-h



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux