diff options
Diffstat (limited to 'drivers/tty')
-rw-r--r-- | drivers/tty/isicom.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/drivers/tty/isicom.c b/drivers/tty/isicom.c index 5f3ecbc2713..67f288d7e76 100644 --- a/drivers/tty/isicom.c +++ b/drivers/tty/isicom.c | |||
@@ -1610,10 +1610,15 @@ static int __devinit isicom_probe(struct pci_dev *pdev, | |||
1610 | if (retval < 0) | 1610 | if (retval < 0) |
1611 | goto errunri; | 1611 | goto errunri; |
1612 | 1612 | ||
1613 | for (index = 0; index < board->port_count; index++) | 1613 | for (index = 0; index < board->port_count; index++) { |
1614 | tty_port_register_device(&board->ports[index].port, | 1614 | struct tty_port *tport = &board->ports[index].port; |
1615 | isicom_normal, board->index * 16 + index, | 1615 | tty_port_init(tport); |
1616 | &pdev->dev); | 1616 | tport->ops = &isicom_port_ops; |
1617 | tport->close_delay = 50 * HZ/100; | ||
1618 | tport->closing_wait = 3000 * HZ/100; | ||
1619 | tty_port_register_device(tport, isicom_normal, | ||
1620 | board->index * 16 + index, &pdev->dev); | ||
1621 | } | ||
1617 | 1622 | ||
1618 | return 0; | 1623 | return 0; |
1619 | 1624 | ||
@@ -1635,8 +1640,10 @@ static void __devexit isicom_remove(struct pci_dev *pdev) | |||
1635 | struct isi_board *board = pci_get_drvdata(pdev); | 1640 | struct isi_board *board = pci_get_drvdata(pdev); |
1636 | unsigned int i; | 1641 | unsigned int i; |
1637 | 1642 | ||
1638 | for (i = 0; i < board->port_count; i++) | 1643 | for (i = 0; i < board->port_count; i++) { |
1639 | tty_unregister_device(isicom_normal, board->index * 16 + i); | 1644 | tty_unregister_device(isicom_normal, board->index * 16 + i); |
1645 | tty_port_destroy(&board->ports[i].port); | ||
1646 | } | ||
1640 | 1647 | ||
1641 | free_irq(board->irq, board); | 1648 | free_irq(board->irq, board); |
1642 | pci_release_region(pdev, 3); | 1649 | pci_release_region(pdev, 3); |
@@ -1655,13 +1662,9 @@ static int __init isicom_init(void) | |||
1655 | isi_card[idx].ports = port; | 1662 | isi_card[idx].ports = port; |
1656 | spin_lock_init(&isi_card[idx].card_lock); | 1663 | spin_lock_init(&isi_card[idx].card_lock); |
1657 | for (channel = 0; channel < 16; channel++, port++) { | 1664 | for (channel = 0; channel < 16; channel++, port++) { |
1658 | tty_port_init(&port->port); | ||
1659 | port->port.ops = &isicom_port_ops; | ||
1660 | port->magic = ISICOM_MAGIC; | 1665 | port->magic = ISICOM_MAGIC; |
1661 | port->card = &isi_card[idx]; | 1666 | port->card = &isi_card[idx]; |
1662 | port->channel = channel; | 1667 | port->channel = channel; |
1663 | port->port.close_delay = 50 * HZ/100; | ||
1664 | port->port.closing_wait = 3000 * HZ/100; | ||
1665 | port->status = 0; | 1668 | port->status = 0; |
1666 | /* . . . */ | 1669 | /* . . . */ |
1667 | } | 1670 | } |