Lines Matching defs:hscx

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