misc: pti, fix tty_port count
authorJiri Slaby <jslaby@suse.cz>
Tue, 7 Aug 2012 19:47:35 +0000 (21:47 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Aug 2012 20:29:57 +0000 (13:29 -0700)
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>
drivers/misc/pti.c

index 90de855abb90d9bdd79271a0970d3f43c1c26aed..fe76f9dca1de4e9443ffe820a0f526626b74bc51 100644 (file)
@@ -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);