Lines Matching refs:fifo

828 	case MISDN_CTRL_FILL_EMPTY: /* fill fifo, if empty */
844 hfcsusb_rx_frame(struct usb_fifo *fifo, __u8 *data, unsigned int len,
847 struct hfcsusb *hw = fifo->hw;
850 int fifon = fifo->fifonum;
855 printk(KERN_DEBUG "%s: %s: fifo(%i) len(%i) "
858 fifo->dch, fifo->bch, fifo->ech);
863 if ((!!fifo->dch + !!fifo->bch + !!fifo->ech) != 1) {
870 if (fifo->dch) {
871 rx_skb = fifo->dch->rx_skb;
872 maxlen = fifo->dch->maxlen;
875 if (fifo->bch) {
876 rx_skb = fifo->bch->rx_skb;
877 maxlen = fifo->bch->maxlen;
878 hdlc = test_bit(FLG_HDLC, &fifo->bch->Flags);
880 if (fifo->ech) {
881 rx_skb = fifo->ech->rx_skb;
882 maxlen = fifo->ech->maxlen;
889 if (fifo->dch)
890 fifo->dch->rx_skb = rx_skb;
891 if (fifo->bch)
892 fifo->bch->rx_skb = rx_skb;
893 if (fifo->ech)
894 fifo->ech->rx_skb = rx_skb;
904 if (fifo->dch || fifo->ech) {
908 "for fifo(%d) HFCUSB_D_RX\n",
914 } else if (fifo->bch) {
918 "for fifo(%d) HFCUSB_B_RX\n",
948 if (fifo->dch)
949 recv_Dchannel(fifo->dch);
950 if (fifo->bch)
951 recv_Bchannel(fifo->bch, MISDN_ID_ANY);
952 if (fifo->ech)
953 recv_Echannel(fifo->ech,
973 recv_Bchannel(fifo->bch, MISDN_ID_ANY);
1005 struct usb_fifo *fifo = context_iso_urb->owner_fifo;
1006 struct hfcsusb *hw = fifo->hw;
1013 fifon = fifo->fifonum;
1017 if (fifo->stop_gracefull) {
1018 fifo->stop_gracefull = 0;
1019 fifo->active = 0;
1040 if (fifo->active && !status) {
1042 maxlen = fifo->usb_packet_maxlen;
1070 if (fifo->last_urblen != maxlen) {
1072 * save fifo fill-level threshold bits
1083 hfcsusb_rx_frame(fifo, buf + 2,
1087 hfcsusb_rx_frame(fifo, buf, len,
1090 fifo->last_urblen = len;
1101 fill_isoc_urb(urb, fifo->hw->dev, fifo->pipe,
1103 fifo->usb_packet_maxlen, fifo->intervall,
1126 struct usb_fifo *fifo = (struct usb_fifo *) urb->context;
1127 struct hfcsusb *hw = fifo->hw;
1131 if (fifo->stop_gracefull) {
1132 fifo->stop_gracefull = 0;
1133 fifo->active = 0;
1139 fifon = fifo->fifonum;
1140 if ((!fifo->active) || (urb->status)) {
1146 fifo->urb->interval = 0; /* cancel automatic rescheduling */
1150 buf = fifo->buffer;
1151 maxlen = fifo->usb_packet_maxlen;
1162 if (fifo->last_urblen != fifo->usb_packet_maxlen) {
1175 hfcsusb_rx_frame(fifo, buf + 2,
1179 hfcsusb_rx_frame(fifo, buf, urb->actual_length,
1182 fifo->last_urblen = urb->actual_length;
1197 struct usb_fifo *fifo = context_iso_urb->owner_fifo;
1198 struct hfcsusb *hw = fifo->hw;
1207 if (fifo->stop_gracefull) {
1208 fifo->stop_gracefull = 0;
1209 fifo->active = 0;
1214 if (fifo->dch) {
1215 tx_skb = fifo->dch->tx_skb;
1216 tx_idx = &fifo->dch->tx_idx;
1218 } else if (fifo->bch) {
1219 tx_skb = fifo->bch->tx_skb;
1220 tx_idx = &fifo->bch->tx_idx;
1221 hdlc = test_bit(FLG_HDLC, &fifo->bch->Flags);
1229 fifon = fifo->fifonum;
1248 if (fifo->active && !status) {
1253 /* predict dataflow to avoid fifo overflow */
1258 fill_isoc_urb(urb, fifo->hw->dev, fifo->pipe,
1260 fifo->usb_packet_maxlen, fifo->intervall,
1284 fifo->bit_line -= sink;
1285 current_len = (0 - fifo->bit_line) / 8;
1294 fifo->bit_line += current_len * 8;
1304 fifo->bit_line += 32;
1343 fifo->bit_line -= sink;
1344 if (fifo->bit_line < BITLINE_INF)
1345 fifo->bit_line = BITLINE_INF;
1365 if (fifo->dch && get_next_dframe(fifo->dch))
1366 tx_skb = fifo->dch->tx_skb;
1367 else if (fifo->bch &&
1368 get_next_bframe(fifo->bch)) {
1370 &fifo->bch->Flags))
1371 confirm_Bsend(fifo->bch);
1372 tx_skb = fifo->bch->tx_skb;
1387 * fifo->intervall (ms)
1410 start_isoc_chain(struct usb_fifo *fifo, int num_packets_per_urb,
1413 struct hfcsusb *hw = fifo->hw;
1417 printk(KERN_DEBUG "%s: %s: fifo %i\n",
1418 hw->name, __func__, fifo->fifonum);
1422 if (!(fifo->iso[i].urb)) {
1423 fifo->iso[i].urb =
1425 if (!(fifo->iso[i].urb)) {
1427 "%s: %s: alloc urb for fifo %i failed",
1428 hw->name, __func__, fifo->fifonum);
1430 fifo->iso[i].owner_fifo = (struct usb_fifo *) fifo;
1431 fifo->iso[i].indx = i;
1435 (fifo->usb_packet_maxlen *
1437 fill_isoc_urb(fifo->iso[i].urb,
1438 fifo->hw->dev, fifo->pipe,
1439 fifo->iso[i].buffer,
1441 fifo->usb_packet_maxlen,
1442 fifo->intervall, complete,
1443 &fifo->iso[i]);
1444 memset(fifo->iso[i].buffer, 0,
1445 sizeof(fifo->iso[i].buffer));
1448 fifo->iso[i].urb->
1451 fifo->iso[i].urb->
1461 fifo->bit_line = BITLINE_INF;
1463 errcode = usb_submit_urb(fifo->iso[i].urb, GFP_KERNEL);
1464 fifo->active = (errcode >= 0) ? 1 : 0;
1465 fifo->stop_gracefull = 0;
1472 return fifo->active;
1476 stop_iso_gracefull(struct usb_fifo *fifo)
1478 struct hfcsusb *hw = fifo->hw;
1485 printk(KERN_DEBUG "%s: %s for fifo %i.%i\n",
1486 hw->name, __func__, fifo->fifonum, i);
1487 fifo->stop_gracefull = 1;
1493 while (fifo->stop_gracefull && timeout--)
1495 if (debug && fifo->stop_gracefull)
1496 printk(KERN_DEBUG "%s: ERROR %s for fifo %i.%i\n",
1497 hw->name, __func__, fifo->fifonum, i);
1502 stop_int_gracefull(struct usb_fifo *fifo)
1504 struct hfcsusb *hw = fifo->hw;
1510 printk(KERN_DEBUG "%s: %s for fifo %i\n",
1511 hw->name, __func__, fifo->fifonum);
1512 fifo->stop_gracefull = 1;
1516 while (fifo->stop_gracefull && timeout--)
1518 if (debug && fifo->stop_gracefull)
1519 printk(KERN_DEBUG "%s: ERROR %s for fifo %i\n",
1520 hw->name, __func__, fifo->fifonum);
1523 /* start the interrupt transfer for the given fifo */
1525 start_int_fifo(struct usb_fifo *fifo)
1527 struct hfcsusb *hw = fifo->hw;
1531 printk(KERN_DEBUG "%s: %s: INT IN fifo:%d\n",
1532 hw->name, __func__, fifo->fifonum);
1534 if (!fifo->urb) {
1535 fifo->urb = usb_alloc_urb(0, GFP_KERNEL);
1536 if (!fifo->urb)
1539 usb_fill_int_urb(fifo->urb, fifo->hw->dev, fifo->pipe,
1540 fifo->buffer, fifo->usb_packet_maxlen,
1541 (usb_complete_t)rx_int_complete, fifo, fifo->intervall);
1542 fifo->active = 1;
1543 fifo->stop_gracefull = 0;
1544 errcode = usb_submit_urb(fifo->urb, GFP_KERNEL);
1548 fifo->active = 0;
1577 struct usb_fifo *fifo;
1604 fifo = hw->fifos;
1606 write_reg(hw, HFCUSB_FIFO, i); /* select the desired fifo */
1607 fifo[i].max_size =
1609 fifo[i].last_urblen = 0;
1620 write_reg(hw, HFCUSB_INC_RES_F, 2); /* reset the fifo */