Lines Matching refs:dev

64 static int set_protocol_running(struct pcbit_dev *dev);
66 static void pcbit_clear_msn(struct pcbit_dev *dev);
67 static void pcbit_set_msn(struct pcbit_dev *dev, char *list);
68 static int pcbit_check_msn(struct pcbit_dev *dev, char *msn);
73 struct pcbit_dev *dev; in pcbit_init_dev() local
76 if ((dev = kzalloc(sizeof(struct pcbit_dev), GFP_KERNEL)) == NULL) in pcbit_init_dev()
82 dev_pcbit[board] = dev; in pcbit_init_dev()
83 init_waitqueue_head(&dev->set_running_wq); in pcbit_init_dev()
84 spin_lock_init(&dev->lock); in pcbit_init_dev()
87 dev->ph_mem = mem_base; in pcbit_init_dev()
88 if (!request_mem_region(dev->ph_mem, 4096, "PCBIT mem")) { in pcbit_init_dev()
91 dev->ph_mem, dev->ph_mem + 4096); in pcbit_init_dev()
92 kfree(dev); in pcbit_init_dev()
96 dev->sh_mem = ioremap(dev->ph_mem, 4096); in pcbit_init_dev()
101 kfree(dev); in pcbit_init_dev()
106 dev->b1 = kzalloc(sizeof(struct pcbit_chan), GFP_KERNEL); in pcbit_init_dev()
107 if (!dev->b1) { in pcbit_init_dev()
109 iounmap(dev->sh_mem); in pcbit_init_dev()
110 release_mem_region(dev->ph_mem, 4096); in pcbit_init_dev()
111 kfree(dev); in pcbit_init_dev()
115 dev->b2 = kzalloc(sizeof(struct pcbit_chan), GFP_KERNEL); in pcbit_init_dev()
116 if (!dev->b2) { in pcbit_init_dev()
118 kfree(dev->b1); in pcbit_init_dev()
119 iounmap(dev->sh_mem); in pcbit_init_dev()
120 release_mem_region(dev->ph_mem, 4096); in pcbit_init_dev()
121 kfree(dev); in pcbit_init_dev()
125 dev->b2->id = 1; in pcbit_init_dev()
127 INIT_WORK(&dev->qdelivery, pcbit_deliver); in pcbit_init_dev()
133 if (request_irq(irq, &pcbit_irq_handler, 0, pcbit_devname[board], dev) != 0) in pcbit_init_dev()
135 kfree(dev->b1); in pcbit_init_dev()
136 kfree(dev->b2); in pcbit_init_dev()
137 iounmap(dev->sh_mem); in pcbit_init_dev()
138 release_mem_region(dev->ph_mem, 4096); in pcbit_init_dev()
139 kfree(dev); in pcbit_init_dev()
144 dev->irq = irq; in pcbit_init_dev()
147 dev->rcv_seq = 0; in pcbit_init_dev()
148 dev->send_seq = 0; in pcbit_init_dev()
149 dev->unack_seq = 0; in pcbit_init_dev()
151 dev->hl_hdrlen = 16; in pcbit_init_dev()
156 free_irq(irq, dev); in pcbit_init_dev()
157 kfree(dev->b1); in pcbit_init_dev()
158 kfree(dev->b2); in pcbit_init_dev()
159 iounmap(dev->sh_mem); in pcbit_init_dev()
160 release_mem_region(dev->ph_mem, 4096); in pcbit_init_dev()
161 kfree(dev); in pcbit_init_dev()
166 dev->dev_if = dev_if; in pcbit_init_dev()
188 free_irq(irq, dev); in pcbit_init_dev()
189 kfree(dev->b1); in pcbit_init_dev()
190 kfree(dev->b2); in pcbit_init_dev()
191 iounmap(dev->sh_mem); in pcbit_init_dev()
192 release_mem_region(dev->ph_mem, 4096); in pcbit_init_dev()
193 kfree(dev); in pcbit_init_dev()
198 dev->id = dev_if->channels; in pcbit_init_dev()
201 dev->l2_state = L2_DOWN; in pcbit_init_dev()
202 dev->free = 511; in pcbit_init_dev()
214 struct pcbit_dev *dev; in pcbit_terminate() local
216 dev = dev_pcbit[board]; in pcbit_terminate()
218 if (dev) { in pcbit_terminate()
220 free_irq(dev->irq, dev); in pcbit_terminate()
221 pcbit_clear_msn(dev); in pcbit_terminate()
222 kfree(dev->dev_if); in pcbit_terminate()
223 if (dev->b1->fsm_timer.function) in pcbit_terminate()
224 del_timer(&dev->b1->fsm_timer); in pcbit_terminate()
225 if (dev->b2->fsm_timer.function) in pcbit_terminate()
226 del_timer(&dev->b2->fsm_timer); in pcbit_terminate()
227 kfree(dev->b1); in pcbit_terminate()
228 kfree(dev->b2); in pcbit_terminate()
229 iounmap(dev->sh_mem); in pcbit_terminate()
230 release_mem_region(dev->ph_mem, 4096); in pcbit_terminate()
231 kfree(dev); in pcbit_terminate()
238 struct pcbit_dev *dev; in pcbit_command() local
242 dev = finddev(ctl->driver); in pcbit_command()
244 if (!dev) in pcbit_command()
250 chan = (ctl->arg & 0x0F) ? dev->b2 : dev->b1; in pcbit_command()
260 pcbit_fsm_event(dev, chan, EV_USR_SETUP_REQ, &info); in pcbit_command()
263 pcbit_fsm_event(dev, chan, EV_USR_SETUP_RESP, NULL); in pcbit_command()
269 pcbit_fsm_event(dev, chan, EV_USR_RELEASE_REQ, NULL); in pcbit_command()
275 pcbit_clear_msn(dev); in pcbit_command()
278 pcbit_set_msn(dev, ctl->parm.num); in pcbit_command()
302 struct pcbit_dev *dev; in pcbit_block_timer() local
307 dev = chan2dev(chan); in pcbit_block_timer()
309 if (dev == NULL) { in pcbit_block_timer()
321 ictl.driver = dev->id; in pcbit_block_timer()
324 dev->dev_if->statcallb(&ictl); in pcbit_block_timer()
333 struct pcbit_dev *dev; in pcbit_xmit() local
335 dev = finddev(driver); in pcbit_xmit()
336 if (dev == NULL) in pcbit_xmit()
342 chan = chnum ? dev->b2 : dev->b1; in pcbit_xmit()
382 pcbit_l2_write(dev, MSG_TDATA_REQ, refnum, skb, hdrlen); in pcbit_xmit()
389 struct pcbit_dev *dev; in pcbit_writecmd() local
397 dev = finddev(driver); in pcbit_writecmd()
399 if (!dev) in pcbit_writecmd()
405 switch (dev->l2_state) { in pcbit_writecmd()
418 memcpy_toio(dev->sh_mem, cbuf, len); in pcbit_writecmd()
438 if (!(readb(dev->sh_mem + dev->loadptr))) in pcbit_writecmd()
447 writeb(loadbuf[i], dev->sh_mem + dev->loadptr + 1); in pcbit_writecmd()
448 writeb(0x01, dev->sh_mem + dev->loadptr); in pcbit_writecmd()
450 dev->loadptr += 2; in pcbit_writecmd()
451 if (dev->loadptr > LOAD_ZONE_END) in pcbit_writecmd()
452 dev->loadptr = LOAD_ZONE_START; in pcbit_writecmd()
467 void pcbit_l3_receive(struct pcbit_dev *dev, ulong msg, in pcbit_l3_receive() argument
481 if (!(chan = capi_channel(dev, skb))) { in pcbit_l3_receive()
489 dev->dev_if->rcvcallb_skb(dev->id, chan->id, skb); in pcbit_l3_receive()
492 pcbit_l2_write(dev, MSG_TDATA_RESP, refnum, in pcbit_l3_receive()
497 if (!(chan = capi_channel(dev, skb))) { in pcbit_l3_receive()
517 ictl.driver = dev->id; in pcbit_l3_receive()
520 dev->dev_if->statcallb(&ictl); in pcbit_l3_receive()
529 if (!dev->b1->fsm_state) in pcbit_l3_receive()
530 chan = dev->b1; in pcbit_l3_receive()
531 else if (!dev->b2->fsm_state) in pcbit_l3_receive()
532 chan = dev->b2; in pcbit_l3_receive()
538 pcbit_l2_write(dev, MSG_DISC_REQ, refnum, skb2, len); in pcbit_l3_receive()
548 pcbit_fsm_event(dev, chan, EV_NET_SETUP, NULL); in pcbit_l3_receive()
550 if (pcbit_check_msn(dev, cbdata.data.setup.CallingPN)) in pcbit_l3_receive()
551 pcbit_fsm_event(dev, chan, EV_USR_PROCED_REQ, &cbdata); in pcbit_l3_receive()
553 pcbit_fsm_event(dev, chan, EV_USR_RELEASE_REQ, NULL); in pcbit_l3_receive()
567 dev->b1->s_refnum, in pcbit_l3_receive()
568 dev->b2->s_refnum); in pcbit_l3_receive()
572 if (dev->b1->fsm_state == ST_CALL_INIT) in pcbit_l3_receive()
573 chan = dev->b1; in pcbit_l3_receive()
575 if (dev->b2->s_refnum == ST_CALL_INIT) in pcbit_l3_receive()
576 chan = dev->b2; in pcbit_l3_receive()
585 pcbit_fsm_event(dev, chan, EV_ERROR, NULL); in pcbit_l3_receive()
589 pcbit_fsm_event(dev, chan, EV_NET_CALL_PROC, NULL); in pcbit_l3_receive()
591 pcbit_fsm_event(dev, chan, EV_NET_SETUP_ACK, NULL); in pcbit_l3_receive()
595 if (!(chan = capi_channel(dev, skb))) { in pcbit_l3_receive()
607 pcbit_fsm_event(dev, chan, EV_NET_CONN, NULL); in pcbit_l3_receive()
611 if (!(chan = capi_channel(dev, skb))) { in pcbit_l3_receive()
618 pcbit_fsm_event(dev, chan, EV_NET_CONN_ACK, NULL); in pcbit_l3_receive()
626 if (!(chan = capi_channel(dev, skb))) { in pcbit_l3_receive()
633 pcbit_fsm_event(dev, chan, EV_NET_SELP_RESP, NULL); in pcbit_l3_receive()
640 if (!(chan = capi_channel(dev, skb))) { in pcbit_l3_receive()
647 pcbit_fsm_event(dev, chan, EV_NET_ACTV_RESP, NULL); in pcbit_l3_receive()
652 if (!(chan = capi_channel(dev, skb))) { in pcbit_l3_receive()
659 pcbit_fsm_event(dev, chan, EV_NET_DISC, NULL); in pcbit_l3_receive()
664 if (!(chan = capi_channel(dev, skb))) { in pcbit_l3_receive()
671 pcbit_fsm_event(dev, chan, EV_NET_RELEASE, NULL); in pcbit_l3_receive()
754 static void pcbit_logstat(struct pcbit_dev *dev, char *str) in pcbit_logstat() argument
768 ictl.driver = dev->id; in pcbit_logstat()
770 dev->dev_if->statcallb(&ictl); in pcbit_logstat()
773 void pcbit_state_change(struct pcbit_dev *dev, struct pcbit_chan *chan, in pcbit_state_change() argument
779 dev->id, chan->id, in pcbit_state_change()
787 pcbit_logstat(dev, buf); in pcbit_state_change()
792 struct pcbit_dev *dev; in set_running_timeout() local
797 dev = (struct pcbit_dev *) ptr; in set_running_timeout()
799 dev->l2_state = L2_DOWN; in set_running_timeout()
800 wake_up_interruptible(&dev->set_running_wq); in set_running_timeout()
803 static int set_protocol_running(struct pcbit_dev *dev) in set_protocol_running() argument
807 init_timer(&dev->set_running_timer); in set_protocol_running()
809 dev->set_running_timer.function = &set_running_timeout; in set_protocol_running()
810 dev->set_running_timer.data = (ulong) dev; in set_protocol_running()
811 dev->set_running_timer.expires = jiffies + SET_RUN_TIMEOUT; in set_protocol_running()
815 dev->l2_state = L2_STARTING; in set_protocol_running()
817 writeb((0x80U | ((dev->rcv_seq & 0x07) << 3) | (dev->send_seq & 0x07)), in set_protocol_running()
818 dev->sh_mem + BANK4); in set_protocol_running()
820 add_timer(&dev->set_running_timer); in set_protocol_running()
822 wait_event(dev->set_running_wq, dev->l2_state == L2_RUNNING || in set_protocol_running()
823 dev->l2_state == L2_DOWN); in set_protocol_running()
825 del_timer(&dev->set_running_timer); in set_protocol_running()
827 if (dev->l2_state == L2_RUNNING) in set_protocol_running()
831 dev->unack_seq = dev->send_seq; in set_protocol_running()
833 dev->writeptr = dev->sh_mem; in set_protocol_running()
834 dev->readptr = dev->sh_mem + BANK2; in set_protocol_running()
837 ctl.driver = dev->id; in set_protocol_running()
840 dev->dev_if->statcallb(&ctl); in set_protocol_running()
849 readb(dev->sh_mem + BANK3)); in set_protocol_running()
851 writeb(0x40, dev->sh_mem + BANK4); in set_protocol_running()
854 ctl.driver = dev->id; in set_protocol_running()
857 dev->dev_if->statcallb(&ctl); in set_protocol_running()
867 struct pcbit_dev *dev; in pcbit_ioctl() local
870 dev = finddev(ctl->driver); in pcbit_ioctl()
872 if (!dev) in pcbit_ioctl()
882 cmd->info.l2_status = dev->l2_state; in pcbit_ioctl()
886 if (dev->l2_state == L2_RUNNING) in pcbit_ioctl()
889 dev->unack_seq = dev->send_seq = dev->rcv_seq = 0; in pcbit_ioctl()
891 dev->writeptr = dev->sh_mem; in pcbit_ioctl()
892 dev->readptr = dev->sh_mem + BANK2; in pcbit_ioctl()
894 dev->l2_state = L2_LOADING; in pcbit_ioctl()
898 if (dev->l2_state != L2_LOADING) in pcbit_ioctl()
901 dev->l2_state = L2_LWMODE; in pcbit_ioctl()
905 if (dev->l2_state == L2_RUNNING) in pcbit_ioctl()
907 dev->loadptr = LOAD_ZONE_START; in pcbit_ioctl()
908 dev->l2_state = L2_FWMODE; in pcbit_ioctl()
912 if (dev->l2_state == L2_RUNNING) in pcbit_ioctl()
914 dev->l2_state = L2_DOWN; in pcbit_ioctl()
918 if (dev->l2_state == L2_RUNNING) in pcbit_ioctl()
925 writeb(cmd->info.rdp_byte.value, dev->sh_mem + cmd->info.rdp_byte.addr); in pcbit_ioctl()
928 if (dev->l2_state == L2_RUNNING) in pcbit_ioctl()
939 cmd->info.rdp_byte.value = readb(dev->sh_mem + cmd->info.rdp_byte.addr); in pcbit_ioctl()
942 if (dev->l2_state == L2_RUNNING) in pcbit_ioctl()
944 return set_protocol_running(dev); in pcbit_ioctl()
947 if (dev->l2_state != L2_LOADING) in pcbit_ioctl()
949 pcbit_l2_write(dev, MSG_WATCH188, 0x0001, NULL, 0); in pcbit_ioctl()
952 if (dev->l2_state != L2_LOADING) in pcbit_ioctl()
954 pcbit_l2_write(dev, MSG_PING188_REQ, 0x0001, NULL, 0); in pcbit_ioctl()
957 if (dev->l2_state != L2_LOADING) in pcbit_ioctl()
959 pcbit_l2_write(dev, MSG_API_ON, 0x0001, NULL, 0); in pcbit_ioctl()
962 dev->l2_state = L2_DOWN; in pcbit_ioctl()
963 writeb(0x40, dev->sh_mem + BANK4); in pcbit_ioctl()
964 dev->rcv_seq = 0; in pcbit_ioctl()
965 dev->send_seq = 0; in pcbit_ioctl()
966 dev->unack_seq = 0; in pcbit_ioctl()
982 static void pcbit_clear_msn(struct pcbit_dev *dev) in pcbit_clear_msn() argument
986 for (ptr = dev->msn_list; ptr;) in pcbit_clear_msn()
993 dev->msn_list = NULL; in pcbit_clear_msn()
996 static void pcbit_set_msn(struct pcbit_dev *dev, char *list) in pcbit_set_msn() argument
1012 ptr->next = dev->msn_list; in pcbit_set_msn()
1013 dev->msn_list = ptr; in pcbit_set_msn()
1018 if (dev->msn_list) in pcbit_set_msn()
1019 for (back = dev->msn_list; back->next; back = back->next); in pcbit_set_msn()
1051 if (dev->msn_list == NULL) in pcbit_set_msn()
1052 dev->msn_list = ptr; in pcbit_set_msn()
1063 static int pcbit_check_msn(struct pcbit_dev *dev, char *msn) in pcbit_check_msn() argument
1067 for (ptr = dev->msn_list; ptr; ptr = ptr->next) { in pcbit_check_msn()