Lines Matching refs:ipac
1165 mISDNipac_irq(struct ipac_hw *ipac, int maxloop) in mISDNipac_irq() argument
1169 struct isac_hw *isac = &ipac->isac; in mISDNipac_irq()
1171 if (ipac->type & IPAC_TYPE_IPACX) { in mISDNipac_irq()
1172 ista = ReadIPAC(ipac, ISACX_ISTA); in mISDNipac_irq()
1174 pr_debug("%s: ISTA %02x\n", ipac->name, ista); in mISDNipac_irq()
1176 ipac_irq(&ipac->hscx[0], ista); in mISDNipac_irq()
1178 ipac_irq(&ipac->hscx[1], ista); in mISDNipac_irq()
1180 mISDNisac_irq(&ipac->isac, ista); in mISDNipac_irq()
1181 ista = ReadIPAC(ipac, ISACX_ISTA); in mISDNipac_irq()
1183 } else if (ipac->type & IPAC_TYPE_IPAC) { in mISDNipac_irq()
1184 ista = ReadIPAC(ipac, IPAC_ISTA); in mISDNipac_irq()
1186 pr_debug("%s: ISTA %02x\n", ipac->name, ista); in mISDNipac_irq()
1189 pr_debug("%s: ISTAD %02x\n", ipac->name, istad); in mISDNipac_irq()
1191 pr_debug("%s TIN2 irq\n", ipac->name); in mISDNipac_irq()
1197 ipac_irq(&ipac->hscx[0], ista); in mISDNipac_irq()
1199 ipac_irq(&ipac->hscx[1], ista); in mISDNipac_irq()
1200 ista = ReadIPAC(ipac, IPAC_ISTA); in mISDNipac_irq()
1202 } else if (ipac->type & IPAC_TYPE_HSCX) { in mISDNipac_irq()
1204 ista = ReadIPAC(ipac, IPAC_ISTAB + ipac->hscx[1].off); in mISDNipac_irq()
1205 pr_debug("%s: B2 ISTA %02x\n", ipac->name, ista); in mISDNipac_irq()
1207 ipac_irq(&ipac->hscx[1], ista); in mISDNipac_irq()
1209 pr_debug("%s: ISTAD %02x\n", ipac->name, istad); in mISDNipac_irq()
1220 pr_debug("%s: %d irqloops cpu%d\n", ipac->name, in mISDNipac_irq()
1223 pr_notice("%s: %d IRQ LOOP cpu%d\n", ipac->name, in mISDNipac_irq()
1436 free_ipac(struct ipac_hw *ipac) in free_ipac() argument
1438 isac_release(&ipac->isac); in free_ipac()
1471 ipac_init(struct ipac_hw *ipac) in ipac_init() argument
1475 if (ipac->type & IPAC_TYPE_HSCX) { in ipac_init()
1476 hscx_init(&ipac->hscx[0]); in ipac_init()
1477 hscx_init(&ipac->hscx[1]); in ipac_init()
1478 val = ReadIPAC(ipac, IPAC_ID); in ipac_init()
1479 } else if (ipac->type & IPAC_TYPE_IPAC) { in ipac_init()
1480 hscx_init(&ipac->hscx[0]); in ipac_init()
1481 hscx_init(&ipac->hscx[1]); in ipac_init()
1482 WriteIPAC(ipac, IPAC_MASK, IPAC__ON); in ipac_init()
1483 val = ReadIPAC(ipac, IPAC_CONF); in ipac_init()
1485 pr_debug("%s: IPAC CONF %02x/%02x\n", ipac->name, in ipac_init()
1486 val, ipac->conf); in ipac_init()
1487 WriteIPAC(ipac, IPAC_CONF, ipac->conf); in ipac_init()
1488 val = ReadIPAC(ipac, IPAC_ID); in ipac_init()
1489 if (ipac->hscx[0].bch.debug & DEBUG_HW) in ipac_init()
1490 pr_notice("%s: IPAC Design ID %02x\n", ipac->name, val); in ipac_init()
1493 return isac_init(&ipac->isac); in ipac_init()
1497 open_bchannel(struct ipac_hw *ipac, struct channel_req *rq) in open_bchannel() argument
1505 bch = &ipac->hscx[rq->adr.channel - 1].bch; in open_bchannel()
1515 channel_ctrl(struct ipac_hw *ipac, struct mISDN_ctrl_req *cq) in channel_ctrl() argument
1529 ret = ipac->ctrl(ipac, HW_TESTLOOP, cq->channel); in channel_ctrl()
1532 ret = ipac->isac.ctrl(&ipac->isac, HW_TIMER3_VALUE, cq->p1); in channel_ctrl()
1535 pr_info("%s: unknown CTRL OP %x\n", ipac->name, cq->op); in channel_ctrl()
1548 struct ipac_hw *ipac = container_of(isac, struct ipac_hw, isac); in ipac_dctrl() local
1552 pr_debug("%s: DCTRL: %x %p\n", ipac->name, cmd, arg); in ipac_dctrl()
1559 err = open_bchannel(ipac, rq); in ipac_dctrl()
1562 if (!try_module_get(ipac->owner)) in ipac_dctrl()
1563 pr_info("%s: cannot get module\n", ipac->name); in ipac_dctrl()
1566 pr_debug("%s: dev(%d) close from %p\n", ipac->name, in ipac_dctrl()
1568 module_put(ipac->owner); in ipac_dctrl()
1571 err = channel_ctrl(ipac, arg); in ipac_dctrl()
1574 pr_debug("%s: unknown DCTRL command %x\n", ipac->name, cmd); in ipac_dctrl()
1581 mISDNipac_init(struct ipac_hw *ipac, void *hw) in mISDNipac_init() argument
1586 ipac->hw = hw; in mISDNipac_init()
1587 if (ipac->isac.dch.debug & DEBUG_HW) in mISDNipac_init()
1588 pr_notice("%s: ipac type %x\n", ipac->name, ipac->type); in mISDNipac_init()
1589 if (ipac->type & IPAC_TYPE_HSCX) { in mISDNipac_init()
1590 ipac->isac.type = 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 = 32; in mISDNipac_init()
1594 ipac->hscx[1].fifo_size = 32; in mISDNipac_init()
1595 } else if (ipac->type & IPAC_TYPE_IPAC) { in mISDNipac_init()
1596 ipac->isac.type = IPAC_TYPE_IPAC | IPAC_TYPE_ISAC; in mISDNipac_init()
1597 ipac->hscx[0].off = 0; in mISDNipac_init()
1598 ipac->hscx[1].off = 0x40; in mISDNipac_init()
1599 ipac->hscx[0].fifo_size = 64; in mISDNipac_init()
1600 ipac->hscx[1].fifo_size = 64; in mISDNipac_init()
1601 } else if (ipac->type & IPAC_TYPE_IPACX) { in mISDNipac_init()
1602 ipac->isac.type = IPAC_TYPE_IPACX | IPAC_TYPE_ISACX; in mISDNipac_init()
1603 ipac->hscx[0].off = IPACX_OFF_ICA; in mISDNipac_init()
1604 ipac->hscx[1].off = IPACX_OFF_ICB; in mISDNipac_init()
1605 ipac->hscx[0].fifo_size = 64; in mISDNipac_init()
1606 ipac->hscx[1].fifo_size = 64; in mISDNipac_init()
1610 mISDNisac_init(&ipac->isac, hw); in mISDNipac_init()
1612 ipac->isac.dch.dev.D.ctrl = ipac_dctrl; in mISDNipac_init()
1615 ipac->hscx[i].bch.nr = i + 1; in mISDNipac_init()
1616 set_channelmap(i + 1, ipac->isac.dch.dev.channelmap); in mISDNipac_init()
1617 list_add(&ipac->hscx[i].bch.ch.list, in mISDNipac_init()
1618 &ipac->isac.dch.dev.bchannels); in mISDNipac_init()
1619 mISDN_initbchannel(&ipac->hscx[i].bch, MAX_DATA_MEM, in mISDNipac_init()
1620 ipac->hscx[i].fifo_size); in mISDNipac_init()
1621 ipac->hscx[i].bch.ch.nr = i + 1; in mISDNipac_init()
1622 ipac->hscx[i].bch.ch.send = &hscx_l2l1; in mISDNipac_init()
1623 ipac->hscx[i].bch.ch.ctrl = hscx_bctrl; in mISDNipac_init()
1624 ipac->hscx[i].bch.hw = hw; in mISDNipac_init()
1625 ipac->hscx[i].ip = ipac; in mISDNipac_init()
1628 ipac->hscx[i].slot = (i == 0) ? 0x2f : 0x03; in mISDNipac_init()
1631 ipac->init = ipac_init; in mISDNipac_init()
1632 ipac->release = free_ipac; in mISDNipac_init()