summaryrefslogtreecommitdiffstats
path: root/drivers/misc
diff options
context:
space:
mode:
authorJiri Slaby <jslaby@suse.cz>2012-08-07 21:47:35 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-08-10 13:29:57 -0700
commit5bd420009716f3348610fdf9c6307f0db583ba04 (patch)
tree59041467e7ab06f8e005b4004a7e29e9ab3b239d /drivers/misc
parentfbf1c247dac8574ef3973adce4b20d40ff22214e (diff)
downloadlinux-stable-5bd420009716f3348610fdf9c6307f0db583ba04.tar.gz
linux-stable-5bd420009716f3348610fdf9c6307f0db583ba04.tar.bz2
linux-stable-5bd420009716f3348610fdf9c6307f0db583ba04.zip
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>
Diffstat (limited to 'drivers/misc')
-rw-r--r--drivers/misc/pti.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/misc/pti.c b/drivers/misc/pti.c
index 90de855abb90..fe76f9dca1de 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);