diff options
Diffstat (limited to 'drivers/usb/class/cdc-acm.c')
| -rw-r--r-- | drivers/usb/class/cdc-acm.c | 22 | 
1 files changed, 16 insertions, 6 deletions
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index 981f2132d12..6e49ec6f3ad 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c @@ -817,10 +817,6 @@ static const __u32 acm_tty_speed[] = {  	2500000, 3000000, 3500000, 4000000  }; -static const __u8 acm_tty_size[] = { -	5, 6, 7, 8 -}; -  static void acm_tty_set_termios(struct tty_struct *tty,  						struct ktermios *termios_old)  { @@ -834,7 +830,21 @@ static void acm_tty_set_termios(struct tty_struct *tty,  	newline.bParityType = termios->c_cflag & PARENB ?  				(termios->c_cflag & PARODD ? 1 : 2) +  				(termios->c_cflag & CMSPAR ? 2 : 0) : 0; -	newline.bDataBits = acm_tty_size[(termios->c_cflag & CSIZE) >> 4]; +	switch (termios->c_cflag & CSIZE) { +	case CS5: +		newline.bDataBits = 5; +		break; +	case CS6: +		newline.bDataBits = 6; +		break; +	case CS7: +		newline.bDataBits = 7; +		break; +	case CS8: +	default: +		newline.bDataBits = 8; +		break; +	}  	/* FIXME: Needs to clear unsupported bits in the termios */  	acm->clocal = ((termios->c_cflag & CLOCAL) != 0); @@ -1233,7 +1243,7 @@ made_compressed_probe:  		if (usb_endpoint_xfer_int(epwrite))  			usb_fill_int_urb(snd->urb, usb_dev, -				usb_sndbulkpipe(usb_dev, epwrite->bEndpointAddress), +				usb_sndintpipe(usb_dev, epwrite->bEndpointAddress),  				NULL, acm->writesize, acm_write_bulk, snd, epwrite->bInterval);  		else  			usb_fill_bulk_urb(snd->urb, usb_dev,  |