Lines Matching defs:fifo

803 hfcsusb_rx_frame(struct usb_fifo *fifo, __u8 *data, unsigned int len,
806 struct hfcsusb *hw = fifo->hw;
809 int fifon = fifo->fifonum;
815 printk(KERN_DEBUG "%s: %s: fifo(%i) len(%i) "
818 fifo->dch, fifo->bch, fifo->ech);
823 if ((!!fifo->dch + !!fifo->bch + !!fifo->ech) != 1) {
830 if (fifo->dch) {
831 rx_skb = fifo->dch->rx_skb;
832 maxlen = fifo->dch->maxlen;
835 if (fifo->bch) {
836 if (test_bit(FLG_RX_OFF, &fifo->bch->Flags)) {
837 fifo->bch->dropcnt += len;
841 maxlen = bchannel_get_rxbuf(fifo->bch, len);
842 rx_skb = fifo->bch->rx_skb;
847 hw->name, fifo->bch->nr, len);
851 maxlen = fifo->bch->maxlen;
852 hdlc = test_bit(FLG_HDLC, &fifo->bch->Flags);
854 if (fifo->ech) {
855 rx_skb = fifo->ech->rx_skb;
856 maxlen = fifo->ech->maxlen;
860 if (fifo->dch || fifo->ech) {
864 if (fifo->dch)
865 fifo->dch->rx_skb = rx_skb;
866 if (fifo->ech)
867 fifo->ech->rx_skb = rx_skb;
879 "for fifo(%d) HFCUSB_D_RX\n",
909 if (fifo->dch)
910 recv_Dchannel(fifo->dch);
911 if (fifo->bch)
912 recv_Bchannel(fifo->bch, MISDN_ID_ANY,
914 if (fifo->ech)
915 recv_Echannel(fifo->ech,
934 recv_Bchannel(fifo->bch, MISDN_ID_ANY, false);
966 struct usb_fifo *fifo = context_iso_urb->owner_fifo;
967 struct hfcsusb *hw = fifo->hw;
975 fifon = fifo->fifonum;
979 if (fifo->stop_gracefull) {
980 fifo->stop_gracefull = 0;
981 fifo->active = 0;
1002 if (fifo->active && !status) {
1004 maxlen = fifo->usb_packet_maxlen;
1032 if (fifo->last_urblen != maxlen) {
1034 * save fifo fill-level threshold bits
1045 hfcsusb_rx_frame(fifo, buf + 2,
1049 hfcsusb_rx_frame(fifo, buf, len,
1052 fifo->last_urblen = len;
1063 fill_isoc_urb(urb, fifo->hw->dev, fifo->pipe,
1065 fifo->usb_packet_maxlen, fifo->intervall,
1088 struct usb_fifo *fifo = (struct usb_fifo *) urb->context;
1089 struct hfcsusb *hw = fifo->hw;
1094 if (fifo->stop_gracefull) {
1095 fifo->stop_gracefull = 0;
1096 fifo->active = 0;
1102 fifon = fifo->fifonum;
1103 if ((!fifo->active) || (urb->status)) {
1109 fifo->urb->interval = 0; /* cancel automatic rescheduling */
1113 buf = fifo->buffer;
1114 maxlen = fifo->usb_packet_maxlen;
1125 if (fifo->last_urblen != fifo->usb_packet_maxlen) {
1138 hfcsusb_rx_frame(fifo, buf + 2,
1142 hfcsusb_rx_frame(fifo, buf, urb->actual_length,
1145 fifo->last_urblen = urb->actual_length;
1160 struct usb_fifo *fifo = context_iso_urb->owner_fifo;
1161 struct hfcsusb *hw = fifo->hw;
1171 if (fifo->stop_gracefull) {
1172 fifo->stop_gracefull = 0;
1173 fifo->active = 0;
1178 if (fifo->dch) {
1179 tx_skb = fifo->dch->tx_skb;
1180 tx_idx = &fifo->dch->tx_idx;
1182 } else if (fifo->bch) {
1183 tx_skb = fifo->bch->tx_skb;
1184 tx_idx = &fifo->bch->tx_idx;
1185 hdlc = test_bit(FLG_HDLC, &fifo->bch->Flags);
1187 test_bit(FLG_FILLEMPTY, &fifo->bch->Flags))
1196 fifon = fifo->fifonum;
1215 if (fifo->active && !status) {
1220 /* predict dataflow to avoid fifo overflow */
1225 fill_isoc_urb(urb, fifo->hw->dev, fifo->pipe,
1227 fifo->usb_packet_maxlen, fifo->intervall,
1253 fifo->bit_line -= sink;
1254 current_len = (0 - fifo->bit_line) / 8;
1263 fifo->bit_line += current_len * 8;
1273 fifo->bit_line += 32;
1281 memset(p, fifo->bch->fill[0],
1317 fifo->bit_line -= sink;
1318 if (fifo->bit_line < BITLINE_INF)
1319 fifo->bit_line = BITLINE_INF;
1339 if (fifo->dch && get_next_dframe(fifo->dch))
1340 tx_skb = fifo->dch->tx_skb;
1341 else if (fifo->bch &&
1342 get_next_bframe(fifo->bch))
1343 tx_skb = fifo->bch->tx_skb;
1357 * fifo->intervall (ms)
1380 start_isoc_chain(struct usb_fifo *fifo, int num_packets_per_urb,
1383 struct hfcsusb *hw = fifo->hw;
1387 printk(KERN_DEBUG "%s: %s: fifo %i\n",
1388 hw->name, __func__, fifo->fifonum);
1392 if (!(fifo->iso[i].urb)) {
1393 fifo->iso[i].urb =
1395 if (!(fifo->iso[i].urb)) {
1397 "%s: %s: alloc urb for fifo %i failed",
1398 hw->name, __func__, fifo->fifonum);
1401 fifo->iso[i].owner_fifo = (struct usb_fifo *) fifo;
1402 fifo->iso[i].indx = i;
1406 (fifo->usb_packet_maxlen *
1408 fill_isoc_urb(fifo->iso[i].urb,
1409 fifo->hw->dev, fifo->pipe,
1410 fifo->iso[i].buffer,
1412 fifo->usb_packet_maxlen,
1413 fifo->intervall, complete,
1414 &fifo->iso[i]);
1415 memset(fifo->iso[i].buffer, 0,
1416 sizeof(fifo->iso[i].buffer));
1419 fifo->iso[i].urb->
1422 fifo->iso[i].urb->
1432 fifo->bit_line = BITLINE_INF;
1434 errcode = usb_submit_urb(fifo->iso[i].urb, GFP_KERNEL);
1435 fifo->active = (errcode >= 0) ? 1 : 0;
1436 fifo->stop_gracefull = 0;
1443 return fifo->active;
1447 stop_iso_gracefull(struct usb_fifo *fifo)
1449 struct hfcsusb *hw = fifo->hw;
1456 printk(KERN_DEBUG "%s: %s for fifo %i.%i\n",
1457 hw->name, __func__, fifo->fifonum, i);
1458 fifo->stop_gracefull = 1;
1464 while (fifo->stop_gracefull && timeout--)
1466 if (debug && fifo->stop_gracefull)
1467 printk(KERN_DEBUG "%s: ERROR %s for fifo %i.%i\n",
1468 hw->name, __func__, fifo->fifonum, i);
1473 stop_int_gracefull(struct usb_fifo *fifo)
1475 struct hfcsusb *hw = fifo->hw;
1481 printk(KERN_DEBUG "%s: %s for fifo %i\n",
1482 hw->name, __func__, fifo->fifonum);
1483 fifo->stop_gracefull = 1;
1487 while (fifo->stop_gracefull && timeout--)
1489 if (debug && fifo->stop_gracefull)
1490 printk(KERN_DEBUG "%s: ERROR %s for fifo %i\n",
1491 hw->name, __func__, fifo->fifonum);
1494 /* start the interrupt transfer for the given fifo */
1496 start_int_fifo(struct usb_fifo *fifo)
1498 struct hfcsusb *hw = fifo->hw;
1502 printk(KERN_DEBUG "%s: %s: INT IN fifo:%d\n",
1503 hw->name, __func__, fifo->fifonum);
1505 if (!fifo->urb) {
1506 fifo->urb = usb_alloc_urb(0, GFP_KERNEL);
1507 if (!fifo->urb)
1510 usb_fill_int_urb(fifo->urb, fifo->hw->dev, fifo->pipe,
1511 fifo->buffer, fifo->usb_packet_maxlen,
1512 (usb_complete_t)rx_int_complete, fifo, fifo->intervall);
1513 fifo->active = 1;
1514 fifo->stop_gracefull = 0;
1515 errcode = usb_submit_urb(fifo->urb, GFP_KERNEL);
1519 fifo->active = 0;
1548 struct usb_fifo *fifo;
1575 fifo = hw->fifos;
1577 write_reg(hw, HFCUSB_FIFO, i); /* select the desired fifo */
1578 fifo[i].max_size =
1580 fifo[i].last_urblen = 0;
1591 write_reg(hw, HFCUSB_INC_RES_F, 2); /* reset the fifo */