Lines Matching refs:hx

873 waitforCEC(struct hscx_hw *hx)
878 starb = ReadHSCX(hx, IPAC_STARB);
885 pr_debug("%s: B%1d CEC %d us\n", hx->ip->name, hx->bch.nr,
888 pr_info("%s: B%1d CEC timeout\n", hx->ip->name, hx->bch.nr);
893 waitforXFW(struct hscx_hw *hx)
898 starb = ReadHSCX(hx, IPAC_STARB);
905 pr_debug("%s: B%1d XFW %d us\n", hx->ip->name, hx->bch.nr,
908 pr_info("%s: B%1d XFW timeout\n", hx->ip->name, hx->bch.nr);
912 hscx_cmdr(struct hscx_hw *hx, u8 cmd)
914 if (hx->ip->type & IPAC_TYPE_IPACX)
915 WriteHSCX(hx, IPACX_CMDRB, cmd);
917 waitforCEC(hx);
918 WriteHSCX(hx, IPAC_CMDRB, cmd);
1007 hscx_xpr(struct hscx_hw *hx)
1009 if (hx->bch.tx_skb && hx->bch.tx_idx < hx->bch.tx_skb->len) {
1010 hscx_fill_fifo(hx);
1012 dev_kfree_skb(hx->bch.tx_skb);
1013 if (get_next_bframe(&hx->bch)) {
1014 hscx_fill_fifo(hx);
1015 test_and_clear_bit(FLG_TX_EMPTY, &hx->bch.Flags);
1016 } else if (test_bit(FLG_TX_EMPTY, &hx->bch.Flags)) {
1017 hscx_fill_fifo(hx);
1023 ipac_rme(struct hscx_hw *hx)
1028 if (hx->ip->type & IPAC_TYPE_IPACX)
1029 rstab = ReadHSCX(hx, IPACX_RSTAB);
1031 rstab = ReadHSCX(hx, IPAC_RSTAB);
1032 pr_debug("%s: B%1d RSTAB %02x\n", hx->ip->name, hx->bch.nr, rstab);
1036 if (hx->bch.debug & DEBUG_HW_BCHANNEL)
1038 hx->ip->name, hx->bch.nr);
1041 if (hx->bch.debug & DEBUG_HW_BCHANNEL)
1043 hx->ip->name, hx->bch.nr,
1044 hx->bch.state);
1047 if (hx->bch.debug & DEBUG_HW_BCHANNEL)
1049 hx->ip->name, hx->bch.nr);
1051 hscx_cmdr(hx, 0x80); /* Do RMC */
1054 if (hx->ip->type & IPAC_TYPE_IPACX)
1055 count = ReadHSCX(hx, IPACX_RBCLB);
1057 count = ReadHSCX(hx, IPAC_RBCLB);
1058 count &= (hx->fifo_size - 1);
1060 count = hx->fifo_size;
1061 hscx_empty_fifo(hx, count);
1062 if (!hx->bch.rx_skb)
1064 if (hx->bch.rx_skb->len < 2) {
1066 hx->ip->name, hx->bch.nr, hx->bch.rx_skb->len);
1067 skb_trim(hx->bch.rx_skb, 0);
1069 skb_trim(hx->bch.rx_skb, hx->bch.rx_skb->len - 1);
1070 recv_Bchannel(&hx->bch, 0, false);
1075 ipac_irq(struct hscx_hw *hx, u8 ista)
1079 if (hx->ip->type & IPAC_TYPE_IPACX)
1080 istab = ReadHSCX(hx, IPACX_ISTAB);
1081 else if (hx->ip->type & IPAC_TYPE_IPAC) {
1082 istab = ReadHSCX(hx, IPAC_ISTAB);
1083 m = (hx->bch.nr & 1) ? IPAC__EXA : IPAC__EXB;
1085 exirb = ReadHSCX(hx, IPAC_EXIRB);
1086 pr_debug("%s: B%1d EXIRB %02x\n", hx->ip->name,
1087 hx->bch.nr, exirb);
1089 } else if (hx->bch.nr & 2) { /* HSCX B */
1091 ipac_irq(&hx->ip->hscx[0], ista);
1093 exirb = ReadHSCX(hx, IPAC_EXIRB);
1094 pr_debug("%s: B%1d EXIRB %02x\n", hx->ip->name,
1095 hx->bch.nr, exirb);
1099 istab = ReadHSCX(hx, IPAC_ISTAB);
1101 exirb = ReadHSCX(hx, IPAC_EXIRB);
1102 pr_debug("%s: B%1d EXIRB %02x\n", hx->ip->name,
1103 hx->bch.nr, exirb);
1111 pr_debug("%s: B%1d ISTAB %02x\n", hx->ip->name, hx->bch.nr, istab);
1113 if (!test_bit(FLG_ACTIVE, &hx->bch.Flags))
1117 ipac_rme(hx);
1120 hscx_empty_fifo(hx, hx->fifo_size);
1121 if (test_bit(FLG_TRANSPARENT, &hx->bch.Flags))
1122 recv_Bchannel(&hx->bch, 0, false);
1126 pr_debug("%s: B%1d RFO error\n", hx->ip->name, hx->bch.nr);
1127 hscx_cmdr(hx, 0x40); /* RRES */
1131 hscx_xpr(hx);
1134 if (test_bit(FLG_TRANSPARENT, &hx->bch.Flags)) {
1135 if (test_bit(FLG_FILLEMPTY, &hx->bch.Flags))
1136 test_and_set_bit(FLG_TX_EMPTY, &hx->bch.Flags);
1137 hscx_xpr(hx);
1140 pr_debug("%s: B%1d XDU error at len %d\n", hx->ip->name,
1141 hx->bch.nr, hx->bch.tx_idx);
1142 hx->bch.tx_idx = 0;
1143 hscx_cmdr(hx, 0x01); /* XRES */
1334 struct hscx_hw *hx = container_of(bch, struct hscx_hw, bch);
1341 spin_lock_irqsave(hx->ip->hwlock, flags);
1345 hscx_fill_fifo(hx);
1347 spin_unlock_irqrestore(hx->ip->hwlock, flags);
1350 spin_lock_irqsave(hx->ip->hwlock, flags);
1352 ret = hscx_mode(hx, ch->protocol);
1355 spin_unlock_irqrestore(hx->ip->hwlock, flags);
1361 spin_lock_irqsave(hx->ip->hwlock, flags);
1363 hscx_mode(hx, ISDN_P_NONE);
1364 spin_unlock_irqrestore(hx->ip->hwlock, flags);
1371 hx->ip->name, __func__, hh->prim, hh->id);
1389 struct hscx_hw *hx = container_of(bch, struct hscx_hw, bch);
1393 pr_debug("%s: %s cmd:%x %p\n", hx->ip->name, __func__, cmd, arg);
1398 spin_lock_irqsave(hx->ip->hwlock, flags);
1400 hscx_mode(hx, ISDN_P_NONE);
1401 spin_unlock_irqrestore(hx->ip->hwlock, flags);
1404 module_put(hx->ip->owner);
1412 hx->ip->name, __func__, cmd);
1430 hscx_init(struct hscx_hw *hx)
1434 WriteHSCX(hx, IPAC_RAH2, 0xFF);
1435 WriteHSCX(hx, IPAC_XBCH, 0x00);
1436 WriteHSCX(hx, IPAC_RLCR, 0x00);
1438 if (hx->ip->type & IPAC_TYPE_HSCX) {
1439 WriteHSCX(hx, IPAC_CCR1, 0x85);
1440 val = ReadHSCX(hx, HSCX_VSTR);
1441 pr_debug("%s: HSCX VSTR %02x\n", hx->ip->name, val);
1442 if (hx->bch.debug & DEBUG_HW)
1443 pr_notice("%s: HSCX version %s\n", hx->ip->name,
1446 WriteHSCX(hx, IPAC_CCR1, 0x82);
1447 WriteHSCX(hx, IPAC_CCR2, 0x30);
1448 WriteHSCX(hx, IPAC_XCCR, 0x07);
1449 WriteHSCX(hx, IPAC_RCCR, 0x07);