Lines Matching refs:hx

889 waitforCEC(struct hscx_hw *hx)  in waitforCEC()  argument
894 starb = ReadHSCX(hx, IPAC_STARB); in waitforCEC()
901 pr_debug("%s: B%1d CEC %d us\n", hx->ip->name, hx->bch.nr, in waitforCEC()
904 pr_info("%s: B%1d CEC timeout\n", hx->ip->name, hx->bch.nr); in waitforCEC()
909 waitforXFW(struct hscx_hw *hx) in waitforXFW() argument
914 starb = ReadHSCX(hx, IPAC_STARB); in waitforXFW()
921 pr_debug("%s: B%1d XFW %d us\n", hx->ip->name, hx->bch.nr, in waitforXFW()
924 pr_info("%s: B%1d XFW timeout\n", hx->ip->name, hx->bch.nr); in waitforXFW()
928 hscx_cmdr(struct hscx_hw *hx, u8 cmd) in hscx_cmdr() argument
930 if (hx->ip->type & IPAC_TYPE_IPACX) in hscx_cmdr()
931 WriteHSCX(hx, IPACX_CMDRB, cmd); in hscx_cmdr()
933 waitforCEC(hx); in hscx_cmdr()
934 WriteHSCX(hx, IPAC_CMDRB, cmd); in hscx_cmdr()
1023 hscx_xpr(struct hscx_hw *hx) in hscx_xpr() argument
1025 if (hx->bch.tx_skb && hx->bch.tx_idx < hx->bch.tx_skb->len) { in hscx_xpr()
1026 hscx_fill_fifo(hx); in hscx_xpr()
1028 if (hx->bch.tx_skb) in hscx_xpr()
1029 dev_kfree_skb(hx->bch.tx_skb); in hscx_xpr()
1030 if (get_next_bframe(&hx->bch)) { in hscx_xpr()
1031 hscx_fill_fifo(hx); in hscx_xpr()
1032 test_and_clear_bit(FLG_TX_EMPTY, &hx->bch.Flags); in hscx_xpr()
1033 } else if (test_bit(FLG_TX_EMPTY, &hx->bch.Flags)) { in hscx_xpr()
1034 hscx_fill_fifo(hx); in hscx_xpr()
1040 ipac_rme(struct hscx_hw *hx) in ipac_rme() argument
1045 if (hx->ip->type & IPAC_TYPE_IPACX) in ipac_rme()
1046 rstab = ReadHSCX(hx, IPACX_RSTAB); in ipac_rme()
1048 rstab = ReadHSCX(hx, IPAC_RSTAB); in ipac_rme()
1049 pr_debug("%s: B%1d RSTAB %02x\n", hx->ip->name, hx->bch.nr, rstab); in ipac_rme()
1053 if (hx->bch.debug & DEBUG_HW_BCHANNEL) in ipac_rme()
1055 hx->ip->name, hx->bch.nr); in ipac_rme()
1058 if (hx->bch.debug & DEBUG_HW_BCHANNEL) in ipac_rme()
1060 hx->ip->name, hx->bch.nr, in ipac_rme()
1061 hx->bch.state); in ipac_rme()
1064 if (hx->bch.debug & DEBUG_HW_BCHANNEL) in ipac_rme()
1066 hx->ip->name, hx->bch.nr); in ipac_rme()
1068 hscx_cmdr(hx, 0x80); /* Do RMC */ in ipac_rme()
1071 if (hx->ip->type & IPAC_TYPE_IPACX) in ipac_rme()
1072 count = ReadHSCX(hx, IPACX_RBCLB); in ipac_rme()
1074 count = ReadHSCX(hx, IPAC_RBCLB); in ipac_rme()
1075 count &= (hx->fifo_size - 1); in ipac_rme()
1077 count = hx->fifo_size; in ipac_rme()
1078 hscx_empty_fifo(hx, count); in ipac_rme()
1079 if (!hx->bch.rx_skb) in ipac_rme()
1081 if (hx->bch.rx_skb->len < 2) { in ipac_rme()
1083 hx->ip->name, hx->bch.nr, hx->bch.rx_skb->len); in ipac_rme()
1084 skb_trim(hx->bch.rx_skb, 0); in ipac_rme()
1086 skb_trim(hx->bch.rx_skb, hx->bch.rx_skb->len - 1); in ipac_rme()
1087 recv_Bchannel(&hx->bch, 0, false); in ipac_rme()
1092 ipac_irq(struct hscx_hw *hx, u8 ista) in ipac_irq() argument
1096 if (hx->ip->type & IPAC_TYPE_IPACX) in ipac_irq()
1097 istab = ReadHSCX(hx, IPACX_ISTAB); in ipac_irq()
1098 else if (hx->ip->type & IPAC_TYPE_IPAC) { in ipac_irq()
1099 istab = ReadHSCX(hx, IPAC_ISTAB); in ipac_irq()
1100 m = (hx->bch.nr & 1) ? IPAC__EXA : IPAC__EXB; in ipac_irq()
1102 exirb = ReadHSCX(hx, IPAC_EXIRB); in ipac_irq()
1103 pr_debug("%s: B%1d EXIRB %02x\n", hx->ip->name, in ipac_irq()
1104 hx->bch.nr, exirb); in ipac_irq()
1106 } else if (hx->bch.nr & 2) { /* HSCX B */ in ipac_irq()
1108 ipac_irq(&hx->ip->hscx[0], ista); in ipac_irq()
1110 exirb = ReadHSCX(hx, IPAC_EXIRB); in ipac_irq()
1111 pr_debug("%s: B%1d EXIRB %02x\n", hx->ip->name, in ipac_irq()
1112 hx->bch.nr, exirb); in ipac_irq()
1116 istab = ReadHSCX(hx, IPAC_ISTAB); in ipac_irq()
1118 exirb = ReadHSCX(hx, IPAC_EXIRB); in ipac_irq()
1119 pr_debug("%s: B%1d EXIRB %02x\n", hx->ip->name, in ipac_irq()
1120 hx->bch.nr, exirb); in ipac_irq()
1128 pr_debug("%s: B%1d ISTAB %02x\n", hx->ip->name, hx->bch.nr, istab); in ipac_irq()
1130 if (!test_bit(FLG_ACTIVE, &hx->bch.Flags)) in ipac_irq()
1134 ipac_rme(hx); in ipac_irq()
1137 hscx_empty_fifo(hx, hx->fifo_size); in ipac_irq()
1138 if (test_bit(FLG_TRANSPARENT, &hx->bch.Flags)) in ipac_irq()
1139 recv_Bchannel(&hx->bch, 0, false); in ipac_irq()
1143 pr_debug("%s: B%1d RFO error\n", hx->ip->name, hx->bch.nr); in ipac_irq()
1144 hscx_cmdr(hx, 0x40); /* RRES */ in ipac_irq()
1148 hscx_xpr(hx); in ipac_irq()
1151 if (test_bit(FLG_TRANSPARENT, &hx->bch.Flags)) { in ipac_irq()
1152 if (test_bit(FLG_FILLEMPTY, &hx->bch.Flags)) in ipac_irq()
1153 test_and_set_bit(FLG_TX_EMPTY, &hx->bch.Flags); in ipac_irq()
1154 hscx_xpr(hx); in ipac_irq()
1157 pr_debug("%s: B%1d XDU error at len %d\n", hx->ip->name, in ipac_irq()
1158 hx->bch.nr, hx->bch.tx_idx); in ipac_irq()
1159 hx->bch.tx_idx = 0; in ipac_irq()
1160 hscx_cmdr(hx, 0x01); /* XRES */ in ipac_irq()
1351 struct hscx_hw *hx = container_of(bch, struct hscx_hw, bch); in hscx_l2l1() local
1358 spin_lock_irqsave(hx->ip->hwlock, flags); in hscx_l2l1()
1362 hscx_fill_fifo(hx); in hscx_l2l1()
1364 spin_unlock_irqrestore(hx->ip->hwlock, flags); in hscx_l2l1()
1367 spin_lock_irqsave(hx->ip->hwlock, flags); in hscx_l2l1()
1369 ret = hscx_mode(hx, ch->protocol); in hscx_l2l1()
1372 spin_unlock_irqrestore(hx->ip->hwlock, flags); in hscx_l2l1()
1378 spin_lock_irqsave(hx->ip->hwlock, flags); in hscx_l2l1()
1380 hscx_mode(hx, ISDN_P_NONE); in hscx_l2l1()
1381 spin_unlock_irqrestore(hx->ip->hwlock, flags); in hscx_l2l1()
1388 hx->ip->name, __func__, hh->prim, hh->id); in hscx_l2l1()
1406 struct hscx_hw *hx = container_of(bch, struct hscx_hw, bch); in hscx_bctrl() local
1410 pr_debug("%s: %s cmd:%x %p\n", hx->ip->name, __func__, cmd, arg); in hscx_bctrl()
1415 spin_lock_irqsave(hx->ip->hwlock, flags); in hscx_bctrl()
1417 hscx_mode(hx, ISDN_P_NONE); in hscx_bctrl()
1418 spin_unlock_irqrestore(hx->ip->hwlock, flags); in hscx_bctrl()
1421 module_put(hx->ip->owner); in hscx_bctrl()
1429 hx->ip->name, __func__, cmd); in hscx_bctrl()
1447 hscx_init(struct hscx_hw *hx) in hscx_init() argument
1451 WriteHSCX(hx, IPAC_RAH2, 0xFF); in hscx_init()
1452 WriteHSCX(hx, IPAC_XBCH, 0x00); in hscx_init()
1453 WriteHSCX(hx, IPAC_RLCR, 0x00); in hscx_init()
1455 if (hx->ip->type & IPAC_TYPE_HSCX) { in hscx_init()
1456 WriteHSCX(hx, IPAC_CCR1, 0x85); in hscx_init()
1457 val = ReadHSCX(hx, HSCX_VSTR); in hscx_init()
1458 pr_debug("%s: HSCX VSTR %02x\n", hx->ip->name, val); in hscx_init()
1459 if (hx->bch.debug & DEBUG_HW) in hscx_init()
1460 pr_notice("%s: HSCX version %s\n", hx->ip->name, in hscx_init()
1463 WriteHSCX(hx, IPAC_CCR1, 0x82); in hscx_init()
1464 WriteHSCX(hx, IPAC_CCR2, 0x30); in hscx_init()
1465 WriteHSCX(hx, IPAC_XCCR, 0x07); in hscx_init()
1466 WriteHSCX(hx, IPAC_RCCR, 0x07); in hscx_init()