Commit 76d41df3 authored by Jiri Slaby's avatar Jiri Slaby Committed by Greg Kroah-Hartman

Char: rocket, fix dynamic_dev tty

patch ac6aec2f in mainline.

- register_device unconditionally (non-pci dependent) to have also isa
  devices in /dev
- unregister devices on module removal
- don't set TTY_DRIVER_DYNAMIC_DEV twice (removed the one dependent on some
  macro)

This is the substantial part of the patch and the previous point is for
not checking which devices to unregister and which not (simply register
and unregister all found no matter on which bus they are plugged).
Signed-off-by: default avatarJiri Slaby <jirislaby@gmail.com>
Cc: Ferenc Wagner <wferi@niif.hu>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 236fc439
...@@ -699,8 +699,8 @@ static void init_r_port(int board, int aiop, int chan, struct pci_dev *pci_dev) ...@@ -699,8 +699,8 @@ static void init_r_port(int board, int aiop, int chan, struct pci_dev *pci_dev)
spin_lock_init(&info->slock); spin_lock_init(&info->slock);
mutex_init(&info->write_mtx); mutex_init(&info->write_mtx);
rp_table[line] = info; rp_table[line] = info;
if (pci_dev) tty_register_device(rocket_driver, line, pci_dev ? &pci_dev->dev :
tty_register_device(rocket_driver, line, &pci_dev->dev); NULL);
} }
/* /*
...@@ -2434,7 +2434,7 @@ static int __init rp_init(void) ...@@ -2434,7 +2434,7 @@ static int __init rp_init(void)
rocket_driver->init_termios.c_ispeed = 9600; rocket_driver->init_termios.c_ispeed = 9600;
rocket_driver->init_termios.c_ospeed = 9600; rocket_driver->init_termios.c_ospeed = 9600;
#ifdef ROCKET_SOFT_FLOW #ifdef ROCKET_SOFT_FLOW
rocket_driver->flags |= TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV; rocket_driver->flags |= TTY_DRIVER_REAL_RAW;
#endif #endif
tty_set_operations(rocket_driver, &rocket_ops); tty_set_operations(rocket_driver, &rocket_ops);
...@@ -2491,10 +2491,14 @@ static void rp_cleanup_module(void) ...@@ -2491,10 +2491,14 @@ static void rp_cleanup_module(void)
if (retval) if (retval)
printk(KERN_INFO "Error %d while trying to unregister " printk(KERN_INFO "Error %d while trying to unregister "
"rocketport driver\n", -retval); "rocketport driver\n", -retval);
put_tty_driver(rocket_driver);
for (i = 0; i < MAX_RP_PORTS; i++) for (i = 0; i < MAX_RP_PORTS; i++)
kfree(rp_table[i]); if (rp_table[i]) {
tty_unregister_device(rocket_driver, i);
kfree(rp_table[i]);
}
put_tty_driver(rocket_driver);
for (i = 0; i < NUM_BOARDS; i++) { for (i = 0; i < NUM_BOARDS; i++) {
if (rcktpt_io_addr[i] <= 0 || is_PCI[i]) if (rcktpt_io_addr[i] <= 0 || is_PCI[i])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment