linux/drivers/usb/serial
Preston Fick 7f482fc88a USB: cp210x: fix CP2104 baudrate usage
This fix changes the way baudrates are set on the CP210x devices from
Silicon Labs. The CP2101/2/3 will respond to both a GET/SET_BAUDDIV
command, and GET/SET_BAUDRATE command, while CP2104 and higher devices
only respond to GET/SET_BAUDRATE. The current cp210x.ko driver in
kernel version 3.2.0 only implements the GET/SET_BAUDDIV command.

This patch implements the two new codes for the GET/SET_BAUDRATE
commands. Then there is a change in the way that the baudrate is
assigned or retrieved. This is done according to the CP210x USB
specification in AN571. This document can be found here:
http://www.silabs.com/pages/DownloadDoc.aspx?FILEURL=Support%20Documents/TechnicalDocs/AN571.pdf&src=DocumentationWebPart

Sections 5.3/5.4 describe the USB packets for the old baudrate method.
Sections 5.5/5.6 describe the USB packets for the new method. This
patch also implements the new request scheme, and eliminates the
unnecessary baudrate calculations since it uses the "actual baudrate"
method.

This patch solves the problem reported for the CP2104 in bug 42586,
and also keeps support for all other devices (CP2101/2/3).

This patchfile is also attached to the bug report on
bugzilla.kernel.org. This patch has been developed and test on the
3.2.0 mainline kernel version under Ubuntu 10.11.

Signed-off-by: Preston Fick <preston.fick@silabs.com>
[duplicate patch also sent by Johan - gregkh]
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2012-01-24 11:45:10 -08:00
..
aircable.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
ark3116.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
belkin_sa.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
belkin_sa.h
bus.c
ch341.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
console.c
cp210x.c USB: cp210x: fix CP2104 baudrate usage 2012-01-24 11:45:10 -08:00
cyberjack.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
cypress_m8.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
cypress_m8.h
digi_acceleport.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
empeg.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
ezusb_convert.pl
ezusb.c
ftdi_sio_ids.h USB: serial: ftdi additional IDs 2012-01-24 11:22:16 -08:00
ftdi_sio.c USB: serial: ftdi additional IDs 2012-01-24 11:22:16 -08:00
ftdi_sio.h USB: Add new FT232H chip to drivers/usb/serial/ftdi_sio.c 2011-06-27 13:46:44 -07:00
funsoft.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
garmin_gps.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
generic.c USB: serial: add support for multiple read urbs 2011-11-15 10:46:13 -08:00
hp4x.c
io_16654.h
io_edgeport.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
io_edgeport.h Fix common misspellings 2011-03-31 11:26:23 -03:00
io_ionsp.h
io_tables.h USB serial: add missing .usb_driver field in serial drivers 2011-01-22 18:38:59 -08:00
io_ti.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
io_ti.h
io_usbvend.h
ipaq.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
ipw.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
ir-usb.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
iuu_phoenix.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
iuu_phoenix.h
Kconfig usb: fix ipw.c build error, select USB_SERIAL_WWAN 2011-08-24 15:06:53 -07:00
keyspan_pda.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
keyspan_usa26msg.h
keyspan_usa28msg.h
keyspan_usa49msg.h
keyspan_usa67msg.h
keyspan_usa90msg.h
keyspan.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
keyspan.h tiocmset: kill the file pointer argument 2011-02-17 11:52:43 -08:00
kl5kusb105.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
kl5kusb105.h
kobil_sct.c USB: serial: remove unnecessary reinitialisations of urb->dev 2011-11-15 10:33:16 -08:00
kobil_sct.h
Makefile Revert "USB: sam-ba: add driver for Atmel SAM Boot Assistant (SAM-BA)" 2011-04-13 16:48:25 -07:00
Makefile-keyspan_pda_fw
mct_u232.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
mct_u232.h Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
mos7720.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
mos7840.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
moto_modem.c USB: moto_modem: Add USB identifier for the Motorola VE240. 2011-04-29 16:45:21 -07:00
navman.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
omninet.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
opticon.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
option.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
oti6858.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
oti6858.h
pl2303.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
pl2303.h USB: serial: pl2303: rm duplicate id 2011-11-15 10:06:15 -08:00
qcaux.c USB serial: add missing .usb_driver field in serial drivers 2011-01-22 18:38:59 -08:00
qcserial.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
safe_serial.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
siemens_mpi.c USB serial: add missing .usb_driver field in serial drivers 2011-01-22 18:38:59 -08:00
sierra.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
spcp8x5.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
ssu100.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
symbolserial.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
ti_usb_3410_5052.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
ti_usb_3410_5052.h
usb_debug.c USB: usb_debug: use process_read_urb 2011-11-15 10:40:30 -08:00
usb_wwan.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
usb-serial.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
usb-wwan.h tty: remove filp from the USB tty ioctls 2011-02-17 11:59:14 -08:00
visor.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
visor.h
vivopay-serial.c
whiteheat.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
whiteheat.h
zio.c