Lines Matching refs:ctr
79 capi_ctr_get(struct capi_ctr *ctr) in capi_ctr_get() argument
81 if (!try_module_get(ctr->owner)) in capi_ctr_get()
83 return ctr; in capi_ctr_get()
87 capi_ctr_put(struct capi_ctr *ctr) in capi_ctr_put() argument
89 module_put(ctr->owner); in capi_ctr_put()
160 register_appl(struct capi_ctr *ctr, u16 applid, capi_register_params *rparam) in register_appl() argument
162 ctr = capi_ctr_get(ctr); in register_appl()
164 if (ctr) in register_appl()
165 ctr->register_appl(ctr, applid, rparam); in register_appl()
172 static void release_appl(struct capi_ctr *ctr, u16 applid) in release_appl() argument
176 ctr->release_appl(ctr, applid); in release_appl()
177 capi_ctr_put(ctr); in release_appl()
183 struct capi_ctr *ctr; in notify_up() local
191 ctr = get_capi_ctr_by_nr(contr); in notify_up()
192 if (ctr) { in notify_up()
193 if (ctr->state == CAPI_CTR_RUNNING) in notify_up()
196 ctr->state = CAPI_CTR_RUNNING; in notify_up()
201 register_appl(ctr, applid, &ap->rparam); in notify_up()
204 wake_up_interruptible_all(&ctr->state_wait_queue); in notify_up()
212 static void ctr_down(struct capi_ctr *ctr, int new_state) in ctr_down() argument
217 if (ctr->state == CAPI_CTR_DETECTED || ctr->state == CAPI_CTR_DETACHED) in ctr_down()
220 ctr->state = new_state; in ctr_down()
222 memset(ctr->manu, 0, sizeof(ctr->manu)); in ctr_down()
223 memset(&ctr->version, 0, sizeof(ctr->version)); in ctr_down()
224 memset(&ctr->profile, 0, sizeof(ctr->profile)); in ctr_down()
225 memset(ctr->serial, 0, sizeof(ctr->serial)); in ctr_down()
230 capi_ctr_put(ctr); in ctr_down()
233 wake_up_interruptible_all(&ctr->state_wait_queue); in ctr_down()
238 struct capi_ctr *ctr; in notify_down() local
245 ctr = get_capi_ctr_by_nr(contr); in notify_down()
246 if (ctr) in notify_down()
247 ctr_down(ctr, CAPI_CTR_DETECTED); in notify_down()
343 void capi_ctr_handle_message(struct capi_ctr *ctr, u16 appl, in capi_ctr_handle_message() argument
351 if (ctr->state != CAPI_CTR_RUNNING) { in capi_ctr_handle_message()
355 ctr->cnr, cdb->buf); in capi_ctr_handle_message()
359 ctr->cnr); in capi_ctr_handle_message()
366 ctr->nrecvdatapkt++; in capi_ctr_handle_message()
367 if (ctr->traceflag > 2) in capi_ctr_handle_message()
370 ctr->nrecvctlpkt++; in capi_ctr_handle_message()
371 if (ctr->traceflag) in capi_ctr_handle_message()
374 showctl |= (ctr->traceflag & 1); in capi_ctr_handle_message()
378 ctr->cnr, CAPIMSG_APPID(skb->data), in capi_ctr_handle_message()
385 ctr->cnr, cdb->buf); in capi_ctr_handle_message()
389 ctr->cnr, CAPIMSG_APPID(skb->data), in capi_ctr_handle_message()
430 void capi_ctr_ready(struct capi_ctr *ctr) in capi_ctr_ready() argument
433 ctr->cnr, ctr->name); in capi_ctr_ready()
435 notify_push(CAPICTR_UP, ctr->cnr); in capi_ctr_ready()
448 void capi_ctr_down(struct capi_ctr *ctr) in capi_ctr_down() argument
450 printk(KERN_NOTICE "kcapi: controller [%03d] down.\n", ctr->cnr); in capi_ctr_down()
452 notify_push(CAPICTR_DOWN, ctr->cnr); in capi_ctr_down()
467 void capi_ctr_suspend_output(struct capi_ctr *ctr) in capi_ctr_suspend_output() argument
469 if (!ctr->blocked) { in capi_ctr_suspend_output()
471 ctr->cnr); in capi_ctr_suspend_output()
472 ctr->blocked = 1; in capi_ctr_suspend_output()
488 void capi_ctr_resume_output(struct capi_ctr *ctr) in capi_ctr_resume_output() argument
490 if (ctr->blocked) { in capi_ctr_resume_output()
492 ctr->cnr); in capi_ctr_resume_output()
493 ctr->blocked = 0; in capi_ctr_resume_output()
509 int attach_capi_ctr(struct capi_ctr *ctr) in attach_capi_ctr() argument
524 capi_controller[i] = ctr; in attach_capi_ctr()
526 ctr->nrecvctlpkt = 0; in attach_capi_ctr()
527 ctr->nrecvdatapkt = 0; in attach_capi_ctr()
528 ctr->nsentctlpkt = 0; in attach_capi_ctr()
529 ctr->nsentdatapkt = 0; in attach_capi_ctr()
530 ctr->cnr = i + 1; in attach_capi_ctr()
531 ctr->state = CAPI_CTR_DETECTED; in attach_capi_ctr()
532 ctr->blocked = 0; in attach_capi_ctr()
533 ctr->traceflag = showcapimsgs; in attach_capi_ctr()
534 init_waitqueue_head(&ctr->state_wait_queue); in attach_capi_ctr()
536 sprintf(ctr->procfn, "capi/controllers/%d", ctr->cnr); in attach_capi_ctr()
537 ctr->procent = proc_create_data(ctr->procfn, 0, NULL, ctr->proc_fops, ctr); in attach_capi_ctr()
544 ctr->cnr, ctr->name); in attach_capi_ctr()
559 int detach_capi_ctr(struct capi_ctr *ctr) in detach_capi_ctr() argument
565 ctr_down(ctr, CAPI_CTR_DETACHED); in detach_capi_ctr()
567 if (capi_controller[ctr->cnr - 1] != ctr) { in detach_capi_ctr()
571 capi_controller[ctr->cnr - 1] = NULL; in detach_capi_ctr()
574 if (ctr->procent) in detach_capi_ctr()
575 remove_proc_entry(ctr->procfn, NULL); in detach_capi_ctr()
578 ctr->cnr, ctr->name); in detach_capi_ctr()
770 struct capi_ctr *ctr; in capi20_put_message() local
790 ctr = get_capi_ctr_by_nr(CAPIMSG_CONTROLLER(skb->data)); in capi20_put_message()
791 if (!ctr || ctr->state != CAPI_CTR_RUNNING) in capi20_put_message()
793 if (ctr->blocked) in capi20_put_message()
800 ctr->nsentdatapkt++; in capi20_put_message()
802 if (ctr->traceflag > 2) in capi20_put_message()
805 ctr->nsentctlpkt++; in capi20_put_message()
807 if (ctr->traceflag) in capi20_put_message()
810 showctl |= (ctr->traceflag & 1); in capi20_put_message()
833 return ctr->send_message(ctr, skb); in capi20_put_message()
850 struct capi_ctr *ctr; in capi20_get_manufacturer() local
860 ctr = get_capi_ctr_by_nr(contr); in capi20_get_manufacturer()
861 if (ctr && ctr->state == CAPI_CTR_RUNNING) { in capi20_get_manufacturer()
862 strlcpy(buf, ctr->manu, CAPI_MANUFACTURER_LEN); in capi20_get_manufacturer()
885 struct capi_ctr *ctr; in capi20_get_version() local
895 ctr = get_capi_ctr_by_nr(contr); in capi20_get_version()
896 if (ctr && ctr->state == CAPI_CTR_RUNNING) { in capi20_get_version()
897 memcpy(verp, &ctr->version, sizeof(capi_version)); in capi20_get_version()
920 struct capi_ctr *ctr; in capi20_get_serial() local
930 ctr = get_capi_ctr_by_nr(contr); in capi20_get_serial()
931 if (ctr && ctr->state == CAPI_CTR_RUNNING) { in capi20_get_serial()
932 strlcpy(serial, ctr->serial, CAPI_SERIAL_LEN); in capi20_get_serial()
955 struct capi_ctr *ctr; in capi20_get_profile() local
965 ctr = get_capi_ctr_by_nr(contr); in capi20_get_profile()
966 if (ctr && ctr->state == CAPI_CTR_RUNNING) { in capi20_get_profile()
967 memcpy(profp, &ctr->profile, sizeof(struct capi_profile)); in capi20_get_profile()
979 static int wait_on_ctr_state(struct capi_ctr *ctr, unsigned int state) in wait_on_ctr_state() argument
984 ctr = capi_ctr_get(ctr); in wait_on_ctr_state()
985 if (!ctr) in wait_on_ctr_state()
989 prepare_to_wait(&ctr->state_wait_queue, &wait, in wait_on_ctr_state()
992 if (ctr->state == state) in wait_on_ctr_state()
994 if (ctr->state == CAPI_CTR_DETACHED) { in wait_on_ctr_state()
1007 finish_wait(&ctr->state_wait_queue, &wait); in wait_on_ctr_state()
1009 capi_ctr_put(ctr); in wait_on_ctr_state()
1021 struct capi_ctr *ctr; in old_capi_manufacturer() local
1094 ctr = get_capi_ctr_by_nr(ldef.contr); in old_capi_manufacturer()
1095 if (!ctr) { in old_capi_manufacturer()
1100 if (ctr->load_firmware == NULL) { in old_capi_manufacturer()
1124 if (ctr->state != CAPI_CTR_DETECTED) { in old_capi_manufacturer()
1129 ctr->state = CAPI_CTR_LOADING; in old_capi_manufacturer()
1131 retval = ctr->load_firmware(ctr, &ldata); in old_capi_manufacturer()
1133 ctr->state = CAPI_CTR_DETECTED; in old_capi_manufacturer()
1137 retval = wait_on_ctr_state(ctr, CAPI_CTR_RUNNING); in old_capi_manufacturer()
1151 ctr = get_capi_ctr_by_nr(rdef.contr); in old_capi_manufacturer()
1152 if (!ctr) { in old_capi_manufacturer()
1157 if (ctr->state == CAPI_CTR_DETECTED) in old_capi_manufacturer()
1160 if (ctr->reset_ctr == NULL) { in old_capi_manufacturer()
1166 ctr->reset_ctr(ctr); in old_capi_manufacturer()
1168 retval = wait_on_ctr_state(ctr, CAPI_CTR_DETECTED); in old_capi_manufacturer()
1189 struct capi_ctr *ctr; in capi20_manufacturer() local
1210 ctr = get_capi_ctr_by_nr(fdef.contr); in capi20_manufacturer()
1211 if (ctr) { in capi20_manufacturer()
1212 ctr->traceflag = fdef.flag; in capi20_manufacturer()
1214 ctr->cnr, ctr->traceflag); in capi20_manufacturer()