Lines Matching refs:hscx

923 hscx_empty_fifo(struct hscx_hw *hscx, u8 count)  in hscx_empty_fifo()  argument
928 pr_debug("%s: B%1d %d\n", hscx->ip->name, hscx->bch.nr, count); in hscx_empty_fifo()
929 if (test_bit(FLG_RX_OFF, &hscx->bch.Flags)) { in hscx_empty_fifo()
930 hscx->bch.dropcnt += count; in hscx_empty_fifo()
931 hscx_cmdr(hscx, 0x80); /* RMC */ in hscx_empty_fifo()
934 maxlen = bchannel_get_rxbuf(&hscx->bch, count); in hscx_empty_fifo()
936 hscx_cmdr(hscx, 0x80); /* RMC */ in hscx_empty_fifo()
937 if (hscx->bch.rx_skb) in hscx_empty_fifo()
938 skb_trim(hscx->bch.rx_skb, 0); in hscx_empty_fifo()
940 hscx->ip->name, hscx->bch.nr, count); in hscx_empty_fifo()
943 p = skb_put(hscx->bch.rx_skb, count); in hscx_empty_fifo()
945 if (hscx->ip->type & IPAC_TYPE_IPACX) in hscx_empty_fifo()
946 hscx->ip->read_fifo(hscx->ip->hw, in hscx_empty_fifo()
947 hscx->off + IPACX_RFIFOB, p, count); in hscx_empty_fifo()
949 hscx->ip->read_fifo(hscx->ip->hw, in hscx_empty_fifo()
950 hscx->off, p, count); in hscx_empty_fifo()
952 hscx_cmdr(hscx, 0x80); /* RMC */ in hscx_empty_fifo()
954 if (hscx->bch.debug & DEBUG_HW_BFIFO) { in hscx_empty_fifo()
955 snprintf(hscx->log, 64, "B%1d-recv %s %d ", in hscx_empty_fifo()
956 hscx->bch.nr, hscx->ip->name, count); in hscx_empty_fifo()
957 print_hex_dump_bytes(hscx->log, DUMP_PREFIX_OFFSET, p, count); in hscx_empty_fifo()
962 hscx_fill_fifo(struct hscx_hw *hscx) in hscx_fill_fifo() argument
967 if (!hscx->bch.tx_skb) { in hscx_fill_fifo()
968 if (!test_bit(FLG_TX_EMPTY, &hscx->bch.Flags)) in hscx_fill_fifo()
970 count = hscx->fifo_size; in hscx_fill_fifo()
972 p = hscx->log; in hscx_fill_fifo()
973 memset(p, hscx->bch.fill[0], count); in hscx_fill_fifo()
975 count = hscx->bch.tx_skb->len - hscx->bch.tx_idx; in hscx_fill_fifo()
978 p = hscx->bch.tx_skb->data + hscx->bch.tx_idx; in hscx_fill_fifo()
980 more = test_bit(FLG_TRANSPARENT, &hscx->bch.Flags) ? 1 : 0; in hscx_fill_fifo()
981 if (count > hscx->fifo_size) { in hscx_fill_fifo()
982 count = hscx->fifo_size; in hscx_fill_fifo()
985 pr_debug("%s: B%1d %d/%d/%d\n", hscx->ip->name, hscx->bch.nr, in hscx_fill_fifo()
986 count, hscx->bch.tx_idx, hscx->bch.tx_skb->len); in hscx_fill_fifo()
987 hscx->bch.tx_idx += count; in hscx_fill_fifo()
989 if (hscx->ip->type & IPAC_TYPE_IPACX) in hscx_fill_fifo()
990 hscx->ip->write_fifo(hscx->ip->hw, in hscx_fill_fifo()
991 hscx->off + IPACX_XFIFOB, p, count); in hscx_fill_fifo()
993 waitforXFW(hscx); in hscx_fill_fifo()
994 hscx->ip->write_fifo(hscx->ip->hw, in hscx_fill_fifo()
995 hscx->off, p, count); in hscx_fill_fifo()
997 hscx_cmdr(hscx, more ? 0x08 : 0x0a); in hscx_fill_fifo()
999 if (hscx->bch.tx_skb && (hscx->bch.debug & DEBUG_HW_BFIFO)) { in hscx_fill_fifo()
1000 snprintf(hscx->log, 64, "B%1d-send %s %d ", in hscx_fill_fifo()
1001 hscx->bch.nr, hscx->ip->name, count); in hscx_fill_fifo()
1002 print_hex_dump_bytes(hscx->log, DUMP_PREFIX_OFFSET, p, count); in hscx_fill_fifo()
1091 ipac_irq(&hx->ip->hscx[0], ista); in ipac_irq()
1159 ipac_irq(&ipac->hscx[0], ista); in mISDNipac_irq()
1161 ipac_irq(&ipac->hscx[1], ista); in mISDNipac_irq()
1180 ipac_irq(&ipac->hscx[0], ista); in mISDNipac_irq()
1182 ipac_irq(&ipac->hscx[1], ista); in mISDNipac_irq()
1187 ista = ReadIPAC(ipac, IPAC_ISTAB + ipac->hscx[1].off); in mISDNipac_irq()
1190 ipac_irq(&ipac->hscx[1], ista); in mISDNipac_irq()
1212 hscx_mode(struct hscx_hw *hscx, u32 bprotocol) in hscx_mode() argument
1214 pr_debug("%s: HSCX %c protocol %x-->%x ch %d\n", hscx->ip->name, in hscx_mode()
1215 '@' + hscx->bch.nr, hscx->bch.state, bprotocol, hscx->bch.nr); in hscx_mode()
1216 if (hscx->ip->type & IPAC_TYPE_IPACX) { in hscx_mode()
1217 if (hscx->bch.nr & 1) { /* B1 and ICA */ in hscx_mode()
1218 WriteIPAC(hscx->ip, ISACX_BCHA_TSDP_BC1, 0x80); in hscx_mode()
1219 WriteIPAC(hscx->ip, ISACX_BCHA_CR, 0x88); in hscx_mode()
1221 WriteIPAC(hscx->ip, ISACX_BCHB_TSDP_BC1, 0x81); in hscx_mode()
1222 WriteIPAC(hscx->ip, ISACX_BCHB_CR, 0x88); in hscx_mode()
1226 WriteHSCX(hscx, IPACX_MODEB, 0xC0); /* rec off */ in hscx_mode()
1227 WriteHSCX(hscx, IPACX_EXMB, 0x30); /* std adj. */ in hscx_mode()
1228 WriteHSCX(hscx, IPACX_MASKB, 0xFF); /* ints off */ in hscx_mode()
1229 hscx_cmdr(hscx, 0x41); in hscx_mode()
1230 test_and_clear_bit(FLG_HDLC, &hscx->bch.Flags); in hscx_mode()
1231 test_and_clear_bit(FLG_TRANSPARENT, &hscx->bch.Flags); in hscx_mode()
1234 WriteHSCX(hscx, IPACX_MODEB, 0x88); /* ex trans */ in hscx_mode()
1235 WriteHSCX(hscx, IPACX_EXMB, 0x00); /* trans */ in hscx_mode()
1236 hscx_cmdr(hscx, 0x41); in hscx_mode()
1237 WriteHSCX(hscx, IPACX_MASKB, IPACX_B_ON); in hscx_mode()
1238 test_and_set_bit(FLG_TRANSPARENT, &hscx->bch.Flags); in hscx_mode()
1241 WriteHSCX(hscx, IPACX_MODEB, 0xC0); /* trans */ in hscx_mode()
1242 WriteHSCX(hscx, IPACX_EXMB, 0x00); /* hdlc,crc */ in hscx_mode()
1243 hscx_cmdr(hscx, 0x41); in hscx_mode()
1244 WriteHSCX(hscx, IPACX_MASKB, IPACX_B_ON); in hscx_mode()
1245 test_and_set_bit(FLG_HDLC, &hscx->bch.Flags); in hscx_mode()
1248 pr_info("%s: protocol not known %x\n", hscx->ip->name, in hscx_mode()
1252 } else if (hscx->ip->type & IPAC_TYPE_IPAC) { /* IPAC */ in hscx_mode()
1253 WriteHSCX(hscx, IPAC_CCR1, 0x82); in hscx_mode()
1254 WriteHSCX(hscx, IPAC_CCR2, 0x30); in hscx_mode()
1255 WriteHSCX(hscx, IPAC_XCCR, 0x07); in hscx_mode()
1256 WriteHSCX(hscx, IPAC_RCCR, 0x07); in hscx_mode()
1257 WriteHSCX(hscx, IPAC_TSAX, hscx->slot); in hscx_mode()
1258 WriteHSCX(hscx, IPAC_TSAR, hscx->slot); in hscx_mode()
1261 WriteHSCX(hscx, IPAC_TSAX, 0x1F); in hscx_mode()
1262 WriteHSCX(hscx, IPAC_TSAR, 0x1F); in hscx_mode()
1263 WriteHSCX(hscx, IPAC_MODEB, 0x84); in hscx_mode()
1264 WriteHSCX(hscx, IPAC_CCR1, 0x82); in hscx_mode()
1265 WriteHSCX(hscx, IPAC_MASKB, 0xFF); /* ints off */ in hscx_mode()
1266 test_and_clear_bit(FLG_HDLC, &hscx->bch.Flags); in hscx_mode()
1267 test_and_clear_bit(FLG_TRANSPARENT, &hscx->bch.Flags); in hscx_mode()
1270 WriteHSCX(hscx, IPAC_MODEB, 0xe4); /* ex trans */ in hscx_mode()
1271 WriteHSCX(hscx, IPAC_CCR1, 0x82); in hscx_mode()
1272 hscx_cmdr(hscx, 0x41); in hscx_mode()
1273 WriteHSCX(hscx, IPAC_MASKB, 0); in hscx_mode()
1274 test_and_set_bit(FLG_TRANSPARENT, &hscx->bch.Flags); in hscx_mode()
1277 WriteHSCX(hscx, IPAC_MODEB, 0x8c); in hscx_mode()
1278 WriteHSCX(hscx, IPAC_CCR1, 0x8a); in hscx_mode()
1279 hscx_cmdr(hscx, 0x41); in hscx_mode()
1280 WriteHSCX(hscx, IPAC_MASKB, 0); in hscx_mode()
1281 test_and_set_bit(FLG_HDLC, &hscx->bch.Flags); in hscx_mode()
1284 pr_info("%s: protocol not known %x\n", hscx->ip->name, in hscx_mode()
1288 } else if (hscx->ip->type & IPAC_TYPE_HSCX) { /* HSCX */ in hscx_mode()
1289 WriteHSCX(hscx, IPAC_CCR1, 0x85); in hscx_mode()
1290 WriteHSCX(hscx, IPAC_CCR2, 0x30); in hscx_mode()
1291 WriteHSCX(hscx, IPAC_XCCR, 0x07); in hscx_mode()
1292 WriteHSCX(hscx, IPAC_RCCR, 0x07); in hscx_mode()
1293 WriteHSCX(hscx, IPAC_TSAX, hscx->slot); in hscx_mode()
1294 WriteHSCX(hscx, IPAC_TSAR, hscx->slot); in hscx_mode()
1297 WriteHSCX(hscx, IPAC_TSAX, 0x1F); in hscx_mode()
1298 WriteHSCX(hscx, IPAC_TSAR, 0x1F); in hscx_mode()
1299 WriteHSCX(hscx, IPAC_MODEB, 0x84); in hscx_mode()
1300 WriteHSCX(hscx, IPAC_CCR1, 0x85); in hscx_mode()
1301 WriteHSCX(hscx, IPAC_MASKB, 0xFF); /* ints off */ in hscx_mode()
1302 test_and_clear_bit(FLG_HDLC, &hscx->bch.Flags); in hscx_mode()
1303 test_and_clear_bit(FLG_TRANSPARENT, &hscx->bch.Flags); in hscx_mode()
1306 WriteHSCX(hscx, IPAC_MODEB, 0xe4); /* ex trans */ in hscx_mode()
1307 WriteHSCX(hscx, IPAC_CCR1, 0x85); in hscx_mode()
1308 hscx_cmdr(hscx, 0x41); in hscx_mode()
1309 WriteHSCX(hscx, IPAC_MASKB, 0); in hscx_mode()
1310 test_and_set_bit(FLG_TRANSPARENT, &hscx->bch.Flags); in hscx_mode()
1313 WriteHSCX(hscx, IPAC_MODEB, 0x8c); in hscx_mode()
1314 WriteHSCX(hscx, IPAC_CCR1, 0x8d); in hscx_mode()
1315 hscx_cmdr(hscx, 0x41); in hscx_mode()
1316 WriteHSCX(hscx, IPAC_MASKB, 0); in hscx_mode()
1317 test_and_set_bit(FLG_HDLC, &hscx->bch.Flags); in hscx_mode()
1320 pr_info("%s: protocol not known %x\n", hscx->ip->name, in hscx_mode()
1326 hscx->bch.state = bprotocol; in hscx_mode()
1458 hscx_init(&ipac->hscx[0]); in ipac_init()
1459 hscx_init(&ipac->hscx[1]); in ipac_init()
1462 hscx_init(&ipac->hscx[0]); in ipac_init()
1463 hscx_init(&ipac->hscx[1]); in ipac_init()
1471 if (ipac->hscx[0].bch.debug & DEBUG_HW) in ipac_init()
1487 bch = &ipac->hscx[rq->adr.channel - 1].bch; in open_bchannel()
1573 ipac->hscx[0].off = 0; in mISDNipac_init()
1574 ipac->hscx[1].off = 0x40; in mISDNipac_init()
1575 ipac->hscx[0].fifo_size = 32; in mISDNipac_init()
1576 ipac->hscx[1].fifo_size = 32; in mISDNipac_init()
1579 ipac->hscx[0].off = 0; in mISDNipac_init()
1580 ipac->hscx[1].off = 0x40; in mISDNipac_init()
1581 ipac->hscx[0].fifo_size = 64; in mISDNipac_init()
1582 ipac->hscx[1].fifo_size = 64; in mISDNipac_init()
1585 ipac->hscx[0].off = IPACX_OFF_ICA; in mISDNipac_init()
1586 ipac->hscx[1].off = IPACX_OFF_ICB; in mISDNipac_init()
1587 ipac->hscx[0].fifo_size = 64; in mISDNipac_init()
1588 ipac->hscx[1].fifo_size = 64; in mISDNipac_init()
1597 ipac->hscx[i].bch.nr = i + 1; in mISDNipac_init()
1599 list_add(&ipac->hscx[i].bch.ch.list, in mISDNipac_init()
1601 mISDN_initbchannel(&ipac->hscx[i].bch, MAX_DATA_MEM, in mISDNipac_init()
1602 ipac->hscx[i].fifo_size); in mISDNipac_init()
1603 ipac->hscx[i].bch.ch.nr = i + 1; in mISDNipac_init()
1604 ipac->hscx[i].bch.ch.send = &hscx_l2l1; in mISDNipac_init()
1605 ipac->hscx[i].bch.ch.ctrl = hscx_bctrl; in mISDNipac_init()
1606 ipac->hscx[i].bch.hw = hw; in mISDNipac_init()
1607 ipac->hscx[i].ip = ipac; in mISDNipac_init()
1610 ipac->hscx[i].slot = (i == 0) ? 0x2f : 0x03; in mISDNipac_init()