[PATCH] Char: istallion, move init and exit code
Let's have these function at the end of the driver and expand stli_init directly into module_init fucntion, since there is nothing other to have there. Signed-off-by: Jiri Slaby <jirislaby@gmail.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
140e92abe2
commit
f1cc54f8c6
|
@ -595,7 +595,6 @@ static struct pci_driver stli_pcidriver;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int stli_parsebrd(struct stlconf *confp, char **argp);
|
static int stli_parsebrd(struct stlconf *confp, char **argp);
|
||||||
static int stli_init(void);
|
|
||||||
static int stli_open(struct tty_struct *tty, struct file *filp);
|
static int stli_open(struct tty_struct *tty, struct file *filp);
|
||||||
static void stli_close(struct tty_struct *tty, struct file *filp);
|
static void stli_close(struct tty_struct *tty, struct file *filp);
|
||||||
static int stli_write(struct tty_struct *tty, const unsigned char *buf, int count);
|
static int stli_write(struct tty_struct *tty, const unsigned char *buf, int count);
|
||||||
|
@ -744,65 +743,6 @@ static void stli_cleanup_ports(struct stlibrd *brdp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Loadable module initialization stuff.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static int __init istallion_module_init(void)
|
|
||||||
{
|
|
||||||
stli_init();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static void __exit istallion_module_exit(void)
|
|
||||||
{
|
|
||||||
struct stlibrd *brdp;
|
|
||||||
unsigned int j;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
printk(KERN_INFO "Unloading %s: version %s\n", stli_drvtitle,
|
|
||||||
stli_drvversion);
|
|
||||||
|
|
||||||
pci_unregister_driver(&stli_pcidriver);
|
|
||||||
/*
|
|
||||||
* Free up all allocated resources used by the ports. This includes
|
|
||||||
* memory and interrupts.
|
|
||||||
*/
|
|
||||||
if (stli_timeron) {
|
|
||||||
stli_timeron = 0;
|
|
||||||
del_timer_sync(&stli_timerlist);
|
|
||||||
}
|
|
||||||
|
|
||||||
i = tty_unregister_driver(stli_serial);
|
|
||||||
put_tty_driver(stli_serial);
|
|
||||||
for (j = 0; j < 4; j++)
|
|
||||||
class_device_destroy(istallion_class, MKDEV(STL_SIOMEMMAJOR, j));
|
|
||||||
class_destroy(istallion_class);
|
|
||||||
if ((i = unregister_chrdev(STL_SIOMEMMAJOR, "staliomem")))
|
|
||||||
printk("STALLION: failed to un-register serial memory device, "
|
|
||||||
"errno=%d\n", -i);
|
|
||||||
|
|
||||||
kfree(stli_txcookbuf);
|
|
||||||
|
|
||||||
for (j = 0; (j < stli_nrbrds); j++) {
|
|
||||||
if ((brdp = stli_brds[j]) == NULL || (brdp->state & BST_PROBED))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
stli_cleanup_ports(brdp);
|
|
||||||
|
|
||||||
iounmap(brdp->membase);
|
|
||||||
if (brdp->iosize > 0)
|
|
||||||
release_region(brdp->iobase, brdp->iosize);
|
|
||||||
kfree(brdp);
|
|
||||||
stli_brds[j] = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module_init(istallion_module_init);
|
|
||||||
module_exit(istallion_module_exit);
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -4601,10 +4541,14 @@ static const struct tty_operations stli_ops = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
/*
|
||||||
|
* Loadable module initialization stuff.
|
||||||
|
*/
|
||||||
|
|
||||||
static int __init stli_init(void)
|
static int __init istallion_module_init(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
printk(KERN_INFO "%s: version %s\n", stli_drvtitle, stli_drvversion);
|
printk(KERN_INFO "%s: version %s\n", stli_drvtitle, stli_drvversion);
|
||||||
|
|
||||||
spin_lock_init(&stli_lock);
|
spin_lock_init(&stli_lock);
|
||||||
|
@ -4661,3 +4605,50 @@ static int __init stli_init(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void __exit istallion_module_exit(void)
|
||||||
|
{
|
||||||
|
struct stlibrd *brdp;
|
||||||
|
unsigned int j;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
printk(KERN_INFO "Unloading %s: version %s\n", stli_drvtitle,
|
||||||
|
stli_drvversion);
|
||||||
|
|
||||||
|
pci_unregister_driver(&stli_pcidriver);
|
||||||
|
/*
|
||||||
|
* Free up all allocated resources used by the ports. This includes
|
||||||
|
* memory and interrupts.
|
||||||
|
*/
|
||||||
|
if (stli_timeron) {
|
||||||
|
stli_timeron = 0;
|
||||||
|
del_timer_sync(&stli_timerlist);
|
||||||
|
}
|
||||||
|
|
||||||
|
i = tty_unregister_driver(stli_serial);
|
||||||
|
put_tty_driver(stli_serial);
|
||||||
|
for (j = 0; j < 4; j++)
|
||||||
|
class_device_destroy(istallion_class, MKDEV(STL_SIOMEMMAJOR, j));
|
||||||
|
class_destroy(istallion_class);
|
||||||
|
if ((i = unregister_chrdev(STL_SIOMEMMAJOR, "staliomem")))
|
||||||
|
printk("STALLION: failed to un-register serial memory device, "
|
||||||
|
"errno=%d\n", -i);
|
||||||
|
|
||||||
|
kfree(stli_txcookbuf);
|
||||||
|
|
||||||
|
for (j = 0; (j < stli_nrbrds); j++) {
|
||||||
|
if ((brdp = stli_brds[j]) == NULL || (brdp->state & BST_PROBED))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
stli_cleanup_ports(brdp);
|
||||||
|
|
||||||
|
iounmap(brdp->membase);
|
||||||
|
if (brdp->iosize > 0)
|
||||||
|
release_region(brdp->iobase, brdp->iosize);
|
||||||
|
kfree(brdp);
|
||||||
|
stli_brds[j] = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module_init(istallion_module_init);
|
||||||
|
module_exit(istallion_module_exit);
|
||||||
|
|
Loading…
Reference in New Issue