3 * Copyright 1999-2003 Digi International (www.digi.com)
5 * James Puzzo <jamesp at digi dot com>
6 * Scott Kilau <Scott_Kilau at digi dot com>
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2, or (at your option)
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED; without even the
15 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
16 * PURPOSE. See the GNU General Public License for more details.
21 * Driver specific includes
23 #include <linux/module.h>
24 #include <linux/slab.h>
25 #include <linux/tty.h>
26 #include <linux/init.h>
31 #include "dgrp_common.h"
34 MODULE_LICENSE("GPL");
35 MODULE_AUTHOR("Digi International, http://www.digi.com");
36 MODULE_DESCRIPTION("RealPort driver for Digi's ethernet-based serial connectivity product line");
37 MODULE_VERSION(DIGI_VERSION
);
39 struct list_head nd_struct_list
;
40 struct dgrp_poll_data dgrp_poll_data
;
42 int dgrp_register_cudevices
= 1;/* Turn on/off registering legacy cu devices */
43 int dgrp_register_prdevices
= 1;/* Turn on/off registering transparent print */
44 int dgrp_poll_tick
= 20; /* Poll interval - in ms */
46 module_param_named(register_cudevices
, dgrp_register_cudevices
, int, 0644);
47 MODULE_PARM_DESC(register_cudevices
, "Turn on/off registering legacy cu devices");
49 module_param_named(register_prdevices
, dgrp_register_prdevices
, int, 0644);
50 MODULE_PARM_DESC(register_prdevices
, "Turn on/off registering transparent print devices");
52 module_param_named(pollrate
, dgrp_poll_tick
, int, 0644);
53 MODULE_PARM_DESC(pollrate
, "Poll interval in ms");
55 /* Driver load/unload functions */
56 static int dgrp_init_module(void);
57 static void dgrp_cleanup_module(void);
59 module_init(dgrp_init_module
);
60 module_exit(dgrp_cleanup_module
);
65 * Module load. This is where it all starts.
67 static int dgrp_init_module(void)
71 INIT_LIST_HEAD(&nd_struct_list
);
73 spin_lock_init(&dgrp_poll_data
.poll_lock
);
74 init_timer(&dgrp_poll_data
.timer
);
75 dgrp_poll_data
.poll_tick
= dgrp_poll_tick
;
76 dgrp_poll_data
.timer
.function
= dgrp_poll_handler
;
77 dgrp_poll_data
.timer
.data
= (unsigned long) &dgrp_poll_data
;
79 ret
= dgrp_create_class_sysfs_files();
90 * Module unload. This is where it all ends.
92 static void dgrp_cleanup_module(void)
94 struct nd_struct
*nd
, *next
;
97 * Attempting to free resources in backwards
98 * order of allocation, in case that helps
99 * memory pool fragmentation.
101 dgrp_unregister_proc();
103 dgrp_remove_class_sysfs_files();
106 list_for_each_entry_safe(nd
, next
, &nd_struct_list
, list
) {