Lines Matching refs:card
429 struct fst_card_info *card; /* Card we're associated with */ member
571 static void do_bottom_half_tx(struct fst_card_info *card);
572 static void do_bottom_half_rx(struct fst_card_info *card);
679 fst_cpureset(struct fst_card_info *card) in fst_cpureset() argument
684 if (card->family == FST_FAMILY_TXU) { in fst_cpureset()
686 (card->device, PCI_INTERRUPT_LINE, &interrupt_line_register)) { in fst_cpureset()
694 outw(0x440f, card->pci_conf + CNTRL_9054 + 2); in fst_cpureset()
695 outw(0x040f, card->pci_conf + CNTRL_9054 + 2); in fst_cpureset()
700 outw(0x240f, card->pci_conf + CNTRL_9054 + 2); in fst_cpureset()
705 outw(0x040f, card->pci_conf + CNTRL_9054 + 2); in fst_cpureset()
708 (card->device, PCI_INTERRUPT_LINE, interrupt_line_register)) { in fst_cpureset()
714 regval = inl(card->pci_conf + CNTRL_9052); in fst_cpureset()
716 outl(regval | 0x40000000, card->pci_conf + CNTRL_9052); in fst_cpureset()
717 outl(regval & ~0x40000000, card->pci_conf + CNTRL_9052); in fst_cpureset()
724 fst_cpurelease(struct fst_card_info *card) in fst_cpurelease() argument
726 if (card->family == FST_FAMILY_TXU) { in fst_cpurelease()
730 (void) readb(card->mem); in fst_cpurelease()
736 outw(0x040e, card->pci_conf + CNTRL_9054 + 2); in fst_cpurelease()
737 outw(0x040f, card->pci_conf + CNTRL_9054 + 2); in fst_cpurelease()
739 (void) readb(card->ctlmem); in fst_cpurelease()
746 fst_clear_intr(struct fst_card_info *card) in fst_clear_intr() argument
748 if (card->family == FST_FAMILY_TXU) { in fst_clear_intr()
749 (void) readb(card->ctlmem); in fst_clear_intr()
753 outw(0x0543, card->pci_conf + INTCSR_9052); in fst_clear_intr()
760 fst_enable_intr(struct fst_card_info *card) in fst_enable_intr() argument
762 if (card->family == FST_FAMILY_TXU) { in fst_enable_intr()
763 outl(0x0f0c0900, card->pci_conf + INTCSR_9054); in fst_enable_intr()
765 outw(0x0543, card->pci_conf + INTCSR_9052); in fst_enable_intr()
772 fst_disable_intr(struct fst_card_info *card) in fst_disable_intr() argument
774 if (card->family == FST_FAMILY_TXU) { in fst_disable_intr()
775 outl(0x00000000, card->pci_conf + INTCSR_9054); in fst_disable_intr()
777 outw(0x0000, card->pci_conf + INTCSR_9052); in fst_disable_intr()
805 fst_init_dma(struct fst_card_info *card) in fst_init_dma() argument
810 if (card->family == FST_FAMILY_TXU) { in fst_init_dma()
811 pci_set_master(card->device); in fst_init_dma()
812 outl(0x00020441, card->pci_conf + DMAMODE0); in fst_init_dma()
813 outl(0x00020441, card->pci_conf + DMAMODE1); in fst_init_dma()
814 outl(0x0, card->pci_conf + DMATHR); in fst_init_dma()
821 fst_tx_dma_complete(struct fst_card_info *card, struct fst_port_info *port, in fst_tx_dma_complete() argument
830 FST_WRB(card, txDescrRing[port->index][txpos].bits, in fst_tx_dma_complete()
851 fst_rx_dma_complete(struct fst_card_info *card, struct fst_port_info *port, in fst_rx_dma_complete() argument
860 memcpy(skb_put(skb, len), card->rx_dma_handle_host, len); in fst_rx_dma_complete()
863 FST_WRB(card, rxDescrRing[pi][rxp].bits, DMA_OWN); in fst_rx_dma_complete()
885 fst_rx_dma(struct fst_card_info *card, dma_addr_t dma, u32 mem, int len) in fst_rx_dma() argument
892 if (card->dmarx_in_progress) { in fst_rx_dma()
896 outl(dma, card->pci_conf + DMAPADR0); /* Copy to here */ in fst_rx_dma()
897 outl(mem, card->pci_conf + DMALADR0); /* from here */ in fst_rx_dma()
898 outl(len, card->pci_conf + DMASIZ0); /* for this length */ in fst_rx_dma()
899 outl(0x00000000c, card->pci_conf + DMADPR0); /* In this direction */ in fst_rx_dma()
904 card->dmarx_in_progress = 1; in fst_rx_dma()
905 outb(0x03, card->pci_conf + DMACSR0); /* Start the transfer */ in fst_rx_dma()
912 fst_tx_dma(struct fst_card_info *card, dma_addr_t dma, u32 mem, int len) in fst_tx_dma() argument
919 if (card->dmatx_in_progress) { in fst_tx_dma()
923 outl(dma, card->pci_conf + DMAPADR1); /* Copy from here */ in fst_tx_dma()
924 outl(mem, card->pci_conf + DMALADR1); /* to here */ in fst_tx_dma()
925 outl(len, card->pci_conf + DMASIZ1); /* for this length */ in fst_tx_dma()
926 outl(0x000000004, card->pci_conf + DMADPR1); /* In this direction */ in fst_tx_dma()
931 card->dmatx_in_progress = 1; in fst_tx_dma()
932 outb(0x03, card->pci_conf + DMACSR1); /* Start the transfer */ in fst_tx_dma()
942 struct fst_card_info *card; in fst_issue_cmd() local
947 card = port->card; in fst_issue_cmd()
948 spin_lock_irqsave(&card->card_lock, flags); in fst_issue_cmd()
949 mbval = FST_RDW(card, portMailbox[port->index][0]); in fst_issue_cmd()
954 spin_unlock_irqrestore(&card->card_lock, flags); in fst_issue_cmd()
956 spin_lock_irqsave(&card->card_lock, flags); in fst_issue_cmd()
963 mbval = FST_RDW(card, portMailbox[port->index][0]); in fst_issue_cmd()
972 FST_WRW(card, portMailbox[port->index][0], cmd); in fst_issue_cmd()
980 spin_unlock_irqrestore(&card->card_lock, flags); in fst_issue_cmd()
988 outputs |= FST_RDL(port->card, v24OpSts[port->index]); in fst_op_raise()
989 FST_WRL(port->card, v24OpSts[port->index], outputs); in fst_op_raise()
998 outputs = ~outputs & FST_RDL(port->card, v24OpSts[port->index]); in fst_op_lower()
999 FST_WRL(port->card, v24OpSts[port->index], outputs); in fst_op_lower()
1015 struct fst_card_info *card; in fst_rx_config() local
1018 card = port->card; in fst_rx_config()
1019 spin_lock_irqsave(&card->card_lock, flags); in fst_rx_config()
1023 FST_WRW(card, rxDescrRing[pi][i].ladr, (u16) offset); in fst_rx_config()
1024 FST_WRB(card, rxDescrRing[pi][i].hadr, (u8) (offset >> 16)); in fst_rx_config()
1025 FST_WRW(card, rxDescrRing[pi][i].bcnt, cnv_bcnt(LEN_RX_BUFFER)); in fst_rx_config()
1026 FST_WRW(card, rxDescrRing[pi][i].mcnt, LEN_RX_BUFFER); in fst_rx_config()
1027 FST_WRB(card, rxDescrRing[pi][i].bits, DMA_OWN); in fst_rx_config()
1030 spin_unlock_irqrestore(&card->card_lock, flags); in fst_rx_config()
1043 struct fst_card_info *card; in fst_tx_config() local
1046 card = port->card; in fst_tx_config()
1047 spin_lock_irqsave(&card->card_lock, flags); in fst_tx_config()
1051 FST_WRW(card, txDescrRing[pi][i].ladr, (u16) offset); in fst_tx_config()
1052 FST_WRB(card, txDescrRing[pi][i].hadr, (u8) (offset >> 16)); in fst_tx_config()
1053 FST_WRW(card, txDescrRing[pi][i].bcnt, 0); in fst_tx_config()
1054 FST_WRB(card, txDescrRing[pi][i].bits, 0); in fst_tx_config()
1059 spin_unlock_irqrestore(&card->card_lock, flags); in fst_tx_config()
1065 fst_intr_te1_alarm(struct fst_card_info *card, struct fst_port_info *port) in fst_intr_te1_alarm() argument
1071 los = FST_RDB(card, suStatus.lossOfSignal); in fst_intr_te1_alarm()
1072 rra = FST_RDB(card, suStatus.receiveRemoteAlarm); in fst_intr_te1_alarm()
1073 ais = FST_RDB(card, suStatus.alarmIndicationSignal); in fst_intr_te1_alarm()
1111 fst_intr_ctlchg(struct fst_card_info *card, struct fst_port_info *port) in fst_intr_ctlchg() argument
1115 signals = FST_RDL(card, v24DebouncedSts[port->index]); in fst_intr_ctlchg()
1134 fst_log_rx_error(struct fst_card_info *card, struct fst_port_info *port, in fst_log_rx_error() argument
1146 card->card_no, port->index, rxp); in fst_log_rx_error()
1151 card->card_no, port->index); in fst_log_rx_error()
1156 card->card_no, port->index); in fst_log_rx_error()
1161 len, card->card_no, port->index); in fst_log_rx_error()
1168 fst_recover_rx_error(struct fst_card_info *card, struct fst_port_info *port, in fst_recover_rx_error() argument
1182 FST_WRB(card, rxDescrRing[pi][rxp].bits, DMA_OWN); in fst_recover_rx_error()
1189 dmabits = FST_RDB(card, rxDescrRing[pi][rxp].bits); in fst_recover_rx_error()
1196 FST_WRB(card, rxDescrRing[pi][rxp].bits, DMA_OWN); in fst_recover_rx_error()
1207 fst_intr_rx(struct fst_card_info *card, struct fst_port_info *port) in fst_intr_rx() argument
1220 dmabits = FST_RDB(card, rxDescrRing[pi][rxp].bits); in fst_intr_rx()
1226 if (card->dmarx_in_progress) { in fst_intr_rx()
1231 len = FST_RDW(card, rxDescrRing[pi][rxp].mcnt); in fst_intr_rx()
1240 card->card_no, port->index); in fst_intr_rx()
1242 FST_WRB(card, rxDescrRing[pi][rxp].bits, DMA_OWN); in fst_intr_rx()
1255 fst_log_rx_error(card, port, dmabits, rxp, len); in fst_intr_rx()
1256 fst_recover_rx_error(card, port, dmabits, rxp, len); in fst_intr_rx()
1267 FST_WRB(card, rxDescrRing[pi][rxp].bits, DMA_OWN); in fst_intr_rx()
1280 if ((len < FST_MIN_DMA_LEN) || (card->family == FST_FAMILY_TXP)) { in fst_intr_rx()
1282 card->mem + BUF_OFFSET(rxBuffer[pi][rxp][0]), in fst_intr_rx()
1286 FST_WRB(card, rxDescrRing[pi][rxp].bits, DMA_OWN); in fst_intr_rx()
1303 card->dma_skb_rx = skb; in fst_intr_rx()
1304 card->dma_port_rx = port; in fst_intr_rx()
1305 card->dma_len_rx = len; in fst_intr_rx()
1306 card->dma_rxpos = rxp; in fst_intr_rx()
1307 fst_rx_dma(card, card->rx_dma_handle_card, in fst_intr_rx()
1324 do_bottom_half_tx(struct fst_card_info *card) in do_bottom_half_tx() argument
1339 for (pi = 0, port = card->ports; pi < card->nports; pi++, port++) { in do_bottom_half_tx()
1344 while (!(FST_RDB(card, txDescrRing[pi][port->txpos].bits) & in do_bottom_half_tx()
1346 !(card->dmatx_in_progress)) { in do_bottom_half_tx()
1352 spin_lock_irqsave(&card->card_lock, flags); in do_bottom_half_tx()
1360 spin_unlock_irqrestore(&card->card_lock, flags); in do_bottom_half_tx()
1365 spin_lock_irqsave(&card->card_lock, flags); in do_bottom_half_tx()
1371 spin_unlock_irqrestore(&card->card_lock, flags); in do_bottom_half_tx()
1376 FST_WRW(card, txDescrRing[pi][port->txpos].bcnt, in do_bottom_half_tx()
1379 (card->family == FST_FAMILY_TXP)) { in do_bottom_half_tx()
1381 memcpy_toio(card->mem + in do_bottom_half_tx()
1386 FST_WRB(card, in do_bottom_half_tx()
1395 memcpy(card->tx_dma_handle_host, in do_bottom_half_tx()
1397 card->dma_port_tx = port; in do_bottom_half_tx()
1398 card->dma_len_tx = skb->len; in do_bottom_half_tx()
1399 card->dma_txpos = port->txpos; in do_bottom_half_tx()
1400 fst_tx_dma(card, in do_bottom_half_tx()
1401 card->tx_dma_handle_card, in do_bottom_half_tx()
1430 do_bottom_half_rx(struct fst_card_info *card) in do_bottom_half_rx() argument
1438 for (pi = 0, port = card->ports; pi < card->nports; pi++, port++) { in do_bottom_half_rx()
1442 while (!(FST_RDB(card, rxDescrRing[pi][port->rxpos].bits) in do_bottom_half_rx()
1443 & DMA_OWN) && !(card->dmarx_in_progress)) { in do_bottom_half_rx()
1449 fst_q_work_item(&fst_work_intq, card->card_no); in do_bottom_half_rx()
1453 fst_intr_rx(card, port); in do_bottom_half_rx()
1466 struct fst_card_info *card = dev_id; in fst_intr() local
1480 dbg(DBG_INTR, "intr: %d %p\n", card->irq, card); in fst_intr()
1481 if (card->state != FST_RUNNING) { in fst_intr()
1483 card->card_no, card->state); in fst_intr()
1490 fst_clear_intr(card); in fst_intr()
1495 fst_clear_intr(card); in fst_intr()
1501 if (FST_RDB(card, interruptHandshake) == 1) { in fst_intr()
1504 FST_WRB(card, interruptHandshake, 0xEE); in fst_intr()
1506 if (card->family == FST_FAMILY_TXU) { in fst_intr()
1510 dma_intcsr = inl(card->pci_conf + INTCSR_9054); in fst_intr()
1516 outb(0x8, card->pci_conf + DMACSR0); in fst_intr()
1517 fst_rx_dma_complete(card, card->dma_port_rx, in fst_intr()
1518 card->dma_len_rx, card->dma_skb_rx, in fst_intr()
1519 card->dma_rxpos); in fst_intr()
1520 card->dmarx_in_progress = 0; in fst_intr()
1528 outb(0x8, card->pci_conf + DMACSR1); in fst_intr()
1529 fst_tx_dma_complete(card, card->dma_port_tx, in fst_intr()
1530 card->dma_len_tx, card->dma_txpos); in fst_intr()
1531 card->dmatx_in_progress = 0; in fst_intr()
1539 int_retry_count = FST_RDL(card, interruptRetryCount); in fst_intr()
1542 card->card_no, int_retry_count); in fst_intr()
1543 FST_WRL(card, interruptRetryCount, 0); in fst_intr()
1551 fst_q_work_item(&fst_work_intq, card->card_no); in fst_intr()
1555 rdidx = FST_RDB(card, interruptEvent.rdindex) & 0x1f; in fst_intr()
1556 wridx = FST_RDB(card, interruptEvent.wrindex) & 0x1f; in fst_intr()
1558 event = FST_RDB(card, interruptEvent.evntbuff[rdidx]); in fst_intr()
1559 port = &card->ports[event & 0x03]; in fst_intr()
1567 fst_intr_te1_alarm(card, port); in fst_intr()
1575 fst_intr_ctlchg(card, port); in fst_intr()
1596 card->card_no, port->index); in fst_intr()
1605 card->state = FST_IFAILED; in fst_intr()
1617 FST_WRB(card, interruptEvent.rdindex, rdidx); in fst_intr()
1625 check_started_ok(struct fst_card_info *card) in check_started_ok() argument
1630 if (FST_RDW(card, smcVersion) != SMC_VERSION) { in check_started_ok()
1632 FST_RDW(card, smcVersion), SMC_VERSION); in check_started_ok()
1633 card->state = FST_BADVERSION; in check_started_ok()
1636 if (FST_RDL(card, endOfSmcSignature) != END_SIG) { in check_started_ok()
1638 card->state = FST_BADVERSION; in check_started_ok()
1642 if ((i = FST_RDB(card, taskStatus)) == 0x01) { in check_started_ok()
1643 card->state = FST_RUNNING; in check_started_ok()
1646 card->state = FST_HALTED; in check_started_ok()
1650 card->state = FST_HALTED; in check_started_ok()
1658 if (FST_RDL(card, numberOfPorts) != card->nports) { in check_started_ok()
1660 card->card_no, in check_started_ok()
1661 FST_RDL(card, numberOfPorts), card->nports); in check_started_ok()
1666 set_conf_from_info(struct fst_card_info *card, struct fst_port_info *port, in set_conf_from_info() argument
1691 FST_WRB(card, portConfig[port->index].invertClock, in set_conf_from_info()
1694 FST_WRW(card, cardMode, info->cardMode); in set_conf_from_info()
1696 FST_WRL(card, suConfig.dataRate, info->lineSpeed); in set_conf_from_info()
1697 FST_WRB(card, suConfig.clocking, info->clockSource); in set_conf_from_info()
1705 FST_WRB(card, suConfig.framing, my_framing); in set_conf_from_info()
1706 FST_WRB(card, suConfig.structure, info->structure); in set_conf_from_info()
1707 FST_WRB(card, suConfig.interface, info->interface); in set_conf_from_info()
1708 FST_WRB(card, suConfig.coding, info->coding); in set_conf_from_info()
1709 FST_WRB(card, suConfig.lineBuildOut, info->lineBuildOut); in set_conf_from_info()
1710 FST_WRB(card, suConfig.equalizer, info->equalizer); in set_conf_from_info()
1711 FST_WRB(card, suConfig.transparentMode, info->transparentMode); in set_conf_from_info()
1712 FST_WRB(card, suConfig.loopMode, info->loopMode); in set_conf_from_info()
1713 FST_WRB(card, suConfig.range, info->range); in set_conf_from_info()
1714 FST_WRB(card, suConfig.txBufferMode, info->txBufferMode); in set_conf_from_info()
1715 FST_WRB(card, suConfig.rxBufferMode, info->rxBufferMode); in set_conf_from_info()
1716 FST_WRB(card, suConfig.startingSlot, info->startingSlot); in set_conf_from_info()
1717 FST_WRB(card, suConfig.losThreshold, info->losThreshold); in set_conf_from_info()
1719 FST_WRB(card, suConfig.enableIdleCode, 1); in set_conf_from_info()
1721 FST_WRB(card, suConfig.enableIdleCode, 0); in set_conf_from_info()
1722 FST_WRB(card, suConfig.idleCode, info->idleCode); in set_conf_from_info()
1756 gather_conf_info(struct fst_card_info *card, struct fst_port_info *port, in gather_conf_info() argument
1765 info->nports = card->nports; in gather_conf_info()
1766 info->type = card->type; in gather_conf_info()
1767 info->state = card->state; in gather_conf_info()
1777 info->valid = ((card->state == FST_RUNNING) ? FSTVAL_ALL : FSTVAL_CARD) in gather_conf_info()
1783 info->lineInterface = FST_RDW(card, portConfig[i].lineInterface); in gather_conf_info()
1784 info->internalClock = FST_RDB(card, portConfig[i].internalClock); in gather_conf_info()
1785 info->lineSpeed = FST_RDL(card, portConfig[i].lineSpeed); in gather_conf_info()
1786 info->invertClock = FST_RDB(card, portConfig[i].invertClock); in gather_conf_info()
1787 info->v24IpSts = FST_RDL(card, v24IpSts[i]); in gather_conf_info()
1788 info->v24OpSts = FST_RDL(card, v24OpSts[i]); in gather_conf_info()
1789 info->clockStatus = FST_RDW(card, clockStatus[i]); in gather_conf_info()
1790 info->cableStatus = FST_RDW(card, cableStatus); in gather_conf_info()
1791 info->cardMode = FST_RDW(card, cardMode); in gather_conf_info()
1792 info->smcFirmwareVersion = FST_RDL(card, smcFirmwareVersion); in gather_conf_info()
1799 if (card->family == FST_FAMILY_TXU) { in gather_conf_info()
1816 if (card->type == FST_TYPE_TE1) { in gather_conf_info()
1817 info->lineSpeed = FST_RDL(card, suConfig.dataRate); in gather_conf_info()
1818 info->clockSource = FST_RDB(card, suConfig.clocking); in gather_conf_info()
1819 info->framing = FST_RDB(card, suConfig.framing); in gather_conf_info()
1820 info->structure = FST_RDB(card, suConfig.structure); in gather_conf_info()
1821 info->interface = FST_RDB(card, suConfig.interface); in gather_conf_info()
1822 info->coding = FST_RDB(card, suConfig.coding); in gather_conf_info()
1823 info->lineBuildOut = FST_RDB(card, suConfig.lineBuildOut); in gather_conf_info()
1824 info->equalizer = FST_RDB(card, suConfig.equalizer); in gather_conf_info()
1825 info->loopMode = FST_RDB(card, suConfig.loopMode); in gather_conf_info()
1826 info->range = FST_RDB(card, suConfig.range); in gather_conf_info()
1827 info->txBufferMode = FST_RDB(card, suConfig.txBufferMode); in gather_conf_info()
1828 info->rxBufferMode = FST_RDB(card, suConfig.rxBufferMode); in gather_conf_info()
1829 info->startingSlot = FST_RDB(card, suConfig.startingSlot); in gather_conf_info()
1830 info->losThreshold = FST_RDB(card, suConfig.losThreshold); in gather_conf_info()
1831 if (FST_RDB(card, suConfig.enableIdleCode)) in gather_conf_info()
1832 info->idleCode = FST_RDB(card, suConfig.idleCode); in gather_conf_info()
1836 FST_RDL(card, suStatus.receiveBufferDelay); in gather_conf_info()
1838 FST_RDL(card, suStatus.framingErrorCount); in gather_conf_info()
1840 FST_RDL(card, suStatus.codeViolationCount); in gather_conf_info()
1841 info->crcErrorCount = FST_RDL(card, suStatus.crcErrorCount); in gather_conf_info()
1842 info->lineAttenuation = FST_RDL(card, suStatus.lineAttenuation); in gather_conf_info()
1843 info->lossOfSignal = FST_RDB(card, suStatus.lossOfSignal); in gather_conf_info()
1845 FST_RDB(card, suStatus.receiveRemoteAlarm); in gather_conf_info()
1847 FST_RDB(card, suStatus.alarmIndicationSignal); in gather_conf_info()
1852 fst_set_iface(struct fst_card_info *card, struct fst_port_info *port, in fst_set_iface() argument
1874 FST_WRW(card, portConfig[i].lineInterface, V35); in fst_set_iface()
1879 FST_WRW(card, portConfig[i].lineInterface, V24); in fst_set_iface()
1884 FST_WRW(card, portConfig[i].lineInterface, X21); in fst_set_iface()
1889 FST_WRW(card, portConfig[i].lineInterface, X21D); in fst_set_iface()
1894 FST_WRW(card, portConfig[i].lineInterface, T1); in fst_set_iface()
1899 FST_WRW(card, portConfig[i].lineInterface, E1); in fst_set_iface()
1912 FST_WRB(card, portConfig[i].internalClock, EXTCLK); in fst_set_iface()
1916 FST_WRB(card, portConfig[i].internalClock, INTCLK); in fst_set_iface()
1922 FST_WRL(card, portConfig[i].lineSpeed, sync.clock_rate); in fst_set_iface()
1927 fst_get_iface(struct fst_card_info *card, struct fst_port_info *port, in fst_get_iface() argument
1967 sync.clock_rate = FST_RDL(card, portConfig[i].lineSpeed); in fst_get_iface()
1969 sync.clock_type = FST_RDB(card, portConfig[i].internalClock) == in fst_get_iface()
1984 struct fst_card_info *card; in fst_ioctl() local
1994 card = port->card; in fst_ioctl()
2001 fst_cpureset(card); in fst_ioctl()
2002 card->state = FST_RESET; in fst_ioctl()
2006 fst_cpurelease(card); in fst_ioctl()
2007 card->state = FST_STARTING; in fst_ioctl()
2038 memcpy_toio(card->mem + wrthdr.offset, buf, wrthdr.size); in fst_ioctl()
2044 if (card->state == FST_RESET) { in fst_ioctl()
2045 card->state = FST_DOWNLOAD; in fst_ioctl()
2054 if (card->state == FST_STARTING) { in fst_ioctl()
2055 check_started_ok(card); in fst_ioctl()
2058 if (card->state == FST_RUNNING) { in fst_ioctl()
2059 spin_lock_irqsave(&card->card_lock, flags); in fst_ioctl()
2060 fst_enable_intr(card); in fst_ioctl()
2061 FST_WRB(card, interruptHandshake, 0xEE); in fst_ioctl()
2062 spin_unlock_irqrestore(&card->card_lock, flags); in fst_ioctl()
2070 gather_conf_info(card, port, &info); in fst_ioctl()
2084 if (card->state != FST_RUNNING) { in fst_ioctl()
2086 card->card_no, card->state); in fst_ioctl()
2093 return set_conf_from_info(card, port, &info); in fst_ioctl()
2098 return fst_get_iface(card, port, ifr); in fst_ioctl()
2107 return fst_set_iface(card, port, ifr); in fst_ioctl()
2142 if (port->card->state == FST_RUNNING) { in fst_openport()
2157 signals = FST_RDL(port->card, v24DebouncedSts[port->index]); in fst_openport()
2174 if (port->card->state == FST_RUNNING) { in fst_closeport()
2213 struct fst_card_info *card; in fst_close() local
2218 card = port->card; in fst_close()
2220 tx_dma_done = inb(card->pci_conf + DMACSR1); in fst_close()
2221 rx_dma_done = inb(card->pci_conf + DMACSR0); in fst_close()
2224 card->dmatx_in_progress, tx_dma_done, card->dmarx_in_progress, in fst_close()
2251 struct fst_card_info *card; in fst_tx_timeout() local
2254 card = port->card; in fst_tx_timeout()
2258 card->card_no, port->index); in fst_tx_timeout()
2269 struct fst_card_info *card; in fst_start_xmit() local
2275 card = port->card; in fst_start_xmit()
2285 card->card_no, port->index); in fst_start_xmit()
2303 spin_lock_irqsave(&card->card_lock, flags); in fst_start_xmit()
2311 spin_unlock_irqrestore(&card->card_lock, flags); in fst_start_xmit()
2328 card->card_no, port->index); in fst_start_xmit()
2335 spin_lock_irqsave(&card->card_lock, flags); in fst_start_xmit()
2340 spin_unlock_irqrestore(&card->card_lock, flags); in fst_start_xmit()
2343 fst_q_work_item(&fst_work_txq, card->card_no); in fst_start_xmit()
2367 fst_init_card(struct fst_card_info *card) in fst_init_card() argument
2376 for (i = 0; i < card->nports; i++) { in fst_init_card()
2377 err = register_hdlc_device(card->ports[i].dev); in fst_init_card()
2382 unregister_hdlc_device(card->ports[i].dev); in fst_init_card()
2388 port_to_dev(&card->ports[0])->name, in fst_init_card()
2389 port_to_dev(&card->ports[card->nports - 1])->name, in fst_init_card()
2390 type_strings[card->type], card->irq, card->nports); in fst_init_card()
2411 struct fst_card_info *card; in fst_add_one() local
2440 card = kzalloc(sizeof(struct fst_card_info), GFP_KERNEL); in fst_add_one()
2441 if (card == NULL) in fst_add_one()
2456 card->pci_conf = pci_resource_start(pdev, 1); in fst_add_one()
2457 card->phys_mem = pci_resource_start(pdev, 2); in fst_add_one()
2458 card->phys_ctlmem = pci_resource_start(pdev, 3); in fst_add_one()
2459 if ((card->mem = ioremap(card->phys_mem, FST_MEMSIZE)) == NULL) { in fst_add_one()
2464 if ((card->ctlmem = ioremap(card->phys_ctlmem, 0x10)) == NULL) { in fst_add_one()
2469 dbg(DBG_PCI, "kernel mem %p, ctlmem %p\n", card->mem, card->ctlmem); in fst_add_one()
2472 if (request_irq(pdev->irq, fst_intr, IRQF_SHARED, FST_DEV_NAME, card)) { in fst_add_one()
2473 pr_err("Unable to register interrupt %d\n", card->irq); in fst_add_one()
2479 card->irq = pdev->irq; in fst_add_one()
2480 card->type = ent->driver_data; in fst_add_one()
2481 card->family = ((ent->driver_data == FST_TYPE_T2P) || in fst_add_one()
2486 card->nports = 1; in fst_add_one()
2488 card->nports = ((ent->driver_data == FST_TYPE_T2P) || in fst_add_one()
2491 card->state = FST_UNINIT; in fst_add_one()
2492 spin_lock_init ( &card->card_lock ); in fst_add_one()
2494 for ( i = 0 ; i < card->nports ; i++ ) { in fst_add_one()
2495 struct net_device *dev = alloc_hdlcdev(&card->ports[i]); in fst_add_one()
2499 free_netdev(card->ports[i].dev); in fst_add_one()
2504 card->ports[i].dev = dev; in fst_add_one()
2505 card->ports[i].card = card; in fst_add_one()
2506 card->ports[i].index = i; in fst_add_one()
2507 card->ports[i].run = 0; in fst_add_one()
2516 dev->mem_start = card->phys_mem in fst_add_one()
2518 dev->mem_end = card->phys_mem in fst_add_one()
2520 dev->base_addr = card->pci_conf; in fst_add_one()
2521 dev->irq = card->irq; in fst_add_one()
2530 card->device = pdev; in fst_add_one()
2532 dbg(DBG_PCI, "type %d nports %d irq %d\n", card->type, in fst_add_one()
2533 card->nports, card->irq); in fst_add_one()
2535 card->pci_conf, card->phys_mem, card->phys_ctlmem); in fst_add_one()
2538 fst_cpureset(card); in fst_add_one()
2539 card->state = FST_RESET; in fst_add_one()
2542 fst_init_dma(card); in fst_add_one()
2545 pci_set_drvdata(pdev, card); in fst_add_one()
2553 fst_card_array[no_of_cards_added] = card; in fst_add_one()
2554 card->card_no = no_of_cards_added++; /* Record instance and bump it */ in fst_add_one()
2555 err = fst_init_card(card); in fst_add_one()
2558 if (card->family == FST_FAMILY_TXU) { in fst_add_one()
2562 card->rx_dma_handle_host = in fst_add_one()
2563 pci_alloc_consistent(card->device, FST_MAX_MTU, in fst_add_one()
2564 &card->rx_dma_handle_card); in fst_add_one()
2565 if (card->rx_dma_handle_host == NULL) { in fst_add_one()
2570 card->tx_dma_handle_host = in fst_add_one()
2571 pci_alloc_consistent(card->device, FST_MAX_MTU, in fst_add_one()
2572 &card->tx_dma_handle_card); in fst_add_one()
2573 if (card->tx_dma_handle_host == NULL) { in fst_add_one()
2582 pci_free_consistent(card->device, FST_MAX_MTU, in fst_add_one()
2583 card->rx_dma_handle_host, in fst_add_one()
2584 card->rx_dma_handle_card); in fst_add_one()
2586 fst_disable_intr(card); in fst_add_one()
2587 for (i = 0 ; i < card->nports ; i++) in fst_add_one()
2588 unregister_hdlc_device(card->ports[i].dev); in fst_add_one()
2590 fst_card_array[card->card_no] = NULL; in fst_add_one()
2592 for (i = 0 ; i < card->nports ; i++) in fst_add_one()
2593 free_netdev(card->ports[i].dev); in fst_add_one()
2595 free_irq(card->irq, card); in fst_add_one()
2597 iounmap(card->ctlmem); in fst_add_one()
2599 iounmap(card->mem); in fst_add_one()
2605 kfree(card); in fst_add_one()
2615 struct fst_card_info *card; in fst_remove_one() local
2618 card = pci_get_drvdata(pdev); in fst_remove_one()
2620 for (i = 0; i < card->nports; i++) { in fst_remove_one()
2621 struct net_device *dev = port_to_dev(&card->ports[i]); in fst_remove_one()
2625 fst_disable_intr(card); in fst_remove_one()
2626 free_irq(card->irq, card); in fst_remove_one()
2628 iounmap(card->ctlmem); in fst_remove_one()
2629 iounmap(card->mem); in fst_remove_one()
2631 if (card->family == FST_FAMILY_TXU) { in fst_remove_one()
2635 pci_free_consistent(card->device, FST_MAX_MTU, in fst_remove_one()
2636 card->rx_dma_handle_host, in fst_remove_one()
2637 card->rx_dma_handle_card); in fst_remove_one()
2638 pci_free_consistent(card->device, FST_MAX_MTU, in fst_remove_one()
2639 card->tx_dma_handle_host, in fst_remove_one()
2640 card->tx_dma_handle_card); in fst_remove_one()
2642 fst_card_array[card->card_no] = NULL; in fst_remove_one()