• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/isdn/hardware/mISDN/

Lines Matching refs:ipac

26 #include "ipac.h"
1150 mISDNipac_irq(struct ipac_hw *ipac, int maxloop)
1154 struct isac_hw *isac = &ipac->isac;
1156 if (ipac->type & IPAC_TYPE_IPACX) {
1157 ista = ReadIPAC(ipac, ISACX_ISTA);
1159 pr_debug("%s: ISTA %02x\n", ipac->name, ista);
1161 ipac_irq(&ipac->hscx[0], ista);
1163 ipac_irq(&ipac->hscx[1], ista);
1165 mISDNisac_irq(&ipac->isac, ista);
1166 ista = ReadIPAC(ipac, ISACX_ISTA);
1168 } else if (ipac->type & IPAC_TYPE_IPAC) {
1169 ista = ReadIPAC(ipac, IPAC_ISTA);
1171 pr_debug("%s: ISTA %02x\n", ipac->name, ista);
1174 pr_debug("%s: ISTAD %02x\n", ipac->name, istad);
1176 pr_debug("%s TIN2 irq\n", ipac->name);
1182 ipac_irq(&ipac->hscx[0], ista);
1184 ipac_irq(&ipac->hscx[1], ista);
1185 ista = ReadIPAC(ipac, IPAC_ISTA);
1187 } else if (ipac->type & IPAC_TYPE_HSCX) {
1189 ista = ReadIPAC(ipac, IPAC_ISTAB + ipac->hscx[1].off);
1190 pr_debug("%s: B2 ISTA %02x\n", ipac->name, ista);
1192 ipac_irq(&ipac->hscx[1], ista);
1194 pr_debug("%s: ISTAD %02x\n", ipac->name, istad);
1205 pr_debug("%s: %d irqloops cpu%d\n", ipac->name,
1208 pr_notice("%s: %d IRQ LOOP cpu%d\n", ipac->name,
1443 free_ipac(struct ipac_hw *ipac)
1445 isac_release(&ipac->isac);
1478 ipac_init(struct ipac_hw *ipac)
1482 if (ipac->type & IPAC_TYPE_HSCX) {
1483 hscx_init(&ipac->hscx[0]);
1484 hscx_init(&ipac->hscx[1]);
1485 val = ReadIPAC(ipac, IPAC_ID);
1486 } else if (ipac->type & IPAC_TYPE_IPAC) {
1487 hscx_init(&ipac->hscx[0]);
1488 hscx_init(&ipac->hscx[1]);
1489 WriteIPAC(ipac, IPAC_MASK, IPAC__ON);
1490 val = ReadIPAC(ipac, IPAC_CONF);
1492 pr_debug("%s: IPAC CONF %02x/%02x\n", ipac->name,
1493 val, ipac->conf);
1494 WriteIPAC(ipac, IPAC_CONF, ipac->conf);
1495 val = ReadIPAC(ipac, IPAC_ID);
1496 if (ipac->hscx[0].bch.debug & DEBUG_HW)
1497 pr_notice("%s: IPAC Design ID %02x\n", ipac->name, val);
1500 return isac_init(&ipac->isac);
1504 open_bchannel(struct ipac_hw *ipac, struct channel_req *rq)
1512 bch = &ipac->hscx[rq->adr.channel - 1].bch;
1522 channel_ctrl(struct ipac_hw *ipac, struct mISDN_ctrl_req *cq)
1536 ret = ipac->ctrl(ipac, HW_TESTLOOP, cq->channel);
1539 pr_info("%s: unknown CTRL OP %x\n", ipac->name, cq->op);
1552 struct ipac_hw *ipac = container_of(isac, struct ipac_hw, isac);
1556 pr_debug("%s: DCTRL: %x %p\n", ipac->name, cmd, arg);
1563 err = open_bchannel(ipac, rq);
1566 if (!try_module_get(ipac->owner))
1567 pr_info("%s: cannot get module\n", ipac->name);
1570 pr_debug("%s: dev(%d) close from %p\n", ipac->name,
1572 module_put(ipac->owner);
1575 err = channel_ctrl(ipac, arg);
1578 pr_debug("%s: unknown DCTRL command %x\n", ipac->name, cmd);
1585 mISDNipac_init(struct ipac_hw *ipac, void *hw)
1590 ipac->hw = hw;
1591 if (ipac->isac.dch.debug & DEBUG_HW)
1592 pr_notice("%s: ipac type %x\n", ipac->name, ipac->type);
1593 if (ipac->type & IPAC_TYPE_HSCX) {
1594 ipac->isac.type = IPAC_TYPE_ISAC;
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;
1599 } else if (ipac->type & IPAC_TYPE_IPAC) {
1600 ipac->isac.type = IPAC_TYPE_IPAC | IPAC_TYPE_ISAC;
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;
1605 } else if (ipac->type & IPAC_TYPE_IPACX) {
1606 ipac->isac.type = IPAC_TYPE_IPACX | IPAC_TYPE_ISACX;
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;
1614 mISDNisac_init(&ipac->isac, hw);
1616 ipac->isac.dch.dev.D.ctrl = ipac_dctrl;
1619 ipac->hscx[i].bch.nr = i + 1;
1620 set_channelmap(i + 1, ipac->isac.dch.dev.channelmap);
1621 list_add(&ipac->hscx[i].bch.ch.list,
1622 &ipac->isac.dch.dev.bchannels);
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;
1634 ipac->init = ipac_init;
1635 ipac->release = free_ipac;