Lines Matching refs:dch
67 struct dchannel dch;
82 card->dch.debug = debug;
188 schedule_event(&card->dch, FLG_PHCHANGE);
192 W6692_ph_bh(struct dchannel *dch)
194 struct w6692_hw *card = dch->hw;
198 dch->state = 0;
199 l1_event(dch->l1, HW_RESET_IND);
202 dch->state = 3;
203 l1_event(dch->l1, HW_DEACT_CNF);
206 dch->state = 3;
207 l1_event(dch->l1, HW_DEACT_IND);
210 dch->state = 4;
211 l1_event(dch->l1, HW_POWERUP_IND);
214 if (dch->state <= 5) {
215 dch->state = 5;
216 l1_event(dch->l1, ANYSIGNAL);
218 dch->state = 8;
219 l1_event(dch->l1, LOSTFRAMING);
223 dch->state = 6;
224 l1_event(dch->l1, INFO2);
227 dch->state = 7;
228 l1_event(dch->l1, INFO4_P8);
231 dch->state = 7;
232 l1_event(dch->l1, INFO4_P10);
235 pr_debug("%s: TE unknown state %02x dch state %02x\n",
236 card->name, card->state, dch->state);
239 pr_debug("%s: TE newstate %02x\n", card->name, dch->state);
245 struct dchannel *dch = &card->dch;
249 if (!dch->rx_skb) {
250 dch->rx_skb = mI_alloc_skb(card->dch.maxlen, GFP_ATOMIC);
251 if (!dch->rx_skb) {
257 if ((dch->rx_skb->len + count) >= dch->maxlen) {
259 dch->rx_skb->len + count);
263 ptr = skb_put(dch->rx_skb, count);
276 struct dchannel *dch = &card->dch;
282 if (!dch->tx_skb)
284 count = dch->tx_skb->len - dch->tx_idx;
291 ptr = dch->tx_skb->data + dch->tx_idx;
292 dch->tx_idx += count;
295 if (test_and_set_bit(FLG_BUSY_TIMER, &dch->Flags)) {
297 timer_delete(&dch->timer);
299 dch->timer.expires = jiffies + ((DBUSY_TIMER_VALUE * HZ) / 1000);
300 add_timer(&dch->timer);
311 struct dchannel *dch = &card->dch;
313 if (test_and_clear_bit(FLG_BUSY_TIMER, &dch->Flags))
314 timer_delete(&dch->timer);
316 if (test_and_clear_bit(FLG_L1_BUSY, &dch->Flags))
317 dchannel_sched_event(dch, D_CLEARBUSY);
319 if (test_bit(FLG_TX_BUSY, &dch->Flags)) {
321 dch->tx_idx = 0;
323 } else if (dch->tx_skb) { /* should not happen */
325 test_and_set_bit(FLG_TX_BUSY, &dch->Flags);
326 dch->tx_idx = 0;
330 if (get_next_dframe(dch))
345 card->dch.err_rx++;
351 card->dch.err_crc++;
357 card->dch.err_rx++;
360 dev_kfree_skb(card->dch.rx_skb);
361 card->dch.rx_skb = NULL;
368 recv_Dchannel(&card->dch);
374 if (test_and_clear_bit(FLG_BUSY_TIMER, &card->dch.Flags))
375 timer_delete(&card->dch.timer);
376 if (card->dch.tx_skb && card->dch.tx_idx < card->dch.tx_skb->len) {
379 dev_kfree_skb(card->dch.tx_skb);
380 if (get_next_dframe(&card->dch))
388 struct dchannel *dch = &card->dch;
398 dch->err_tx++;
419 dch->state, v1);
805 struct dchannel *dch = timer_container_of(dch, t, timer);
806 struct w6692_hw *card = dch->hw;
810 if (test_bit(FLG_BUSY_TIMER, &dch->Flags)) {
817 test_and_set_bit(FLG_L1_BUSY, &dch->Flags);
820 test_and_clear_bit(FLG_BUSY_TIMER, &dch->Flags);
821 if (dch->tx_idx)
822 dch->tx_idx = 0;
837 timer_setup(&card->dch.timer, dbusy_timer_handler, 0);
1014 ret = l1_event(card->dch.l1, HW_TIMER3_VALUE | (cq->p1 & 0xff));
1061 struct dchannel *dch = container_of(dev, struct dchannel, dev);
1062 struct w6692_hw *card = container_of(dch, struct w6692_hw, dch);
1071 ret = dchannel_senddata(dch, skb);
1082 ret = l1_event(dch->l1, hh->prim);
1085 test_and_clear_bit(FLG_L2_ACTIVATED, &dch->Flags);
1086 ret = l1_event(dch->l1, hh->prim);
1096 w6692_l1callback(struct dchannel *dch, u32 cmd)
1098 struct w6692_hw *card = container_of(dch, struct w6692_hw, dch);
1121 skb_queue_purge(&dch->squeue);
1122 if (dch->tx_skb) {
1123 dev_kfree_skb(dch->tx_skb);
1124 dch->tx_skb = NULL;
1126 dch->tx_idx = 0;
1127 if (dch->rx_skb) {
1128 dev_kfree_skb(dch->rx_skb);
1129 dch->rx_skb = NULL;
1131 test_and_clear_bit(FLG_TX_BUSY, &dch->Flags);
1132 if (test_and_clear_bit(FLG_BUSY_TIMER, &dch->Flags))
1133 timer_delete(&dch->timer);
1141 test_and_set_bit(FLG_ACTIVE, &dch->Flags);
1142 _queue_data(&dch->dev.D, cmd, MISDN_ID_ANY, 0, NULL,
1146 test_and_clear_bit(FLG_ACTIVE, &dch->Flags);
1147 _queue_data(&dch->dev.D, cmd, MISDN_ID_ANY, 0, NULL,
1162 card->dch.dev.id, caller);
1168 rq->ch = &card->dch.dev.D;
1170 if (card->dch.state == 7)
1180 struct dchannel *dch = container_of(dev, struct dchannel, dev);
1181 struct w6692_hw *card = container_of(dch, struct w6692_hw, dch);
1200 dch->dev.id, __builtin_return_address(0));
1259 l1_event(card->dch.l1, CLOSE_CHANNEL);
1260 mISDN_unregister_device(&card->dch.dev);
1264 mISDN_freedchannel(&card->dch);
1286 mISDN_initdchannel(&card->dch, MAX_DFRAME_LEN_L1, W6692_ph_bh);
1287 card->dch.dev.Dprotocols = (1 << ISDN_P_TE_S0);
1288 card->dch.dev.D.send = w6692_l2l1D;
1289 card->dch.dev.D.ctrl = w6692_dctrl;
1290 card->dch.dev.Bprotocols = (1 << (ISDN_P_B_RAW & ISDN_P_B_MASK)) |
1292 card->dch.hw = card;
1293 card->dch.dev.nrbchan = 2;
1302 set_channelmap(i + 1, card->dch.dev.channelmap);
1303 list_add(&card->bc[i].bch.ch.list, &card->dch.dev.bchannels);
1308 err = mISDN_register_device(&card->dch.dev, &card->pdev->dev,
1315 err = create_l1(&card->dch, w6692_l1callback);
1324 mISDN_unregister_device(&card->dch.dev);
1330 mISDN_freedchannel(&card->dch);