Lines Matching refs:dch
147 struct dchannel dch; member
466 struct dchannel *dch = &hc->dch; in receive_dmsg() local
481 if (dch->debug & DEBUG_HW_DCHANNEL) in receive_dmsg()
491 if (dch->debug & DEBUG_HW) in receive_dmsg()
506 dch->rx_skb = mI_alloc_skb(rcnt - 3, GFP_ATOMIC); in receive_dmsg()
507 if (!dch->rx_skb) { in receive_dmsg()
514 ptr = skb_put(dch->rx_skb, rcnt); in receive_dmsg()
536 recv_Dchannel(dch); in receive_dmsg()
677 struct dchannel *dch = &hc->dch; in hfcpci_fill_dfifo() local
683 if ((dch->debug & DEBUG_HW_DCHANNEL) && !(dch->debug & DEBUG_HW_DFIFO)) in hfcpci_fill_dfifo()
686 if (!dch->tx_skb) in hfcpci_fill_dfifo()
688 count = dch->tx_skb->len - dch->tx_idx; in hfcpci_fill_dfifo()
693 if (dch->debug & DEBUG_HW_DFIFO) in hfcpci_fill_dfifo()
701 if (dch->debug & DEBUG_HW_DCHANNEL) in hfcpci_fill_dfifo()
715 if (dch->debug & DEBUG_HW_DCHANNEL) in hfcpci_fill_dfifo()
719 if (dch->debug & DEBUG_HW_DCHANNEL) in hfcpci_fill_dfifo()
726 src = dch->tx_skb->data + dch->tx_idx; /* source pointer */ in hfcpci_fill_dfifo()
745 dch->tx_idx = dch->tx_skb->len; in hfcpci_fill_dfifo()
922 ph_state_te(struct dchannel *dch) in ph_state_te() argument
924 if (dch->debug) in ph_state_te()
926 __func__, dch->state); in ph_state_te()
927 switch (dch->state) { in ph_state_te()
929 l1_event(dch->l1, HW_RESET_IND); in ph_state_te()
932 l1_event(dch->l1, HW_DEACT_IND); in ph_state_te()
936 l1_event(dch->l1, ANYSIGNAL); in ph_state_te()
939 l1_event(dch->l1, INFO2); in ph_state_te()
942 l1_event(dch->l1, INFO4_P8); in ph_state_te()
952 handle_nt_timer3(struct dchannel *dch) { in handle_nt_timer3() argument
953 struct hfc_pci *hc = dch->hw; in handle_nt_timer3()
955 test_and_clear_bit(FLG_HFC_TIMER_T3, &dch->Flags); in handle_nt_timer3()
959 test_and_set_bit(FLG_ACTIVE, &dch->Flags); in handle_nt_timer3()
963 _queue_data(&dch->dev.D, PH_ACTIVATE_IND, in handle_nt_timer3()
968 ph_state_nt(struct dchannel *dch) in ph_state_nt() argument
970 struct hfc_pci *hc = dch->hw; in ph_state_nt()
972 if (dch->debug) in ph_state_nt()
974 __func__, dch->state); in ph_state_nt()
975 switch (dch->state) { in ph_state_nt()
979 test_and_clear_bit(FLG_HFC_TIMER_T3, &dch->Flags); in ph_state_nt()
980 test_and_clear_bit(FLG_HFC_TIMER_T1, &dch->Flags); in ph_state_nt()
988 dch->state = 4; in ph_state_nt()
997 test_and_clear_bit(FLG_HFC_TIMER_T3, &dch->Flags); in ph_state_nt()
998 test_and_set_bit(FLG_HFC_TIMER_T1, &dch->Flags); in ph_state_nt()
1007 test_and_clear_bit(FLG_HFC_TIMER_T3, &dch->Flags); in ph_state_nt()
1008 test_and_clear_bit(FLG_HFC_TIMER_T1, &dch->Flags); in ph_state_nt()
1011 test_and_clear_bit(FLG_ACTIVE, &dch->Flags); in ph_state_nt()
1014 test_and_clear_bit(FLG_L2_ACTIVATED, &dch->Flags); in ph_state_nt()
1015 _queue_data(&dch->dev.D, PH_DEACTIVATE_IND, in ph_state_nt()
1020 test_and_clear_bit(FLG_HFC_TIMER_T3, &dch->Flags); in ph_state_nt()
1021 test_and_clear_bit(FLG_HFC_TIMER_T1, &dch->Flags); in ph_state_nt()
1026 if (!test_and_set_bit(FLG_HFC_TIMER_T3, &dch->Flags)) { in ph_state_nt()
1028 &dch->Flags)) { in ph_state_nt()
1029 handle_nt_timer3(dch); in ph_state_nt()
1032 test_and_clear_bit(FLG_HFC_TIMER_T1, &dch->Flags); in ph_state_nt()
1046 ph_state(struct dchannel *dch) in ph_state() argument
1048 struct hfc_pci *hc = dch->hw; in ph_state()
1051 if (test_bit(FLG_HFC_TIMER_T3, &dch->Flags) && in ph_state()
1053 handle_nt_timer3(dch); in ph_state()
1055 ph_state_nt(dch); in ph_state()
1057 ph_state_te(dch); in ph_state()
1064 hfc_l1callback(struct dchannel *dch, u_int cmd) in hfc_l1callback() argument
1066 struct hfc_pci *hc = dch->hw; in hfc_l1callback()
1085 l1_event(dch->l1, HW_POWERUP_IND); in hfc_l1callback()
1090 skb_queue_purge(&dch->squeue); in hfc_l1callback()
1091 if (dch->tx_skb) { in hfc_l1callback()
1092 dev_kfree_skb(dch->tx_skb); in hfc_l1callback()
1093 dch->tx_skb = NULL; in hfc_l1callback()
1095 dch->tx_idx = 0; in hfc_l1callback()
1096 if (dch->rx_skb) { in hfc_l1callback()
1097 dev_kfree_skb(dch->rx_skb); in hfc_l1callback()
1098 dch->rx_skb = NULL; in hfc_l1callback()
1100 test_and_clear_bit(FLG_TX_BUSY, &dch->Flags); in hfc_l1callback()
1101 if (test_and_clear_bit(FLG_BUSY_TIMER, &dch->Flags)) in hfc_l1callback()
1102 del_timer(&dch->timer); in hfc_l1callback()
1108 test_and_set_bit(FLG_ACTIVE, &dch->Flags); in hfc_l1callback()
1109 _queue_data(&dch->dev.D, cmd, MISDN_ID_ANY, 0, NULL, in hfc_l1callback()
1113 test_and_clear_bit(FLG_ACTIVE, &dch->Flags); in hfc_l1callback()
1114 _queue_data(&dch->dev.D, cmd, MISDN_ID_ANY, 0, NULL, in hfc_l1callback()
1118 if (dch->debug & DEBUG_HW) in hfc_l1callback()
1143 tx_dirq(struct dchannel *dch) in tx_dirq() argument
1145 if (dch->tx_skb && dch->tx_idx < dch->tx_skb->len) in tx_dirq()
1146 hfcpci_fill_dfifo(dch->hw); in tx_dirq()
1148 if (dch->tx_skb) in tx_dirq()
1149 dev_kfree_skb(dch->tx_skb); in tx_dirq()
1150 if (get_next_dframe(dch)) in tx_dirq()
1151 hfcpci_fill_dfifo(dch->hw); in tx_dirq()
1171 if (hc->dch.debug & DEBUG_HW_DCHANNEL) in hfcpci_int()
1181 if (hc->dch.debug & DEBUG_HW_DCHANNEL) in hfcpci_int()
1186 if (hc->dch.debug & DEBUG_HW_DCHANNEL) in hfcpci_int()
1188 hc->dch.state, exval); in hfcpci_int()
1189 hc->dch.state = exval; in hfcpci_int()
1190 schedule_event(&hc->dch, FLG_PHCHANGE); in hfcpci_int()
1196 schedule_event(&hc->dch, FLG_PHCHANGE); in hfcpci_int()
1205 else if (hc->dch.debug) in hfcpci_int()
1212 else if (hc->dch.debug) in hfcpci_int()
1219 else if (hc->dch.debug) in hfcpci_int()
1226 else if (hc->dch.debug) in hfcpci_int()
1232 if (test_and_clear_bit(FLG_BUSY_TIMER, &hc->dch.Flags)) in hfcpci_int()
1233 del_timer(&hc->dch.timer); in hfcpci_int()
1234 tx_dirq(&hc->dch); in hfcpci_int()
1590 struct dchannel *dch = container_of(dev, struct dchannel, dev); in hfcpci_l2l1D() local
1591 struct hfc_pci *hc = dch->hw; in hfcpci_l2l1D()
1600 ret = dchannel_senddata(dch, skb); in hfcpci_l2l1D()
1603 hfcpci_fill_dfifo(dch->hw); in hfcpci_l2l1D()
1617 if (test_bit(FLG_ACTIVE, &dch->Flags)) { in hfcpci_l2l1D()
1619 _queue_data(&dch->dev.D, PH_ACTIVATE_IND, in hfcpci_l2l1D()
1623 test_and_set_bit(FLG_L2_ACTIVATED, &dch->Flags); in hfcpci_l2l1D()
1627 ret = l1_event(dch->l1, hh->prim); in hfcpci_l2l1D()
1631 test_and_clear_bit(FLG_L2_ACTIVATED, &dch->Flags); in hfcpci_l2l1D()
1636 skb_queue_purge(&dch->squeue); in hfcpci_l2l1D()
1637 if (dch->tx_skb) { in hfcpci_l2l1D()
1638 dev_kfree_skb(dch->tx_skb); in hfcpci_l2l1D()
1639 dch->tx_skb = NULL; in hfcpci_l2l1D()
1641 dch->tx_idx = 0; in hfcpci_l2l1D()
1642 if (dch->rx_skb) { in hfcpci_l2l1D()
1643 dev_kfree_skb(dch->rx_skb); in hfcpci_l2l1D()
1644 dch->rx_skb = NULL; in hfcpci_l2l1D()
1646 test_and_clear_bit(FLG_TX_BUSY, &dch->Flags); in hfcpci_l2l1D()
1647 if (test_and_clear_bit(FLG_BUSY_TIMER, &dch->Flags)) in hfcpci_l2l1D()
1648 del_timer(&dch->timer); in hfcpci_l2l1D()
1650 if (test_and_clear_bit(FLG_L1_BUSY, &dch->Flags)) in hfcpci_l2l1D()
1651 dchannel_sched_event(&hc->dch, D_CLEARBUSY); in hfcpci_l2l1D()
1657 ret = l1_event(dch->l1, hh->prim); in hfcpci_l2l1D()
1720 hc->dch.timer.function = (void *) hfcpci_dbusy_timer; in inithfcpci()
1721 hc->dch.timer.data = (long) &hc->dch; in inithfcpci()
1722 init_timer(&hc->dch.timer); in inithfcpci()
1877 ret = l1_event(hc->dch.l1, HW_TIMER3_VALUE | (cq->p1 & 0xff)); in channel_ctrl()
1896 hc->dch.dev.id, __builtin_return_address(0)); in open_dchannel()
1905 err = create_l1(&hc->dch, hfc_l1callback); in open_dchannel()
1917 l1_event(hc->dch.l1, CLOSE_CHANNEL); in open_dchannel()
1919 err = create_l1(&hc->dch, hfc_l1callback); in open_dchannel()
1929 if (((ch->protocol == ISDN_P_NT_S0) && (hc->dch.state == 3)) || in open_dchannel()
1930 ((ch->protocol == ISDN_P_TE_S0) && (hc->dch.state == 7))) { in open_dchannel()
1966 struct dchannel *dch = container_of(dev, struct dchannel, dev); in hfc_dctrl() local
1967 struct hfc_pci *hc = dch->hw; in hfc_dctrl()
1971 if (dch->debug & DEBUG_HW) in hfc_dctrl()
1986 __func__, hc->dch.dev.id, in hfc_dctrl()
1994 if (dch->debug & DEBUG_HW) in hfc_dctrl()
2009 hc->dch.state = 0; in setup_hw()
2064 if (hc->dch.timer.function != NULL) { in release_card()
2065 del_timer(&hc->dch.timer); in release_card()
2066 hc->dch.timer.function = NULL; in release_card()
2070 l1_event(hc->dch.l1, CLOSE_CHANNEL); in release_card()
2074 mISDN_unregister_device(&hc->dch.dev); in release_card()
2077 mISDN_freedchannel(&hc->dch); in release_card()
2089 card->dch.debug = debug; in setup_card()
2091 mISDN_initdchannel(&card->dch, MAX_DFRAME_LEN_L1, ph_state); in setup_card()
2092 card->dch.hw = card; in setup_card()
2093 card->dch.dev.Dprotocols = (1 << ISDN_P_TE_S0) | (1 << ISDN_P_NT_S0); in setup_card()
2094 card->dch.dev.Bprotocols = (1 << (ISDN_P_B_RAW & ISDN_P_B_MASK)) | in setup_card()
2096 card->dch.dev.D.send = hfcpci_l2l1D; in setup_card()
2097 card->dch.dev.D.ctrl = hfc_dctrl; in setup_card()
2098 card->dch.dev.nrbchan = 2; in setup_card()
2101 set_channelmap(i + 1, card->dch.dev.channelmap); in setup_card()
2108 list_add(&card->bch[i].ch.list, &card->dch.dev.bchannels); in setup_card()
2114 err = mISDN_register_device(&card->dch.dev, &card->pdev->dev, name); in setup_card()
2123 mISDN_freedchannel(&card->dch); in setup_card()