Lines Matching refs:bch

47 static int  hfcsusb_setup_bch(struct bchannel *bch, int protocol);
48 static void deactivate_bchannel(struct bchannel *bch);
198 struct bchannel *bch = container_of(ch, struct bchannel, ch);
199 struct hfcsusb *hw = bch->hw;
210 ret = bchannel_senddata(bch, skb);
219 if (!test_and_set_bit(FLG_ACTIVE, &bch->Flags)) {
220 hfcsusb_start_endpoint(hw, bch->nr - 1);
221 ret = hfcsusb_setup_bch(bch, ch->protocol);
229 deactivate_bchannel(bch);
251 phi = kzalloc(struct_size(phi, bch, dch->dev.nrbchan), GFP_ATOMIC);
260 phi->bch[i].protocol = hw->bch[i].ch.protocol;
261 phi->bch[i].Flags = hw->bch[i].Flags;
264 struct_size(phi, bch, dch->dev.nrbchan), phi, GFP_ATOMIC);
471 struct bchannel *bch;
482 bch = &hw->bch[rq->adr.channel - 1];
483 if (test_and_set_bit(FLG_OPEN, &bch->Flags))
485 bch->ch.protocol = rq->protocol;
486 rq->ch = &bch->ch;
684 hfcsusb_setup_bch(struct bchannel *bch, int protocol)
686 struct hfcsusb *hw = bch->hw;
691 hw->name, __func__, bch->state, protocol,
692 bch->nr);
701 bch->state = -1;
704 if (bch->state == ISDN_P_NONE)
706 bch->state = ISDN_P_NONE;
707 clear_bit(FLG_HDLC, &bch->Flags);
708 clear_bit(FLG_TRANSPARENT, &bch->Flags);
712 bch->state = protocol;
713 set_bit(FLG_TRANSPARENT, &bch->Flags);
716 bch->state = protocol;
717 set_bit(FLG_HDLC, &bch->Flags);
727 write_reg(hw, HFCUSB_FIFO, (bch->nr == 1) ? 0 : 2);
730 write_reg(hw, HFCUSB_FIFO, (bch->nr == 1) ? 1 : 3);
736 if (test_bit(FLG_ACTIVE, &hw->bch[0].Flags)) {
740 if (test_bit(FLG_ACTIVE, &hw->bch[1].Flags)) {
748 handle_led(hw, (bch->nr == 1) ? LED_B1_ON : LED_B2_ON);
750 handle_led(hw, (bch->nr == 1) ? LED_B1_OFF :
796 channel_bctrl(struct bchannel *bch, struct mISDN_ctrl_req *cq)
798 return mISDN_ctrl_bchannel(bch, cq);
816 "dch(%p) bch(%p) ech(%p)\n",
818 fifo->dch, fifo->bch, fifo->ech);
823 if ((!!fifo->dch + !!fifo->bch + !!fifo->ech) != 1) {
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);
911 if (fifo->bch)
912 recv_Bchannel(fifo->bch, MISDN_ID_ANY,
934 recv_Bchannel(fifo->bch, MISDN_ID_ANY, false);
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))
1281 memset(p, fifo->bch->fill[0],
1341 else if (fifo->bch &&
1342 get_next_bframe(fifo->bch))
1343 tx_skb = fifo->bch->tx_skb;
1765 mISDN_freebchannel(&hw->bch[1]);
1766 mISDN_freebchannel(&hw->bch[0]);
1783 deactivate_bchannel(struct bchannel *bch)
1785 struct hfcsusb *hw = bch->hw;
1788 if (bch->debug & DEBUG_HW)
1789 printk(KERN_DEBUG "%s: %s: bch->nr(%i)\n",
1790 hw->name, __func__, bch->nr);
1793 mISDN_clear_bchannel(bch);
1795 hfcsusb_setup_bch(bch, ISDN_P_NONE);
1796 hfcsusb_stop_endpoint(hw, bch->nr - 1);
1805 struct bchannel *bch = container_of(ch, struct bchannel, ch);
1808 if (bch->debug & DEBUG_HW)
1819 test_and_clear_bit(FLG_OPEN, &bch->Flags);
1820 deactivate_bchannel(bch);
1827 ret = channel_bctrl(bch, arg);
1863 hw->bch[i].nr = i + 1;
1865 hw->bch[i].debug = debug;
1866 mISDN_initbchannel(&hw->bch[i], MAX_DATA_MEM, poll >> 1);
1867 hw->bch[i].hw = hw;
1868 hw->bch[i].ch.send = hfcusb_l2l1B;
1869 hw->bch[i].ch.ctrl = hfc_bctrl;
1870 hw->bch[i].ch.nr = i + 1;
1871 list_add(&hw->bch[i].ch.list, &hw->dch.dev.bchannels);
1874 hw->fifos[HFCUSB_B1_TX].bch = &hw->bch[0];
1875 hw->fifos[HFCUSB_B1_RX].bch = &hw->bch[0];
1876 hw->fifos[HFCUSB_B2_TX].bch = &hw->bch[1];
1877 hw->fifos[HFCUSB_B2_RX].bch = &hw->bch[1];
1903 mISDN_freebchannel(&hw->bch[1]);
1904 mISDN_freebchannel(&hw->bch[0]);