Lines Matching refs:hx

874 waitforCEC(struct hscx_hw *hx)
879 starb = ReadHSCX(hx, IPAC_STARB);
886 pr_debug("%s: B%1d CEC %d us\n", hx->ip->name, hx->bch.nr,
889 pr_info("%s: B%1d CEC timeout\n", hx->ip->name, hx->bch.nr);
894 waitforXFW(struct hscx_hw *hx)
899 starb = ReadHSCX(hx, IPAC_STARB);
906 pr_debug("%s: B%1d XFW %d us\n", hx->ip->name, hx->bch.nr,
909 pr_info("%s: B%1d XFW timeout\n", hx->ip->name, hx->bch.nr);
913 hscx_cmdr(struct hscx_hw *hx, u8 cmd)
915 if (hx->ip->type & IPAC_TYPE_IPACX)
916 WriteHSCX(hx, IPACX_CMDRB, cmd);
918 waitforCEC(hx);
919 WriteHSCX(hx, IPAC_CMDRB, cmd);
1008 hscx_xpr(struct hscx_hw *hx)
1010 if (hx->bch.tx_skb && hx->bch.tx_idx < hx->bch.tx_skb->len) {
1011 hscx_fill_fifo(hx);
1013 dev_kfree_skb(hx->bch.tx_skb);
1014 if (get_next_bframe(&hx->bch)) {
1015 hscx_fill_fifo(hx);
1016 test_and_clear_bit(FLG_TX_EMPTY, &hx->bch.Flags);
1017 } else if (test_bit(FLG_TX_EMPTY, &hx->bch.Flags)) {
1018 hscx_fill_fifo(hx);
1024 ipac_rme(struct hscx_hw *hx)
1029 if (hx->ip->type & IPAC_TYPE_IPACX)
1030 rstab = ReadHSCX(hx, IPACX_RSTAB);
1032 rstab = ReadHSCX(hx, IPAC_RSTAB);
1033 pr_debug("%s: B%1d RSTAB %02x\n", hx->ip->name, hx->bch.nr, rstab);
1037 if (hx->bch.debug & DEBUG_HW_BCHANNEL)
1039 hx->ip->name, hx->bch.nr);
1042 if (hx->bch.debug & DEBUG_HW_BCHANNEL)
1044 hx->ip->name, hx->bch.nr,
1045 hx->bch.state);
1048 if (hx->bch.debug & DEBUG_HW_BCHANNEL)
1050 hx->ip->name, hx->bch.nr);
1052 hscx_cmdr(hx, 0x80); /* Do RMC */
1055 if (hx->ip->type & IPAC_TYPE_IPACX)
1056 count = ReadHSCX(hx, IPACX_RBCLB);
1058 count = ReadHSCX(hx, IPAC_RBCLB);
1059 count &= (hx->fifo_size - 1);
1061 count = hx->fifo_size;
1062 hscx_empty_fifo(hx, count);
1063 if (!hx->bch.rx_skb)
1065 if (hx->bch.rx_skb->len < 2) {
1067 hx->ip->name, hx->bch.nr, hx->bch.rx_skb->len);
1068 skb_trim(hx->bch.rx_skb, 0);
1070 skb_trim(hx->bch.rx_skb, hx->bch.rx_skb->len - 1);
1071 recv_Bchannel(&hx->bch, 0, false);
1076 ipac_irq(struct hscx_hw *hx, u8 ista)
1080 if (hx->ip->type & IPAC_TYPE_IPACX)
1081 istab = ReadHSCX(hx, IPACX_ISTAB);
1082 else if (hx->ip->type & IPAC_TYPE_IPAC) {
1083 istab = ReadHSCX(hx, IPAC_ISTAB);
1084 m = (hx->bch.nr & 1) ? IPAC__EXA : IPAC__EXB;
1086 exirb = ReadHSCX(hx, IPAC_EXIRB);
1087 pr_debug("%s: B%1d EXIRB %02x\n", hx->ip->name,
1088 hx->bch.nr, exirb);
1090 } else if (hx->bch.nr & 2) { /* HSCX B */
1092 ipac_irq(&hx->ip->hscx[0], ista);
1094 exirb = ReadHSCX(hx, IPAC_EXIRB);
1095 pr_debug("%s: B%1d EXIRB %02x\n", hx->ip->name,
1096 hx->bch.nr, exirb);
1100 istab = ReadHSCX(hx, IPAC_ISTAB);
1102 exirb = ReadHSCX(hx, IPAC_EXIRB);
1103 pr_debug("%s: B%1d EXIRB %02x\n", hx->ip->name,
1104 hx->bch.nr, exirb);
1112 pr_debug("%s: B%1d ISTAB %02x\n", hx->ip->name, hx->bch.nr, istab);
1114 if (!test_bit(FLG_ACTIVE, &hx->bch.Flags))
1118 ipac_rme(hx);
1121 hscx_empty_fifo(hx, hx->fifo_size);
1122 if (test_bit(FLG_TRANSPARENT, &hx->bch.Flags))
1123 recv_Bchannel(&hx->bch, 0, false);
1127 pr_debug("%s: B%1d RFO error\n", hx->ip->name, hx->bch.nr);
1128 hscx_cmdr(hx, 0x40); /* RRES */
1132 hscx_xpr(hx);
1135 if (test_bit(FLG_TRANSPARENT, &hx->bch.Flags)) {
1136 if (test_bit(FLG_FILLEMPTY, &hx->bch.Flags))
1137 test_and_set_bit(FLG_TX_EMPTY, &hx->bch.Flags);
1138 hscx_xpr(hx);
1141 pr_debug("%s: B%1d XDU error at len %d\n", hx->ip->name,
1142 hx->bch.nr, hx->bch.tx_idx);
1143 hx->bch.tx_idx = 0;
1144 hscx_cmdr(hx, 0x01); /* XRES */
1335 struct hscx_hw *hx = container_of(bch, struct hscx_hw, bch);
1342 spin_lock_irqsave(hx->ip->hwlock, flags);
1346 hscx_fill_fifo(hx);
1348 spin_unlock_irqrestore(hx->ip->hwlock, flags);
1351 spin_lock_irqsave(hx->ip->hwlock, flags);
1353 ret = hscx_mode(hx, ch->protocol);
1356 spin_unlock_irqrestore(hx->ip->hwlock, flags);
1362 spin_lock_irqsave(hx->ip->hwlock, flags);
1364 hscx_mode(hx, ISDN_P_NONE);
1365 spin_unlock_irqrestore(hx->ip->hwlock, flags);
1372 hx->ip->name, __func__, hh->prim, hh->id);
1390 struct hscx_hw *hx = container_of(bch, struct hscx_hw, bch);
1394 pr_debug("%s: %s cmd:%x %p\n", hx->ip->name, __func__, cmd, arg);
1399 spin_lock_irqsave(hx->ip->hwlock, flags);
1401 hscx_mode(hx, ISDN_P_NONE);
1402 spin_unlock_irqrestore(hx->ip->hwlock, flags);
1405 module_put(hx->ip->owner);
1413 hx->ip->name, __func__, cmd);
1431 hscx_init(struct hscx_hw *hx)
1435 WriteHSCX(hx, IPAC_RAH2, 0xFF);
1436 WriteHSCX(hx, IPAC_XBCH, 0x00);
1437 WriteHSCX(hx, IPAC_RLCR, 0x00);
1439 if (hx->ip->type & IPAC_TYPE_HSCX) {
1440 WriteHSCX(hx, IPAC_CCR1, 0x85);
1441 val = ReadHSCX(hx, HSCX_VSTR);
1442 pr_debug("%s: HSCX VSTR %02x\n", hx->ip->name, val);
1443 if (hx->bch.debug & DEBUG_HW)
1444 pr_notice("%s: HSCX version %s\n", hx->ip->name,
1447 WriteHSCX(hx, IPAC_CCR1, 0x82);
1448 WriteHSCX(hx, IPAC_CCR2, 0x30);
1449 WriteHSCX(hx, IPAC_XCCR, 0x07);
1450 WriteHSCX(hx, IPAC_RCCR, 0x07);