aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/serial
Commit message (Collapse)AuthorAge
...
* USB: cp210x: remove redundant disconnect()Johan Hovold2010-05-20
| | | | | | | | | Remove cp210x_disconnect which is used to kill traffic although this is already handled by the generic framework. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: io_edgeport: Use kzallocJulia Lawall2010-05-20
| | | | | | | | | | | | | | | | | | | | | | | | Use kzalloc rather than the combination of kmalloc and memset. The semantic patch that makes this change is as follows: (http://coccinelle.lip6.fr/) // <smpl> @@ expression x,size,flags; statement S; @@ -x = kmalloc(size,flags); +x = kzalloc(size,flags); if (x == NULL) S -memset(x, 0, size); // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: ipw: reimplement using generic frameworkJohan Hovold2010-05-20
| | | | | | | | Compile-only tested. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: ipw: remove dummy port_probe and port_removeJohan Hovold2010-05-20
| | | | | | Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: ipw: clean up dtr-rts handlingJohan Hovold2010-05-20
| | | | | | | | No need to raise dtr/rts in open as this is taken care of by tty layer. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: ir-usb: reimplement using generic frameworkJohan Hovold2010-05-20
| | | | | | | | Compile-only tested. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: ir-usb: fix set_termios raceJohan Hovold2010-05-20
| | | | | | | | | | | | Use dynamically allocated urb for baudrate changes rather than unconditionally submitting the port write urb which may already be in use. Compile-only tested. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: ir-usb: allow custom bulk buffer size without reallocationJohan Hovold2010-05-20
| | | | | | | | | | Use usb_serial_driver bulk_in_size and bulk_out_size to make sure buffers of appropriate sizes are allocated in the first place rather than reallocating them at every open. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: ir-usb: fix double freeJohan Hovold2010-05-20
| | | | | | | | | | If the user specifies a custom bulk buffer size we get a double free at port release. Cc: stable <stable@kernel.org> Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: ftdi_sio: clean up line-status handlingJohan Hovold2010-05-20
| | | | | | | | | | | | | | | Reverse priority of errors reported to ldisc so that it matches that of other serial drivers (break takes precedence over parity, which takes precedence over framing errors). Also make sure overrun errors are handled as in other drivers, that is, an overrun error is always reported and is not associated with any received character (instead a NULL character with the TTY_OVERRUN flag set is inserted). Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: pl2303: use tty_insert_flip_string_fixed_flagJohan Hovold2010-05-20
| | | | | | | | | Use tty_insert_flip_string_fixed_flag to report errors to line discipline. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: ftdi_sio: use tty_insert_flip_string_fixed_flagJohan Hovold2010-05-20
| | | | | | | | | Use tty_insert_flip_string_fixed_flag to report errors to line discipline. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: ark3116: reimplement read processingJohan Hovold2010-05-20
| | | | | | | | | | | Use process_read_urb to implement read processing. Compile-only tested. Signed-off-by: Johan Hovold <jhovold@gmail.com> Acked-by: Bart Hartgers <bart.hartgers@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: tty: fix incorrect use of tty_insert_flip_string_fixed_flagJohan Hovold2010-05-20
| | | | | | | | | | | | | Fix regression introduced by commit a108bfcb372d8c4452701039308fb95747911c59 (USB: tty: Prune uses of tty_request_room in the USB layer) which broke three drivers (cypress_m8, digi_acceleport and spcp8x5) through incorrect use of tty_insert_flip_string_fixed_flag. Signed-off-by: Johan Hovold <jhovold@gmail.com> Cc: stable <stable@kernel.org> [.34] Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: serial: remove multi-urb write from generic driverJohan Hovold2010-05-20
| | | | | | | | | | | | | | | | | | | Remove multi-urb write from the generic driver and simplify the prepare_write_buffer prototype: int (*prepare_write_buffer)(struct usb_serial_port *port, void *dest, size_t size); The default implementation simply fills dest with data from port write fifo but drivers can override it if they need to process the outgoing data (e.g. add headers). Turn ftdi_sio into a generic fifo-based driver, which lowers CPU usage significantly for small writes while retaining maximum throughput. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: serial: reimplement generic fifo-based writesJohan Hovold2010-05-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Reimplement fifo-based writes in the generic driver using a multiple pre-allocated urb scheme. In contrast to multi-urb writes, no allocations (of urbs or buffers) are made during run-time and there is less pressure on the host stack queues as currently only two urbs are used (implementation is generic and can handle more than two urbs as well, though). Initial tests using ftdi_sio show that the implementation achieves the same (maximum) throughput at high baudrates as multi-urb writes. The CPU usage is much lower than for multi-urb writes for small write requests and only slightly higher for large (e.g. 2k) requests (due to extra copy via fifo?). Also outperforms multi-urb writes for small write requests on an embedded arm-9 system, where multi-urb writes are CPU-bound at high baudrates (perf reveals that a lot of time is spent in the host stack enqueue function -- could perhaps be a bug as well). Keeping the original write_urb, buffer and flag for now as there are other drivers depending on them. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: aircable: rewrite using generic read and write implementationsJohan Hovold2010-05-20
| | | | | | | | | | | | | | | | | Kill circular buffers for tx and rx as well as read work thread, and switch to generic kfifo-based write implementation. This is an example of how prepare_write_buffer and process_read_urb can be used to handle protocols with packet headers. Please note the diffstat which shows that the same functionality is now provided using only a tenth of the code (including whitespace and comments, though). Tested-by: Naranjo, Manuel Francisco <naranjo.manuel@gmail.com> Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: ftdi_sio: clean up SIO write supportJohan Hovold2010-05-20
| | | | | | | | | The original SIO devices require a control byte for every packet written. Clean up the unnecessarily messy implementation of this. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: ftdi_sio: switch to generic write implementationJohan Hovold2010-05-20
| | | | | | | | | | | | | | | | Switch to the generic, multi-urb, write implementation. Note that this will also make it fairly easy to use the generic fifo-based write implementation: simply unset the multi_urb_write flag and modify prepare_write_buffer (or unset if not using a legacy SIO device). This may be desirable for instance on an embedded system where optimal throughput at high baudrates may not be as important as other factors (e.g. no allocations during runtime and less pressure on host stack). Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: oti6858: declare send_data() as staticBill Pemberton2010-05-20
| | | | | | Signed-off-by: Bill Pemberton <wfp5p@virginia.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: qcaux: add Samsung U520 device IDDan Williams2010-05-20
| | | | | | | | | Another CDC-ACM + vendor specific interface layout. Signed-off-by: Dan Williams <dcbw@redhat.com> Cc: stable <stable@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: option: add PID for ZTE productzhao1980ming2010-05-20
| | | | | | | | | this patch adds ZTE modem devices Signed-off-by: Joey <zhao.ming9@zte.com.cn> Cc: stable <stable@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: mos7840: Cleanup useless headerAlessio Igor Bogani2010-05-20
| | | | | | | | BKL isn't anymore present into this file thus it is no necessary still include smp_lock.h. Signed-off-by: Alessio Igor Bogani <abogani@texware.it> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: usbserial: fix mos7720 dependenciesRandy Dunlap2010-05-20
| | | | | | | | | | | | | | | | | | | | Fix mos7720 Kconfig dependencies. When an enabled bool selects a tristate, the tristate becomes =y, even if it should be limited to modular, so limit the bool kconfig option to configs that will build cleanly. Also change the if-block to a simple depends on. drivers/built-in.o: In function `mos7720_release': mos7720.c:(.text+0xad432): undefined reference to `parport_remove_port' drivers/built-in.o: In function `mos7715_parport_init': mos7720.c:(.text+0xae197): undefined reference to `parport_register_port' mos7720.c:(.text+0xae210): undefined reference to `parport_announce_port' drivers/built-in.o:(.data+0x201c8): undefined reference to `parport_ieee1284_read_nibble' drivers/built-in.o:(.data+0x201d0): undefined reference to `parport_ieee1284_read_byte' Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: usbserial: mos7720: cleanup, consolidation, replace send_mos_cmd with ↵Mike Dunn2010-05-20
| | | | | | | | | | | | | | | {read,write}_mos_reg No functionality added or bugs fixed, just improved code consistency and (hopefully) readability by replacing send_mos_cmd with the register read & write functions that were used for parallel port registers. Also shortens overall file length. Thoroughly tested, with emphasis on regression testing the serial port. Signed-off-by: Mike Dunn <mikedunn@newsguy.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: usbserial: mos7720: add support for parallel port on moschip 7715Mike Dunn2010-05-20
| | | | | | | | | | | | | | | Add support for the parallel port on the moschip MCS7715 device. The port registers itself with the parport subsystem as a low-level driver. A separate entry to the kernel configuration is added beneath that for the mos7720, to avoid the need to link with the parport subsystem code for users who don't have or don't want the parallel port. Only compatibility mode is currently supported (no ECP/EPP). Tested with both moschip devices (7720 and 7715) on UP and SMP hosts, including regression testing of serial port, concurrent operation of serial and parallel ports, and various connect / disconnect scenarios. Signed-off-by: Mike Dunn <mikedunn@newsguy.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: qcserial: Add support for Qualcomm Gobi 2000 devicesAnssi Hannula2010-05-20
| | | | | | | | | | | | | | | | Add ids for Qualcomm Gobi 2000 QDL and Modem modes. Gobi 2000 has a single altsetting in QDL mode, so adapt code to handle that. Firmware upload protocol is also slightly different, with an additional firmware file. However, qcserial doesn't handle firmware uploading. Tested on Lenovo Thinkpad T510. Signed-off-by: Anssi Hannula <anssi.hannula@gmail.com> Signed-off-by: Matthew Garrett <mjg@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: qcserial: Use generic USB wwan codeMatthew Garrett2010-05-20
| | | | | | | | | Make qcserial use the generic USB wwan code. This should result in a performance improvement. Signed-off-by: Matthew Garrett <mjg@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: option: Use generic USB wwan codeMatthew Garrett2010-05-20
| | | | | | | | | As this code was simply factored out of option, this is a simple conversion. Signed-off-by: Matthew Garrett <mjg@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* usb serial: Add generic USB wwan supportMatthew Garrett2010-05-20
| | | | | | | | | | | | The generic USB serial code is ill-suited for high-speed USB wwan devices, resulting in the option driver. However, other non-option devices may also gain similar benefits from not using the generic code. Factorise out the non-option specific code from the option driver and make it available to other users. Signed-off-by: Matthew Garrett <mjg@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: option.c: option_indat_callback: Resubmit some unsuccessful URBsJames Maki2010-05-20
| | | | | | | | | | | | | All unsuccessful (non-zero status) URBs were being dropped. After N_IN_URBs are dropped you will no longer be able to receive data. This patch resubmits unsuccessful URBs unless the status indicates that it should be terminated. The statuses that indicate the URB should be terminated was gathered from other similar drivers. Signed-off-by: James Maki <jamescmaki@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: ftdi_sio: fix some coding style issuesJohan Hovold2010-05-20
| | | | | | | | | | Remove unnecessary comments stating function names at (some) opening/closing braces. Fix some whitespace issues. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: serial: generalise write buffer preparationJohan Hovold2010-05-20
| | | | | | | | | | | | | | | | | | | | | | | | | Generalise write buffer preparation. This allows for drivers to manipulate (e.g. add headers) to bulk out data before it is sent. This adds a new function pointer to usb_serial_driver: int (*prepare_write_buffer)(struct usb_serial_port *port, void **dest, size_t size, const void *src, size_t count); The function is generic and can be used with either kfifo-based or multi-urb writes: If *dest is NULL the implementation should allocate dest. If src is NULL the implementation should use the port write fifo. If not set, a generic implementation is used which simply uses memcpy or kfifo_out. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: serial: re-implement multi-urb writes in generic driverJohan Hovold2010-05-20
| | | | | | | | | | | | | | | | Use dynamic transfer buffer sizes since it is more efficient to let the host controller do the partitioning to fit endpoint size. This way we also do not use more than one urb per write request. Replace max_in_flight_urbs with multi_urb_write flag in struct usb_serial_driver to enable multi-urb writes. Use MAX_TX_URBS=40 and a max buffer size of PAGE_SIZE to prevent DoS attacks. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: serial: allow custom multi-urb write bulk callbacksJohan Hovold2010-05-20
| | | | | | | | | Allow drivers to implement their own multi-urb write bulk callbacks as we do for single urb writes. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: usb_debug: use the generic kfifo-based write implementationJohan Hovold2010-05-20
| | | | | | | | | | Use the generic kfifo-based write implementation rather than allowing up to 4000 8 byte urbs in the host stack queues. Cc: Jason Wessel <jason.wessel@windriver.com> Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: pl2303: use generic closeJohan Hovold2010-05-20
| | | | | | | | | Use usb_serial_generic_close to kill the read and write urbs and to reset the write fifo. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: pl2303: switch to generic write implementationJohan Hovold2010-05-20
| | | | | | | | | Replace custom fifo-based write implementation with the generic kfifo-based one. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: serial: clean up generic write start busy testJohan Hovold2010-05-20
| | | | | | | | Submit write urb if it is not already in use and we have buffered data. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: serial: clean up some error and debug messages in generic driverJohan Hovold2010-05-20
| | | | | | | | | Clean up error messages on usb_submit_urb failure. Remove debug message on zero-length writes. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: ftdi_sio: switch to generic read implementationJohan Hovold2010-05-20
| | | | | | | | | Switch to generic read implementation and use process_read_urb to do device specific processing (handle line status). Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: serial: export generic throttle and unthrottleJohan Hovold2010-05-20
| | | | | | | | | | | | Allow drivers to use the generic throttle and unthrottle implementation. This makes sense for drivers using the generic read functionality. Note that drivers need to set these explicitly in order to enable them (i.e., we do not set them at port probe if not defined). Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: pl2303: switch to generic read implementationJohan Hovold2010-05-20
| | | | | | | | | Use generic read implementation and use process_read_urb to do device specific processing (handle line status). Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: serial: generalise generic read implementationJohan Hovold2010-05-20
| | | | | | | | | | | | | | Add process_read_urb to usb_serial_driver so that a driver can rely on the generic read (and throttle) mechanism but still do device specific processing of incoming data (such as adding tty_flags before pushing to line discipline). The default generic implementation handles sysrq for consoles but otherwise simply pushes to tty. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: serial: clean up read processing in generic driverJohan Hovold2010-05-20
| | | | | | | | | | | | | | | | | Always process and flush read urb, but only resubmit when not throttled. The new tty-layer supply plenty of slack so there is really no need to cache and delay processing of a single urb while throttled. Note that unthrottle now submits using GFP_KERNEL as we are not in atomic context (so there is no need to save irq state either). Note also that the process_read_urb function could be added to usb_serial_driver should any driver need to do any device specific processing. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: cp210x: use generic submit_read_urb at openJohan Hovold2010-05-20
| | | | | | | | | There is no need to initialise the read urb as this is done at port probe. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: serial: remove unnecessary re-initialisation of generic urbsJohan Hovold2010-05-20
| | | | | | | | | | The generic read and write bulk urbs are initialised when allocated in usb_serial_probe. The only field that needs to be updated after that is the transfer_buffer_length of the write urb. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: serial: refactor read urb submission in generic driverJohan Hovold2010-05-20
| | | | | | | | | | | | Use the already exported function for submitting the read urb associated with a usb_serial_port. Make sure it returns the result of usb_submit_urb and rename to the more descriptive usb_serial_generic_submit_read_urb. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: serial: refactor generic closeJohan Hovold2010-05-20
| | | | | | | | | Export usb_serial_generic_close so that drivers can easily kill the read and write urb and make sure that the write fifo is reset. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: serial: clear fifo on closeJohan Hovold2010-05-20
| | | | | | | | Make sure fifo is emptied on close. Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>