• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/isdn/hardware/mISDN/

Lines Matching refs:wch

463 W6692_empty_Bfifo(struct w6692_ch *wch, int count)
465 struct w6692_hw *card = wch->bch.hw;
469 if (unlikely(wch->bch.state == ISDN_P_NONE)) {
471 WriteW6692B(wch, W_B_CMDR, W_B_CMDR_RACK | W_B_CMDR_RACT);
472 if (wch->bch.rx_skb)
473 skb_trim(wch->bch.rx_skb, 0);
476 if (!wch->bch.rx_skb) {
477 wch->bch.rx_skb = mI_alloc_skb(wch->bch.maxlen, GFP_ATOMIC);
478 if (unlikely(!wch->bch.rx_skb)) {
480 WriteW6692B(wch, W_B_CMDR, W_B_CMDR_RACK |
485 if (wch->bch.rx_skb->len + count > wch->bch.maxlen) {
488 WriteW6692B(wch, W_B_CMDR, W_B_CMDR_RACK | W_B_CMDR_RACT);
489 skb_trim(wch->bch.rx_skb, 0);
492 ptr = skb_put(wch->bch.rx_skb, count);
493 insb(wch->addr + W_B_RFIFO, ptr, count);
494 WriteW6692B(wch, W_B_CMDR, W_B_CMDR_RACK | W_B_CMDR_RACT);
497 wch->bch.nr, card->name, count);
503 W6692_fill_Bfifo(struct w6692_ch *wch)
505 struct w6692_hw *card = wch->bch.hw;
510 if (!wch->bch.tx_skb)
512 count = wch->bch.tx_skb->len - wch->bch.tx_idx;
515 ptr = wch->bch.tx_skb->data + wch->bch.tx_idx;
518 else if (test_bit(FLG_HDLC, &wch->bch.Flags))
522 count, wch->bch.tx_idx);
523 wch->bch.tx_idx += count;
524 outsb(wch->addr + W_B_XFIFO, ptr, count);
525 WriteW6692B(wch, W_B_CMDR, cmd);
528 wch->bch.nr, card->name, count);
535 disable_pots(struct w6692_ch *wch)
537 struct w6692_hw *card = wch->bch.hw;
541 wch->b_mode &= ~(W_B_MODE_EPCM | W_B_MODE_BSW0);
542 WriteW6692B(wch, W_B_MODE, wch->b_mode);
543 WriteW6692B(wch, W_B_CMDR, W_B_CMDR_RRST | W_B_CMDR_RACT |
549 w6692_mode(struct w6692_ch *wch, u32 pr)
553 card = wch->bch.hw;
555 wch->bch.nr, wch->bch.state, pr);
558 if ((card->fmask & pots) && (wch->b_mode & W_B_MODE_EPCM))
559 disable_pots(wch);
560 wch->b_mode = 0;
561 mISDN_clear_bchannel(&wch->bch);
562 WriteW6692B(wch, W_B_MODE, wch->b_mode);
563 WriteW6692B(wch, W_B_CMDR, W_B_CMDR_RRST | W_B_CMDR_XRST);
564 test_and_clear_bit(FLG_HDLC, &wch->bch.Flags);
565 test_and_clear_bit(FLG_TRANSPARENT, &wch->bch.Flags);
568 wch->b_mode = W_B_MODE_MMS;
569 WriteW6692B(wch, W_B_MODE, wch->b_mode);
570 WriteW6692B(wch, W_B_EXIM, 0);
571 WriteW6692B(wch, W_B_CMDR, W_B_CMDR_RRST | W_B_CMDR_RACT |
573 test_and_set_bit(FLG_TRANSPARENT, &wch->bch.Flags);
576 wch->b_mode = W_B_MODE_ITF;
577 WriteW6692B(wch, W_B_MODE, wch->b_mode);
578 WriteW6692B(wch, W_B_ADM1, 0xff);
579 WriteW6692B(wch, W_B_ADM2, 0xff);
580 WriteW6692B(wch, W_B_EXIM, 0);
581 WriteW6692B(wch, W_B_CMDR, W_B_CMDR_RRST | W_B_CMDR_RACT |
583 test_and_set_bit(FLG_HDLC, &wch->bch.Flags);
589 wch->bch.state = pr;
594 send_next(struct w6692_ch *wch)
596 if (wch->bch.tx_skb && wch->bch.tx_idx < wch->bch.tx_skb->len)
597 W6692_fill_Bfifo(wch);
599 if (wch->bch.tx_skb) {
601 if (test_bit(FLG_TRANSPARENT, &wch->bch.Flags))
602 confirm_Bsend(&wch->bch);
603 dev_kfree_skb(wch->bch.tx_skb);
605 if (get_next_bframe(&wch->bch))
606 W6692_fill_Bfifo(wch);
613 struct w6692_ch *wch = &card->bc[ch];
617 stat = ReadW6692B(wch, W_B_EXIR);
618 pr_debug("%s: B%d EXIR %02x\n", card->name, wch->bch.nr, stat);
620 star = ReadW6692B(wch, W_B_STAR);
623 test_bit(FLG_ACTIVE, &wch->bch.Flags)) {
625 wch->bch.nr, wch->bch.state);
627 wch->bch.err_rdo++;
630 if (test_bit(FLG_HDLC, &wch->bch.Flags)) {
633 card->name, wch->bch.nr);
635 wch->bch.err_crc++;
640 card->name, wch->bch.nr);
642 wch->bch.err_inv++;
646 WriteW6692B(wch, W_B_CMDR, W_B_CMDR_RACK |
648 if (wch->bch.rx_skb)
649 skb_trim(wch->bch.rx_skb, 0);
651 count = ReadW6692B(wch, W_B_RBCL) &
655 W6692_empty_Bfifo(wch, count);
656 recv_Bchannel(&wch->bch, 0);
661 star = ReadW6692B(wch, W_B_STAR);
664 wch->bch.nr, wch->bch.state);
666 wch->bch.err_rdo++;
668 WriteW6692B(wch, W_B_CMDR, W_B_CMDR_RACK |
671 W6692_empty_Bfifo(wch, W_B_FIFO_THRESH);
672 if (test_bit(FLG_TRANSPARENT, &wch->bch.Flags) &&
673 wch->bch.rx_skb && (wch->bch.rx_skb->len > 0))
674 recv_Bchannel(&wch->bch, 0);
681 wch->bch.nr, wch->bch.state);
683 wch->bch.err_rdo++;
685 WriteW6692B(wch, W_B_CMDR, W_B_CMDR_RACK |
691 star = ReadW6692B(wch, W_B_STAR);
693 wch->bch.nr, star);
697 wch->bch.nr, wch->bch.state);
699 wch->bch.err_xdu++;
701 WriteW6692B(wch, W_B_CMDR, W_B_CMDR_XRST |
704 if (wch->bch.tx_skb) {
705 if (!test_bit(FLG_TRANSPARENT, &wch->bch.Flags))
706 wch->bch.tx_idx = 0;
709 send_next(wch);
715 wch->bch.nr, wch->bch.state);
717 wch->bch.err_xdu++;
719 WriteW6692B(wch, W_B_CMDR, W_B_CMDR_XRST | W_B_CMDR_RACT);
721 if (wch->bch.tx_skb) {
722 if (!test_bit(FLG_TRANSPARENT, &wch->bch.Flags))
723 wch->bch.tx_idx = 0;
725 send_next(wch);