Lines Matching refs:card
51 find_channel(act2000_card *card, int channel) in find_channel() argument
54 return &(card->bch[channel]); in find_channel()
63 act2000_clear_msn(act2000_card *card) in act2000_clear_msn() argument
65 struct msn_entry *p = card->msn_list; in act2000_clear_msn()
69 spin_lock_irqsave(&card->lock, flags); in act2000_clear_msn()
70 card->msn_list = NULL; in act2000_clear_msn()
71 spin_unlock_irqrestore(&card->lock, flags); in act2000_clear_msn()
85 act2000_find_msn(act2000_card *card, char *msn, int ia5) in act2000_find_msn() argument
87 struct msn_entry *p = card->msn_list; in act2000_find_msn()
108 act2000_find_eaz(act2000_card *card, char eaz) in act2000_find_eaz() argument
110 struct msn_entry *p = card->msn_list; in act2000_find_eaz()
127 act2000_set_msn(act2000_card *card, char *eazmsn) in act2000_set_msn() argument
129 struct msn_entry *p = card->msn_list; in act2000_set_msn()
145 spin_lock_irqsave(&card->lock, flags); in act2000_set_msn()
149 card->msn_list = p->next; in act2000_set_msn()
150 spin_unlock_irqrestore(&card->lock, flags); in act2000_set_msn()
166 spin_lock_irqsave(&card->lock, flags); in act2000_set_msn()
168 spin_unlock_irqrestore(&card->lock, flags); in act2000_set_msn()
183 p->next = card->msn_list; in act2000_set_msn()
184 spin_lock_irqsave(&card->lock, flags); in act2000_set_msn()
185 card->msn_list = p; in act2000_set_msn()
186 spin_unlock_irqrestore(&card->lock, flags); in act2000_set_msn()
197 struct act2000_card *card = in act2000_transmit() local
200 switch (card->bus) { in act2000_transmit()
202 act2000_isa_send(card); in act2000_transmit()
208 "act2000_transmit: Illegal bustype %d\n", card->bus); in act2000_transmit()
215 struct act2000_card *card = in act2000_receive() local
218 switch (card->bus) { in act2000_receive()
220 act2000_isa_receive(card); in act2000_receive()
226 "act2000_receive: Illegal bustype %d\n", card->bus); in act2000_receive()
233 act2000_card *card = (act2000_card *)data; in act2000_poll() local
236 act2000_receive(&card->poll_tq); in act2000_poll()
237 spin_lock_irqsave(&card->lock, flags); in act2000_poll()
238 mod_timer(&card->ptimer, jiffies + 3); in act2000_poll()
239 spin_unlock_irqrestore(&card->lock, flags); in act2000_poll()
243 act2000_command(act2000_card *card, isdn_ctrl *c) in act2000_command() argument
260 switch (card->bus) { in act2000_command()
262 ret = act2000_isa_download(card, in act2000_command()
265 card->flags |= ACT2000_FLAGS_LOADED; in act2000_command()
266 if (!(card->flags & ACT2000_FLAGS_IVALID)) { in act2000_command()
267 card->ptimer.expires = jiffies + 3; in act2000_command()
268 card->ptimer.function = act2000_poll; in act2000_command()
269 card->ptimer.data = (unsigned long)card; in act2000_command()
270 add_timer(&card->ptimer); in act2000_command()
272 actcapi_manufacturer_req_errh(card); in act2000_command()
278 card->bus); in act2000_command()
283 card->ptype = a ? ISDN_PTYPE_EURO : ISDN_PTYPE_1TR6; in act2000_command()
284 if (!(card->flags & ACT2000_FLAGS_RUNNING)) in act2000_command()
286 actcapi_manufacturer_req_net(card); in act2000_command()
292 if ((ret = act2000_set_msn(card, tmp))) in act2000_command()
294 if (card->flags & ACT2000_FLAGS_RUNNING) in act2000_command()
295 return (actcapi_manufacturer_req_msn(card)); in act2000_command()
305 if (!(card->flags & ACT2000_FLAGS_RUNNING)) in act2000_command()
313 if (!(card->flags & ACT2000_FLAGS_RUNNING)) in act2000_command()
315 if (!(chan = find_channel(card, c->arg & 0x0f))) in act2000_command()
317 spin_lock_irqsave(&card->lock, flags); in act2000_command()
319 spin_unlock_irqrestore(&card->lock, flags); in act2000_command()
324 if (card->ptype == ISDN_PTYPE_EURO) in act2000_command()
325 tmp[0] = act2000_find_msn(card, c->parm.setup.eazmsn, 1); in act2000_command()
330 spin_unlock_irqrestore(&card->lock, flags); in act2000_command()
331 ret = actcapi_connect_req(card, chan, c->parm.setup.phone, in act2000_command()
335 cmd.driver = card->myid; in act2000_command()
338 card->interface.statcallb(&cmd); in act2000_command()
342 if (!(card->flags & ACT2000_FLAGS_RUNNING)) in act2000_command()
344 if (!(chan = find_channel(card, c->arg & 0x0f))) in act2000_command()
347 actcapi_select_b2_protocol_req(card, chan); in act2000_command()
350 if (!(card->flags & ACT2000_FLAGS_RUNNING)) in act2000_command()
354 if (!(card->flags & ACT2000_FLAGS_RUNNING)) in act2000_command()
356 if (!(chan = find_channel(card, c->arg & 0x0f))) in act2000_command()
361 actcapi_connect_resp(card, chan, 0x15); in act2000_command()
364 actcapi_disconnect_b3_req(card, chan); in act2000_command()
369 if (!(card->flags & ACT2000_FLAGS_RUNNING)) in act2000_command()
371 if (!(chan = find_channel(card, c->arg & 0x0f))) in act2000_command()
374 if (card->ptype == ISDN_PTYPE_EURO) { in act2000_command()
375 chan->eazmask = act2000_find_msn(card, c->parm.num, 0); in act2000_command()
377 if (card->ptype == ISDN_PTYPE_1TR6) { in act2000_command()
386 actcapi_listen_req(card); in act2000_command()
389 if (!(card->flags & ACT2000_FLAGS_RUNNING)) in act2000_command()
391 if (!(chan = find_channel(card, c->arg & 0x0f))) in act2000_command()
394 actcapi_listen_req(card); in act2000_command()
397 if (!(card->flags & ACT2000_FLAGS_RUNNING)) in act2000_command()
399 if (!(chan = find_channel(card, c->arg & 0x0f))) in act2000_command()
404 if (!(card->flags & ACT2000_FLAGS_RUNNING)) in act2000_command()
410 if (!(chan = find_channel(card, c->arg & 0x0f))) in act2000_command()
420 act2000_sendbuf(act2000_card *card, int channel, int ack, struct sk_buff *skb) in act2000_sendbuf() argument
427 if (!(chan = find_channel(card, channel))) in act2000_sendbuf()
459 msg->hdr.msgnum = actcapi_nextsmsg(card); in act2000_sendbuf()
466 skb_queue_tail(&card->sndq, xmit_skb); in act2000_sendbuf()
467 act2000_schedule_tx(card); in act2000_sendbuf()
474 act2000_readstatus(u_char __user *buf, int len, act2000_card *card) in act2000_readstatus() argument
480 if (card->status_buf_read == card->status_buf_write) in act2000_readstatus()
482 put_user(*card->status_buf_read++, p); in act2000_readstatus()
483 if (card->status_buf_read > card->status_buf_end) in act2000_readstatus()
484 card->status_buf_read = card->status_buf; in act2000_readstatus()
511 act2000_card *card = act2000_findcard(c->driver); in if_command() local
513 if (card) in if_command()
514 return (act2000_command(card, c)); in if_command()
524 act2000_card *card = act2000_findcard(id); in if_writecmd() local
526 if (card) { in if_writecmd()
527 if (!(card->flags & ACT2000_FLAGS_RUNNING)) in if_writecmd()
539 act2000_card *card = act2000_findcard(id); in if_readstatus() local
541 if (card) { in if_readstatus()
542 if (!(card->flags & ACT2000_FLAGS_RUNNING)) in if_readstatus()
544 return (act2000_readstatus(buf, len, card)); in if_readstatus()
554 act2000_card *card = act2000_findcard(id); in if_sendbuf() local
556 if (card) { in if_sendbuf()
557 if (!(card->flags & ACT2000_FLAGS_RUNNING)) in if_sendbuf()
559 return (act2000_sendbuf(card, channel, ack, skb)); in if_sendbuf()
575 act2000_card *card; in act2000_alloccard() local
576 if (!(card = kzalloc(sizeof(act2000_card), GFP_KERNEL))) { in act2000_alloccard()
581 spin_lock_init(&card->lock); in act2000_alloccard()
582 spin_lock_init(&card->mnlock); in act2000_alloccard()
583 skb_queue_head_init(&card->sndq); in act2000_alloccard()
584 skb_queue_head_init(&card->rcvq); in act2000_alloccard()
585 skb_queue_head_init(&card->ackq); in act2000_alloccard()
586 INIT_WORK(&card->snd_tq, act2000_transmit); in act2000_alloccard()
587 INIT_WORK(&card->rcv_tq, actcapi_dispatch); in act2000_alloccard()
588 INIT_WORK(&card->poll_tq, act2000_receive); in act2000_alloccard()
589 init_timer(&card->ptimer); in act2000_alloccard()
590 card->interface.owner = THIS_MODULE; in act2000_alloccard()
591 card->interface.channels = ACT2000_BCH; in act2000_alloccard()
592 card->interface.maxbufsize = 4000; in act2000_alloccard()
593 card->interface.command = if_command; in act2000_alloccard()
594 card->interface.writebuf_skb = if_sendbuf; in act2000_alloccard()
595 card->interface.writecmd = if_writecmd; in act2000_alloccard()
596 card->interface.readstat = if_readstatus; in act2000_alloccard()
597 card->interface.features = in act2000_alloccard()
602 card->interface.hl_hdrlen = 20; in act2000_alloccard()
603 card->ptype = ISDN_PTYPE_EURO; in act2000_alloccard()
604 strlcpy(card->interface.id, id, sizeof(card->interface.id)); in act2000_alloccard()
606 card->bch[i].plci = 0x8000; in act2000_alloccard()
607 card->bch[i].ncci = 0x8000; in act2000_alloccard()
608 card->bch[i].l2prot = ISDN_PROTO_L2_X75I; in act2000_alloccard()
609 card->bch[i].l3prot = ISDN_PROTO_L3_TRANS; in act2000_alloccard()
611 card->myid = -1; in act2000_alloccard()
612 card->bus = bus; in act2000_alloccard()
613 card->port = port; in act2000_alloccard()
614 card->irq = irq; in act2000_alloccard()
615 card->next = cards; in act2000_alloccard()
616 cards = card; in act2000_alloccard()
623 act2000_registercard(act2000_card *card) in act2000_registercard() argument
625 switch (card->bus) { in act2000_registercard()
633 card->bus); in act2000_registercard()
636 if (!register_isdn(&card->interface)) { in act2000_registercard()
639 card->interface.id); in act2000_registercard()
642 card->myid = card->interface.channels; in act2000_registercard()
643 sprintf(card->regname, "act2000-isdn (%s)", card->interface.id); in act2000_registercard()
648 unregister_card(act2000_card *card) in unregister_card() argument
653 cmd.driver = card->myid; in unregister_card()
654 card->interface.statcallb(&cmd); in unregister_card()
655 switch (card->bus) { in unregister_card()
657 act2000_isa_release(card); in unregister_card()
664 card->bus); in unregister_card()
795 act2000_card *card = cards; in act2000_exit() local
797 while (card) { in act2000_exit()
798 unregister_card(card); in act2000_exit()
799 del_timer_sync(&card->ptimer); in act2000_exit()
800 card = card->next; in act2000_exit()
802 card = cards; in act2000_exit()
803 while (card) { in act2000_exit()
804 last = card; in act2000_exit()
805 card = card->next; in act2000_exit()