@ -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 ) ;