Lines Matching full:fifo
721 conhdlc = 8; /* enable FIFO */ in hfcsusb_setup_bch()
829 case MISDN_CTRL_FILL_EMPTY: /* fill fifo, if empty */ in channel_bctrl()
845 hfcsusb_rx_frame(struct usb_fifo *fifo, __u8 *data, unsigned int len, in hfcsusb_rx_frame() argument
848 struct hfcsusb *hw = fifo->hw; in hfcsusb_rx_frame()
851 int fifon = fifo->fifonum; in hfcsusb_rx_frame()
856 printk(KERN_DEBUG "%s: %s: fifo(%i) len(%i) " in hfcsusb_rx_frame()
859 fifo->dch, fifo->bch, fifo->ech); in hfcsusb_rx_frame()
864 if ((!!fifo->dch + !!fifo->bch + !!fifo->ech) != 1) { in hfcsusb_rx_frame()
871 if (fifo->dch) { in hfcsusb_rx_frame()
872 rx_skb = fifo->dch->rx_skb; in hfcsusb_rx_frame()
873 maxlen = fifo->dch->maxlen; in hfcsusb_rx_frame()
876 if (fifo->bch) { in hfcsusb_rx_frame()
877 rx_skb = fifo->bch->rx_skb; in hfcsusb_rx_frame()
878 maxlen = fifo->bch->maxlen; in hfcsusb_rx_frame()
879 hdlc = test_bit(FLG_HDLC, &fifo->bch->Flags); in hfcsusb_rx_frame()
881 if (fifo->ech) { in hfcsusb_rx_frame()
882 rx_skb = fifo->ech->rx_skb; in hfcsusb_rx_frame()
883 maxlen = fifo->ech->maxlen; in hfcsusb_rx_frame()
890 if (fifo->dch) in hfcsusb_rx_frame()
891 fifo->dch->rx_skb = rx_skb; in hfcsusb_rx_frame()
892 if (fifo->bch) in hfcsusb_rx_frame()
893 fifo->bch->rx_skb = rx_skb; in hfcsusb_rx_frame()
894 if (fifo->ech) in hfcsusb_rx_frame()
895 fifo->ech->rx_skb = rx_skb; in hfcsusb_rx_frame()
905 if (fifo->dch || fifo->ech) { in hfcsusb_rx_frame()
909 "for fifo(%d) HFCUSB_D_RX\n", in hfcsusb_rx_frame()
915 } else if (fifo->bch) { in hfcsusb_rx_frame()
919 "for fifo(%d) HFCUSB_B_RX\n", in hfcsusb_rx_frame()
949 if (fifo->dch) in hfcsusb_rx_frame()
950 recv_Dchannel(fifo->dch); in hfcsusb_rx_frame()
951 if (fifo->bch) in hfcsusb_rx_frame()
952 recv_Bchannel(fifo->bch, MISDN_ID_ANY); in hfcsusb_rx_frame()
953 if (fifo->ech) in hfcsusb_rx_frame()
954 recv_Echannel(fifo->ech, in hfcsusb_rx_frame()
974 recv_Bchannel(fifo->bch, MISDN_ID_ANY); in hfcsusb_rx_frame()
1006 struct usb_fifo *fifo = context_iso_urb->owner_fifo; in rx_iso_complete() local
1007 struct hfcsusb *hw = fifo->hw; in rx_iso_complete()
1014 fifon = fifo->fifonum; in rx_iso_complete()
1018 if (fifo->stop_gracefull) { in rx_iso_complete()
1019 fifo->stop_gracefull = 0; in rx_iso_complete()
1020 fifo->active = 0; in rx_iso_complete()
1041 if (fifo->active && !status) { in rx_iso_complete()
1043 maxlen = fifo->usb_packet_maxlen; in rx_iso_complete()
1071 if (fifo->last_urblen != maxlen) { in rx_iso_complete()
1073 * save fifo fill-level threshold bits in rx_iso_complete()
1084 hfcsusb_rx_frame(fifo, buf + 2, in rx_iso_complete()
1088 hfcsusb_rx_frame(fifo, buf, len, in rx_iso_complete()
1091 fifo->last_urblen = len; in rx_iso_complete()
1102 fill_isoc_urb(urb, fifo->hw->dev, fifo->pipe, in rx_iso_complete()
1104 fifo->usb_packet_maxlen, fifo->intervall, in rx_iso_complete()
1127 struct usb_fifo *fifo = (struct usb_fifo *) urb->context; in rx_int_complete() local
1128 struct hfcsusb *hw = fifo->hw; in rx_int_complete()
1132 if (fifo->stop_gracefull) { in rx_int_complete()
1133 fifo->stop_gracefull = 0; in rx_int_complete()
1134 fifo->active = 0; in rx_int_complete()
1140 fifon = fifo->fifonum; in rx_int_complete()
1141 if ((!fifo->active) || (urb->status)) { in rx_int_complete()
1144 "%s: %s: RX-Fifo %i is going down (%i)\n", in rx_int_complete()
1147 fifo->urb->interval = 0; /* cancel automatic rescheduling */ in rx_int_complete()
1151 buf = fifo->buffer; in rx_int_complete()
1152 maxlen = fifo->usb_packet_maxlen; in rx_int_complete()
1163 if (fifo->last_urblen != fifo->usb_packet_maxlen) { in rx_int_complete()
1176 hfcsusb_rx_frame(fifo, buf + 2, in rx_int_complete()
1180 hfcsusb_rx_frame(fifo, buf, urb->actual_length, in rx_int_complete()
1183 fifo->last_urblen = urb->actual_length; in rx_int_complete()
1198 struct usb_fifo *fifo = context_iso_urb->owner_fifo; in tx_iso_complete() local
1199 struct hfcsusb *hw = fifo->hw; in tx_iso_complete()
1208 if (fifo->stop_gracefull) { in tx_iso_complete()
1209 fifo->stop_gracefull = 0; in tx_iso_complete()
1210 fifo->active = 0; in tx_iso_complete()
1215 if (fifo->dch) { in tx_iso_complete()
1216 tx_skb = fifo->dch->tx_skb; in tx_iso_complete()
1217 tx_idx = &fifo->dch->tx_idx; in tx_iso_complete()
1219 } else if (fifo->bch) { in tx_iso_complete()
1220 tx_skb = fifo->bch->tx_skb; in tx_iso_complete()
1221 tx_idx = &fifo->bch->tx_idx; in tx_iso_complete()
1222 hdlc = test_bit(FLG_HDLC, &fifo->bch->Flags); in tx_iso_complete()
1230 fifon = fifo->fifonum; in tx_iso_complete()
1249 if (fifo->active && !status) { in tx_iso_complete()
1254 /* predict dataflow to avoid fifo overflow */ in tx_iso_complete()
1259 fill_isoc_urb(urb, fifo->hw->dev, fifo->pipe, in tx_iso_complete()
1261 fifo->usb_packet_maxlen, fifo->intervall, in tx_iso_complete()
1285 fifo->bit_line -= sink; in tx_iso_complete()
1286 current_len = (0 - fifo->bit_line) / 8; in tx_iso_complete()
1295 fifo->bit_line += current_len * 8; in tx_iso_complete()
1305 fifo->bit_line += 32; in tx_iso_complete()
1344 fifo->bit_line -= sink; in tx_iso_complete()
1345 if (fifo->bit_line < BITLINE_INF) in tx_iso_complete()
1346 fifo->bit_line = BITLINE_INF; in tx_iso_complete()
1366 if (fifo->dch && get_next_dframe(fifo->dch)) in tx_iso_complete()
1367 tx_skb = fifo->dch->tx_skb; in tx_iso_complete()
1368 else if (fifo->bch && in tx_iso_complete()
1369 get_next_bframe(fifo->bch)) { in tx_iso_complete()
1371 &fifo->bch->Flags)) in tx_iso_complete()
1372 confirm_Bsend(fifo->bch); in tx_iso_complete()
1373 tx_skb = fifo->bch->tx_skb; in tx_iso_complete()
1388 * fifo->intervall (ms) in tx_iso_complete()
1411 start_isoc_chain(struct usb_fifo *fifo, int num_packets_per_urb, in start_isoc_chain() argument
1414 struct hfcsusb *hw = fifo->hw; in start_isoc_chain()
1418 printk(KERN_DEBUG "%s: %s: fifo %i\n", in start_isoc_chain()
1419 hw->name, __func__, fifo->fifonum); in start_isoc_chain()
1423 if (!(fifo->iso[i].urb)) { in start_isoc_chain()
1424 fifo->iso[i].urb = in start_isoc_chain()
1426 if (!(fifo->iso[i].urb)) { in start_isoc_chain()
1428 "%s: %s: alloc urb for fifo %i failed", in start_isoc_chain()
1429 hw->name, __func__, fifo->fifonum); in start_isoc_chain()
1431 fifo->iso[i].owner_fifo = (struct usb_fifo *) fifo; in start_isoc_chain()
1432 fifo->iso[i].indx = i; in start_isoc_chain()
1436 (fifo->usb_packet_maxlen * in start_isoc_chain()
1438 fill_isoc_urb(fifo->iso[i].urb, in start_isoc_chain()
1439 fifo->hw->dev, fifo->pipe, in start_isoc_chain()
1440 fifo->iso[i].buffer, in start_isoc_chain()
1442 fifo->usb_packet_maxlen, in start_isoc_chain()
1443 fifo->intervall, complete, in start_isoc_chain()
1444 &fifo->iso[i]); in start_isoc_chain()
1445 memset(fifo->iso[i].buffer, 0, in start_isoc_chain()
1446 sizeof(fifo->iso[i].buffer)); in start_isoc_chain()
1449 fifo->iso[i].urb-> in start_isoc_chain()
1452 fifo->iso[i].urb-> in start_isoc_chain()
1462 fifo->bit_line = BITLINE_INF; in start_isoc_chain()
1464 errcode = usb_submit_urb(fifo->iso[i].urb, GFP_KERNEL); in start_isoc_chain()
1465 fifo->active = (errcode >= 0) ? 1 : 0; in start_isoc_chain()
1466 fifo->stop_gracefull = 0; in start_isoc_chain()
1473 return fifo->active; in start_isoc_chain()
1477 stop_iso_gracefull(struct usb_fifo *fifo) in stop_iso_gracefull() argument
1479 struct hfcsusb *hw = fifo->hw; in stop_iso_gracefull()
1486 printk(KERN_DEBUG "%s: %s for fifo %i.%i\n", in stop_iso_gracefull()
1487 hw->name, __func__, fifo->fifonum, i); in stop_iso_gracefull()
1488 fifo->stop_gracefull = 1; in stop_iso_gracefull()
1494 while (fifo->stop_gracefull && timeout--) in stop_iso_gracefull()
1496 if (debug && fifo->stop_gracefull) in stop_iso_gracefull()
1497 printk(KERN_DEBUG "%s: ERROR %s for fifo %i.%i\n", in stop_iso_gracefull()
1498 hw->name, __func__, fifo->fifonum, i); in stop_iso_gracefull()
1503 stop_int_gracefull(struct usb_fifo *fifo) in stop_int_gracefull() argument
1505 struct hfcsusb *hw = fifo->hw; in stop_int_gracefull()
1511 printk(KERN_DEBUG "%s: %s for fifo %i\n", in stop_int_gracefull()
1512 hw->name, __func__, fifo->fifonum); in stop_int_gracefull()
1513 fifo->stop_gracefull = 1; in stop_int_gracefull()
1517 while (fifo->stop_gracefull && timeout--) in stop_int_gracefull()
1519 if (debug && fifo->stop_gracefull) in stop_int_gracefull()
1520 printk(KERN_DEBUG "%s: ERROR %s for fifo %i\n", in stop_int_gracefull()
1521 hw->name, __func__, fifo->fifonum); in stop_int_gracefull()
1524 /* start the interrupt transfer for the given fifo */
1526 start_int_fifo(struct usb_fifo *fifo) in start_int_fifo() argument
1528 struct hfcsusb *hw = fifo->hw; in start_int_fifo()
1532 printk(KERN_DEBUG "%s: %s: INT IN fifo:%d\n", in start_int_fifo()
1533 hw->name, __func__, fifo->fifonum); in start_int_fifo()
1535 if (!fifo->urb) { in start_int_fifo()
1536 fifo->urb = usb_alloc_urb(0, GFP_KERNEL); in start_int_fifo()
1537 if (!fifo->urb) in start_int_fifo()
1540 usb_fill_int_urb(fifo->urb, fifo->hw->dev, fifo->pipe, in start_int_fifo()
1541 fifo->buffer, fifo->usb_packet_maxlen, in start_int_fifo()
1542 (usb_complete_t)rx_int_complete, fifo, fifo->intervall); in start_int_fifo()
1543 fifo->active = 1; in start_int_fifo()
1544 fifo->stop_gracefull = 0; in start_int_fifo()
1545 errcode = usb_submit_urb(fifo->urb, GFP_KERNEL); in start_int_fifo()
1549 fifo->active = 0; in start_int_fifo()
1578 struct usb_fifo *fifo; in reset_hfcsusb() local
1605 fifo = hw->fifos; in reset_hfcsusb()
1607 write_reg(hw, HFCUSB_FIFO, i); /* select the desired fifo */ in reset_hfcsusb()
1608 fifo[i].max_size = in reset_hfcsusb()
1610 fifo[i].last_urblen = 0; in reset_hfcsusb()
1621 write_reg(hw, HFCUSB_INC_RES_F, 2); /* reset the fifo */ in reset_hfcsusb()