mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 03:10:12 +00:00
USB: serial: ir-usb: fix link-speed handling
commit17a0184ca1
upstream. Commite0d795e4f3
("usb: irda: cleanup on ir-usb module") added a USB IrDA header with common defines, but mistakingly switched to using the class-descriptor baud-rate bitmask values for the outbound header. This broke link-speed handling for rates above 9600 baud, but a device would also be able to operate at the default 9600 baud until a link-speed request was issued (e.g. using the TCGETS ioctl). Fixes:e0d795e4f3
("usb: irda: cleanup on ir-usb module") Cc: stable <stable@vger.kernel.org> # 2.6.27 Cc: Felipe Balbi <balbi@kernel.org> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Johan Hovold <johan@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
85eec8cf9d
commit
c9b7dcee64
2 changed files with 22 additions and 11 deletions
|
@ -335,34 +335,34 @@ static void ir_set_termios(struct tty_struct *tty,
|
|||
|
||||
switch (baud) {
|
||||
case 2400:
|
||||
ir_baud = USB_IRDA_BR_2400;
|
||||
ir_baud = USB_IRDA_LS_2400;
|
||||
break;
|
||||
case 9600:
|
||||
ir_baud = USB_IRDA_BR_9600;
|
||||
ir_baud = USB_IRDA_LS_9600;
|
||||
break;
|
||||
case 19200:
|
||||
ir_baud = USB_IRDA_BR_19200;
|
||||
ir_baud = USB_IRDA_LS_19200;
|
||||
break;
|
||||
case 38400:
|
||||
ir_baud = USB_IRDA_BR_38400;
|
||||
ir_baud = USB_IRDA_LS_38400;
|
||||
break;
|
||||
case 57600:
|
||||
ir_baud = USB_IRDA_BR_57600;
|
||||
ir_baud = USB_IRDA_LS_57600;
|
||||
break;
|
||||
case 115200:
|
||||
ir_baud = USB_IRDA_BR_115200;
|
||||
ir_baud = USB_IRDA_LS_115200;
|
||||
break;
|
||||
case 576000:
|
||||
ir_baud = USB_IRDA_BR_576000;
|
||||
ir_baud = USB_IRDA_LS_576000;
|
||||
break;
|
||||
case 1152000:
|
||||
ir_baud = USB_IRDA_BR_1152000;
|
||||
ir_baud = USB_IRDA_LS_1152000;
|
||||
break;
|
||||
case 4000000:
|
||||
ir_baud = USB_IRDA_BR_4000000;
|
||||
ir_baud = USB_IRDA_LS_4000000;
|
||||
break;
|
||||
default:
|
||||
ir_baud = USB_IRDA_BR_9600;
|
||||
ir_baud = USB_IRDA_LS_9600;
|
||||
baud = 9600;
|
||||
}
|
||||
|
||||
|
|
|
@ -119,11 +119,22 @@ struct usb_irda_cs_descriptor {
|
|||
* 6 - 115200 bps
|
||||
* 7 - 576000 bps
|
||||
* 8 - 1.152 Mbps
|
||||
* 9 - 5 mbps
|
||||
* 9 - 4 Mbps
|
||||
* 10..15 - Reserved
|
||||
*/
|
||||
#define USB_IRDA_STATUS_LINK_SPEED 0x0f
|
||||
|
||||
#define USB_IRDA_LS_NO_CHANGE 0
|
||||
#define USB_IRDA_LS_2400 1
|
||||
#define USB_IRDA_LS_9600 2
|
||||
#define USB_IRDA_LS_19200 3
|
||||
#define USB_IRDA_LS_38400 4
|
||||
#define USB_IRDA_LS_57600 5
|
||||
#define USB_IRDA_LS_115200 6
|
||||
#define USB_IRDA_LS_576000 7
|
||||
#define USB_IRDA_LS_1152000 8
|
||||
#define USB_IRDA_LS_4000000 9
|
||||
|
||||
/* The following is a 4-bit value used only for
|
||||
* outbound header:
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue