Lines Matching refs:bch
61 static int hfcsusb_setup_bch(struct bchannel *bch, int protocol);
62 static void deactivate_bchannel(struct bchannel *bch);
212 struct bchannel *bch = container_of(ch, struct bchannel, ch); in hfcusb_l2l1B() local
213 struct hfcsusb *hw = bch->hw; in hfcusb_l2l1B()
224 ret = bchannel_senddata(bch, skb); in hfcusb_l2l1B()
233 if (!test_and_set_bit(FLG_ACTIVE, &bch->Flags)) { in hfcusb_l2l1B()
234 hfcsusb_start_endpoint(hw, bch->nr - 1); in hfcusb_l2l1B()
235 ret = hfcsusb_setup_bch(bch, ch->protocol); in hfcusb_l2l1B()
243 deactivate_bchannel(bch); in hfcusb_l2l1B()
272 phi->bch[i].protocol = hw->bch[i].ch.protocol; in hfcsusb_ph_info()
273 phi->bch[i].Flags = hw->bch[i].Flags; in hfcsusb_ph_info()
480 struct bchannel *bch; in open_bchannel() local
491 bch = &hw->bch[rq->adr.channel - 1]; in open_bchannel()
492 if (test_and_set_bit(FLG_OPEN, &bch->Flags)) in open_bchannel()
494 bch->ch.protocol = rq->protocol; in open_bchannel()
495 rq->ch = &bch->ch; in open_bchannel()
693 hfcsusb_setup_bch(struct bchannel *bch, int protocol) in hfcsusb_setup_bch() argument
695 struct hfcsusb *hw = bch->hw; in hfcsusb_setup_bch()
700 hw->name, __func__, bch->state, protocol, in hfcsusb_setup_bch()
701 bch->nr); in hfcsusb_setup_bch()
710 bch->state = -1; in hfcsusb_setup_bch()
713 if (bch->state == ISDN_P_NONE) in hfcsusb_setup_bch()
715 bch->state = ISDN_P_NONE; in hfcsusb_setup_bch()
716 clear_bit(FLG_HDLC, &bch->Flags); in hfcsusb_setup_bch()
717 clear_bit(FLG_TRANSPARENT, &bch->Flags); in hfcsusb_setup_bch()
721 bch->state = protocol; in hfcsusb_setup_bch()
722 set_bit(FLG_TRANSPARENT, &bch->Flags); in hfcsusb_setup_bch()
725 bch->state = protocol; in hfcsusb_setup_bch()
726 set_bit(FLG_HDLC, &bch->Flags); in hfcsusb_setup_bch()
736 write_reg(hw, HFCUSB_FIFO, (bch->nr == 1) ? 0 : 2); in hfcsusb_setup_bch()
739 write_reg(hw, HFCUSB_FIFO, (bch->nr == 1) ? 1 : 3); in hfcsusb_setup_bch()
745 if (test_bit(FLG_ACTIVE, &hw->bch[0].Flags)) { in hfcsusb_setup_bch()
749 if (test_bit(FLG_ACTIVE, &hw->bch[1].Flags)) { in hfcsusb_setup_bch()
757 handle_led(hw, (bch->nr == 1) ? LED_B1_ON : LED_B2_ON); in hfcsusb_setup_bch()
759 handle_led(hw, (bch->nr == 1) ? LED_B1_OFF : in hfcsusb_setup_bch()
806 channel_bctrl(struct bchannel *bch, struct mISDN_ctrl_req *cq) in channel_bctrl() argument
808 return mISDN_ctrl_bchannel(bch, cq); in channel_bctrl()
827 fifo->dch, fifo->bch, fifo->ech); in hfcsusb_rx_frame()
832 if ((!!fifo->dch + !!fifo->bch + !!fifo->ech) != 1) { in hfcsusb_rx_frame()
844 if (fifo->bch) { in hfcsusb_rx_frame()
845 if (test_bit(FLG_RX_OFF, &fifo->bch->Flags)) { in hfcsusb_rx_frame()
846 fifo->bch->dropcnt += len; in hfcsusb_rx_frame()
850 maxlen = bchannel_get_rxbuf(fifo->bch, len); in hfcsusb_rx_frame()
851 rx_skb = fifo->bch->rx_skb; in hfcsusb_rx_frame()
856 hw->name, fifo->bch->nr, len); in hfcsusb_rx_frame()
860 maxlen = fifo->bch->maxlen; in hfcsusb_rx_frame()
861 hdlc = test_bit(FLG_HDLC, &fifo->bch->Flags); in hfcsusb_rx_frame()
920 if (fifo->bch) in hfcsusb_rx_frame()
921 recv_Bchannel(fifo->bch, MISDN_ID_ANY, in hfcsusb_rx_frame()
943 recv_Bchannel(fifo->bch, MISDN_ID_ANY, false); in hfcsusb_rx_frame()
1188 } else if (fifo->bch) { in tx_iso_complete()
1189 tx_skb = fifo->bch->tx_skb; in tx_iso_complete()
1190 tx_idx = &fifo->bch->tx_idx; in tx_iso_complete()
1191 hdlc = test_bit(FLG_HDLC, &fifo->bch->Flags); in tx_iso_complete()
1193 test_bit(FLG_FILLEMPTY, &fifo->bch->Flags)) in tx_iso_complete()
1287 memset(p, fifo->bch->fill[0], in tx_iso_complete()
1347 else if (fifo->bch && in tx_iso_complete()
1348 get_next_bframe(fifo->bch)) in tx_iso_complete()
1349 tx_skb = fifo->bch->tx_skb; in tx_iso_complete()
1760 mISDN_freebchannel(&hw->bch[1]); in release_hw()
1761 mISDN_freebchannel(&hw->bch[0]); in release_hw()
1778 deactivate_bchannel(struct bchannel *bch) in deactivate_bchannel() argument
1780 struct hfcsusb *hw = bch->hw; in deactivate_bchannel()
1783 if (bch->debug & DEBUG_HW) in deactivate_bchannel()
1785 hw->name, __func__, bch->nr); in deactivate_bchannel()
1788 mISDN_clear_bchannel(bch); in deactivate_bchannel()
1790 hfcsusb_setup_bch(bch, ISDN_P_NONE); in deactivate_bchannel()
1791 hfcsusb_stop_endpoint(hw, bch->nr - 1); in deactivate_bchannel()
1800 struct bchannel *bch = container_of(ch, struct bchannel, ch); in hfc_bctrl() local
1803 if (bch->debug & DEBUG_HW) in hfc_bctrl()
1814 test_and_clear_bit(FLG_OPEN, &bch->Flags); in hfc_bctrl()
1815 deactivate_bchannel(bch); in hfc_bctrl()
1822 ret = channel_bctrl(bch, arg); in hfc_bctrl()
1858 hw->bch[i].nr = i + 1; in setup_instance()
1860 hw->bch[i].debug = debug; in setup_instance()
1861 mISDN_initbchannel(&hw->bch[i], MAX_DATA_MEM, poll >> 1); in setup_instance()
1862 hw->bch[i].hw = hw; in setup_instance()
1863 hw->bch[i].ch.send = hfcusb_l2l1B; in setup_instance()
1864 hw->bch[i].ch.ctrl = hfc_bctrl; in setup_instance()
1865 hw->bch[i].ch.nr = i + 1; in setup_instance()
1866 list_add(&hw->bch[i].ch.list, &hw->dch.dev.bchannels); in setup_instance()
1869 hw->fifos[HFCUSB_B1_TX].bch = &hw->bch[0]; in setup_instance()
1870 hw->fifos[HFCUSB_B1_RX].bch = &hw->bch[0]; in setup_instance()
1871 hw->fifos[HFCUSB_B2_TX].bch = &hw->bch[1]; in setup_instance()
1872 hw->fifos[HFCUSB_B2_RX].bch = &hw->bch[1]; in setup_instance()
1898 mISDN_freebchannel(&hw->bch[1]); in setup_instance()
1899 mISDN_freebchannel(&hw->bch[0]); in setup_instance()