Lines Matching defs:ipac

14 #include "ipac.h"
1148 mISDNipac_irq(struct ipac_hw *ipac, int maxloop)
1152 struct isac_hw *isac = &ipac->isac;
1154 if (ipac->type & IPAC_TYPE_IPACX) {
1155 ista = ReadIPAC(ipac, ISACX_ISTA);
1157 pr_debug("%s: ISTA %02x\n", ipac->name, ista);
1159 ipac_irq(&ipac->hscx[0], ista);
1161 ipac_irq(&ipac->hscx[1], ista);
1163 mISDNisac_irq(&ipac->isac, ista);
1164 ista = ReadIPAC(ipac, ISACX_ISTA);
1166 } else if (ipac->type & IPAC_TYPE_IPAC) {
1167 ista = ReadIPAC(ipac, IPAC_ISTA);
1169 pr_debug("%s: ISTA %02x\n", ipac->name, ista);
1172 pr_debug("%s: ISTAD %02x\n", ipac->name, istad);
1174 pr_debug("%s TIN2 irq\n", ipac->name);
1180 ipac_irq(&ipac->hscx[0], ista);
1182 ipac_irq(&ipac->hscx[1], ista);
1183 ista = ReadIPAC(ipac, IPAC_ISTA);
1185 } else if (ipac->type & IPAC_TYPE_HSCX) {
1187 ista = ReadIPAC(ipac, IPAC_ISTAB + ipac->hscx[1].off);
1188 pr_debug("%s: B2 ISTA %02x\n", ipac->name, ista);
1190 ipac_irq(&ipac->hscx[1], ista);
1192 pr_debug("%s: ISTAD %02x\n", ipac->name, istad);
1202 pr_debug("%s: %d irqloops cpu%d\n", ipac->name,
1205 pr_notice("%s: %d IRQ LOOP cpu%d\n", ipac->name,
1418 free_ipac(struct ipac_hw *ipac)
1420 isac_release(&ipac->isac);
1453 ipac_init(struct ipac_hw *ipac)
1457 if (ipac->type & IPAC_TYPE_HSCX) {
1458 hscx_init(&ipac->hscx[0]);
1459 hscx_init(&ipac->hscx[1]);
1460 val = ReadIPAC(ipac, IPAC_ID);
1461 } else if (ipac->type & IPAC_TYPE_IPAC) {
1462 hscx_init(&ipac->hscx[0]);
1463 hscx_init(&ipac->hscx[1]);
1464 WriteIPAC(ipac, IPAC_MASK, IPAC__ON);
1465 val = ReadIPAC(ipac, IPAC_CONF);
1467 pr_debug("%s: IPAC CONF %02x/%02x\n", ipac->name,
1468 val, ipac->conf);
1469 WriteIPAC(ipac, IPAC_CONF, ipac->conf);
1470 val = ReadIPAC(ipac, IPAC_ID);
1471 if (ipac->hscx[0].bch.debug & DEBUG_HW)
1472 pr_notice("%s: IPAC Design ID %02x\n", ipac->name, val);
1475 return isac_init(&ipac->isac);
1479 open_bchannel(struct ipac_hw *ipac, struct channel_req *rq)
1487 bch = &ipac->hscx[rq->adr.channel - 1].bch;
1497 channel_ctrl(struct ipac_hw *ipac, struct mISDN_ctrl_req *cq)
1511 ret = ipac->ctrl(ipac, HW_TESTLOOP, cq->channel);
1514 ret = ipac->isac.ctrl(&ipac->isac, HW_TIMER3_VALUE, cq->p1);
1517 pr_info("%s: unknown CTRL OP %x\n", ipac->name, cq->op);
1530 struct ipac_hw *ipac = container_of(isac, struct ipac_hw, isac);
1534 pr_debug("%s: DCTRL: %x %p\n", ipac->name, cmd, arg);
1541 err = open_bchannel(ipac, rq);
1544 if (!try_module_get(ipac->owner))
1545 pr_info("%s: cannot get module\n", ipac->name);
1548 pr_debug("%s: dev(%d) close from %p\n", ipac->name,
1550 module_put(ipac->owner);
1553 err = channel_ctrl(ipac, arg);
1556 pr_debug("%s: unknown DCTRL command %x\n", ipac->name, cmd);
1563 mISDNipac_init(struct ipac_hw *ipac, void *hw)
1568 ipac->hw = hw;
1569 if (ipac->isac.dch.debug & DEBUG_HW)
1570 pr_notice("%s: ipac type %x\n", ipac->name, ipac->type);
1571 if (ipac->type & IPAC_TYPE_HSCX) {
1572 ipac->isac.type = IPAC_TYPE_ISAC;
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;
1577 } else if (ipac->type & IPAC_TYPE_IPAC) {
1578 ipac->isac.type = IPAC_TYPE_IPAC | IPAC_TYPE_ISAC;
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;
1583 } else if (ipac->type & IPAC_TYPE_IPACX) {
1584 ipac->isac.type = IPAC_TYPE_IPACX | IPAC_TYPE_ISACX;
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;
1592 mISDNisac_init(&ipac->isac, hw);
1594 ipac->isac.dch.dev.D.ctrl = ipac_dctrl;
1597 ipac->hscx[i].bch.nr = i + 1;
1598 set_channelmap(i + 1, ipac->isac.dch.dev.channelmap);
1599 list_add(&ipac->hscx[i].bch.ch.list,
1600 &ipac->isac.dch.dev.bchannels);
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;
1613 ipac->init = ipac_init;
1614 ipac->release = free_ipac;