• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/isdn/hardware/mISDN/

Lines Matching refs:hscx

928 hscx_empty_fifo(struct hscx_hw *hscx, u8 count)
932 pr_debug("%s: B%1d %d\n", hscx->ip->name, hscx->bch.nr, count);
933 if (!hscx->bch.rx_skb) {
934 hscx->bch.rx_skb = mI_alloc_skb(hscx->bch.maxlen, GFP_ATOMIC);
935 if (!hscx->bch.rx_skb) {
937 hscx->ip->name);
938 hscx_cmdr(hscx, 0x80); /* RMC */
942 if ((hscx->bch.rx_skb->len + count) > hscx->bch.maxlen) {
943 pr_debug("%s: overrun %d\n", hscx->ip->name,
944 hscx->bch.rx_skb->len + count);
945 skb_trim(hscx->bch.rx_skb, 0);
946 hscx_cmdr(hscx, 0x80); /* RMC */
949 p = skb_put(hscx->bch.rx_skb, count);
951 if (hscx->ip->type & IPAC_TYPE_IPACX)
952 hscx->ip->read_fifo(hscx->ip->hw,
953 hscx->off + IPACX_RFIFOB, p, count);
955 hscx->ip->read_fifo(hscx->ip->hw,
956 hscx->off, p, count);
958 hscx_cmdr(hscx, 0x80); /* RMC */
960 if (hscx->bch.debug & DEBUG_HW_BFIFO) {
961 snprintf(hscx->log, 64, "B%1d-recv %s %d ",
962 hscx->bch.nr, hscx->ip->name, count);
963 print_hex_dump_bytes(hscx->log, DUMP_PREFIX_OFFSET, p, count);
968 hscx_fill_fifo(struct hscx_hw *hscx)
973 if (!hscx->bch.tx_skb)
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, count,
986 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.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);
1092 ipac_irq(&hx->ip->hscx[0], ista);
1161 ipac_irq(&ipac->hscx[0], ista);
1163 ipac_irq(&ipac->hscx[1], ista);
1182 ipac_irq(&ipac->hscx[0], ista);
1184 ipac_irq(&ipac->hscx[1], ista);
1189 ista = ReadIPAC(ipac, IPAC_ISTAB + ipac->hscx[1].off);
1192 ipac_irq(&ipac->hscx[1], ista);
1215 hscx_mode(struct hscx_hw *hscx, u32 bprotocol)
1217 pr_debug("%s: HSCX %c protocol %x-->%x ch %d\n", hscx->ip->name,
1218 '@' + hscx->bch.nr, hscx->bch.state, bprotocol, hscx->bch.nr);
1219 if (hscx->ip->type & IPAC_TYPE_IPACX) {
1220 if (hscx->bch.nr & 1) { /* B1 and ICA */
1221 WriteIPAC(hscx->ip, ISACX_BCHA_TSDP_BC1, 0x80);
1222 WriteIPAC(hscx->ip, ISACX_BCHA_CR, 0x88);
1224 WriteIPAC(hscx->ip, ISACX_BCHB_TSDP_BC1, 0x81);
1225 WriteIPAC(hscx->ip, ISACX_BCHB_CR, 0x88);
1229 WriteHSCX(hscx, IPACX_MODEB, 0xC0); /* rec off */
1230 WriteHSCX(hscx, IPACX_EXMB, 0x30); /* std adj. */
1231 WriteHSCX(hscx, IPACX_MASKB, 0xFF); /* ints off */
1232 hscx_cmdr(hscx, 0x41);
1233 test_and_clear_bit(FLG_HDLC, &hscx->bch.Flags);
1234 test_and_clear_bit(FLG_TRANSPARENT, &hscx->bch.Flags);
1237 WriteHSCX(hscx, IPACX_MODEB, 0x88); /* ex trans */
1238 WriteHSCX(hscx, IPACX_EXMB, 0x00); /* trans */
1239 hscx_cmdr(hscx, 0x41);
1240 WriteHSCX(hscx, IPACX_MASKB, IPACX_B_ON);
1241 test_and_set_bit(FLG_TRANSPARENT, &hscx->bch.Flags);
1244 WriteHSCX(hscx, IPACX_MODEB, 0xC0); /* trans */
1245 WriteHSCX(hscx, IPACX_EXMB, 0x00); /* hdlc,crc */
1246 hscx_cmdr(hscx, 0x41);
1247 WriteHSCX(hscx, IPACX_MASKB, IPACX_B_ON);
1248 test_and_set_bit(FLG_HDLC, &hscx->bch.Flags);
1251 pr_info("%s: protocol not known %x\n", hscx->ip->name,
1255 } else if (hscx->ip->type & IPAC_TYPE_IPAC) { /* IPAC */
1256 WriteHSCX(hscx, IPAC_CCR1, 0x82);
1257 WriteHSCX(hscx, IPAC_CCR2, 0x30);
1258 WriteHSCX(hscx, IPAC_XCCR, 0x07);
1259 WriteHSCX(hscx, IPAC_RCCR, 0x07);
1260 WriteHSCX(hscx, IPAC_TSAX, hscx->slot);
1261 WriteHSCX(hscx, IPAC_TSAR, hscx->slot);
1264 WriteHSCX(hscx, IPAC_TSAX, 0x1F);
1265 WriteHSCX(hscx, IPAC_TSAR, 0x1F);
1266 WriteHSCX(hscx, IPAC_MODEB, 0x84);
1267 WriteHSCX(hscx, IPAC_CCR1, 0x82);
1268 WriteHSCX(hscx, IPAC_MASKB, 0xFF); /* ints off */
1269 test_and_clear_bit(FLG_HDLC, &hscx->bch.Flags);
1270 test_and_clear_bit(FLG_TRANSPARENT, &hscx->bch.Flags);
1273 WriteHSCX(hscx, IPAC_MODEB, 0xe4); /* ex trans */
1274 WriteHSCX(hscx, IPAC_CCR1, 0x82);
1275 hscx_cmdr(hscx, 0x41);
1276 WriteHSCX(hscx, IPAC_MASKB, 0);
1277 test_and_set_bit(FLG_TRANSPARENT, &hscx->bch.Flags);
1280 WriteHSCX(hscx, IPAC_MODEB, 0x8c);
1281 WriteHSCX(hscx, IPAC_CCR1, 0x8a);
1282 hscx_cmdr(hscx, 0x41);
1283 WriteHSCX(hscx, IPAC_MASKB, 0);
1284 test_and_set_bit(FLG_HDLC, &hscx->bch.Flags);
1287 pr_info("%s: protocol not known %x\n", hscx->ip->name,
1291 } else if (hscx->ip->type & IPAC_TYPE_HSCX) { /* HSCX */
1292 WriteHSCX(hscx, IPAC_CCR1, 0x85);
1293 WriteHSCX(hscx, IPAC_CCR2, 0x30);
1294 WriteHSCX(hscx, IPAC_XCCR, 0x07);
1295 WriteHSCX(hscx, IPAC_RCCR, 0x07);
1296 WriteHSCX(hscx, IPAC_TSAX, hscx->slot);
1297 WriteHSCX(hscx, IPAC_TSAR, hscx->slot);
1300 WriteHSCX(hscx, IPAC_TSAX, 0x1F);
1301 WriteHSCX(hscx, IPAC_TSAR, 0x1F);
1302 WriteHSCX(hscx, IPAC_MODEB, 0x84);
1303 WriteHSCX(hscx, IPAC_CCR1, 0x85);
1304 WriteHSCX(hscx, IPAC_MASKB, 0xFF); /* ints off */
1305 test_and_clear_bit(FLG_HDLC, &hscx->bch.Flags);
1306 test_and_clear_bit(FLG_TRANSPARENT, &hscx->bch.Flags);
1309 WriteHSCX(hscx, IPAC_MODEB, 0xe4); /* ex trans */
1310 WriteHSCX(hscx, IPAC_CCR1, 0x85);
1311 hscx_cmdr(hscx, 0x41);
1312 WriteHSCX(hscx, IPAC_MASKB, 0);
1313 test_and_set_bit(FLG_TRANSPARENT, &hscx->bch.Flags);
1316 WriteHSCX(hscx, IPAC_MODEB, 0x8c);
1317 WriteHSCX(hscx, IPAC_CCR1, 0x8d);
1318 hscx_cmdr(hscx, 0x41);
1319 WriteHSCX(hscx, IPAC_MASKB, 0);
1320 test_and_set_bit(FLG_HDLC, &hscx->bch.Flags);
1323 pr_info("%s: protocol not known %x\n", hscx->ip->name,
1329 hscx->bch.state = bprotocol;
1483 hscx_init(&ipac->hscx[0]);
1484 hscx_init(&ipac->hscx[1]);
1487 hscx_init(&ipac->hscx[0]);
1488 hscx_init(&ipac->hscx[1]);
1496 if (ipac->hscx[0].bch.debug & DEBUG_HW)
1512 bch = &ipac->hscx[rq->adr.channel - 1].bch;
1595 ipac->hscx[0].off = 0;
1596 ipac->hscx[1].off = 0x40;
1597 ipac->hscx[0].fifo_size = 32;
1598 ipac->hscx[1].fifo_size = 32;
1601 ipac->hscx[0].off = 0;
1602 ipac->hscx[1].off = 0x40;
1603 ipac->hscx[0].fifo_size = 64;
1604 ipac->hscx[1].fifo_size = 64;
1607 ipac->hscx[0].off = IPACX_OFF_ICA;
1608 ipac->hscx[1].off = IPACX_OFF_ICB;
1609 ipac->hscx[0].fifo_size = 64;
1610 ipac->hscx[1].fifo_size = 64;
1619 ipac->hscx[i].bch.nr = i + 1;
1621 list_add(&ipac->hscx[i].bch.ch.list,
1623 mISDN_initbchannel(&ipac->hscx[i].bch, MAX_DATA_MEM);
1624 ipac->hscx[i].bch.ch.nr = i + 1;
1625 ipac->hscx[i].bch.ch.send = &hscx_l2l1;
1626 ipac->hscx[i].bch.ch.ctrl = hscx_bctrl;
1627 ipac->hscx[i].bch.hw = hw;
1628 ipac->hscx[i].ip = ipac;
1631 ipac->hscx[i].slot = (i == 0) ? 0x2f : 0x03;