fore200e 165 drivers/atm/fore200e.c fore200e_chunk_alloc(struct fore200e* fore200e, struct chunk* chunk, int size, int alignment, int direction) fore200e 184 drivers/atm/fore200e.c chunk->dma_addr = dma_map_single(fore200e->dev, chunk->align_addr, fore200e 186 drivers/atm/fore200e.c if (dma_mapping_error(fore200e->dev, chunk->dma_addr)) { fore200e 197 drivers/atm/fore200e.c fore200e_chunk_free(struct fore200e* fore200e, struct chunk* chunk) fore200e 199 drivers/atm/fore200e.c dma_unmap_single(fore200e->dev, chunk->dma_addr, chunk->dma_size, fore200e 210 drivers/atm/fore200e.c fore200e_dma_chunk_alloc(struct fore200e *fore200e, struct chunk *chunk, fore200e 215 drivers/atm/fore200e.c chunk->alloc_addr = dma_alloc_coherent(fore200e->dev, chunk->alloc_size, fore200e 227 drivers/atm/fore200e.c fore200e_dma_chunk_free(struct fore200e* fore200e, struct chunk* chunk) fore200e 229 drivers/atm/fore200e.c dma_free_coherent(fore200e->dev, chunk->alloc_size, chunk->alloc_addr, fore200e 242 drivers/atm/fore200e.c fore200e_poll(struct fore200e* fore200e, volatile u32* addr, u32 val, int msecs) fore200e 266 drivers/atm/fore200e.c fore200e_io_poll(struct fore200e* fore200e, volatile u32 __iomem *addr, u32 val, int msecs) fore200e 272 drivers/atm/fore200e.c if ((ok = (fore200e->bus->read(addr) == val))) fore200e 280 drivers/atm/fore200e.c fore200e->bus->read(addr), val); fore200e 289 drivers/atm/fore200e.c fore200e_free_rx_buf(struct fore200e* fore200e) fore200e 297 drivers/atm/fore200e.c if ((buffer = fore200e->host_bsq[ scheme ][ magn ].buffer) != NULL) { fore200e 304 drivers/atm/fore200e.c fore200e_chunk_free(fore200e, data); fore200e 313 drivers/atm/fore200e.c fore200e_uninit_bs_queue(struct fore200e* fore200e) fore200e 320 drivers/atm/fore200e.c struct chunk* status = &fore200e->host_bsq[ scheme ][ magn ].status; fore200e 321 drivers/atm/fore200e.c struct chunk* rbd_block = &fore200e->host_bsq[ scheme ][ magn ].rbd_block; fore200e 324 drivers/atm/fore200e.c fore200e_dma_chunk_free(fore200e, status); fore200e 327 drivers/atm/fore200e.c fore200e_dma_chunk_free(fore200e, rbd_block); fore200e 334 drivers/atm/fore200e.c fore200e_reset(struct fore200e* fore200e, int diag) fore200e 338 drivers/atm/fore200e.c fore200e->cp_monitor = fore200e->virt_base + FORE200E_CP_MONITOR_OFFSET; fore200e 340 drivers/atm/fore200e.c fore200e->bus->write(BSTAT_COLD_START, &fore200e->cp_monitor->bstat); fore200e 342 drivers/atm/fore200e.c fore200e->bus->reset(fore200e); fore200e 345 drivers/atm/fore200e.c ok = fore200e_io_poll(fore200e, &fore200e->cp_monitor->bstat, BSTAT_SELFTEST_OK, 1000); fore200e 348 drivers/atm/fore200e.c printk(FORE200E "device %s self-test failed\n", fore200e->name); fore200e 352 drivers/atm/fore200e.c printk(FORE200E "device %s self-test passed\n", fore200e->name); fore200e 354 drivers/atm/fore200e.c fore200e->state = FORE200E_STATE_RESET; fore200e 362 drivers/atm/fore200e.c fore200e_shutdown(struct fore200e* fore200e) fore200e 365 drivers/atm/fore200e.c fore200e->name, fore200e->phys_base, fore200e 366 drivers/atm/fore200e.c fore200e_irq_itoa(fore200e->irq)); fore200e 368 drivers/atm/fore200e.c if (fore200e->state > FORE200E_STATE_RESET) { fore200e 370 drivers/atm/fore200e.c fore200e_reset(fore200e, 0); fore200e 374 drivers/atm/fore200e.c switch(fore200e->state) { fore200e 377 drivers/atm/fore200e.c kfree(fore200e->stats); fore200e 381 drivers/atm/fore200e.c free_irq(fore200e->irq, fore200e->atm_dev); fore200e 385 drivers/atm/fore200e.c fore200e_free_rx_buf(fore200e); fore200e 389 drivers/atm/fore200e.c fore200e_uninit_bs_queue(fore200e); fore200e 393 drivers/atm/fore200e.c fore200e_dma_chunk_free(fore200e, &fore200e->host_rxq.status); fore200e 394 drivers/atm/fore200e.c fore200e_dma_chunk_free(fore200e, &fore200e->host_rxq.rpd); fore200e 398 drivers/atm/fore200e.c fore200e_dma_chunk_free(fore200e, &fore200e->host_txq.status); fore200e 399 drivers/atm/fore200e.c fore200e_dma_chunk_free(fore200e, &fore200e->host_txq.tpd); fore200e 403 drivers/atm/fore200e.c fore200e_dma_chunk_free(fore200e, &fore200e->host_cmdq.status); fore200e 416 drivers/atm/fore200e.c fore200e->bus->unmap(fore200e); fore200e 424 drivers/atm/fore200e.c atm_dev_deregister(fore200e->atm_dev); fore200e 451 drivers/atm/fore200e.c fore200e_pca_irq_check(struct fore200e* fore200e) fore200e 454 drivers/atm/fore200e.c int irq_posted = readl(fore200e->regs.pca.psr); fore200e 457 drivers/atm/fore200e.c if (irq_posted && (readl(fore200e->regs.pca.hcr) & PCA200E_HCR_OUTFULL)) { fore200e 458 drivers/atm/fore200e.c DPRINTK(2,"FIFO OUT full, device %d\n", fore200e->atm_dev->number); fore200e 467 drivers/atm/fore200e.c fore200e_pca_irq_ack(struct fore200e* fore200e) fore200e 469 drivers/atm/fore200e.c writel(PCA200E_HCR_CLRINTR, fore200e->regs.pca.hcr); fore200e 474 drivers/atm/fore200e.c fore200e_pca_reset(struct fore200e* fore200e) fore200e 476 drivers/atm/fore200e.c writel(PCA200E_HCR_RESET, fore200e->regs.pca.hcr); fore200e 478 drivers/atm/fore200e.c writel(0, fore200e->regs.pca.hcr); fore200e 482 drivers/atm/fore200e.c static int fore200e_pca_map(struct fore200e* fore200e) fore200e 484 drivers/atm/fore200e.c DPRINTK(2, "device %s being mapped in memory\n", fore200e->name); fore200e 486 drivers/atm/fore200e.c fore200e->virt_base = ioremap(fore200e->phys_base, PCA200E_IOSPACE_LENGTH); fore200e 488 drivers/atm/fore200e.c if (fore200e->virt_base == NULL) { fore200e 489 drivers/atm/fore200e.c printk(FORE200E "can't map device %s\n", fore200e->name); fore200e 493 drivers/atm/fore200e.c DPRINTK(1, "device %s mapped to 0x%p\n", fore200e->name, fore200e->virt_base); fore200e 496 drivers/atm/fore200e.c fore200e->regs.pca.hcr = fore200e->virt_base + PCA200E_HCR_OFFSET; fore200e 497 drivers/atm/fore200e.c fore200e->regs.pca.imr = fore200e->virt_base + PCA200E_IMR_OFFSET; fore200e 498 drivers/atm/fore200e.c fore200e->regs.pca.psr = fore200e->virt_base + PCA200E_PSR_OFFSET; fore200e 500 drivers/atm/fore200e.c fore200e->state = FORE200E_STATE_MAP; fore200e 506 drivers/atm/fore200e.c fore200e_pca_unmap(struct fore200e* fore200e) fore200e 508 drivers/atm/fore200e.c DPRINTK(2, "device %s being unmapped from memory\n", fore200e->name); fore200e 510 drivers/atm/fore200e.c if (fore200e->virt_base != NULL) fore200e 511 drivers/atm/fore200e.c iounmap(fore200e->virt_base); fore200e 515 drivers/atm/fore200e.c static int fore200e_pca_configure(struct fore200e *fore200e) fore200e 517 drivers/atm/fore200e.c struct pci_dev *pci_dev = to_pci_dev(fore200e->dev); fore200e 520 drivers/atm/fore200e.c DPRINTK(2, "device %s being configured\n", fore200e->name); fore200e 550 drivers/atm/fore200e.c fore200e->state = FORE200E_STATE_CONFIGURE; fore200e 556 drivers/atm/fore200e.c fore200e_pca_prom_read(struct fore200e* fore200e, struct prom_data* prom) fore200e 558 drivers/atm/fore200e.c struct host_cmdq* cmdq = &fore200e->host_cmdq; fore200e 569 drivers/atm/fore200e.c prom_dma = dma_map_single(fore200e->dev, prom, sizeof(struct prom_data), fore200e 571 drivers/atm/fore200e.c if (dma_mapping_error(fore200e->dev, prom_dma)) fore200e 574 drivers/atm/fore200e.c fore200e->bus->write(prom_dma, &entry->cp_entry->cmd.prom_block.prom_haddr); fore200e 578 drivers/atm/fore200e.c fore200e->bus->write(*(u32*)&opcode, (u32 __iomem *)&entry->cp_entry->cmd.prom_block.opcode); fore200e 580 drivers/atm/fore200e.c ok = fore200e_poll(fore200e, entry->status, STATUS_COMPLETE, 400); fore200e 584 drivers/atm/fore200e.c dma_unmap_single(fore200e->dev, prom_dma, sizeof(struct prom_data), DMA_FROM_DEVICE); fore200e 587 drivers/atm/fore200e.c printk(FORE200E "unable to get PROM data from device %s\n", fore200e->name); fore200e 605 drivers/atm/fore200e.c fore200e_pca_proc_read(struct fore200e* fore200e, char *page) fore200e 607 drivers/atm/fore200e.c struct pci_dev *pci_dev = to_pci_dev(fore200e->dev); fore200e 644 drivers/atm/fore200e.c static void fore200e_sba_irq_enable(struct fore200e *fore200e) fore200e 646 drivers/atm/fore200e.c u32 hcr = fore200e->bus->read(fore200e->regs.sba.hcr) & SBA200E_HCR_STICKY; fore200e 647 drivers/atm/fore200e.c fore200e->bus->write(hcr | SBA200E_HCR_INTR_ENA, fore200e->regs.sba.hcr); fore200e 650 drivers/atm/fore200e.c static int fore200e_sba_irq_check(struct fore200e *fore200e) fore200e 652 drivers/atm/fore200e.c return fore200e->bus->read(fore200e->regs.sba.hcr) & SBA200E_HCR_INTR_REQ; fore200e 655 drivers/atm/fore200e.c static void fore200e_sba_irq_ack(struct fore200e *fore200e) fore200e 657 drivers/atm/fore200e.c u32 hcr = fore200e->bus->read(fore200e->regs.sba.hcr) & SBA200E_HCR_STICKY; fore200e 658 drivers/atm/fore200e.c fore200e->bus->write(hcr | SBA200E_HCR_INTR_CLR, fore200e->regs.sba.hcr); fore200e 661 drivers/atm/fore200e.c static void fore200e_sba_reset(struct fore200e *fore200e) fore200e 663 drivers/atm/fore200e.c fore200e->bus->write(SBA200E_HCR_RESET, fore200e->regs.sba.hcr); fore200e 665 drivers/atm/fore200e.c fore200e->bus->write(0, fore200e->regs.sba.hcr); fore200e 668 drivers/atm/fore200e.c static int __init fore200e_sba_map(struct fore200e *fore200e) fore200e 670 drivers/atm/fore200e.c struct platform_device *op = to_platform_device(fore200e->dev); fore200e 674 drivers/atm/fore200e.c fore200e->regs.sba.hcr = of_ioremap(&op->resource[0], 0, SBA200E_HCR_LENGTH, "SBA HCR"); fore200e 675 drivers/atm/fore200e.c fore200e->regs.sba.bsr = of_ioremap(&op->resource[1], 0, SBA200E_BSR_LENGTH, "SBA BSR"); fore200e 676 drivers/atm/fore200e.c fore200e->regs.sba.isr = of_ioremap(&op->resource[2], 0, SBA200E_ISR_LENGTH, "SBA ISR"); fore200e 677 drivers/atm/fore200e.c fore200e->virt_base = of_ioremap(&op->resource[3], 0, SBA200E_RAM_LENGTH, "SBA RAM"); fore200e 679 drivers/atm/fore200e.c if (!fore200e->virt_base) { fore200e 680 drivers/atm/fore200e.c printk(FORE200E "unable to map RAM of device %s\n", fore200e->name); fore200e 684 drivers/atm/fore200e.c DPRINTK(1, "device %s mapped to 0x%p\n", fore200e->name, fore200e->virt_base); fore200e 686 drivers/atm/fore200e.c fore200e->bus->write(0x02, fore200e->regs.sba.isr); /* XXX hardwired interrupt level */ fore200e 694 drivers/atm/fore200e.c fore200e->state = FORE200E_STATE_MAP; fore200e 698 drivers/atm/fore200e.c static void fore200e_sba_unmap(struct fore200e *fore200e) fore200e 700 drivers/atm/fore200e.c struct platform_device *op = to_platform_device(fore200e->dev); fore200e 702 drivers/atm/fore200e.c of_iounmap(&op->resource[0], fore200e->regs.sba.hcr, SBA200E_HCR_LENGTH); fore200e 703 drivers/atm/fore200e.c of_iounmap(&op->resource[1], fore200e->regs.sba.bsr, SBA200E_BSR_LENGTH); fore200e 704 drivers/atm/fore200e.c of_iounmap(&op->resource[2], fore200e->regs.sba.isr, SBA200E_ISR_LENGTH); fore200e 705 drivers/atm/fore200e.c of_iounmap(&op->resource[3], fore200e->virt_base, SBA200E_RAM_LENGTH); fore200e 708 drivers/atm/fore200e.c static int __init fore200e_sba_configure(struct fore200e *fore200e) fore200e 710 drivers/atm/fore200e.c fore200e->state = FORE200E_STATE_CONFIGURE; fore200e 714 drivers/atm/fore200e.c static int __init fore200e_sba_prom_read(struct fore200e *fore200e, struct prom_data *prom) fore200e 716 drivers/atm/fore200e.c struct platform_device *op = to_platform_device(fore200e->dev); fore200e 738 drivers/atm/fore200e.c static int fore200e_sba_proc_read(struct fore200e *fore200e, char *page) fore200e 740 drivers/atm/fore200e.c struct platform_device *op = to_platform_device(fore200e->dev); fore200e 770 drivers/atm/fore200e.c fore200e_tx_irq(struct fore200e* fore200e) fore200e 772 drivers/atm/fore200e.c struct host_txq* txq = &fore200e->host_txq; fore200e 777 drivers/atm/fore200e.c if (fore200e->host_txq.txing == 0) fore200e 795 drivers/atm/fore200e.c dma_unmap_single(fore200e->dev, entry->tpd->tsd[ 0 ].buffer, entry->tpd->tsd[ 0 ].length, fore200e 805 drivers/atm/fore200e.c fore200e->atm_dev->number); fore200e 828 drivers/atm/fore200e.c fore200e->atm_dev->number); fore200e 854 drivers/atm/fore200e.c fore200e->host_txq.txing--; fore200e 904 drivers/atm/fore200e.c fore200e_supply(struct fore200e* fore200e) fore200e 915 drivers/atm/fore200e.c bsq = &fore200e->host_bsq[ scheme ][ magn ]; fore200e 954 drivers/atm/fore200e.c fore200e->bus->write(entry->rbd_block_dma, &entry->cp_entry->rbd_block_haddr); fore200e 962 drivers/atm/fore200e.c fore200e_push_rpd(struct fore200e* fore200e, struct atm_vcc* vcc, struct rpd* rpd) fore200e 1016 drivers/atm/fore200e.c dma_sync_single_for_cpu(fore200e->dev, buffer->data.dma_addr, fore200e 1022 drivers/atm/fore200e.c dma_sync_single_for_device(fore200e->dev, buffer->data.dma_addr, fore200e 1054 drivers/atm/fore200e.c fore200e_collect_rpd(struct fore200e* fore200e, struct rpd* rpd) fore200e 1065 drivers/atm/fore200e.c bsq = &fore200e->host_bsq[ buffer->scheme ][ buffer->magn ]; fore200e 1087 drivers/atm/fore200e.c fore200e_rx_irq(struct fore200e* fore200e) fore200e 1089 drivers/atm/fore200e.c struct host_rxq* rxq = &fore200e->host_rxq; fore200e 1102 drivers/atm/fore200e.c vc_map = FORE200E_VC_MAP(fore200e, entry->rpd->atm_header.vpi, entry->rpd->atm_header.vci); fore200e 1108 drivers/atm/fore200e.c fore200e->atm_dev->number, fore200e 1117 drivers/atm/fore200e.c fore200e_push_rpd(fore200e, vcc, entry->rpd); fore200e 1121 drivers/atm/fore200e.c fore200e->atm_dev->number, fore200e 1129 drivers/atm/fore200e.c fore200e_collect_rpd(fore200e, entry->rpd); fore200e 1132 drivers/atm/fore200e.c fore200e->bus->write(entry->rpd_dma, &entry->cp_entry->rpd_haddr); fore200e 1135 drivers/atm/fore200e.c fore200e_supply(fore200e); fore200e 1142 drivers/atm/fore200e.c fore200e_irq(struct fore200e* fore200e) fore200e 1146 drivers/atm/fore200e.c spin_lock_irqsave(&fore200e->q_lock, flags); fore200e 1147 drivers/atm/fore200e.c fore200e_rx_irq(fore200e); fore200e 1148 drivers/atm/fore200e.c spin_unlock_irqrestore(&fore200e->q_lock, flags); fore200e 1150 drivers/atm/fore200e.c spin_lock_irqsave(&fore200e->q_lock, flags); fore200e 1151 drivers/atm/fore200e.c fore200e_tx_irq(fore200e); fore200e 1152 drivers/atm/fore200e.c spin_unlock_irqrestore(&fore200e->q_lock, flags); fore200e 1160 drivers/atm/fore200e.c struct fore200e* fore200e = FORE200E_DEV((struct atm_dev*)dev); fore200e 1162 drivers/atm/fore200e.c if (fore200e->bus->irq_check(fore200e) == 0) { fore200e 1164 drivers/atm/fore200e.c DPRINTK(3, "interrupt NOT triggered by device %d\n", fore200e->atm_dev->number); fore200e 1167 drivers/atm/fore200e.c DPRINTK(3, "interrupt triggered by device %d\n", fore200e->atm_dev->number); fore200e 1170 drivers/atm/fore200e.c tasklet_schedule(&fore200e->tx_tasklet); fore200e 1171 drivers/atm/fore200e.c tasklet_schedule(&fore200e->rx_tasklet); fore200e 1173 drivers/atm/fore200e.c fore200e_irq(fore200e); fore200e 1176 drivers/atm/fore200e.c fore200e->bus->irq_ack(fore200e); fore200e 1185 drivers/atm/fore200e.c struct fore200e* fore200e = (struct fore200e*) data; fore200e 1188 drivers/atm/fore200e.c DPRINTK(3, "tx tasklet scheduled for device %d\n", fore200e->atm_dev->number); fore200e 1190 drivers/atm/fore200e.c spin_lock_irqsave(&fore200e->q_lock, flags); fore200e 1191 drivers/atm/fore200e.c fore200e_tx_irq(fore200e); fore200e 1192 drivers/atm/fore200e.c spin_unlock_irqrestore(&fore200e->q_lock, flags); fore200e 1199 drivers/atm/fore200e.c struct fore200e* fore200e = (struct fore200e*) data; fore200e 1202 drivers/atm/fore200e.c DPRINTK(3, "rx tasklet scheduled for device %d\n", fore200e->atm_dev->number); fore200e 1204 drivers/atm/fore200e.c spin_lock_irqsave(&fore200e->q_lock, flags); fore200e 1205 drivers/atm/fore200e.c fore200e_rx_irq((struct fore200e*) data); fore200e 1206 drivers/atm/fore200e.c spin_unlock_irqrestore(&fore200e->q_lock, flags); fore200e 1225 drivers/atm/fore200e.c fore200e_activate_vcin(struct fore200e* fore200e, int activate, struct atm_vcc* vcc, int mtu) fore200e 1227 drivers/atm/fore200e.c struct host_cmdq* cmdq = &fore200e->host_cmdq; fore200e 1261 drivers/atm/fore200e.c fore200e->bus->write(mtu, &entry->cp_entry->cmd.activate_block.mtu); fore200e 1262 drivers/atm/fore200e.c fore200e->bus->write(*(u32*)&vpvc, (u32 __iomem *)&entry->cp_entry->cmd.activate_block.vpvc); fore200e 1263 drivers/atm/fore200e.c fore200e->bus->write(*(u32*)&activ_opcode, (u32 __iomem *)&entry->cp_entry->cmd.activate_block.opcode); fore200e 1266 drivers/atm/fore200e.c fore200e->bus->write(*(u32*)&vpvc, (u32 __iomem *)&entry->cp_entry->cmd.deactivate_block.vpvc); fore200e 1267 drivers/atm/fore200e.c fore200e->bus->write(*(u32*)&deactiv_opcode, (u32 __iomem *)&entry->cp_entry->cmd.deactivate_block.opcode); fore200e 1270 drivers/atm/fore200e.c ok = fore200e_poll(fore200e, entry->status, STATUS_COMPLETE, 400); fore200e 1308 drivers/atm/fore200e.c struct fore200e* fore200e = FORE200E_DEV(vcc->dev); fore200e 1318 drivers/atm/fore200e.c spin_lock_irqsave(&fore200e->q_lock, flags); fore200e 1320 drivers/atm/fore200e.c vc_map = FORE200E_VC_MAP(fore200e, vpi, vci); fore200e 1323 drivers/atm/fore200e.c spin_unlock_irqrestore(&fore200e->q_lock, flags); fore200e 1326 drivers/atm/fore200e.c fore200e->atm_dev->number, vpi, vci); fore200e 1333 drivers/atm/fore200e.c spin_unlock_irqrestore(&fore200e->q_lock, flags); fore200e 1352 drivers/atm/fore200e.c mutex_lock(&fore200e->rate_mtx); fore200e 1353 drivers/atm/fore200e.c if (fore200e->available_cell_rate < vcc->qos.txtp.max_pcr) { fore200e 1354 drivers/atm/fore200e.c mutex_unlock(&fore200e->rate_mtx); fore200e 1362 drivers/atm/fore200e.c fore200e->available_cell_rate -= vcc->qos.txtp.max_pcr; fore200e 1363 drivers/atm/fore200e.c mutex_unlock(&fore200e->rate_mtx); fore200e 1373 drivers/atm/fore200e.c if (fore200e_activate_vcin(fore200e, 1, vcc, vcc->qos.rxtp.max_sdu) < 0) { fore200e 1382 drivers/atm/fore200e.c fore200e->available_cell_rate += vcc->qos.txtp.max_pcr; fore200e 1405 drivers/atm/fore200e.c vc_map->incarn = ++fore200e->incarn_count; fore200e 1418 drivers/atm/fore200e.c struct fore200e* fore200e; fore200e 1423 drivers/atm/fore200e.c fore200e = FORE200E_DEV(vcc->dev); fore200e 1432 drivers/atm/fore200e.c fore200e_activate_vcin(fore200e, 0, vcc, 0); fore200e 1434 drivers/atm/fore200e.c spin_lock_irqsave(&fore200e->q_lock, flags); fore200e 1436 drivers/atm/fore200e.c vc_map = FORE200E_VC_MAP(fore200e, vcc->vpi, vcc->vci); fore200e 1446 drivers/atm/fore200e.c spin_unlock_irqrestore(&fore200e->q_lock, flags); fore200e 1451 drivers/atm/fore200e.c mutex_lock(&fore200e->rate_mtx); fore200e 1452 drivers/atm/fore200e.c fore200e->available_cell_rate += vcc->qos.txtp.max_pcr; fore200e 1453 drivers/atm/fore200e.c mutex_unlock(&fore200e->rate_mtx); fore200e 1469 drivers/atm/fore200e.c struct fore200e* fore200e; fore200e 1488 drivers/atm/fore200e.c fore200e = FORE200E_DEV(vcc->dev); fore200e 1491 drivers/atm/fore200e.c if (!fore200e) fore200e 1494 drivers/atm/fore200e.c txq = &fore200e->host_txq; fore200e 1521 drivers/atm/fore200e.c DPRINTK(2, "misaligned tx PDU on device %s\n", fore200e->name); fore200e 1529 drivers/atm/fore200e.c DPRINTK(2, "incomplete tx AAL0 PDU on device %s\n", fore200e->name); fore200e 1554 drivers/atm/fore200e.c vc_map = FORE200E_VC_MAP(fore200e, vcc->vpi, vcc->vci); fore200e 1559 drivers/atm/fore200e.c spin_lock_irqsave(&fore200e->q_lock, flags); fore200e 1566 drivers/atm/fore200e.c fore200e_tx_irq(fore200e); fore200e 1570 drivers/atm/fore200e.c spin_unlock_irqrestore(&fore200e->q_lock, flags); fore200e 1580 drivers/atm/fore200e.c fore200e->tx_sat++; fore200e 1582 drivers/atm/fore200e.c fore200e->name, fore200e->cp_queues->heartbeat); fore200e 1603 drivers/atm/fore200e.c tpd->tsd[ 0 ].buffer = dma_map_single(fore200e->dev, data, tx_len, fore200e 1605 drivers/atm/fore200e.c if (dma_mapping_error(fore200e->dev, tpd->tsd[0].buffer)) { fore200e 1608 drivers/atm/fore200e.c spin_unlock_irqrestore(&fore200e->q_lock, flags); fore200e 1660 drivers/atm/fore200e.c fore200e->bus->write(*(u32*)&tpd_haddr, (u32 __iomem *)&entry->cp_entry->tpd_haddr); fore200e 1662 drivers/atm/fore200e.c spin_unlock_irqrestore(&fore200e->q_lock, flags); fore200e 1669 drivers/atm/fore200e.c fore200e_getstats(struct fore200e* fore200e) fore200e 1671 drivers/atm/fore200e.c struct host_cmdq* cmdq = &fore200e->host_cmdq; fore200e 1677 drivers/atm/fore200e.c if (fore200e->stats == NULL) { fore200e 1678 drivers/atm/fore200e.c fore200e->stats = kzalloc(sizeof(struct stats), GFP_KERNEL); fore200e 1679 drivers/atm/fore200e.c if (fore200e->stats == NULL) fore200e 1683 drivers/atm/fore200e.c stats_dma_addr = dma_map_single(fore200e->dev, fore200e->stats, fore200e 1685 drivers/atm/fore200e.c if (dma_mapping_error(fore200e->dev, stats_dma_addr)) fore200e 1693 drivers/atm/fore200e.c fore200e->bus->write(stats_dma_addr, &entry->cp_entry->cmd.stats_block.stats_haddr); fore200e 1697 drivers/atm/fore200e.c fore200e->bus->write(*(u32*)&opcode, (u32 __iomem *)&entry->cp_entry->cmd.stats_block.opcode); fore200e 1699 drivers/atm/fore200e.c ok = fore200e_poll(fore200e, entry->status, STATUS_COMPLETE, 400); fore200e 1703 drivers/atm/fore200e.c dma_unmap_single(fore200e->dev, stats_dma_addr, sizeof(struct stats), DMA_FROM_DEVICE); fore200e 1706 drivers/atm/fore200e.c printk(FORE200E "unable to get statistics from device %s\n", fore200e->name); fore200e 1740 drivers/atm/fore200e.c fore200e_get_oc3(struct fore200e* fore200e, struct oc3_regs* regs) fore200e 1742 drivers/atm/fore200e.c struct host_cmdq* cmdq = &fore200e->host_cmdq; fore200e 1748 drivers/atm/fore200e.c oc3_regs_dma_addr = fore200e->bus->dma_map(fore200e, regs, sizeof(struct oc3_regs), DMA_FROM_DEVICE); fore200e 1757 drivers/atm/fore200e.c fore200e->bus->write(oc3_regs_dma_addr, &entry->cp_entry->cmd.oc3_block.regs_haddr); fore200e 1761 drivers/atm/fore200e.c fore200e->bus->write(*(u32*)&opcode, (u32*)&entry->cp_entry->cmd.oc3_block.opcode); fore200e 1763 drivers/atm/fore200e.c ok = fore200e_poll(fore200e, entry->status, STATUS_COMPLETE, 400); fore200e 1767 drivers/atm/fore200e.c fore200e->bus->dma_unmap(fore200e, oc3_regs_dma_addr, sizeof(struct oc3_regs), DMA_FROM_DEVICE); fore200e 1770 drivers/atm/fore200e.c printk(FORE200E "unable to get OC-3 regs of device %s\n", fore200e->name); fore200e 1780 drivers/atm/fore200e.c fore200e_set_oc3(struct fore200e* fore200e, u32 reg, u32 value, u32 mask) fore200e 1782 drivers/atm/fore200e.c struct host_cmdq* cmdq = &fore200e->host_cmdq; fore200e 1796 drivers/atm/fore200e.c fore200e->bus->write(0, &entry->cp_entry->cmd.oc3_block.regs_haddr); fore200e 1800 drivers/atm/fore200e.c fore200e->bus->write(*(u32*)&opcode, (u32 __iomem *)&entry->cp_entry->cmd.oc3_block.opcode); fore200e 1802 drivers/atm/fore200e.c ok = fore200e_poll(fore200e, entry->status, STATUS_COMPLETE, 400); fore200e 1807 drivers/atm/fore200e.c printk(FORE200E "unable to set OC-3 reg 0x%02x of device %s\n", reg, fore200e->name); fore200e 1816 drivers/atm/fore200e.c fore200e_setloop(struct fore200e* fore200e, int loop_mode) fore200e 1843 drivers/atm/fore200e.c error = fore200e_set_oc3(fore200e, SUNI_MCT, mct_value, mct_mask); fore200e 1845 drivers/atm/fore200e.c fore200e->loop_mode = loop_mode; fore200e 1852 drivers/atm/fore200e.c fore200e_fetch_stats(struct fore200e* fore200e, struct sonet_stats __user *arg) fore200e 1856 drivers/atm/fore200e.c if (fore200e_getstats(fore200e) < 0) fore200e 1859 drivers/atm/fore200e.c tmp.section_bip = be32_to_cpu(fore200e->stats->oc3.section_bip8_errors); fore200e 1860 drivers/atm/fore200e.c tmp.line_bip = be32_to_cpu(fore200e->stats->oc3.line_bip24_errors); fore200e 1861 drivers/atm/fore200e.c tmp.path_bip = be32_to_cpu(fore200e->stats->oc3.path_bip8_errors); fore200e 1862 drivers/atm/fore200e.c tmp.line_febe = be32_to_cpu(fore200e->stats->oc3.line_febe_errors); fore200e 1863 drivers/atm/fore200e.c tmp.path_febe = be32_to_cpu(fore200e->stats->oc3.path_febe_errors); fore200e 1864 drivers/atm/fore200e.c tmp.corr_hcs = be32_to_cpu(fore200e->stats->oc3.corr_hcs_errors); fore200e 1865 drivers/atm/fore200e.c tmp.uncorr_hcs = be32_to_cpu(fore200e->stats->oc3.ucorr_hcs_errors); fore200e 1866 drivers/atm/fore200e.c tmp.tx_cells = be32_to_cpu(fore200e->stats->aal0.cells_transmitted) + fore200e 1867 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal34.cells_transmitted) + fore200e 1868 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal5.cells_transmitted); fore200e 1869 drivers/atm/fore200e.c tmp.rx_cells = be32_to_cpu(fore200e->stats->aal0.cells_received) + fore200e 1870 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal34.cells_received) + fore200e 1871 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal5.cells_received); fore200e 1883 drivers/atm/fore200e.c struct fore200e* fore200e = FORE200E_DEV(dev); fore200e 1890 drivers/atm/fore200e.c return fore200e_fetch_stats(fore200e, (struct sonet_stats __user *)arg); fore200e 1896 drivers/atm/fore200e.c return fore200e_setloop(fore200e, (int)(unsigned long)arg); fore200e 1899 drivers/atm/fore200e.c return put_user(fore200e->loop_mode, (int __user *)arg) ? -EFAULT : 0; fore200e 1913 drivers/atm/fore200e.c struct fore200e* fore200e = FORE200E_DEV(vcc->dev); fore200e 1929 drivers/atm/fore200e.c flags, fore200e->available_cell_rate); fore200e 1933 drivers/atm/fore200e.c mutex_lock(&fore200e->rate_mtx); fore200e 1934 drivers/atm/fore200e.c if (fore200e->available_cell_rate + vcc->qos.txtp.max_pcr < qos->txtp.max_pcr) { fore200e 1935 drivers/atm/fore200e.c mutex_unlock(&fore200e->rate_mtx); fore200e 1939 drivers/atm/fore200e.c fore200e->available_cell_rate += vcc->qos.txtp.max_pcr; fore200e 1940 drivers/atm/fore200e.c fore200e->available_cell_rate -= qos->txtp.max_pcr; fore200e 1942 drivers/atm/fore200e.c mutex_unlock(&fore200e->rate_mtx); fore200e 1958 drivers/atm/fore200e.c static int fore200e_irq_request(struct fore200e *fore200e) fore200e 1960 drivers/atm/fore200e.c if (request_irq(fore200e->irq, fore200e_interrupt, IRQF_SHARED, fore200e->name, fore200e->atm_dev) < 0) { fore200e 1963 drivers/atm/fore200e.c fore200e_irq_itoa(fore200e->irq), fore200e->name); fore200e 1968 drivers/atm/fore200e.c fore200e_irq_itoa(fore200e->irq), fore200e->name); fore200e 1971 drivers/atm/fore200e.c tasklet_init(&fore200e->tx_tasklet, fore200e_tx_tasklet, (unsigned long)fore200e); fore200e 1972 drivers/atm/fore200e.c tasklet_init(&fore200e->rx_tasklet, fore200e_rx_tasklet, (unsigned long)fore200e); fore200e 1975 drivers/atm/fore200e.c fore200e->state = FORE200E_STATE_IRQ; fore200e 1980 drivers/atm/fore200e.c static int fore200e_get_esi(struct fore200e *fore200e) fore200e 1988 drivers/atm/fore200e.c ok = fore200e->bus->prom_read(fore200e, prom); fore200e 1995 drivers/atm/fore200e.c fore200e->name, fore200e 2000 drivers/atm/fore200e.c fore200e->esi[ i ] = fore200e->atm_dev->esi[ i ] = prom->mac_addr[ i + 2 ]; fore200e 2009 drivers/atm/fore200e.c static int fore200e_alloc_rx_buf(struct fore200e *fore200e) fore200e 2019 drivers/atm/fore200e.c bsq = &fore200e->host_bsq[ scheme ][ magn ]; fore200e 2045 drivers/atm/fore200e.c if (fore200e_chunk_alloc(fore200e, fore200e 2046 drivers/atm/fore200e.c &buffer[ i ].data, size, fore200e->bus->buffer_alignment, fore200e 2050 drivers/atm/fore200e.c fore200e_chunk_free(fore200e, &buffer[ --i ].data); fore200e 2069 drivers/atm/fore200e.c fore200e->state = FORE200E_STATE_ALLOC_BUF; fore200e 2074 drivers/atm/fore200e.c static int fore200e_init_bs_queue(struct fore200e *fore200e) fore200e 2086 drivers/atm/fore200e.c bsq = &fore200e->host_bsq[ scheme ][ magn ]; fore200e 2089 drivers/atm/fore200e.c if (fore200e_dma_chunk_alloc(fore200e, fore200e 2093 drivers/atm/fore200e.c fore200e->bus->status_alignment) < 0) { fore200e 2098 drivers/atm/fore200e.c if (fore200e_dma_chunk_alloc(fore200e, fore200e 2102 drivers/atm/fore200e.c fore200e->bus->descr_alignment) < 0) { fore200e 2104 drivers/atm/fore200e.c fore200e_dma_chunk_free(fore200e, &bsq->status); fore200e 2109 drivers/atm/fore200e.c cp_entry = fore200e->virt_base + fore200e 2110 drivers/atm/fore200e.c fore200e->bus->read(&fore200e->cp_queues->cp_bsq[ scheme ][ magn ]); fore200e 2125 drivers/atm/fore200e.c fore200e->bus->write(FORE200E_DMA_INDEX(bsq->status.dma_addr, enum status, i), fore200e 2131 drivers/atm/fore200e.c fore200e->state = FORE200E_STATE_INIT_BSQ; fore200e 2136 drivers/atm/fore200e.c static int fore200e_init_rx_queue(struct fore200e *fore200e) fore200e 2138 drivers/atm/fore200e.c struct host_rxq* rxq = &fore200e->host_rxq; fore200e 2145 drivers/atm/fore200e.c if (fore200e_dma_chunk_alloc(fore200e, fore200e 2149 drivers/atm/fore200e.c fore200e->bus->status_alignment) < 0) { fore200e 2154 drivers/atm/fore200e.c if (fore200e_dma_chunk_alloc(fore200e, fore200e 2158 drivers/atm/fore200e.c fore200e->bus->descr_alignment) < 0) { fore200e 2160 drivers/atm/fore200e.c fore200e_dma_chunk_free(fore200e, &rxq->status); fore200e 2165 drivers/atm/fore200e.c cp_entry = fore200e->virt_base + fore200e->bus->read(&fore200e->cp_queues->cp_rxq); fore200e 2180 drivers/atm/fore200e.c fore200e->bus->write(FORE200E_DMA_INDEX(rxq->status.dma_addr, enum status, i), fore200e 2183 drivers/atm/fore200e.c fore200e->bus->write(FORE200E_DMA_INDEX(rxq->rpd.dma_addr, struct rpd, i), fore200e 2190 drivers/atm/fore200e.c fore200e->state = FORE200E_STATE_INIT_RXQ; fore200e 2195 drivers/atm/fore200e.c static int fore200e_init_tx_queue(struct fore200e *fore200e) fore200e 2197 drivers/atm/fore200e.c struct host_txq* txq = &fore200e->host_txq; fore200e 2204 drivers/atm/fore200e.c if (fore200e_dma_chunk_alloc(fore200e, fore200e 2208 drivers/atm/fore200e.c fore200e->bus->status_alignment) < 0) { fore200e 2213 drivers/atm/fore200e.c if (fore200e_dma_chunk_alloc(fore200e, fore200e 2217 drivers/atm/fore200e.c fore200e->bus->descr_alignment) < 0) { fore200e 2219 drivers/atm/fore200e.c fore200e_dma_chunk_free(fore200e, &txq->status); fore200e 2224 drivers/atm/fore200e.c cp_entry = fore200e->virt_base + fore200e->bus->read(&fore200e->cp_queues->cp_txq); fore200e 2239 drivers/atm/fore200e.c fore200e->bus->write(FORE200E_DMA_INDEX(txq->status.dma_addr, enum status, i), fore200e 2252 drivers/atm/fore200e.c fore200e->state = FORE200E_STATE_INIT_TXQ; fore200e 2257 drivers/atm/fore200e.c static int fore200e_init_cmd_queue(struct fore200e *fore200e) fore200e 2259 drivers/atm/fore200e.c struct host_cmdq* cmdq = &fore200e->host_cmdq; fore200e 2266 drivers/atm/fore200e.c if (fore200e_dma_chunk_alloc(fore200e, fore200e 2270 drivers/atm/fore200e.c fore200e->bus->status_alignment) < 0) { fore200e 2275 drivers/atm/fore200e.c cp_entry = fore200e->virt_base + fore200e->bus->read(&fore200e->cp_queues->cp_cmdq); fore200e 2286 drivers/atm/fore200e.c fore200e->bus->write(FORE200E_DMA_INDEX(cmdq->status.dma_addr, enum status, i), fore200e 2293 drivers/atm/fore200e.c fore200e->state = FORE200E_STATE_INIT_CMDQ; fore200e 2298 drivers/atm/fore200e.c static void fore200e_param_bs_queue(struct fore200e *fore200e, fore200e 2303 drivers/atm/fore200e.c struct bs_spec __iomem * bs_spec = &fore200e->cp_queues->init.bs_spec[ scheme ][ magn ]; fore200e 2305 drivers/atm/fore200e.c fore200e->bus->write(queue_length, &bs_spec->queue_length); fore200e 2306 drivers/atm/fore200e.c fore200e->bus->write(fore200e_rx_buf_size[ scheme ][ magn ], &bs_spec->buffer_size); fore200e 2307 drivers/atm/fore200e.c fore200e->bus->write(pool_size, &bs_spec->pool_size); fore200e 2308 drivers/atm/fore200e.c fore200e->bus->write(supply_blksize, &bs_spec->supply_blksize); fore200e 2312 drivers/atm/fore200e.c static int fore200e_initialize(struct fore200e *fore200e) fore200e 2317 drivers/atm/fore200e.c DPRINTK(2, "device %s being initialized\n", fore200e->name); fore200e 2319 drivers/atm/fore200e.c mutex_init(&fore200e->rate_mtx); fore200e 2320 drivers/atm/fore200e.c spin_lock_init(&fore200e->q_lock); fore200e 2322 drivers/atm/fore200e.c cpq = fore200e->cp_queues = fore200e->virt_base + FORE200E_CP_QUEUES_OFFSET; fore200e 2325 drivers/atm/fore200e.c fore200e->bus->write(1, &cpq->imask); fore200e 2327 drivers/atm/fore200e.c if (fore200e->bus->irq_enable) fore200e 2328 drivers/atm/fore200e.c fore200e->bus->irq_enable(fore200e); fore200e 2330 drivers/atm/fore200e.c fore200e->bus->write(NBR_CONNECT, &cpq->init.num_connect); fore200e 2332 drivers/atm/fore200e.c fore200e->bus->write(QUEUE_SIZE_CMD, &cpq->init.cmd_queue_len); fore200e 2333 drivers/atm/fore200e.c fore200e->bus->write(QUEUE_SIZE_RX, &cpq->init.rx_queue_len); fore200e 2334 drivers/atm/fore200e.c fore200e->bus->write(QUEUE_SIZE_TX, &cpq->init.tx_queue_len); fore200e 2336 drivers/atm/fore200e.c fore200e->bus->write(RSD_EXTENSION, &cpq->init.rsd_extension); fore200e 2337 drivers/atm/fore200e.c fore200e->bus->write(TSD_EXTENSION, &cpq->init.tsd_extension); fore200e 2341 drivers/atm/fore200e.c fore200e_param_bs_queue(fore200e, scheme, magn, fore200e 2347 drivers/atm/fore200e.c fore200e->bus->write(STATUS_PENDING, &cpq->init.status); fore200e 2348 drivers/atm/fore200e.c fore200e->bus->write(OPCODE_INITIALIZE, &cpq->init.opcode); fore200e 2350 drivers/atm/fore200e.c ok = fore200e_io_poll(fore200e, &cpq->init.status, STATUS_COMPLETE, 3000); fore200e 2352 drivers/atm/fore200e.c printk(FORE200E "device %s initialization failed\n", fore200e->name); fore200e 2356 drivers/atm/fore200e.c printk(FORE200E "device %s initialized\n", fore200e->name); fore200e 2358 drivers/atm/fore200e.c fore200e->state = FORE200E_STATE_INITIALIZE; fore200e 2363 drivers/atm/fore200e.c static void fore200e_monitor_putc(struct fore200e *fore200e, char c) fore200e 2365 drivers/atm/fore200e.c struct cp_monitor __iomem * monitor = fore200e->cp_monitor; fore200e 2370 drivers/atm/fore200e.c fore200e->bus->write(((u32) c) | FORE200E_CP_MONITOR_UART_AVAIL, &monitor->soft_uart.send); fore200e 2374 drivers/atm/fore200e.c static int fore200e_monitor_getc(struct fore200e *fore200e) fore200e 2376 drivers/atm/fore200e.c struct cp_monitor __iomem * monitor = fore200e->cp_monitor; fore200e 2382 drivers/atm/fore200e.c c = (int) fore200e->bus->read(&monitor->soft_uart.recv); fore200e 2386 drivers/atm/fore200e.c fore200e->bus->write(FORE200E_CP_MONITOR_UART_FREE, &monitor->soft_uart.recv); fore200e 2398 drivers/atm/fore200e.c static void fore200e_monitor_puts(struct fore200e *fore200e, char *str) fore200e 2403 drivers/atm/fore200e.c while (fore200e_monitor_getc(fore200e) >= 0); fore200e 2405 drivers/atm/fore200e.c fore200e_monitor_putc(fore200e, *str++); fore200e 2408 drivers/atm/fore200e.c while (fore200e_monitor_getc(fore200e) >= 0); fore200e 2417 drivers/atm/fore200e.c static int fore200e_load_and_start_fw(struct fore200e *fore200e) fore200e 2427 drivers/atm/fore200e.c sprintf(buf, "%s%s", fore200e->bus->proc_name, FW_EXT); fore200e 2428 drivers/atm/fore200e.c if ((err = request_firmware(&firmware, buf, fore200e->dev)) < 0) { fore200e 2429 drivers/atm/fore200e.c printk(FORE200E "problem loading firmware image %s\n", fore200e->bus->model_name); fore200e 2436 drivers/atm/fore200e.c load_addr = fore200e->virt_base + le32_to_cpu(fw_header->load_offset); fore200e 2439 drivers/atm/fore200e.c fore200e->name, load_addr, fw_size); fore200e 2442 drivers/atm/fore200e.c printk(FORE200E "corrupted %s firmware image\n", fore200e->bus->model_name); fore200e 2447 drivers/atm/fore200e.c fore200e->bus->write(le32_to_cpu(*fw_data), load_addr); fore200e 2449 drivers/atm/fore200e.c DPRINTK(2, "device %s firmware being started\n", fore200e->name); fore200e 2457 drivers/atm/fore200e.c fore200e_monitor_puts(fore200e, buf); fore200e 2459 drivers/atm/fore200e.c if (fore200e_io_poll(fore200e, &fore200e->cp_monitor->bstat, BSTAT_CP_RUNNING, 1000) == 0) { fore200e 2460 drivers/atm/fore200e.c printk(FORE200E "device %s firmware didn't start\n", fore200e->name); fore200e 2464 drivers/atm/fore200e.c printk(FORE200E "device %s firmware started\n", fore200e->name); fore200e 2466 drivers/atm/fore200e.c fore200e->state = FORE200E_STATE_START_FW; fore200e 2475 drivers/atm/fore200e.c static int fore200e_register(struct fore200e *fore200e, struct device *parent) fore200e 2479 drivers/atm/fore200e.c DPRINTK(2, "device %s being registered\n", fore200e->name); fore200e 2481 drivers/atm/fore200e.c atm_dev = atm_dev_register(fore200e->bus->proc_name, parent, &fore200e_ops, fore200e 2484 drivers/atm/fore200e.c printk(FORE200E "unable to register device %s\n", fore200e->name); fore200e 2488 drivers/atm/fore200e.c atm_dev->dev_data = fore200e; fore200e 2489 drivers/atm/fore200e.c fore200e->atm_dev = atm_dev; fore200e 2494 drivers/atm/fore200e.c fore200e->available_cell_rate = ATM_OC3_PCR; fore200e 2496 drivers/atm/fore200e.c fore200e->state = FORE200E_STATE_REGISTER; fore200e 2501 drivers/atm/fore200e.c static int fore200e_init(struct fore200e *fore200e, struct device *parent) fore200e 2503 drivers/atm/fore200e.c if (fore200e_register(fore200e, parent) < 0) fore200e 2506 drivers/atm/fore200e.c if (fore200e->bus->configure(fore200e) < 0) fore200e 2509 drivers/atm/fore200e.c if (fore200e->bus->map(fore200e) < 0) fore200e 2512 drivers/atm/fore200e.c if (fore200e_reset(fore200e, 1) < 0) fore200e 2515 drivers/atm/fore200e.c if (fore200e_load_and_start_fw(fore200e) < 0) fore200e 2518 drivers/atm/fore200e.c if (fore200e_initialize(fore200e) < 0) fore200e 2521 drivers/atm/fore200e.c if (fore200e_init_cmd_queue(fore200e) < 0) fore200e 2524 drivers/atm/fore200e.c if (fore200e_init_tx_queue(fore200e) < 0) fore200e 2527 drivers/atm/fore200e.c if (fore200e_init_rx_queue(fore200e) < 0) fore200e 2530 drivers/atm/fore200e.c if (fore200e_init_bs_queue(fore200e) < 0) fore200e 2533 drivers/atm/fore200e.c if (fore200e_alloc_rx_buf(fore200e) < 0) fore200e 2536 drivers/atm/fore200e.c if (fore200e_get_esi(fore200e) < 0) fore200e 2539 drivers/atm/fore200e.c if (fore200e_irq_request(fore200e) < 0) fore200e 2542 drivers/atm/fore200e.c fore200e_supply(fore200e); fore200e 2545 drivers/atm/fore200e.c fore200e->state = FORE200E_STATE_COMPLETE; fore200e 2554 drivers/atm/fore200e.c struct fore200e *fore200e; fore200e 2562 drivers/atm/fore200e.c fore200e = kzalloc(sizeof(struct fore200e), GFP_KERNEL); fore200e 2563 drivers/atm/fore200e.c if (!fore200e) fore200e 2566 drivers/atm/fore200e.c fore200e->bus = &fore200e_sbus_ops; fore200e 2567 drivers/atm/fore200e.c fore200e->dev = &op->dev; fore200e 2568 drivers/atm/fore200e.c fore200e->irq = op->archdata.irqs[0]; fore200e 2569 drivers/atm/fore200e.c fore200e->phys_base = op->resource[0].start; fore200e 2571 drivers/atm/fore200e.c sprintf(fore200e->name, "SBA-200E-%d", index); fore200e 2573 drivers/atm/fore200e.c err = fore200e_init(fore200e, &op->dev); fore200e 2575 drivers/atm/fore200e.c fore200e_shutdown(fore200e); fore200e 2576 drivers/atm/fore200e.c kfree(fore200e); fore200e 2581 drivers/atm/fore200e.c dev_set_drvdata(&op->dev, fore200e); fore200e 2588 drivers/atm/fore200e.c struct fore200e *fore200e = dev_get_drvdata(&op->dev); fore200e 2590 drivers/atm/fore200e.c fore200e_shutdown(fore200e); fore200e 2591 drivers/atm/fore200e.c kfree(fore200e); fore200e 2618 drivers/atm/fore200e.c struct fore200e* fore200e; fore200e 2632 drivers/atm/fore200e.c fore200e = kzalloc(sizeof(struct fore200e), GFP_KERNEL); fore200e 2633 drivers/atm/fore200e.c if (fore200e == NULL) { fore200e 2638 drivers/atm/fore200e.c fore200e->bus = &fore200e_pci_ops; fore200e 2639 drivers/atm/fore200e.c fore200e->dev = &pci_dev->dev; fore200e 2640 drivers/atm/fore200e.c fore200e->irq = pci_dev->irq; fore200e 2641 drivers/atm/fore200e.c fore200e->phys_base = pci_resource_start(pci_dev, 0); fore200e 2643 drivers/atm/fore200e.c sprintf(fore200e->name, "PCA-200E-%d", index - 1); fore200e 2648 drivers/atm/fore200e.c fore200e->phys_base, fore200e_irq_itoa(fore200e->irq)); fore200e 2650 drivers/atm/fore200e.c sprintf(fore200e->name, "PCA-200E-%d", index); fore200e 2652 drivers/atm/fore200e.c err = fore200e_init(fore200e, &pci_dev->dev); fore200e 2654 drivers/atm/fore200e.c fore200e_shutdown(fore200e); fore200e 2659 drivers/atm/fore200e.c pci_set_drvdata(pci_dev, fore200e); fore200e 2665 drivers/atm/fore200e.c kfree(fore200e); fore200e 2674 drivers/atm/fore200e.c struct fore200e *fore200e; fore200e 2676 drivers/atm/fore200e.c fore200e = pci_get_drvdata(pci_dev); fore200e 2678 drivers/atm/fore200e.c fore200e_shutdown(fore200e); fore200e 2679 drivers/atm/fore200e.c kfree(fore200e); fore200e 2736 drivers/atm/fore200e.c struct fore200e* fore200e = FORE200E_DEV(dev); fore200e 2744 drivers/atm/fore200e.c if (fore200e_getstats(fore200e) < 0) fore200e 2749 drivers/atm/fore200e.c " internal name:\t\t%s\n", fore200e->name); fore200e 2752 drivers/atm/fore200e.c if (fore200e->bus->proc_read) fore200e 2753 drivers/atm/fore200e.c len += fore200e->bus->proc_read(fore200e, page + len); fore200e 2761 drivers/atm/fore200e.c fore200e_irq_itoa(fore200e->irq), fore200e 2762 drivers/atm/fore200e.c (void*)fore200e->phys_base, fore200e 2763 drivers/atm/fore200e.c fore200e->virt_base, fore200e 2764 drivers/atm/fore200e.c fore200e->esi, fore200e 2765 drivers/atm/fore200e.c fore200e->esi[4] * 256 + fore200e->esi[5]); fore200e 2776 drivers/atm/fore200e.c fore200e->host_bsq[ BUFFER_SCHEME_ONE ][ BUFFER_MAGN_SMALL ].freebuf_count, fore200e 2777 drivers/atm/fore200e.c fore200e->host_bsq[ BUFFER_SCHEME_ONE ][ BUFFER_MAGN_LARGE ].freebuf_count, fore200e 2778 drivers/atm/fore200e.c fore200e->host_bsq[ BUFFER_SCHEME_TWO ][ BUFFER_MAGN_SMALL ].freebuf_count, fore200e 2779 drivers/atm/fore200e.c fore200e->host_bsq[ BUFFER_SCHEME_TWO ][ BUFFER_MAGN_LARGE ].freebuf_count); fore200e 2782 drivers/atm/fore200e.c u32 hb = fore200e->bus->read(&fore200e->cp_queues->heartbeat); fore200e 2813 drivers/atm/fore200e.c u32 fw_release = fore200e->bus->read(&fore200e->cp_queues->fw_release); fore200e 2814 drivers/atm/fore200e.c u32 mon960_release = fore200e->bus->read(&fore200e->cp_queues->mon960_release); fore200e 2815 drivers/atm/fore200e.c u32 oc3_revision = fore200e->bus->read(&fore200e->cp_queues->oc3_revision); fore200e 2816 drivers/atm/fore200e.c u32 media_index = FORE200E_MEDIA_INDEX(fore200e->bus->read(&fore200e->cp_queues->media_type)); fore200e 2822 drivers/atm/fore200e.c switch (fore200e->loop_mode) { fore200e 2846 drivers/atm/fore200e.c struct cp_monitor __iomem * cp_monitor = fore200e->cp_monitor; fore200e 2853 drivers/atm/fore200e.c fore200e->bus->read(&cp_monitor->mon_version), fore200e 2854 drivers/atm/fore200e.c fore200e->bus->read(&cp_monitor->bstat)); fore200e 2864 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->phy.crc_header_errors), fore200e 2865 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->phy.framing_errors)); fore200e 2877 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->oc3.section_bip8_errors), fore200e 2878 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->oc3.path_bip8_errors), fore200e 2879 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->oc3.line_bip24_errors), fore200e 2880 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->oc3.line_febe_errors), fore200e 2881 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->oc3.path_febe_errors), fore200e 2882 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->oc3.corr_hcs_errors), fore200e 2883 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->oc3.ucorr_hcs_errors)); fore200e 2894 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->atm.cells_transmitted), fore200e 2895 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->atm.cells_received), fore200e 2896 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->atm.vpi_bad_range), fore200e 2897 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->atm.vpi_no_conn), fore200e 2898 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->atm.vci_bad_range), fore200e 2899 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->atm.vci_no_conn)); fore200e 2907 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal0.cells_transmitted), fore200e 2908 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal0.cells_received), fore200e 2909 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal0.cells_dropped)); fore200e 2925 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal34.cells_transmitted), fore200e 2926 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal34.cells_received), fore200e 2927 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal34.cells_dropped), fore200e 2928 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal34.cells_crc_errors), fore200e 2929 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal34.cells_protocol_errors), fore200e 2930 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal34.cspdus_transmitted), fore200e 2931 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal34.cspdus_received), fore200e 2932 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal34.cspdus_dropped), fore200e 2933 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal34.cspdus_protocol_errors)); fore200e 2949 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal5.cells_transmitted), fore200e 2950 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal5.cells_received), fore200e 2951 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal5.cells_dropped), fore200e 2952 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal5.congestion_experienced), fore200e 2953 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal5.cspdus_transmitted), fore200e 2954 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal5.cspdus_received), fore200e 2955 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal5.cspdus_dropped), fore200e 2956 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal5.cspdus_crc_errors), fore200e 2957 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aal5.cspdus_protocol_errors)); fore200e 2968 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aux.small_b1_failed), fore200e 2969 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aux.large_b1_failed), fore200e 2970 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aux.small_b2_failed), fore200e 2971 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aux.large_b2_failed), fore200e 2972 drivers/atm/fore200e.c be32_to_cpu(fore200e->stats->aux.rpd_alloc_failed), fore200e 2973 drivers/atm/fore200e.c fore200e->tx_sat); fore200e 2978 drivers/atm/fore200e.c fore200e->stats->aux.receive_carrier ? "ON" : "OFF!"); fore200e 2988 drivers/atm/fore200e.c vcc = fore200e->vc_map[i].vcc; fore200e 2993 drivers/atm/fore200e.c spin_lock_irqsave(&fore200e->q_lock, flags); fore200e 3011 drivers/atm/fore200e.c spin_unlock_irqrestore(&fore200e->q_lock, flags); fore200e 3015 drivers/atm/fore200e.c spin_unlock_irqrestore(&fore200e->q_lock, flags); fore200e 65 drivers/atm/fore200e.h #define FORE200E_DEV(d) ((struct fore200e*)((d)->dev_data)) fore200e 796 drivers/atm/fore200e.h struct fore200e; fore200e 808 drivers/atm/fore200e.h int (*configure)(struct fore200e*); fore200e 809 drivers/atm/fore200e.h int (*map)(struct fore200e*); fore200e 810 drivers/atm/fore200e.h void (*reset)(struct fore200e*); fore200e 811 drivers/atm/fore200e.h int (*prom_read)(struct fore200e*, struct prom_data*); fore200e 812 drivers/atm/fore200e.h void (*unmap)(struct fore200e*); fore200e 813 drivers/atm/fore200e.h void (*irq_enable)(struct fore200e*); fore200e 814 drivers/atm/fore200e.h int (*irq_check)(struct fore200e*); fore200e 815 drivers/atm/fore200e.h void (*irq_ack)(struct fore200e*); fore200e 816 drivers/atm/fore200e.h int (*proc_read)(struct fore200e*, char*); fore200e 826 drivers/atm/fore200e.h #define FORE200E_VC_MAP(fore200e, vpi, vci) \ fore200e 827 drivers/atm/fore200e.h (& (fore200e)->vc_map[ ((vpi) << FORE200E_VCI_BITS) | (vci) ])