diff options
author | Jiri Slaby <jslaby@suse.cz> | 2012-08-07 19:47:35 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-08-10 20:29:57 (GMT) |
commit | 5bd420009716f3348610fdf9c6307f0db583ba04 (patch) | |
tree | 59041467e7ab06f8e005b4004a7e29e9ab3b239d | |
parent | fbf1c247dac8574ef3973adce4b20d40ff22214e (diff) | |
download | linux-5bd420009716f3348610fdf9c6307f0db583ba04.tar.xz |
misc: pti, fix tty_port count
We now have *one* tty_port for both TTYs. How this was supposed to
work? Change it to have a tty_port for each of TTYs.
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: J Freyensee <james_p_freyensee@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/misc/pti.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/misc/pti.c b/drivers/misc/pti.c index 90de855..fe76f9d 100644 --- a/drivers/misc/pti.c +++ b/drivers/misc/pti.c @@ -60,7 +60,7 @@ struct pti_tty { }; struct pti_dev { - struct tty_port port; + struct tty_port port[PTITTY_MINOR_NUM]; unsigned long pti_addr; unsigned long aperture_base; void __iomem *pti_ioaddr; @@ -427,7 +427,7 @@ static int pti_tty_driver_open(struct tty_struct *tty, struct file *filp) * also removes a locking requirement for the actual write * procedure. */ - return tty_port_open(&drv_data->port, tty, filp); + return tty_port_open(&drv_data->port[tty->index], tty, filp); } /** @@ -443,7 +443,7 @@ static int pti_tty_driver_open(struct tty_struct *tty, struct file *filp) */ static void pti_tty_driver_close(struct tty_struct *tty, struct file *filp) { - tty_port_close(&drv_data->port, tty, filp); + tty_port_close(&drv_data->port[tty->index], tty, filp); } /** @@ -799,6 +799,7 @@ static const struct tty_port_operations tty_port_ops = { static int __devinit pti_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { + unsigned int a; int retval = -EINVAL; int pci_bar = 1; @@ -850,11 +851,13 @@ static int __devinit pti_pci_probe(struct pci_dev *pdev, pci_set_drvdata(pdev, drv_data); - tty_port_init(&drv_data->port); - drv_data->port.ops = &tty_port_ops; + for (a = 0; a < PTITTY_MINOR_NUM; a++) { + struct tty_port *port = &drv_data->port[a]; + tty_port_init(port); + port->ops = &tty_port_ops; - tty_register_device(pti_tty_driver, 0, &pdev->dev); - tty_register_device(pti_tty_driver, 1, &pdev->dev); + tty_register_device(pti_tty_driver, a, &pdev->dev); + } register_console(&pti_console); |