diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-11 17:08:47 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-11 17:08:47 -0500 |
commit | c6bd5bcc4983f1a2d2f87a3769bf309482ee8c04 (patch) | |
tree | 2ff9c4496dc2258d601a1bcd82040470704dae3b /drivers/mmc/card | |
parent | 8966961b31c251b854169e9886394c2a20f2cea7 (diff) | |
parent | b0ab02361167faa82198b783a8d555eb6f58901c (diff) |
Merge tag 'tty-3.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
Pull TTY/Serial merge from Greg Kroah-Hartman:
"Here's the big tty/serial tree set of changes for 3.8-rc1.
Contained in here is a bunch more reworks of the tty port layer from
Jiri and bugfixes from Alan, along with a number of other tty and
serial driver updates by the various driver authors.
Also, Jiri has been coerced^Wconvinced to be the co-maintainer of the
TTY layer, which is much appreciated by me.
All of these have been in the linux-next tree for a while.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>"
Fixed up some trivial conflicts in the staging tree, due to the fwserial
driver having come in both ways (but fixed up a bit in the serial tree),
and the ioctl handling in the dgrp driver having been done slightly
differently (staging tree got that one right, and removed both
TIOCGSOFTCAR and TIOCSSOFTCAR).
* tag 'tty-3.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (146 commits)
staging: sb105x: fix potential NULL pointer dereference in mp_chars_in_buffer()
staging/fwserial: Remove superfluous free
staging/fwserial: Use WARN_ONCE when port table is corrupted
staging/fwserial: Destruct embedded tty_port on teardown
staging/fwserial: Fix build breakage when !CONFIG_BUG
staging: fwserial: Add TTY-over-Firewire serial driver
drivers/tty/serial/serial_core.c: clean up HIGH_BITS_OFFSET usage
staging: dgrp: dgrp_tty.c: Audit the return values of get/put_user()
staging: dgrp: dgrp_tty.c: Remove the TIOCSSOFTCAR ioctl handler from dgrp driver
serial: ifx6x60: Add modem power off function in the platform reboot process
serial: mxs-auart: unmap the scatter list before we copy the data
serial: mxs-auart: disable the Receive Timeout Interrupt when DMA is enabled
serial: max310x: Setup missing "can_sleep" field for GPIO
tty/serial: fix ifx6x60.c declaration warning
serial: samsung: add devicetree properties for non-Exynos SoCs
serial: samsung: fix potential soft lockup during uart write
tty: vt: Remove redundant null check before kfree.
tty/8250 Add check for pci_ioremap_bar failure
tty/8250 Add support for Commtech's Fastcom Async-335 and Fastcom Async-PCIe cards
tty/8250 Add XR17D15x devices to the exar_handle_irq override
...
Diffstat (limited to 'drivers/mmc/card')
-rw-r--r-- | drivers/mmc/card/sdio_uart.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/drivers/mmc/card/sdio_uart.c b/drivers/mmc/card/sdio_uart.c index d2339ea37815..bd57a11acc79 100644 --- a/drivers/mmc/card/sdio_uart.c +++ b/drivers/mmc/card/sdio_uart.c | |||
@@ -66,8 +66,6 @@ struct uart_icount { | |||
66 | 66 | ||
67 | struct sdio_uart_port { | 67 | struct sdio_uart_port { |
68 | struct tty_port port; | 68 | struct tty_port port; |
69 | struct kref kref; | ||
70 | struct tty_struct *tty; | ||
71 | unsigned int index; | 69 | unsigned int index; |
72 | struct sdio_func *func; | 70 | struct sdio_func *func; |
73 | struct mutex func_lock; | 71 | struct mutex func_lock; |
@@ -93,7 +91,6 @@ static int sdio_uart_add_port(struct sdio_uart_port *port) | |||
93 | { | 91 | { |
94 | int index, ret = -EBUSY; | 92 | int index, ret = -EBUSY; |
95 | 93 | ||
96 | kref_init(&port->kref); | ||
97 | mutex_init(&port->func_lock); | 94 | mutex_init(&port->func_lock); |
98 | spin_lock_init(&port->write_lock); | 95 | spin_lock_init(&port->write_lock); |
99 | if (kfifo_alloc(&port->xmit_fifo, FIFO_SIZE, GFP_KERNEL)) | 96 | if (kfifo_alloc(&port->xmit_fifo, FIFO_SIZE, GFP_KERNEL)) |
@@ -123,23 +120,15 @@ static struct sdio_uart_port *sdio_uart_port_get(unsigned index) | |||
123 | spin_lock(&sdio_uart_table_lock); | 120 | spin_lock(&sdio_uart_table_lock); |
124 | port = sdio_uart_table[index]; | 121 | port = sdio_uart_table[index]; |
125 | if (port) | 122 | if (port) |
126 | kref_get(&port->kref); | 123 | tty_port_get(&port->port); |
127 | spin_unlock(&sdio_uart_table_lock); | 124 | spin_unlock(&sdio_uart_table_lock); |
128 | 125 | ||
129 | return port; | 126 | return port; |
130 | } | 127 | } |
131 | 128 | ||
132 | static void sdio_uart_port_destroy(struct kref *kref) | ||
133 | { | ||
134 | struct sdio_uart_port *port = | ||
135 | container_of(kref, struct sdio_uart_port, kref); | ||
136 | kfifo_free(&port->xmit_fifo); | ||
137 | kfree(port); | ||
138 | } | ||
139 | |||
140 | static void sdio_uart_port_put(struct sdio_uart_port *port) | 129 | static void sdio_uart_port_put(struct sdio_uart_port *port) |
141 | { | 130 | { |
142 | kref_put(&port->kref, sdio_uart_port_destroy); | 131 | tty_port_put(&port->port); |
143 | } | 132 | } |
144 | 133 | ||
145 | static void sdio_uart_port_remove(struct sdio_uart_port *port) | 134 | static void sdio_uart_port_remove(struct sdio_uart_port *port) |
@@ -737,6 +726,14 @@ static void sdio_uart_shutdown(struct tty_port *tport) | |||
737 | sdio_uart_release_func(port); | 726 | sdio_uart_release_func(port); |
738 | } | 727 | } |
739 | 728 | ||
729 | static void sdio_uart_port_destroy(struct tty_port *tport) | ||
730 | { | ||
731 | struct sdio_uart_port *port = | ||
732 | container_of(tport, struct sdio_uart_port, port); | ||
733 | kfifo_free(&port->xmit_fifo); | ||
734 | kfree(port); | ||
735 | } | ||
736 | |||
740 | /** | 737 | /** |
741 | * sdio_uart_install - install method | 738 | * sdio_uart_install - install method |
742 | * @driver: the driver in use (sdio_uart in our case) | 739 | * @driver: the driver in use (sdio_uart in our case) |
@@ -1045,6 +1042,7 @@ static const struct tty_port_operations sdio_uart_port_ops = { | |||
1045 | .carrier_raised = uart_carrier_raised, | 1042 | .carrier_raised = uart_carrier_raised, |
1046 | .shutdown = sdio_uart_shutdown, | 1043 | .shutdown = sdio_uart_shutdown, |
1047 | .activate = sdio_uart_activate, | 1044 | .activate = sdio_uart_activate, |
1045 | .destruct = sdio_uart_port_destroy, | ||
1048 | }; | 1046 | }; |
1049 | 1047 | ||
1050 | static const struct tty_operations sdio_uart_ops = { | 1048 | static const struct tty_operations sdio_uart_ops = { |