diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-21 13:41:04 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-21 13:41:04 -0800 |
commit | 21eaab6d19ed43e82ed39c8deb7f192134fb4a0e (patch) | |
tree | d995205afdcb7f47462bcd28067dc0c4ab0b7b02 /drivers/ipack | |
parent | 74e1a2a39355b2d3ae8c60c78d8add162c6d7183 (diff) | |
parent | 9e17df37d710f8998e9cb10a548304fe33d4a5c2 (diff) | |
download | linux-21eaab6d19ed43e82ed39c8deb7f192134fb4a0e.tar.bz2 |
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.
Diffstat (limited to 'drivers/ipack')
-rw-r--r-- | drivers/ipack/devices/Kconfig | 2 | ||||
-rw-r--r-- | drivers/ipack/devices/ipoctal.c | 19 |
2 files changed, 8 insertions, 13 deletions
diff --git a/drivers/ipack/devices/Kconfig b/drivers/ipack/devices/Kconfig index 0b82fdc198c0..907a8cb48f2a 100644 --- a/drivers/ipack/devices/Kconfig +++ b/drivers/ipack/devices/Kconfig @@ -1,6 +1,6 @@ config SERIAL_IPOCTAL tristate "IndustryPack IP-OCTAL uart support" - depends on IPACK_BUS + depends on IPACK_BUS && TTY help This driver supports the IPOCTAL serial port device for the IndustryPack bus. default n diff --git a/drivers/ipack/devices/ipoctal.c b/drivers/ipack/devices/ipoctal.c index 576d53d92677..ab20a0851dd2 100644 --- a/drivers/ipack/devices/ipoctal.c +++ b/drivers/ipack/devices/ipoctal.c @@ -133,9 +133,9 @@ static int ipoctal_get_icount(struct tty_struct *tty, return 0; } -static void ipoctal_irq_rx(struct ipoctal_channel *channel, - struct tty_struct *tty, u8 sr) +static void ipoctal_irq_rx(struct ipoctal_channel *channel, u8 sr) { + struct tty_port *port = &channel->tty_port; unsigned char value; unsigned char flag = TTY_NORMAL; u8 isr; @@ -149,7 +149,7 @@ static void ipoctal_irq_rx(struct ipoctal_channel *channel, if (sr & SR_OVERRUN_ERROR) { channel->stats.overrun_err++; /* Overrun doesn't affect the current character*/ - tty_insert_flip_char(tty, 0, TTY_OVERRUN); + tty_insert_flip_char(port, 0, TTY_OVERRUN); } if (sr & SR_PARITY_ERROR) { channel->stats.parity_err++; @@ -165,7 +165,7 @@ static void ipoctal_irq_rx(struct ipoctal_channel *channel, flag = TTY_BREAK; } } - tty_insert_flip_char(tty, value, flag); + tty_insert_flip_char(port, value, flag); /* Check if there are more characters in RX FIFO * If there are more, the isr register for this channel @@ -175,7 +175,7 @@ static void ipoctal_irq_rx(struct ipoctal_channel *channel, sr = ioread8(&channel->regs->r.sr); } while (isr & channel->isr_rx_rdy_mask); - tty_flip_buffer_push(tty); + tty_flip_buffer_push(port); } static void ipoctal_irq_tx(struct ipoctal_channel *channel) @@ -208,15 +208,11 @@ static void ipoctal_irq_tx(struct ipoctal_channel *channel) static void ipoctal_irq_channel(struct ipoctal_channel *channel) { u8 isr, sr; - struct tty_struct *tty; /* If there is no client, skip the check */ if (!atomic_read(&channel->open)) return; - tty = tty_port_tty_get(&channel->tty_port); - if (!tty) - return; /* The HW is organized in pair of channels. See which register we need * to read from */ isr = ioread8(&channel->block_regs->r.isr); @@ -235,14 +231,13 @@ static void ipoctal_irq_channel(struct ipoctal_channel *channel) /* RX data */ if ((isr & channel->isr_rx_rdy_mask) && (sr & SR_RX_READY)) - ipoctal_irq_rx(channel, tty, sr); + ipoctal_irq_rx(channel, sr); /* TX of each character */ if ((isr & channel->isr_tx_rdy_mask) && (sr & SR_TX_READY)) ipoctal_irq_tx(channel); - tty_flip_buffer_push(tty); - tty_kref_put(tty); + tty_flip_buffer_push(&channel->tty_port); } static irqreturn_t ipoctal_irq_handler(void *arg) |