Lines Matching refs:dch

67 	struct dchannel		dch;  member
82 card->dch.debug = debug; in _set_debug()
187 schedule_event(&card->dch, FLG_PHCHANGE); in W6692_new_ph()
191 W6692_ph_bh(struct dchannel *dch) in W6692_ph_bh() argument
193 struct w6692_hw *card = dch->hw; in W6692_ph_bh()
197 dch->state = 0; in W6692_ph_bh()
198 l1_event(dch->l1, HW_RESET_IND); in W6692_ph_bh()
201 dch->state = 3; in W6692_ph_bh()
202 l1_event(dch->l1, HW_DEACT_CNF); in W6692_ph_bh()
205 dch->state = 3; in W6692_ph_bh()
206 l1_event(dch->l1, HW_DEACT_IND); in W6692_ph_bh()
209 dch->state = 4; in W6692_ph_bh()
210 l1_event(dch->l1, HW_POWERUP_IND); in W6692_ph_bh()
213 if (dch->state <= 5) { in W6692_ph_bh()
214 dch->state = 5; in W6692_ph_bh()
215 l1_event(dch->l1, ANYSIGNAL); in W6692_ph_bh()
217 dch->state = 8; in W6692_ph_bh()
218 l1_event(dch->l1, LOSTFRAMING); in W6692_ph_bh()
222 dch->state = 6; in W6692_ph_bh()
223 l1_event(dch->l1, INFO2); in W6692_ph_bh()
226 dch->state = 7; in W6692_ph_bh()
227 l1_event(dch->l1, INFO4_P8); in W6692_ph_bh()
230 dch->state = 7; in W6692_ph_bh()
231 l1_event(dch->l1, INFO4_P10); in W6692_ph_bh()
235 card->name, card->state, dch->state); in W6692_ph_bh()
238 pr_debug("%s: TE newstate %02x\n", card->name, dch->state); in W6692_ph_bh()
244 struct dchannel *dch = &card->dch; in W6692_empty_Dfifo() local
248 if (!dch->rx_skb) { in W6692_empty_Dfifo()
249 dch->rx_skb = mI_alloc_skb(card->dch.maxlen, GFP_ATOMIC); in W6692_empty_Dfifo()
250 if (!dch->rx_skb) { in W6692_empty_Dfifo()
256 if ((dch->rx_skb->len + count) >= dch->maxlen) { in W6692_empty_Dfifo()
258 dch->rx_skb->len + count); in W6692_empty_Dfifo()
262 ptr = skb_put(dch->rx_skb, count); in W6692_empty_Dfifo()
275 struct dchannel *dch = &card->dch; in W6692_fill_Dfifo() local
281 if (!dch->tx_skb) in W6692_fill_Dfifo()
283 count = dch->tx_skb->len - dch->tx_idx; in W6692_fill_Dfifo()
290 ptr = dch->tx_skb->data + dch->tx_idx; in W6692_fill_Dfifo()
291 dch->tx_idx += count; in W6692_fill_Dfifo()
294 if (test_and_set_bit(FLG_BUSY_TIMER, &dch->Flags)) { in W6692_fill_Dfifo()
296 del_timer(&dch->timer); in W6692_fill_Dfifo()
298 dch->timer.expires = jiffies + ((DBUSY_TIMER_VALUE * HZ) / 1000); in W6692_fill_Dfifo()
299 add_timer(&dch->timer); in W6692_fill_Dfifo()
310 struct dchannel *dch = &card->dch; in d_retransmit() local
312 if (test_and_clear_bit(FLG_BUSY_TIMER, &dch->Flags)) in d_retransmit()
313 del_timer(&dch->timer); in d_retransmit()
315 if (test_and_clear_bit(FLG_L1_BUSY, &dch->Flags)) in d_retransmit()
316 dchannel_sched_event(dch, D_CLEARBUSY); in d_retransmit()
318 if (test_bit(FLG_TX_BUSY, &dch->Flags)) { in d_retransmit()
320 dch->tx_idx = 0; in d_retransmit()
322 } else if (dch->tx_skb) { /* should not happen */ in d_retransmit()
324 test_and_set_bit(FLG_TX_BUSY, &dch->Flags); in d_retransmit()
325 dch->tx_idx = 0; in d_retransmit()
329 if (get_next_dframe(dch)) in d_retransmit()
344 card->dch.err_rx++; in handle_rxD()
350 card->dch.err_crc++; in handle_rxD()
356 card->dch.err_rx++; in handle_rxD()
359 dev_kfree_skb(card->dch.rx_skb); in handle_rxD()
360 card->dch.rx_skb = NULL; in handle_rxD()
367 recv_Dchannel(&card->dch); in handle_rxD()
373 if (test_and_clear_bit(FLG_BUSY_TIMER, &card->dch.Flags)) in handle_txD()
374 del_timer(&card->dch.timer); in handle_txD()
375 if (card->dch.tx_skb && card->dch.tx_idx < card->dch.tx_skb->len) { in handle_txD()
378 dev_kfree_skb(card->dch.tx_skb); in handle_txD()
379 if (get_next_dframe(&card->dch)) in handle_txD()
387 struct dchannel *dch = &card->dch; in handle_statusD() local
397 dch->err_tx++; in handle_statusD()
418 dch->state, v1); in handle_statusD()
804 struct dchannel *dch = from_timer(dch, t, timer); in dbusy_timer_handler() local
805 struct w6692_hw *card = dch->hw; in dbusy_timer_handler()
809 if (test_bit(FLG_BUSY_TIMER, &dch->Flags)) { in dbusy_timer_handler()
816 test_and_set_bit(FLG_L1_BUSY, &dch->Flags); in dbusy_timer_handler()
819 test_and_clear_bit(FLG_BUSY_TIMER, &dch->Flags); in dbusy_timer_handler()
820 if (dch->tx_idx) in dbusy_timer_handler()
821 dch->tx_idx = 0; in dbusy_timer_handler()
836 timer_setup(&card->dch.timer, dbusy_timer_handler, 0); in initW6692()
1013 ret = l1_event(card->dch.l1, HW_TIMER3_VALUE | (cq->p1 & 0xff)); in channel_ctrl()
1060 struct dchannel *dch = container_of(dev, struct dchannel, dev); in w6692_l2l1D() local
1061 struct w6692_hw *card = container_of(dch, struct w6692_hw, dch); in w6692_l2l1D()
1070 ret = dchannel_senddata(dch, skb); in w6692_l2l1D()
1081 ret = l1_event(dch->l1, hh->prim); in w6692_l2l1D()
1084 test_and_clear_bit(FLG_L2_ACTIVATED, &dch->Flags); in w6692_l2l1D()
1085 ret = l1_event(dch->l1, hh->prim); in w6692_l2l1D()
1095 w6692_l1callback(struct dchannel *dch, u32 cmd) in w6692_l1callback() argument
1097 struct w6692_hw *card = container_of(dch, struct w6692_hw, dch); in w6692_l1callback()
1120 skb_queue_purge(&dch->squeue); in w6692_l1callback()
1121 if (dch->tx_skb) { in w6692_l1callback()
1122 dev_kfree_skb(dch->tx_skb); in w6692_l1callback()
1123 dch->tx_skb = NULL; in w6692_l1callback()
1125 dch->tx_idx = 0; in w6692_l1callback()
1126 if (dch->rx_skb) { in w6692_l1callback()
1127 dev_kfree_skb(dch->rx_skb); in w6692_l1callback()
1128 dch->rx_skb = NULL; in w6692_l1callback()
1130 test_and_clear_bit(FLG_TX_BUSY, &dch->Flags); in w6692_l1callback()
1131 if (test_and_clear_bit(FLG_BUSY_TIMER, &dch->Flags)) in w6692_l1callback()
1132 del_timer(&dch->timer); in w6692_l1callback()
1140 test_and_set_bit(FLG_ACTIVE, &dch->Flags); in w6692_l1callback()
1141 _queue_data(&dch->dev.D, cmd, MISDN_ID_ANY, 0, NULL, in w6692_l1callback()
1145 test_and_clear_bit(FLG_ACTIVE, &dch->Flags); in w6692_l1callback()
1146 _queue_data(&dch->dev.D, cmd, MISDN_ID_ANY, 0, NULL, in w6692_l1callback()
1161 card->dch.dev.id, caller); in open_dchannel()
1167 rq->ch = &card->dch.dev.D; in open_dchannel()
1169 if (card->dch.state == 7) in open_dchannel()
1179 struct dchannel *dch = container_of(dev, struct dchannel, dev); in w6692_dctrl() local
1180 struct w6692_hw *card = container_of(dch, struct w6692_hw, dch); in w6692_dctrl()
1199 dch->dev.id, __builtin_return_address(0)); in w6692_dctrl()
1258 l1_event(card->dch.l1, CLOSE_CHANNEL); in release_card()
1259 mISDN_unregister_device(&card->dch.dev); in release_card()
1263 mISDN_freedchannel(&card->dch); in release_card()
1285 mISDN_initdchannel(&card->dch, MAX_DFRAME_LEN_L1, W6692_ph_bh); in setup_instance()
1286 card->dch.dev.Dprotocols = (1 << ISDN_P_TE_S0); in setup_instance()
1287 card->dch.dev.D.send = w6692_l2l1D; in setup_instance()
1288 card->dch.dev.D.ctrl = w6692_dctrl; in setup_instance()
1289 card->dch.dev.Bprotocols = (1 << (ISDN_P_B_RAW & ISDN_P_B_MASK)) | in setup_instance()
1291 card->dch.hw = card; in setup_instance()
1292 card->dch.dev.nrbchan = 2; in setup_instance()
1301 set_channelmap(i + 1, card->dch.dev.channelmap); in setup_instance()
1302 list_add(&card->bc[i].bch.ch.list, &card->dch.dev.bchannels); in setup_instance()
1307 err = mISDN_register_device(&card->dch.dev, &card->pdev->dev, in setup_instance()
1314 err = create_l1(&card->dch, w6692_l1callback); in setup_instance()
1323 mISDN_unregister_device(&card->dch.dev); in setup_instance()
1329 mISDN_freedchannel(&card->dch); in setup_instance()