Lines Matching refs:ipac
1159 mISDNipac_irq(struct ipac_hw *ipac, int maxloop) in mISDNipac_irq() argument
1163 struct isac_hw *isac = &ipac->isac; in mISDNipac_irq()
1165 if (ipac->type & IPAC_TYPE_IPACX) { in mISDNipac_irq()
1166 ista = ReadIPAC(ipac, ISACX_ISTA); in mISDNipac_irq()
1168 pr_debug("%s: ISTA %02x\n", ipac->name, ista); in mISDNipac_irq()
1170 ipac_irq(&ipac->hscx[0], ista); in mISDNipac_irq()
1172 ipac_irq(&ipac->hscx[1], ista); in mISDNipac_irq()
1174 mISDNisac_irq(&ipac->isac, ista); in mISDNipac_irq()
1175 ista = ReadIPAC(ipac, ISACX_ISTA); in mISDNipac_irq()
1177 } else if (ipac->type & IPAC_TYPE_IPAC) { in mISDNipac_irq()
1178 ista = ReadIPAC(ipac, IPAC_ISTA); in mISDNipac_irq()
1180 pr_debug("%s: ISTA %02x\n", ipac->name, ista); in mISDNipac_irq()
1183 pr_debug("%s: ISTAD %02x\n", ipac->name, istad); in mISDNipac_irq()
1185 pr_debug("%s TIN2 irq\n", ipac->name); in mISDNipac_irq()
1191 ipac_irq(&ipac->hscx[0], ista); in mISDNipac_irq()
1193 ipac_irq(&ipac->hscx[1], ista); in mISDNipac_irq()
1194 ista = ReadIPAC(ipac, IPAC_ISTA); in mISDNipac_irq()
1196 } else if (ipac->type & IPAC_TYPE_HSCX) { in mISDNipac_irq()
1198 ista = ReadIPAC(ipac, IPAC_ISTAB + ipac->hscx[1].off); in mISDNipac_irq()
1199 pr_debug("%s: B2 ISTA %02x\n", ipac->name, ista); in mISDNipac_irq()
1201 ipac_irq(&ipac->hscx[1], ista); in mISDNipac_irq()
1203 pr_debug("%s: ISTAD %02x\n", ipac->name, istad); in mISDNipac_irq()
1214 pr_debug("%s: %d irqloops cpu%d\n", ipac->name, in mISDNipac_irq()
1217 pr_notice("%s: %d IRQ LOOP cpu%d\n", ipac->name, in mISDNipac_irq()
1430 free_ipac(struct ipac_hw *ipac) in free_ipac() argument
1432 isac_release(&ipac->isac); in free_ipac()
1465 ipac_init(struct ipac_hw *ipac) in ipac_init() argument
1469 if (ipac->type & IPAC_TYPE_HSCX) { in ipac_init()
1470 hscx_init(&ipac->hscx[0]); in ipac_init()
1471 hscx_init(&ipac->hscx[1]); in ipac_init()
1472 val = ReadIPAC(ipac, IPAC_ID); in ipac_init()
1473 } else if (ipac->type & IPAC_TYPE_IPAC) { in ipac_init()
1474 hscx_init(&ipac->hscx[0]); in ipac_init()
1475 hscx_init(&ipac->hscx[1]); in ipac_init()
1476 WriteIPAC(ipac, IPAC_MASK, IPAC__ON); in ipac_init()
1477 val = ReadIPAC(ipac, IPAC_CONF); in ipac_init()
1479 pr_debug("%s: IPAC CONF %02x/%02x\n", ipac->name, in ipac_init()
1480 val, ipac->conf); in ipac_init()
1481 WriteIPAC(ipac, IPAC_CONF, ipac->conf); in ipac_init()
1482 val = ReadIPAC(ipac, IPAC_ID); in ipac_init()
1483 if (ipac->hscx[0].bch.debug & DEBUG_HW) in ipac_init()
1484 pr_notice("%s: IPAC Design ID %02x\n", ipac->name, val); in ipac_init()
1487 return isac_init(&ipac->isac); in ipac_init()
1491 open_bchannel(struct ipac_hw *ipac, struct channel_req *rq) in open_bchannel() argument
1499 bch = &ipac->hscx[rq->adr.channel - 1].bch; in open_bchannel()
1509 channel_ctrl(struct ipac_hw *ipac, struct mISDN_ctrl_req *cq) in channel_ctrl() argument
1523 ret = ipac->ctrl(ipac, HW_TESTLOOP, cq->channel); in channel_ctrl()
1526 ret = ipac->isac.ctrl(&ipac->isac, HW_TIMER3_VALUE, cq->p1); in channel_ctrl()
1529 pr_info("%s: unknown CTRL OP %x\n", ipac->name, cq->op); in channel_ctrl()
1542 struct ipac_hw *ipac = container_of(isac, struct ipac_hw, isac); in ipac_dctrl() local
1546 pr_debug("%s: DCTRL: %x %p\n", ipac->name, cmd, arg); in ipac_dctrl()
1553 err = open_bchannel(ipac, rq); in ipac_dctrl()
1556 if (!try_module_get(ipac->owner)) in ipac_dctrl()
1557 pr_info("%s: cannot get module\n", ipac->name); in ipac_dctrl()
1560 pr_debug("%s: dev(%d) close from %p\n", ipac->name, in ipac_dctrl()
1562 module_put(ipac->owner); in ipac_dctrl()
1565 err = channel_ctrl(ipac, arg); in ipac_dctrl()
1568 pr_debug("%s: unknown DCTRL command %x\n", ipac->name, cmd); in ipac_dctrl()
1575 mISDNipac_init(struct ipac_hw *ipac, void *hw) in mISDNipac_init() argument
1580 ipac->hw = hw; in mISDNipac_init()
1581 if (ipac->isac.dch.debug & DEBUG_HW) in mISDNipac_init()
1582 pr_notice("%s: ipac type %x\n", ipac->name, ipac->type); in mISDNipac_init()
1583 if (ipac->type & IPAC_TYPE_HSCX) { in mISDNipac_init()
1584 ipac->isac.type = IPAC_TYPE_ISAC; in mISDNipac_init()
1585 ipac->hscx[0].off = 0; in mISDNipac_init()
1586 ipac->hscx[1].off = 0x40; in mISDNipac_init()
1587 ipac->hscx[0].fifo_size = 32; in mISDNipac_init()
1588 ipac->hscx[1].fifo_size = 32; in mISDNipac_init()
1589 } else if (ipac->type & IPAC_TYPE_IPAC) { in mISDNipac_init()
1590 ipac->isac.type = IPAC_TYPE_IPAC | IPAC_TYPE_ISAC; in mISDNipac_init()
1591 ipac->hscx[0].off = 0; in mISDNipac_init()
1592 ipac->hscx[1].off = 0x40; in mISDNipac_init()
1593 ipac->hscx[0].fifo_size = 64; in mISDNipac_init()
1594 ipac->hscx[1].fifo_size = 64; in mISDNipac_init()
1595 } else if (ipac->type & IPAC_TYPE_IPACX) { in mISDNipac_init()
1596 ipac->isac.type = IPAC_TYPE_IPACX | IPAC_TYPE_ISACX; in mISDNipac_init()
1597 ipac->hscx[0].off = IPACX_OFF_ICA; in mISDNipac_init()
1598 ipac->hscx[1].off = IPACX_OFF_ICB; in mISDNipac_init()
1599 ipac->hscx[0].fifo_size = 64; in mISDNipac_init()
1600 ipac->hscx[1].fifo_size = 64; in mISDNipac_init()
1604 mISDNisac_init(&ipac->isac, hw); in mISDNipac_init()
1606 ipac->isac.dch.dev.D.ctrl = ipac_dctrl; in mISDNipac_init()
1609 ipac->hscx[i].bch.nr = i + 1; in mISDNipac_init()
1610 set_channelmap(i + 1, ipac->isac.dch.dev.channelmap); in mISDNipac_init()
1611 list_add(&ipac->hscx[i].bch.ch.list, in mISDNipac_init()
1612 &ipac->isac.dch.dev.bchannels); in mISDNipac_init()
1613 mISDN_initbchannel(&ipac->hscx[i].bch, MAX_DATA_MEM, in mISDNipac_init()
1614 ipac->hscx[i].fifo_size); in mISDNipac_init()
1615 ipac->hscx[i].bch.ch.nr = i + 1; in mISDNipac_init()
1616 ipac->hscx[i].bch.ch.send = &hscx_l2l1; in mISDNipac_init()
1617 ipac->hscx[i].bch.ch.ctrl = hscx_bctrl; in mISDNipac_init()
1618 ipac->hscx[i].bch.hw = hw; in mISDNipac_init()
1619 ipac->hscx[i].ip = ipac; in mISDNipac_init()
1622 ipac->hscx[i].slot = (i == 0) ? 0x2f : 0x03; in mISDNipac_init()
1625 ipac->init = ipac_init; in mISDNipac_init()
1626 ipac->release = free_ipac; in mISDNipac_init()