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/tty/hvc/hvcs.c | |
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/tty/hvc/hvcs.c')
-rw-r--r-- | drivers/tty/hvc/hvcs.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/tty/hvc/hvcs.c b/drivers/tty/hvc/hvcs.c index cab5c7adf8e8..877635733952 100644 --- a/drivers/tty/hvc/hvcs.c +++ b/drivers/tty/hvc/hvcs.c | |||
@@ -330,12 +330,12 @@ static int hvcs_open(struct tty_struct *tty, struct file *filp); | |||
330 | static void hvcs_close(struct tty_struct *tty, struct file *filp); | 330 | static void hvcs_close(struct tty_struct *tty, struct file *filp); |
331 | static void hvcs_hangup(struct tty_struct * tty); | 331 | static void hvcs_hangup(struct tty_struct * tty); |
332 | 332 | ||
333 | static int __devinit hvcs_probe(struct vio_dev *dev, | 333 | static int hvcs_probe(struct vio_dev *dev, |
334 | const struct vio_device_id *id); | 334 | const struct vio_device_id *id); |
335 | static int __devexit hvcs_remove(struct vio_dev *dev); | 335 | static int hvcs_remove(struct vio_dev *dev); |
336 | static int __init hvcs_module_init(void); | 336 | static int __init hvcs_module_init(void); |
337 | static void __exit hvcs_module_exit(void); | 337 | static void __exit hvcs_module_exit(void); |
338 | static int __devinit hvcs_initialize(void); | 338 | static int hvcs_initialize(void); |
339 | 339 | ||
340 | #define HVCS_SCHED_READ 0x00000001 | 340 | #define HVCS_SCHED_READ 0x00000001 |
341 | #define HVCS_QUICK_READ 0x00000002 | 341 | #define HVCS_QUICK_READ 0x00000002 |
@@ -676,7 +676,7 @@ static int khvcsd(void *unused) | |||
676 | return 0; | 676 | return 0; |
677 | } | 677 | } |
678 | 678 | ||
679 | static struct vio_device_id hvcs_driver_table[] __devinitdata= { | 679 | static struct vio_device_id hvcs_driver_table[] = { |
680 | {"serial-server", "hvterm2"}, | 680 | {"serial-server", "hvterm2"}, |
681 | { "", "" } | 681 | { "", "" } |
682 | }; | 682 | }; |
@@ -756,7 +756,7 @@ static int hvcs_get_index(void) | |||
756 | return -1; | 756 | return -1; |
757 | } | 757 | } |
758 | 758 | ||
759 | static int __devinit hvcs_probe( | 759 | static int hvcs_probe( |
760 | struct vio_dev *dev, | 760 | struct vio_dev *dev, |
761 | const struct vio_device_id *id) | 761 | const struct vio_device_id *id) |
762 | { | 762 | { |
@@ -835,7 +835,7 @@ static int __devinit hvcs_probe( | |||
835 | return 0; | 835 | return 0; |
836 | } | 836 | } |
837 | 837 | ||
838 | static int __devexit hvcs_remove(struct vio_dev *dev) | 838 | static int hvcs_remove(struct vio_dev *dev) |
839 | { | 839 | { |
840 | struct hvcs_struct *hvcsd = dev_get_drvdata(&dev->dev); | 840 | struct hvcs_struct *hvcsd = dev_get_drvdata(&dev->dev); |
841 | unsigned long flags; | 841 | unsigned long flags; |
@@ -874,7 +874,7 @@ static int __devexit hvcs_remove(struct vio_dev *dev) | |||
874 | static struct vio_driver hvcs_vio_driver = { | 874 | static struct vio_driver hvcs_vio_driver = { |
875 | .id_table = hvcs_driver_table, | 875 | .id_table = hvcs_driver_table, |
876 | .probe = hvcs_probe, | 876 | .probe = hvcs_probe, |
877 | .remove = __devexit_p(hvcs_remove), | 877 | .remove = hvcs_remove, |
878 | .name = hvcs_driver_name, | 878 | .name = hvcs_driver_name, |
879 | }; | 879 | }; |
880 | 880 | ||
@@ -1478,7 +1478,7 @@ static void hvcs_free_index_list(void) | |||
1478 | hvcs_index_count = 0; | 1478 | hvcs_index_count = 0; |
1479 | } | 1479 | } |
1480 | 1480 | ||
1481 | static int __devinit hvcs_initialize(void) | 1481 | static int hvcs_initialize(void) |
1482 | { | 1482 | { |
1483 | int rc, num_ttys_to_alloc; | 1483 | int rc, num_ttys_to_alloc; |
1484 | 1484 | ||
@@ -1496,8 +1496,10 @@ static int __devinit hvcs_initialize(void) | |||
1496 | num_ttys_to_alloc = hvcs_parm_num_devs; | 1496 | num_ttys_to_alloc = hvcs_parm_num_devs; |
1497 | 1497 | ||
1498 | hvcs_tty_driver = alloc_tty_driver(num_ttys_to_alloc); | 1498 | hvcs_tty_driver = alloc_tty_driver(num_ttys_to_alloc); |
1499 | if (!hvcs_tty_driver) | 1499 | if (!hvcs_tty_driver) { |
1500 | mutex_unlock(&hvcs_init_mutex); | ||
1500 | return -ENOMEM; | 1501 | return -ENOMEM; |
1502 | } | ||
1501 | 1503 | ||
1502 | if (hvcs_alloc_index_list(num_ttys_to_alloc)) { | 1504 | if (hvcs_alloc_index_list(num_ttys_to_alloc)) { |
1503 | rc = -ENOMEM; | 1505 | rc = -ENOMEM; |