Lines Matching refs:dch
1608 struct dchannel *dch; in hfcmulti_leds() local
1623 dch = hc->chan[hc->dnum[0]].dch; in hfcmulti_leds()
1624 if (dch) { in hfcmulti_leds()
1668 dch = hc->chan[(i << 2) | 2].dch; in hfcmulti_leds()
1669 if (dch) { in hfcmulti_leds()
1670 state = dch->state; in hfcmulti_leds()
1671 if (dch->dev.D.protocol == ISDN_P_NT_S0) in hfcmulti_leds()
1732 dch = hc->chan[(i << 2) | 2].dch; in hfcmulti_leds()
1733 if (dch) { in hfcmulti_leds()
1734 state = dch->state; in hfcmulti_leds()
1735 if (dch->dev.D.protocol == ISDN_P_NT_S0) in hfcmulti_leds()
1779 dch = hc->chan[(i << 2) | 2].dch; in hfcmulti_leds()
1780 if (dch) { in hfcmulti_leds()
1781 state = dch->state; in hfcmulti_leds()
1782 if (dch->dev.D.protocol == ISDN_P_NT_S0) in hfcmulti_leds()
1940 struct dchannel *dch; in hfcmulti_tx() local
1945 dch = hc->chan[ch].dch; in hfcmulti_tx()
1946 if ((!dch) && (!bch)) in hfcmulti_tx()
1951 if (dch) { in hfcmulti_tx()
1952 if (!test_bit(FLG_ACTIVE, &dch->Flags)) in hfcmulti_tx()
1954 sp = &dch->tx_skb; in hfcmulti_tx()
1955 idxp = &dch->tx_idx; in hfcmulti_tx()
1985 if (dch || test_bit(FLG_HDLC, &bch->Flags)) { in hfcmulti_tx()
2011 if (hc->ctype != HFC_TYPE_E1 && dch) { in hfcmulti_tx()
2118 if (dch) in hfcmulti_tx()
2123 if (dch || test_bit(FLG_HDLC, &bch->Flags)) in hfcmulti_tx()
2149 if (dch || test_bit(FLG_HDLC, &bch->Flags)) { in hfcmulti_tx()
2161 if (dch && get_next_dframe(dch)) { in hfcmulti_tx()
2185 struct dchannel *dch = NULL; in hfcmulti_rx() local
2193 } else if (hc->chan[ch].dch) { in hfcmulti_rx()
2194 dch = hc->chan[ch].dch; in hfcmulti_rx()
2195 if (!test_bit(FLG_ACTIVE, &dch->Flags)) in hfcmulti_rx()
2219 if (dch || test_bit(FLG_HDLC, &bch->Flags)) { in hfcmulti_rx()
2239 if ((dch || test_bit(FLG_HDLC, &bch->Flags)) && f1 != f2) in hfcmulti_rx()
2258 sp = &dch->rx_skb; in hfcmulti_rx()
2259 maxlen = dch->maxlen + 3; in hfcmulti_rx()
2270 if (dch) in hfcmulti_rx()
2274 if (dch || test_bit(FLG_HDLC, &bch->Flags)) { in hfcmulti_rx()
2340 if (dch) in hfcmulti_rx()
2341 recv_Dchannel(dch); in hfcmulti_rx()
2367 signal_state_up(struct dchannel *dch, int info, char *msg) in signal_state_up() argument
2381 recv_Dchannel_skb(dch, skb); in signal_state_up()
2388 struct dchannel *dch; in handle_timer_irq() local
2428 if (hc->chan[ch].dch && in handle_timer_irq()
2430 dch = hc->chan[ch].dch; in handle_timer_irq()
2432 schedule_event(dch, in handle_timer_irq()
2440 dch->state); in handle_timer_irq()
2446 dch = hc->chan[hc->dnum[0]].dch; in handle_timer_irq()
2452 signal_state_up(dch, L1_SIGNAL_LOS_ON, in handle_timer_irq()
2455 signal_state_up(dch, L1_SIGNAL_LOS_OFF, in handle_timer_irq()
2462 signal_state_up(dch, L1_SIGNAL_AIS_ON, in handle_timer_irq()
2465 signal_state_up(dch, L1_SIGNAL_AIS_OFF, in handle_timer_irq()
2473 signal_state_up(dch, L1_SIGNAL_SLIP_RX, in handle_timer_irq()
2478 signal_state_up(dch, L1_SIGNAL_SLIP_TX, in handle_timer_irq()
2486 signal_state_up(dch, L1_SIGNAL_RDI_ON, in handle_timer_irq()
2489 signal_state_up(dch, L1_SIGNAL_RDI_OFF, in handle_timer_irq()
2564 struct dchannel *dch; in ph_state_irq() local
2571 if (hc->chan[ch].dch) { in ph_state_irq()
2572 dch = hc->chan[ch].dch; in ph_state_irq()
2592 dch->dev.D.protocol == ISDN_P_TE_S0) { in ph_state_irq()
2600 dch->state = st_status & 0x0f; in ph_state_irq()
2601 if (dch->dev.D.protocol == ISDN_P_NT_S0) in ph_state_irq()
2605 if (dch->state == active) { in ph_state_irq()
2612 dch->tx_idx = 0; in ph_state_irq()
2614 schedule_event(dch, FLG_PHCHANGE); in ph_state_irq()
2618 __func__, dch->state, in ph_state_irq()
2632 struct dchannel *dch; in fifo_irq() local
2640 dch = hc->chan[ch].dch; in fifo_irq()
2642 if (((!dch) && (!bch)) || (!hc->created[hc->chan[ch].port])) { in fifo_irq()
2646 if (dch && (r_irq_fifo_bl & (1 << j)) && in fifo_irq()
2647 test_bit(FLG_ACTIVE, &dch->Flags)) { in fifo_irq()
2661 if (dch && (r_irq_fifo_bl & (1 << j)) && in fifo_irq()
2662 test_bit(FLG_ACTIVE, &dch->Flags)) { in fifo_irq()
2684 struct dchannel *dch; in hfcmulti_interrupt() local
2764 dch = hc->chan[hc->dnum[0]].dch; in hfcmulti_interrupt()
2789 dch = hc->chan[hc->dnum[i]].dch; in hfcmulti_interrupt()
2790 dch->state = temp & 0x7; in hfcmulti_interrupt()
2791 schedule_event(dch, FLG_PHCHANGE); in hfcmulti_interrupt()
3219 hfcm_l1callback(struct dchannel *dch, u_int cmd) in hfcm_l1callback() argument
3221 struct hfc_multi *hc = dch->hw; in hfcm_l1callback()
3237 HFC_outb(hc, R_ST_SEL, hc->chan[dch->slot].port); in hfcm_l1callback()
3247 l1_event(dch->l1, HW_POWERUP_IND); in hfcm_l1callback()
3258 HFC_outb(hc, R_ST_SEL, hc->chan[dch->slot].port); in hfcm_l1callback()
3265 ~(1 << hc->chan[dch->slot].port); in hfcm_l1callback()
3269 skb_queue_purge(&dch->squeue); in hfcm_l1callback()
3270 if (dch->tx_skb) { in hfcm_l1callback()
3271 dev_kfree_skb(dch->tx_skb); in hfcm_l1callback()
3272 dch->tx_skb = NULL; in hfcm_l1callback()
3274 dch->tx_idx = 0; in hfcm_l1callback()
3275 if (dch->rx_skb) { in hfcm_l1callback()
3276 dev_kfree_skb(dch->rx_skb); in hfcm_l1callback()
3277 dch->rx_skb = NULL; in hfcm_l1callback()
3279 test_and_clear_bit(FLG_TX_BUSY, &dch->Flags); in hfcm_l1callback()
3280 if (test_and_clear_bit(FLG_BUSY_TIMER, &dch->Flags)) in hfcm_l1callback()
3281 del_timer(&dch->timer); in hfcm_l1callback()
3292 HFC_outb(hc, R_ST_SEL, hc->chan[dch->slot].port); in hfcm_l1callback()
3302 test_and_set_bit(FLG_ACTIVE, &dch->Flags); in hfcm_l1callback()
3303 _queue_data(&dch->dev.D, cmd, MISDN_ID_ANY, 0, NULL, in hfcm_l1callback()
3307 test_and_clear_bit(FLG_ACTIVE, &dch->Flags); in hfcm_l1callback()
3308 _queue_data(&dch->dev.D, cmd, MISDN_ID_ANY, 0, NULL, in hfcm_l1callback()
3312 if (dch->debug & DEBUG_HW) in hfcm_l1callback()
3328 struct dchannel *dch = container_of(dev, struct dchannel, dev); in handle_dmsg() local
3329 struct hfc_multi *hc = dch->hw; in handle_dmsg()
3340 ret = dchannel_senddata(dch, skb); in handle_dmsg()
3343 hfcmulti_tx(hc, dch->slot); in handle_dmsg()
3354 if (dch->dev.D.protocol != ISDN_P_TE_S0) { in handle_dmsg()
3360 __func__, hc->chan[dch->slot].port, in handle_dmsg()
3364 ph_state_change(dch); in handle_dmsg()
3368 __func__, dch->state); in handle_dmsg()
3371 hc->chan[dch->slot].port); in handle_dmsg()
3380 dch->state = 1; in handle_dmsg()
3384 ret = l1_event(dch->l1, hh->prim); in handle_dmsg()
3387 test_and_clear_bit(FLG_L2_ACTIVATED, &dch->Flags); in handle_dmsg()
3388 if (dch->dev.D.protocol != ISDN_P_TE_S0) { in handle_dmsg()
3393 __func__, hc->chan[dch->slot].port, in handle_dmsg()
3403 hc->chan[dch->slot].port); in handle_dmsg()
3408 dch->state = 1; in handle_dmsg()
3410 skb_queue_purge(&dch->squeue); in handle_dmsg()
3411 if (dch->tx_skb) { in handle_dmsg()
3412 dev_kfree_skb(dch->tx_skb); in handle_dmsg()
3413 dch->tx_skb = NULL; in handle_dmsg()
3415 dch->tx_idx = 0; in handle_dmsg()
3416 if (dch->rx_skb) { in handle_dmsg()
3417 dev_kfree_skb(dch->rx_skb); in handle_dmsg()
3418 dch->rx_skb = NULL; in handle_dmsg()
3420 test_and_clear_bit(FLG_TX_BUSY, &dch->Flags); in handle_dmsg()
3421 if (test_and_clear_bit(FLG_BUSY_TIMER, &dch->Flags)) in handle_dmsg()
3422 del_timer(&dch->timer); in handle_dmsg()
3424 if (test_and_clear_bit(FLG_L1_BUSY, &dch->Flags)) in handle_dmsg()
3425 dchannel_sched_event(&hc->dch, D_CLEARBUSY); in handle_dmsg()
3430 ret = l1_event(dch->l1, hh->prim); in handle_dmsg()
3718 ph_state_change(struct dchannel *dch) in ph_state_change() argument
3723 if (!dch) { in ph_state_change()
3727 hc = dch->hw; in ph_state_change()
3728 ch = dch->slot; in ph_state_change()
3731 if (dch->dev.D.protocol == ISDN_P_TE_E1) { in ph_state_change()
3735 __func__, hc->id, dch->state); in ph_state_change()
3740 __func__, hc->id, dch->state); in ph_state_change()
3742 switch (dch->state) { in ph_state_change()
3755 test_and_set_bit(FLG_ACTIVE, &dch->Flags); in ph_state_change()
3756 _queue_data(&dch->dev.D, PH_ACTIVATE_IND, in ph_state_change()
3763 test_and_clear_bit(FLG_ACTIVE, &dch->Flags); in ph_state_change()
3764 _queue_data(&dch->dev.D, PH_DEACTIVATE_IND, in ph_state_change()
3767 hc->e1_state = dch->state; in ph_state_change()
3769 if (dch->dev.D.protocol == ISDN_P_TE_S0) { in ph_state_change()
3773 __func__, dch->state); in ph_state_change()
3774 switch (dch->state) { in ph_state_change()
3776 l1_event(dch->l1, HW_RESET_IND); in ph_state_change()
3779 l1_event(dch->l1, HW_DEACT_IND); in ph_state_change()
3783 l1_event(dch->l1, ANYSIGNAL); in ph_state_change()
3786 l1_event(dch->l1, INFO2); in ph_state_change()
3789 l1_event(dch->l1, INFO4_P8); in ph_state_change()
3795 __func__, dch->state); in ph_state_change()
3796 switch (dch->state) { in ph_state_change()
3808 dch->state = 4; in ph_state_change()
3824 test_and_clear_bit(FLG_ACTIVE, &dch->Flags); in ph_state_change()
3825 _queue_data(&dch->dev.D, PH_DEACTIVATE_IND, in ph_state_change()
3833 test_and_set_bit(FLG_ACTIVE, &dch->Flags); in ph_state_change()
3834 _queue_data(&dch->dev.D, PH_ACTIVATE_IND, in ph_state_change()
3847 hfcmulti_initmode(struct dchannel *dch) in hfcmulti_initmode() argument
3849 struct hfc_multi *hc = dch->hw; in hfcmulti_initmode()
3856 i = dch->slot; in hfcmulti_initmode()
3864 mode_hfcmulti(hc, dch->slot, dch->dev.D.protocol, in hfcmulti_initmode()
3866 timer_setup(&dch->timer, hfcmulti_dbusy_timer, 0); in hfcmulti_initmode()
3879 dch = hc->chan[hc->dnum[0]].dch; in hfcmulti_initmode()
3905 if (dch->dev.D.protocol == ISDN_P_NT_E1) { in hfcmulti_initmode()
3971 mode_hfcmulti(hc, i, dch->dev.D.protocol, -1, 0, -1, 0); in hfcmulti_initmode()
3972 timer_setup(&dch->timer, hfcmulti_dbusy_timer, 0); in hfcmulti_initmode()
3985 if (dch->dev.D.protocol == ISDN_P_NT_S0) { in hfcmulti_initmode()
4014 if ((dch->dev.D.protocol == ISDN_P_NT_S0) || in hfcmulti_initmode()
4031 ~(1 << hc->chan[dch->slot].port); in hfcmulti_initmode()
4041 open_dchannel(struct hfc_multi *hc, struct dchannel *dch, in open_dchannel() argument
4049 dch->dev.id, __builtin_return_address(0)); in open_dchannel()
4052 if ((dch->dev.D.protocol != ISDN_P_NONE) && in open_dchannel()
4053 (dch->dev.D.protocol != rq->protocol)) { in open_dchannel()
4056 __func__, dch->dev.D.protocol, rq->protocol); in open_dchannel()
4058 if ((dch->dev.D.protocol == ISDN_P_TE_S0) && in open_dchannel()
4060 l1_event(dch->l1, CLOSE_CHANNEL); in open_dchannel()
4061 if (dch->dev.D.protocol != rq->protocol) { in open_dchannel()
4063 err = create_l1(dch, hfcm_l1callback); in open_dchannel()
4067 dch->dev.D.protocol = rq->protocol; in open_dchannel()
4069 hfcmulti_initmode(dch); in open_dchannel()
4072 if (test_bit(FLG_ACTIVE, &dch->Flags)) in open_dchannel()
4073 _queue_data(&dch->dev.D, PH_ACTIVATE_IND, MISDN_ID_ANY, in open_dchannel()
4075 rq->ch = &dch->dev.D; in open_dchannel()
4082 open_bchannel(struct hfc_multi *hc, struct dchannel *dch, in open_bchannel() argument
4088 if (!test_channelmap(rq->adr.channel, dch->dev.channelmap)) in open_bchannel()
4095 ch = (rq->adr.channel - 1) + (dch->slot - 2); in open_bchannel()
4116 channel_dctrl(struct dchannel *dch, struct mISDN_ctrl_req *cq) in channel_dctrl() argument
4118 struct hfc_multi *hc = dch->hw; in channel_dctrl()
4155 ret = l1_event(dch->l1, HW_TIMER3_VALUE | (cq->p1 & 0xff)); in channel_dctrl()
4170 struct dchannel *dch = container_of(dev, struct dchannel, dev); in hfcm_dctrl() local
4171 struct hfc_multi *hc = dch->hw; in hfcm_dctrl()
4176 if (dch->debug & DEBUG_HW) in hfcm_dctrl()
4189 err = open_dchannel(hc, dch, rq); /* locked there */ in hfcm_dctrl()
4197 err = open_dchannel(hc, dch, rq); /* locked there */ in hfcm_dctrl()
4201 err = open_bchannel(hc, dch, rq); in hfcm_dctrl()
4208 __func__, dch->dev.id, in hfcm_dctrl()
4214 err = channel_dctrl(dch, arg); in hfcm_dctrl()
4218 if (dch->debug & DEBUG_HW) in hfcm_dctrl()
4513 release_port(struct hfc_multi *hc, struct dchannel *dch) in release_port() argument
4519 ci = dch->slot; in release_port()
4536 if (dch->dev.D.protocol == ISDN_P_TE_S0) in release_port()
4537 l1_event(dch->l1, CLOSE_CHANNEL); in release_port()
4539 hc->chan[ci].dch = NULL; in release_port()
4543 mISDN_unregister_device(&dch->dev); in release_port()
4548 if (dch->timer.function) { in release_port()
4549 del_timer(&dch->timer); in release_port()
4550 dch->timer.function = NULL; in release_port()
4620 mISDN_freedchannel(dch); in release_port()
4621 kfree(dch); in release_port()
4660 if (hc->chan[ch].dch) in release_card()
4661 release_port(hc, hc->chan[ch].dch); in release_card()
4798 struct dchannel *dch; in init_e1_port() local
4804 dch = kzalloc(sizeof(struct dchannel), GFP_KERNEL); in init_e1_port()
4805 if (!dch) in init_e1_port()
4807 dch->debug = debug; in init_e1_port()
4808 mISDN_initdchannel(dch, MAX_DFRAME_LEN_L1, ph_state_change); in init_e1_port()
4809 dch->hw = hc; in init_e1_port()
4810 dch->dev.Dprotocols = (1 << ISDN_P_TE_E1) | (1 << ISDN_P_NT_E1); in init_e1_port()
4811 dch->dev.Bprotocols = (1 << (ISDN_P_B_RAW & ISDN_P_B_MASK)) | in init_e1_port()
4813 dch->dev.D.send = handle_dmsg; in init_e1_port()
4814 dch->dev.D.ctrl = hfcm_dctrl; in init_e1_port()
4815 dch->slot = hc->dnum[pt]; in init_e1_port()
4816 hc->chan[hc->dnum[pt]].dch = dch; in init_e1_port()
4845 list_add(&bch->ch.list, &dch->dev.bchannels); in init_e1_port()
4848 set_channelmap(bch->nr, dch->dev.channelmap); in init_e1_port()
4851 dch->dev.nrbchan = bcount; in init_e1_port()
4859 ret = mISDN_register_device(&dch->dev, &hc->pci_dev->dev, name); in init_e1_port()
4865 release_port(hc, dch); in init_e1_port()
4872 struct dchannel *dch; in init_multi_port() local
4877 dch = kzalloc(sizeof(struct dchannel), GFP_KERNEL); in init_multi_port()
4878 if (!dch) in init_multi_port()
4880 dch->debug = debug; in init_multi_port()
4881 mISDN_initdchannel(dch, MAX_DFRAME_LEN_L1, ph_state_change); in init_multi_port()
4882 dch->hw = hc; in init_multi_port()
4883 dch->dev.Dprotocols = (1 << ISDN_P_TE_S0) | (1 << ISDN_P_NT_S0); in init_multi_port()
4884 dch->dev.Bprotocols = (1 << (ISDN_P_B_RAW & ISDN_P_B_MASK)) | in init_multi_port()
4886 dch->dev.D.send = handle_dmsg; in init_multi_port()
4887 dch->dev.D.ctrl = hfcm_dctrl; in init_multi_port()
4888 dch->dev.nrbchan = 2; in init_multi_port()
4890 dch->slot = i + 2; in init_multi_port()
4891 hc->chan[i + 2].dch = dch; in init_multi_port()
4894 for (ch = 0; ch < dch->dev.nrbchan; ch++) { in init_multi_port()
4918 list_add(&bch->ch.list, &dch->dev.bchannels); in init_multi_port()
4921 set_channelmap(bch->nr, dch->dev.channelmap); in init_multi_port()
4930 if (dch->dev.D.protocol != ISDN_P_TE_S0) { in init_multi_port()
4971 ret = mISDN_register_device(&dch->dev, NULL, name); in init_multi_port()
4975 ret = mISDN_register_device(&dch->dev, &hc->pci_dev->dev, name); in init_multi_port()
4982 release_port(hc, dch); in init_multi_port()
5158 hc->chan[hc->dnum[pt]].dch); in hfcmulti_init()
5161 hc->chan[(pt << 2) + 2].dch); in hfcmulti_init()