Merge tag 'tty-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
Pull tty/serial patches from Greg Kroah-Hartman: "Here's the big tty/serial driver patches for 3.9-rc1. More tty port rework and fixes from Jiri here, as well as lots of individual serial driver updates and fixes. All of these have been in the linux-next tree for a while." * tag 'tty-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (140 commits) tty: mxser: improve error handling in mxser_probe() and mxser_module_init() serial: imx: fix uninitialized variable warning serial: tegra: assume CONFIG_OF TTY: do not update atime/mtime on read/write lguest: select CONFIG_TTY to build properly. ARM defconfigs: add missing inclusions of linux/platform_device.h fb/exynos: include platform_device.h ARM: sa1100/assabet: include platform_device.h directly serial: imx: Fix recursive locking bug pps: Fix build breakage from decoupling pps from tty tty: Remove ancient hardpps() pps: Additional cleanups in uart_handle_dcd_change pps: Move timestamp read into PPS code proper pps: Don't crash the machine when exiting will do pps: Fix a use-after free bug when unregistering a source. pps: Use pps_lookup_dev to reduce ldisc coupling pps: Add pps_lookup_dev() function tty: serial: uartlite: Support uartlite on big and little endian systems tty: serial: uartlite: Fix sparse and checkpatch warnings serial/arc-uart: Miscll DT related updates (Grant's review comments) ... Fix up trivial conflicts, mostly just due to the TTY config option clashing with the EXPERIMENTAL removal.
This commit is contained in:
@@ -201,8 +201,8 @@ static int closing_wait = EDGE_CLOSING_WAIT;
|
||||
static bool ignore_cpu_rev;
|
||||
static int default_uart_mode; /* RS232 */
|
||||
|
||||
static void edge_tty_recv(struct device *dev, struct tty_struct *tty,
|
||||
unsigned char *data, int length);
|
||||
static void edge_tty_recv(struct usb_serial_port *port, unsigned char *data,
|
||||
int length);
|
||||
|
||||
static void stop_read(struct edgeport_port *edge_port);
|
||||
static int restart_read(struct edgeport_port *edge_port);
|
||||
@@ -1484,7 +1484,6 @@ static void handle_new_lsr(struct edgeport_port *edge_port, int lsr_data,
|
||||
struct async_icount *icount;
|
||||
__u8 new_lsr = (__u8)(lsr & (__u8)(LSR_OVER_ERR | LSR_PAR_ERR |
|
||||
LSR_FRM_ERR | LSR_BREAK));
|
||||
struct tty_struct *tty;
|
||||
|
||||
dev_dbg(&edge_port->port->dev, "%s - %02x\n", __func__, new_lsr);
|
||||
|
||||
@@ -1498,13 +1497,8 @@ static void handle_new_lsr(struct edgeport_port *edge_port, int lsr_data,
|
||||
new_lsr &= (__u8)(LSR_OVER_ERR | LSR_BREAK);
|
||||
|
||||
/* Place LSR data byte into Rx buffer */
|
||||
if (lsr_data) {
|
||||
tty = tty_port_tty_get(&edge_port->port->port);
|
||||
if (tty) {
|
||||
edge_tty_recv(&edge_port->port->dev, tty, &data, 1);
|
||||
tty_kref_put(tty);
|
||||
}
|
||||
}
|
||||
if (lsr_data)
|
||||
edge_tty_recv(edge_port->port, &data, 1);
|
||||
|
||||
/* update input line counters */
|
||||
icount = &edge_port->icount;
|
||||
@@ -1620,7 +1614,6 @@ static void edge_bulk_in_callback(struct urb *urb)
|
||||
struct edgeport_port *edge_port = urb->context;
|
||||
struct device *dev = &edge_port->port->dev;
|
||||
unsigned char *data = urb->transfer_buffer;
|
||||
struct tty_struct *tty;
|
||||
int retval = 0;
|
||||
int port_number;
|
||||
int status = urb->status;
|
||||
@@ -1659,17 +1652,16 @@ static void edge_bulk_in_callback(struct urb *urb)
|
||||
++data;
|
||||
}
|
||||
|
||||
tty = tty_port_tty_get(&edge_port->port->port);
|
||||
if (tty && urb->actual_length) {
|
||||
if (urb->actual_length) {
|
||||
usb_serial_debug_data(dev, __func__, urb->actual_length, data);
|
||||
if (edge_port->close_pending)
|
||||
dev_dbg(dev, "%s - close pending, dropping data on the floor\n",
|
||||
__func__);
|
||||
else
|
||||
edge_tty_recv(dev, tty, data, urb->actual_length);
|
||||
edge_tty_recv(edge_port->port, data,
|
||||
urb->actual_length);
|
||||
edge_port->icount.rx += urb->actual_length;
|
||||
}
|
||||
tty_kref_put(tty);
|
||||
|
||||
exit:
|
||||
/* continue read unless stopped */
|
||||
@@ -1684,16 +1676,16 @@ exit:
|
||||
dev_err(dev, "%s - usb_submit_urb failed with result %d\n", __func__, retval);
|
||||
}
|
||||
|
||||
static void edge_tty_recv(struct device *dev, struct tty_struct *tty,
|
||||
unsigned char *data, int length)
|
||||
static void edge_tty_recv(struct usb_serial_port *port, unsigned char *data,
|
||||
int length)
|
||||
{
|
||||
int queued;
|
||||
|
||||
queued = tty_insert_flip_string(tty, data, length);
|
||||
queued = tty_insert_flip_string(&port->port, data, length);
|
||||
if (queued < length)
|
||||
dev_err(dev, "%s - dropping data, %d bytes lost\n",
|
||||
dev_err(&port->dev, "%s - dropping data, %d bytes lost\n",
|
||||
__func__, length - queued);
|
||||
tty_flip_buffer_push(tty);
|
||||
tty_flip_buffer_push(&port->port);
|
||||
}
|
||||
|
||||
static void edge_bulk_out_callback(struct urb *urb)
|
||||
|
Reference in New Issue
Block a user