19 #define DBG_MINIMUM (DL_LOG + DL_FTL + DL_ERR)
20 #define DBG_DEFAULT (DBG_MINIMUM + DL_XLOG + DL_REG)
28 static dword notify_handle;
32 static void no_printf(
unsigned char *
x, ...)
42 static void stop_dbg(
void)
45 memset(&MAdapter, 0,
sizeof(MAdapter));
67 diva_os_enter_spin_lock(&ll_lock, &old_irql,
"find card");
71 diva_os_leave_spin_lock(&ll_lock, &old_irql,
76 diva_os_leave_spin_lock(&ll_lock, &old_irql,
"find card");
90 if (!(card = diva_os_malloc(0,
sizeof(
udiva_card)))) {
91 DBG_ERR((
"cannot get buffer for card"));
101 card->
Id = adapter_nr;
103 diva_os_enter_spin_lock(&ll_lock, &old_irql,
"add card");
105 diva_os_leave_spin_lock(&ll_lock, &old_irql,
"add card");
107 DBG_ERR((
"could not create user mode idi card %d",
109 diva_os_free(0, card);
121 if (!(card = find_card_in_list(d))) {
122 DBG_ERR((
"cannot find card to remove"));
126 diva_os_enter_spin_lock(&ll_lock, &old_irql,
"remove card");
128 diva_os_leave_spin_lock(&ll_lock, &old_irql,
"remove card");
129 DBG_LOG((
"idi proc entry removed for card %d", card->
Id));
130 diva_os_free(0, card);
136 static void __exit remove_all_idi_proc(
void)
142 diva_os_enter_spin_lock(&ll_lock, &old_irql,
"remove all");
143 if (!list_empty(&cards)) {
146 diva_os_leave_spin_lock(&ll_lock, &old_irql,
"remove all");
148 diva_os_free(0, card);
151 diva_os_leave_spin_lock(&ll_lock, &old_irql,
"remove all");
161 DBG_ERR((
"Notification about IDI_DADAPTER change ! Oops."));
167 memcpy(&MAdapter, adapter,
sizeof(MAdapter));
171 }
else if ((adapter->
type > 0) && (adapter->
type < 16)) {
173 um_remove_card(adapter);
175 um_new_card(adapter);
184 static int __init connect_didd(
void)
196 memcpy(&DAdapter, &DIDD_Table[x],
sizeof(DAdapter));
200 req.
didd_notify.info.callback = (
void *)didd_callback;
209 memcpy(&MAdapter, &DIDD_Table[x],
sizeof(DAdapter));
212 }
else if ((DIDD_Table[x].
type > 0)
213 && (DIDD_Table[
x].
type < 16)) {
214 um_new_card(&DIDD_Table[x]);
228 static void __exit disconnect_didd(
void)
245 diva_os_initialize_spin_lock(&ll_lock,
"idifunc");
248 DBG_ERR((
"init: init failed."));
252 if (!connect_didd()) {
254 DBG_ERR((
"init: failed to connect to DIDD."));
267 remove_all_idi_proc();