linux/drivers/usb/serial
Andrew Lunn ee467a1f20 USB: serial: add Moxa UPORT 12XX/14XX/16XX driver
Add a driver which supports the following Moxa USB to serial converters:
*       2 ports : UPort 1250, UPort 1250I
*       4 ports : UPort 1410, UPort 1450, UPort 1450I
*       8 ports : UPort 1610-8, UPort 1650-8
*      16 ports : UPort 1610-16, UPort 1650-16

The UPORT devices don't directly fit the USB serial model. USB serial
assumes a bulk in/out endpoint pair per serial port. Thus a dual port
USB serial device is expected to have two bulk in/out pairs. The Moxa
UPORT only has one pair for data transfer and places a header on each
transfer over the endpoint indicating for which port the transfer
relates to. There is a second endpoint pair for events, such as modem
control lines changing state, setting baud rates etc. Again, a
multiplexing header is used on these endpoints.

Some ports need to have a kfifo explicitly allocated since the
framework does not allocate one if there is no associated endpoints.
The framework will however free it on unload of the module.

All data transfers are made on port0, yet the locks are taken on PortN.
urb->context points to PortN, even though the URB is for port0.

Where possible, code from the generic driver is called. However
mxuport_process_read_urb_data() is mostly a cut/paste of
usb_serial_generic_process_read_urb().

The driver will attempt to load firmware from userspace and compare
the available version and the running version. If the available
version is newer, it will be download into RAM of the device and
started. This is optional and the driver appears to work O.K. with
older firmware in the devices ROM.

This driver is based on the MOXA driver and retains MOXAs copyright.

[jhovold@gmail.com: fix get_fw_version error path and some style issues]

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-01-03 12:34:07 -08:00
..
Kconfig USB: serial: add Moxa UPORT 12XX/14XX/16XX driver 2014-01-03 12:34:07 -08:00
Makefile USB: serial: add Moxa UPORT 12XX/14XX/16XX driver 2014-01-03 12:34:07 -08:00
Makefile-keyspan_pda_fw
aircable.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
ark3116.c USB: serial: make minor allocation dynamic 2013-06-17 13:30:02 -07:00
belkin_sa.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
belkin_sa.h
bus.c Driver core patches for 3.12-rc1 2013-09-03 11:37:15 -07:00
ch341.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
console.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
cp210x.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
cyberjack.c USB: cyberjack: fix buggy integer overflow test 2013-10-07 00:07:18 -07:00
cypress_m8.c USB: serial: set drain delay at port probe 2013-07-23 16:21:50 -07:00
cypress_m8.h USB: Serial: cypress_M8: Enable FRWD Dongle hidcom device 2013-06-03 10:33:10 -07:00
digi_acceleport.c USB: serial: ports: add minor and port number 2013-06-10 14:46:40 -07:00
empeg.c USB: serial: remove driver version information 2012-10-31 12:48:06 -07:00
ezusb_convert.pl
f81232.c USB: f81232: switch to generic tiocmiwait 2014-01-03 12:31:47 -08:00
ftdi_sio.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
ftdi_sio.h
ftdi_sio_ids.h USB: serial: ftdi_sio: add id for Z3X Box device 2013-11-01 09:33:56 -07:00
garmin_gps.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
generic.c USB: serial: fix write memory-allocation flag 2013-11-25 08:39:40 -08:00
io_16654.h
io_edgeport.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
io_edgeport.h
io_ionsp.h
io_tables.h USB: io_edgeport: switch to generic TIOCMIWAIT implementation 2013-03-25 13:50:53 -07:00
io_ti.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
io_ti.h
io_usbvend.h
ipaq.c USB: serial: constify device-id tables 2014-01-03 12:31:46 -08:00
ipw.c USB: serial: remove driver version information 2012-10-31 12:48:06 -07:00
ir-usb.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
iuu_phoenix.c USB: serial: clean up attribute permissions 2013-08-25 15:12:03 -07:00
iuu_phoenix.h
keyspan.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
keyspan.h USB: keyspan: fix NULL-pointer dereferences and memory leaks 2012-10-25 09:37:13 -07:00
keyspan_pda.c USB patches for 3.10-rc1 2013-04-29 12:19:23 -07:00
keyspan_usa26msg.h
keyspan_usa28msg.h
keyspan_usa49msg.h
keyspan_usa67msg.h
keyspan_usa90msg.h
kl5kusb105.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
kl5kusb105.h
kobil_sct.c USB: kobil_sct: use port interrupt-out urb 2013-04-17 10:05:35 -07:00
kobil_sct.h
mct_u232.c USB: mct_u232: clean up read implementation 2013-04-17 10:05:35 -07:00
mct_u232.h
metro-usb.c USB: serial: constify device-id tables 2014-01-03 12:31:46 -08:00
mos7720.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
mos7840.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
mxuport.c USB: serial: add Moxa UPORT 12XX/14XX/16XX driver 2014-01-03 12:34:07 -08:00
navman.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
omninet.c USB: omninet: switch to generic read implementation 2013-04-17 10:05:34 -07:00
opticon.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
option.c Merge 3.13-rc5 into usb-next 2013-12-24 10:18:03 -08:00
oti6858.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
oti6858.h
pl2303.c USB: pl2303: use direct baud-rate encoding when possible 2014-01-03 12:31:48 -08:00
pl2303.h
qcaux.c USB: serial: constify device-id tables 2014-01-03 12:31:46 -08:00
qcserial.c USB: option,qcserial: move Novatel Gobi1K IDs to qcserial 2013-06-24 16:21:53 -07:00
quatech2.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
safe_serial.c USB: serial: constify device-id tables 2014-01-03 12:31:46 -08:00
sierra.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
spcp8x5.c USB: spcp8x5: correct handling of CS5 setting 2013-12-02 21:52:57 -08:00
ssu100.c USB: serial: clean up ioctl debugging 2014-01-03 12:31:46 -08:00
symbolserial.c USB: symbolserial: move private-data allocation to port_probe 2013-04-17 10:05:35 -07:00
ti_usb_3410_5052.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
ti_usb_3410_5052.h USB: serial: ti_usb_3410_5052: new device id for Abbot strip port cable 2013-06-19 15:54:45 -07:00
usb-serial-simple.c USB: serial: fix stringify operator in usb-serial-simple 2013-08-18 13:11:06 -07:00
usb-serial.c USB: serial: clean up ioctl debugging 2014-01-03 12:31:46 -08:00
usb-wwan.h USB: usb-wwan: fix multiple memory leaks in error paths 2012-10-25 09:37:13 -07:00
usb_debug.c USB: serial: rework usb_serial_register/deregister_drivers() 2012-05-08 15:46:14 -07:00
usb_wwan.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
visor.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
visor.h
whiteheat.c USB: serial: remove redundant OOM messages 2014-01-03 12:31:46 -08:00
whiteheat.h
wishbone-serial.c USB: serial: wishbone-serial: fix up minor sparse warning 2013-04-11 08:45:34 -07:00
xsens_mt.c usb: add driver for xsens motion trackers 2013-01-25 09:56:54 -08:00
zte_ev.c usb: serial: zte_ev: move support for ZTE AC2726 from zte_ev back to option 2013-12-09 13:14:12 -08:00