Lines Matching refs:drv
72 isdn_lock_driver(isdn_driver_t *drv) in isdn_lock_driver() argument
74 try_module_get(drv->interface->owner); in isdn_lock_driver()
75 drv->locks++; in isdn_lock_driver()
84 if (!dev->drv[i]) in isdn_lock_drivers()
86 isdn_lock_driver(dev->drv[i]); in isdn_lock_drivers()
91 isdn_unlock_driver(isdn_driver_t *drv) in isdn_unlock_driver() argument
93 if (drv->locks > 0) { in isdn_unlock_driver()
94 drv->locks--; in isdn_unlock_driver()
95 module_put(drv->interface->owner); in isdn_unlock_driver()
105 if (!dev->drv[i]) in isdn_unlock_drivers()
107 isdn_unlock_driver(dev->drv[i]); in isdn_unlock_drivers()
325 wake_up_interruptible(&dev->drv[di]->rcv_waitq[channel]); in isdn_receive_skb_callback()
343 if (!dev->drv[cmd->driver]) { in isdn_command()
348 if (!dev->drv[cmd->driver]->interface) { in isdn_command()
356 unsigned long features = (dev->drv[cmd->driver]->interface->features in isdn_command()
377 return dev->drv[cmd->driver]->interface->command(cmd); in isdn_command()
437 wake_up_interruptible(&dev->drv[di]->snd_waitq[c->arg]); in isdn_status_callback()
440 dev->drv[di]->stavail += c->arg; in isdn_status_callback()
441 wake_up_interruptible(&dev->drv[di]->st_waitq); in isdn_status_callback()
444 dev->drv[di]->flags |= DRV_FLAG_RUNNING; in isdn_status_callback()
451 dev->drv[di]->flags &= ~DRV_FLAG_RUNNING; in isdn_status_callback()
482 if ((!retval) && (dev->drv[di]->flags & DRV_FLAG_REJBUS)) { in isdn_status_callback()
595 dev->drv[di]->online &= ~(1 << (c->arg)); in isdn_status_callback()
618 dev->drv[di]->online |= (1 << (c->arg)); in isdn_status_callback()
634 dev->drv[di]->online &= ~(1 << (c->arg)); in isdn_status_callback()
660 if (isdn_add_channels(dev->drv[di], di, c->arg, 1)) { in isdn_status_callback()
686 while (dev->drv[di]->locks > 0) { in isdn_status_callback()
687 isdn_unlock_driver(dev->drv[di]); in isdn_status_callback()
698 dev->channels -= dev->drv[di]->channels; in isdn_status_callback()
699 kfree(dev->drv[di]->rcverr); in isdn_status_callback()
700 kfree(dev->drv[di]->rcvcount); in isdn_status_callback()
701 for (i = 0; i < dev->drv[di]->channels; i++) in isdn_status_callback()
702 skb_queue_purge(&dev->drv[di]->rpqueue[i]); in isdn_status_callback()
703 kfree(dev->drv[di]->rpqueue); in isdn_status_callback()
704 kfree(dev->drv[di]->rcv_waitq); in isdn_status_callback()
705 kfree(dev->drv[di]); in isdn_status_callback()
706 dev->drv[di] = NULL; in isdn_status_callback()
776 if (!dev->drv[di]) in isdn_readbchan()
778 if (skb_queue_empty(&dev->drv[di]->rpqueue[channel])) { in isdn_readbchan()
781 !skb_queue_empty(&dev->drv[di]->rpqueue[channel])); in isdn_readbchan()
785 if (len > dev->drv[di]->rcvcount[channel]) in isdn_readbchan()
786 len = dev->drv[di]->rcvcount[channel]; in isdn_readbchan()
790 if (!(skb = skb_peek(&dev->drv[di]->rpqueue[channel]))) in isdn_readbchan()
796 if ((ISDN_AUDIO_SKB_DLECOUNT(skb)) || (dev->drv[di]->DLEflag & (1 << channel))) { in isdn_readbchan()
804 if (dev->drv[di]->DLEflag & DLEmask) { in isdn_readbchan()
806 dev->drv[di]->DLEflag &= ~DLEmask; in isdn_readbchan()
810 dev->drv[di]->DLEflag |= DLEmask; in isdn_readbchan()
849 skb = skb_dequeue(&dev->drv[di]->rpqueue[channel]); in isdn_readbchan()
861 dev->drv[di]->rcvcount[channel] -= count_put; in isdn_readbchan()
890 if (!dev->drv[di]) in isdn_readbchan_tty()
892 if (skb_queue_empty(&dev->drv[di]->rpqueue[channel])) in isdn_readbchan_tty()
895 len = tty_buffer_request_room(port, dev->drv[di]->rcvcount[channel]); in isdn_readbchan_tty()
901 if (!(skb = skb_peek(&dev->drv[di]->rpqueue[channel]))) in isdn_readbchan_tty()
907 if ((ISDN_AUDIO_SKB_DLECOUNT(skb)) || (dev->drv[di]->DLEflag & (1 << channel))) { in isdn_readbchan_tty()
918 if (dev->drv[di]->DLEflag & DLEmask) { in isdn_readbchan_tty()
920 dev->drv[di]->DLEflag &= ~DLEmask; in isdn_readbchan_tty()
924 dev->drv[di]->DLEflag |= DLEmask; in isdn_readbchan_tty()
962 skb = skb_dequeue(&dev->drv[di]->rpqueue[channel]); in isdn_readbchan_tty()
975 dev->drv[di]->rcvcount[channel] -= count_put; in isdn_readbchan_tty()
1027 if (dev->drv[i]) { in isdn_statstr()
1028 sprintf(p, "%ld ", dev->drv[i]->online); in isdn_statstr()
1104 if (!(dev->drv[drvidx]->flags & DRV_FLAG_RUNNING)) { in isdn_read()
1114 &dev->drv[drvidx]->rcv_waitq[chidx]); in isdn_read()
1128 if (!dev->drv[drvidx]->stavail) { in isdn_read()
1133 wait_event_interruptible(dev->drv[drvidx]->st_waitq, in isdn_read()
1134 dev->drv[drvidx]->stavail); in isdn_read()
1136 if (dev->drv[drvidx]->interface->readstat) { in isdn_read()
1137 if (count > dev->drv[drvidx]->stavail) in isdn_read()
1138 count = dev->drv[drvidx]->stavail; in isdn_read()
1139 len = dev->drv[drvidx]->interface->readstat(buf, count, in isdn_read()
1149 dev->drv[drvidx]->stavail -= len; in isdn_read()
1151 dev->drv[drvidx]->stavail = 0; in isdn_read()
1189 if (!(dev->drv[drvidx]->flags & DRV_FLAG_RUNNING)) { in isdn_write()
1194 wait_event_interruptible(dev->drv[drvidx]->snd_waitq[chidx], in isdn_write()
1210 if (dev->drv[drvidx]->interface->writecmd) in isdn_write()
1211 retval = dev->drv[drvidx]->interface-> in isdn_write()
1252 poll_wait(file, &(dev->drv[drvidx]->st_waitq), wait); in isdn_poll()
1254 if (dev->drv[drvidx]->stavail) { in isdn_poll()
1337 if (!(dev->drv[drvidx]->flags & DRV_FLAG_RUNNING)) in isdn_ioctl()
1529 dev->drv[drvidx]->flags |= DRV_FLAG_REJBUS; in isdn_ioctl()
1531 dev->drv[drvidx]->flags &= ~DRV_FLAG_REJBUS; in isdn_ioctl()
1629 strcpy(dev->drv[drvidx]->msn2eaz[i], bname); in isdn_ioctl()
1645 strlen(dev->drv[drvidx]->msn2eaz[i]) ? in isdn_ioctl()
1646 dev->drv[drvidx]->msn2eaz[i] : "_", in isdn_ioctl()
1765 if (!(dev->drv[drvidx]->flags & DRV_FLAG_RUNNING)) in isdn_open()
1767 if (!(dev->drv[drvidx]->online & (1 << chidx))) in isdn_open()
1853 isdn_driver_t *this = dev->drv[di]; in isdn_map_eaz2msn()
1900 if (dev->drv[d]->flags & DRV_FLAG_RUNNING) { in isdn_get_free_channel()
1901 if (((dev->drv[d]->interface->features & features) == features) || in isdn_get_free_channel()
1902 (((dev->drv[d]->interface->features & vfeatures) == vfeatures) && in isdn_get_free_channel()
1903 (dev->drv[d]->interface->features & ISDN_FEATURE_L2_TRANS))) { in isdn_get_free_channel()
1951 if (dev->drv[di]) in isdn_free_channel()
1952 skb_queue_purge(&dev->drv[di]->rpqueue[ch]); in isdn_free_channel()
1980 int hl = dev->drv[drvidx]->interface->hl_hdrlen; in isdn_writebuf_stub()
1990 ret = dev->drv[drvidx]->interface->writebuf_skb(drvidx, chan, 1, skb); in isdn_writebuf_stub()
2023 ret = dev->drv[drvidx]->interface->writebuf_skb(drvidx, chan, ack, nskb); in isdn_writebuf_skb_stub()
2025 int hl = dev->drv[drvidx]->interface->hl_hdrlen; in isdn_writebuf_skb_stub()
2041 ret = dev->drv[drvidx]->interface->writebuf_skb(drvidx, chan, ack, skb_tmp); in isdn_writebuf_skb_stub()
2048 ret = dev->drv[drvidx]->interface->writebuf_skb(drvidx, chan, ack, skb); in isdn_writebuf_skb_stub()
2162 if (!dev->drv[drvidx]) in set_global_features()
2164 if (dev->drv[drvidx]->interface) in set_global_features()
2165 dev->global_features |= dev->drv[drvidx]->interface->features; in set_global_features()
2256 if (!dev->drv[drvidx]) in register_isdn()
2271 dev->drv[drvidx] = d; in register_isdn()