Lines Matching refs:fore200e
178 fore200e_chunk_alloc(struct fore200e* fore200e, struct chunk* chunk, int size, int alignment, int d… in fore200e_chunk_alloc() argument
198 …chunk->dma_addr = fore200e->bus->dma_map(fore200e, chunk->align_addr, chunk->align_size, direction… in fore200e_chunk_alloc()
207 fore200e_chunk_free(struct fore200e* fore200e, struct chunk* chunk) in fore200e_chunk_free() argument
209 fore200e->bus->dma_unmap(fore200e, chunk->dma_addr, chunk->dma_size, chunk->direction); in fore200e_chunk_free()
224 fore200e_poll(struct fore200e* fore200e, volatile u32* addr, u32 val, int msecs) in fore200e_poll() argument
248 fore200e_io_poll(struct fore200e* fore200e, volatile u32 __iomem *addr, u32 val, int msecs) in fore200e_io_poll() argument
254 if ((ok = (fore200e->bus->read(addr) == val))) in fore200e_io_poll()
262 fore200e->bus->read(addr), val); in fore200e_io_poll()
271 fore200e_free_rx_buf(struct fore200e* fore200e) in fore200e_free_rx_buf() argument
279 if ((buffer = fore200e->host_bsq[ scheme ][ magn ].buffer) != NULL) { in fore200e_free_rx_buf()
286 fore200e_chunk_free(fore200e, data); in fore200e_free_rx_buf()
295 fore200e_uninit_bs_queue(struct fore200e* fore200e) in fore200e_uninit_bs_queue() argument
302 struct chunk* status = &fore200e->host_bsq[ scheme ][ magn ].status; in fore200e_uninit_bs_queue()
303 struct chunk* rbd_block = &fore200e->host_bsq[ scheme ][ magn ].rbd_block; in fore200e_uninit_bs_queue()
306 fore200e->bus->dma_chunk_free(fore200e, status); in fore200e_uninit_bs_queue()
309 fore200e->bus->dma_chunk_free(fore200e, rbd_block); in fore200e_uninit_bs_queue()
316 fore200e_reset(struct fore200e* fore200e, int diag) in fore200e_reset() argument
320 fore200e->cp_monitor = fore200e->virt_base + FORE200E_CP_MONITOR_OFFSET; in fore200e_reset()
322 fore200e->bus->write(BSTAT_COLD_START, &fore200e->cp_monitor->bstat); in fore200e_reset()
324 fore200e->bus->reset(fore200e); in fore200e_reset()
327 ok = fore200e_io_poll(fore200e, &fore200e->cp_monitor->bstat, BSTAT_SELFTEST_OK, 1000); in fore200e_reset()
330 printk(FORE200E "device %s self-test failed\n", fore200e->name); in fore200e_reset()
334 printk(FORE200E "device %s self-test passed\n", fore200e->name); in fore200e_reset()
336 fore200e->state = FORE200E_STATE_RESET; in fore200e_reset()
344 fore200e_shutdown(struct fore200e* fore200e) in fore200e_shutdown() argument
347 fore200e->name, fore200e->phys_base, in fore200e_shutdown()
348 fore200e_irq_itoa(fore200e->irq)); in fore200e_shutdown()
350 if (fore200e->state > FORE200E_STATE_RESET) { in fore200e_shutdown()
352 fore200e_reset(fore200e, 0); in fore200e_shutdown()
356 switch(fore200e->state) { in fore200e_shutdown()
359 kfree(fore200e->stats); in fore200e_shutdown()
362 free_irq(fore200e->irq, fore200e->atm_dev); in fore200e_shutdown()
365 fore200e_free_rx_buf(fore200e); in fore200e_shutdown()
368 fore200e_uninit_bs_queue(fore200e); in fore200e_shutdown()
371 fore200e->bus->dma_chunk_free(fore200e, &fore200e->host_rxq.status); in fore200e_shutdown()
372 fore200e->bus->dma_chunk_free(fore200e, &fore200e->host_rxq.rpd); in fore200e_shutdown()
375 fore200e->bus->dma_chunk_free(fore200e, &fore200e->host_txq.status); in fore200e_shutdown()
376 fore200e->bus->dma_chunk_free(fore200e, &fore200e->host_txq.tpd); in fore200e_shutdown()
379 fore200e->bus->dma_chunk_free(fore200e, &fore200e->host_cmdq.status); in fore200e_shutdown()
391 fore200e->bus->unmap(fore200e); in fore200e_shutdown()
398 atm_dev_deregister(fore200e->atm_dev); in fore200e_shutdown()
426 fore200e_pca_dma_map(struct fore200e* fore200e, void* virt_addr, int size, int direction) in fore200e_pca_dma_map() argument
428 …u32 dma_addr = dma_map_single(&((struct pci_dev *) fore200e->bus_dev)->dev, virt_addr, size, direc… in fore200e_pca_dma_map()
438 fore200e_pca_dma_unmap(struct fore200e* fore200e, u32 dma_addr, int size, int direction) in fore200e_pca_dma_unmap() argument
443 dma_unmap_single(&((struct pci_dev *) fore200e->bus_dev)->dev, dma_addr, size, direction); in fore200e_pca_dma_unmap()
448 fore200e_pca_dma_sync_for_cpu(struct fore200e* fore200e, u32 dma_addr, int size, int direction) in fore200e_pca_dma_sync_for_cpu() argument
452 … dma_sync_single_for_cpu(&((struct pci_dev *) fore200e->bus_dev)->dev, dma_addr, size, direction); in fore200e_pca_dma_sync_for_cpu()
456 fore200e_pca_dma_sync_for_device(struct fore200e* fore200e, u32 dma_addr, int size, int direction) in fore200e_pca_dma_sync_for_device() argument
460 …dma_sync_single_for_device(&((struct pci_dev *) fore200e->bus_dev)->dev, dma_addr, size, direction… in fore200e_pca_dma_sync_for_device()
468 fore200e_pca_dma_chunk_alloc(struct fore200e* fore200e, struct chunk* chunk, in fore200e_pca_dma_chunk_alloc() argument
473 chunk->alloc_addr = dma_alloc_coherent(&((struct pci_dev *) fore200e->bus_dev)->dev, in fore200e_pca_dma_chunk_alloc()
490 fore200e_pca_dma_chunk_free(struct fore200e* fore200e, struct chunk* chunk) in fore200e_pca_dma_chunk_free() argument
492 dma_free_coherent(&((struct pci_dev *) fore200e->bus_dev)->dev, in fore200e_pca_dma_chunk_free()
500 fore200e_pca_irq_check(struct fore200e* fore200e) in fore200e_pca_irq_check() argument
503 int irq_posted = readl(fore200e->regs.pca.psr); in fore200e_pca_irq_check()
506 if (irq_posted && (readl(fore200e->regs.pca.hcr) & PCA200E_HCR_OUTFULL)) { in fore200e_pca_irq_check()
507 DPRINTK(2,"FIFO OUT full, device %d\n", fore200e->atm_dev->number); in fore200e_pca_irq_check()
516 fore200e_pca_irq_ack(struct fore200e* fore200e) in fore200e_pca_irq_ack() argument
518 writel(PCA200E_HCR_CLRINTR, fore200e->regs.pca.hcr); in fore200e_pca_irq_ack()
523 fore200e_pca_reset(struct fore200e* fore200e) in fore200e_pca_reset() argument
525 writel(PCA200E_HCR_RESET, fore200e->regs.pca.hcr); in fore200e_pca_reset()
527 writel(0, fore200e->regs.pca.hcr); in fore200e_pca_reset()
531 static int fore200e_pca_map(struct fore200e* fore200e) in fore200e_pca_map() argument
533 DPRINTK(2, "device %s being mapped in memory\n", fore200e->name); in fore200e_pca_map()
535 fore200e->virt_base = ioremap(fore200e->phys_base, PCA200E_IOSPACE_LENGTH); in fore200e_pca_map()
537 if (fore200e->virt_base == NULL) { in fore200e_pca_map()
538 printk(FORE200E "can't map device %s\n", fore200e->name); in fore200e_pca_map()
542 DPRINTK(1, "device %s mapped to 0x%p\n", fore200e->name, fore200e->virt_base); in fore200e_pca_map()
545 fore200e->regs.pca.hcr = fore200e->virt_base + PCA200E_HCR_OFFSET; in fore200e_pca_map()
546 fore200e->regs.pca.imr = fore200e->virt_base + PCA200E_IMR_OFFSET; in fore200e_pca_map()
547 fore200e->regs.pca.psr = fore200e->virt_base + PCA200E_PSR_OFFSET; in fore200e_pca_map()
549 fore200e->state = FORE200E_STATE_MAP; in fore200e_pca_map()
555 fore200e_pca_unmap(struct fore200e* fore200e) in fore200e_pca_unmap() argument
557 DPRINTK(2, "device %s being unmapped from memory\n", fore200e->name); in fore200e_pca_unmap()
559 if (fore200e->virt_base != NULL) in fore200e_pca_unmap()
560 iounmap(fore200e->virt_base); in fore200e_pca_unmap()
564 static int fore200e_pca_configure(struct fore200e *fore200e) in fore200e_pca_configure() argument
566 struct pci_dev* pci_dev = (struct pci_dev*)fore200e->bus_dev; in fore200e_pca_configure()
569 DPRINTK(2, "device %s being configured\n", fore200e->name); in fore200e_pca_configure()
599 fore200e->state = FORE200E_STATE_CONFIGURE; in fore200e_pca_configure()
605 fore200e_pca_prom_read(struct fore200e* fore200e, struct prom_data* prom) in fore200e_pca_prom_read() argument
607 struct host_cmdq* cmdq = &fore200e->host_cmdq; in fore200e_pca_prom_read()
618 prom_dma = fore200e->bus->dma_map(fore200e, prom, sizeof(struct prom_data), DMA_FROM_DEVICE); in fore200e_pca_prom_read()
620 fore200e->bus->write(prom_dma, &entry->cp_entry->cmd.prom_block.prom_haddr); in fore200e_pca_prom_read()
624 fore200e->bus->write(*(u32*)&opcode, (u32 __iomem *)&entry->cp_entry->cmd.prom_block.opcode); in fore200e_pca_prom_read()
626 ok = fore200e_poll(fore200e, entry->status, STATUS_COMPLETE, 400); in fore200e_pca_prom_read()
630 fore200e->bus->dma_unmap(fore200e, prom_dma, sizeof(struct prom_data), DMA_FROM_DEVICE); in fore200e_pca_prom_read()
633 printk(FORE200E "unable to get PROM data from device %s\n", fore200e->name); in fore200e_pca_prom_read()
651 fore200e_pca_proc_read(struct fore200e* fore200e, char *page) in fore200e_pca_proc_read() argument
653 struct pci_dev* pci_dev = (struct pci_dev*)fore200e->bus_dev; in fore200e_pca_proc_read()
674 static u32 fore200e_sba_dma_map(struct fore200e *fore200e, void* virt_addr, int size, int direction) in fore200e_sba_dma_map() argument
676 struct platform_device *op = fore200e->bus_dev; in fore200e_sba_dma_map()
687 static void fore200e_sba_dma_unmap(struct fore200e *fore200e, u32 dma_addr, int size, int direction) in fore200e_sba_dma_unmap() argument
689 struct platform_device *op = fore200e->bus_dev; in fore200e_sba_dma_unmap()
697 static void fore200e_sba_dma_sync_for_cpu(struct fore200e *fore200e, u32 dma_addr, int size, int di… in fore200e_sba_dma_sync_for_cpu() argument
699 struct platform_device *op = fore200e->bus_dev; in fore200e_sba_dma_sync_for_cpu()
706 static void fore200e_sba_dma_sync_for_device(struct fore200e *fore200e, u32 dma_addr, int size, int… in fore200e_sba_dma_sync_for_device() argument
708 struct platform_device *op = fore200e->bus_dev; in fore200e_sba_dma_sync_for_device()
718 static int fore200e_sba_dma_chunk_alloc(struct fore200e *fore200e, struct chunk *chunk, in fore200e_sba_dma_chunk_alloc() argument
721 struct platform_device *op = fore200e->bus_dev; in fore200e_sba_dma_chunk_alloc()
738 static void fore200e_sba_dma_chunk_free(struct fore200e *fore200e, struct chunk *chunk) in fore200e_sba_dma_chunk_free() argument
740 struct platform_device *op = fore200e->bus_dev; in fore200e_sba_dma_chunk_free()
746 static void fore200e_sba_irq_enable(struct fore200e *fore200e) in fore200e_sba_irq_enable() argument
748 u32 hcr = fore200e->bus->read(fore200e->regs.sba.hcr) & SBA200E_HCR_STICKY; in fore200e_sba_irq_enable()
749 fore200e->bus->write(hcr | SBA200E_HCR_INTR_ENA, fore200e->regs.sba.hcr); in fore200e_sba_irq_enable()
752 static int fore200e_sba_irq_check(struct fore200e *fore200e) in fore200e_sba_irq_check() argument
754 return fore200e->bus->read(fore200e->regs.sba.hcr) & SBA200E_HCR_INTR_REQ; in fore200e_sba_irq_check()
757 static void fore200e_sba_irq_ack(struct fore200e *fore200e) in fore200e_sba_irq_ack() argument
759 u32 hcr = fore200e->bus->read(fore200e->regs.sba.hcr) & SBA200E_HCR_STICKY; in fore200e_sba_irq_ack()
760 fore200e->bus->write(hcr | SBA200E_HCR_INTR_CLR, fore200e->regs.sba.hcr); in fore200e_sba_irq_ack()
763 static void fore200e_sba_reset(struct fore200e *fore200e) in fore200e_sba_reset() argument
765 fore200e->bus->write(SBA200E_HCR_RESET, fore200e->regs.sba.hcr); in fore200e_sba_reset()
767 fore200e->bus->write(0, fore200e->regs.sba.hcr); in fore200e_sba_reset()
770 static int __init fore200e_sba_map(struct fore200e *fore200e) in fore200e_sba_map() argument
772 struct platform_device *op = fore200e->bus_dev; in fore200e_sba_map()
776 fore200e->regs.sba.hcr = of_ioremap(&op->resource[0], 0, SBA200E_HCR_LENGTH, "SBA HCR"); in fore200e_sba_map()
777 fore200e->regs.sba.bsr = of_ioremap(&op->resource[1], 0, SBA200E_BSR_LENGTH, "SBA BSR"); in fore200e_sba_map()
778 fore200e->regs.sba.isr = of_ioremap(&op->resource[2], 0, SBA200E_ISR_LENGTH, "SBA ISR"); in fore200e_sba_map()
779 fore200e->virt_base = of_ioremap(&op->resource[3], 0, SBA200E_RAM_LENGTH, "SBA RAM"); in fore200e_sba_map()
781 if (!fore200e->virt_base) { in fore200e_sba_map()
782 printk(FORE200E "unable to map RAM of device %s\n", fore200e->name); in fore200e_sba_map()
786 DPRINTK(1, "device %s mapped to 0x%p\n", fore200e->name, fore200e->virt_base); in fore200e_sba_map()
788 fore200e->bus->write(0x02, fore200e->regs.sba.isr); /* XXX hardwired interrupt level */ in fore200e_sba_map()
796 fore200e->state = FORE200E_STATE_MAP; in fore200e_sba_map()
800 static void fore200e_sba_unmap(struct fore200e *fore200e) in fore200e_sba_unmap() argument
802 struct platform_device *op = fore200e->bus_dev; in fore200e_sba_unmap()
804 of_iounmap(&op->resource[0], fore200e->regs.sba.hcr, SBA200E_HCR_LENGTH); in fore200e_sba_unmap()
805 of_iounmap(&op->resource[1], fore200e->regs.sba.bsr, SBA200E_BSR_LENGTH); in fore200e_sba_unmap()
806 of_iounmap(&op->resource[2], fore200e->regs.sba.isr, SBA200E_ISR_LENGTH); in fore200e_sba_unmap()
807 of_iounmap(&op->resource[3], fore200e->virt_base, SBA200E_RAM_LENGTH); in fore200e_sba_unmap()
810 static int __init fore200e_sba_configure(struct fore200e *fore200e) in fore200e_sba_configure() argument
812 fore200e->state = FORE200E_STATE_CONFIGURE; in fore200e_sba_configure()
816 static int __init fore200e_sba_prom_read(struct fore200e *fore200e, struct prom_data *prom) in fore200e_sba_prom_read() argument
818 struct platform_device *op = fore200e->bus_dev; in fore200e_sba_prom_read()
840 static int fore200e_sba_proc_read(struct fore200e *fore200e, char *page) in fore200e_sba_proc_read() argument
842 struct platform_device *op = fore200e->bus_dev; in fore200e_sba_proc_read()
854 fore200e_tx_irq(struct fore200e* fore200e) in fore200e_tx_irq() argument
856 struct host_txq* txq = &fore200e->host_txq; in fore200e_tx_irq()
861 if (fore200e->host_txq.txing == 0) in fore200e_tx_irq()
879 fore200e->bus->dma_unmap(fore200e, entry->tpd->tsd[ 0 ].buffer, entry->tpd->tsd[ 0 ].length, in fore200e_tx_irq()
889 fore200e->atm_dev->number); in fore200e_tx_irq()
912 fore200e->atm_dev->number); in fore200e_tx_irq()
943 fore200e->host_txq.txing--; in fore200e_tx_irq()
993 fore200e_supply(struct fore200e* fore200e) in fore200e_supply() argument
1004 bsq = &fore200e->host_bsq[ scheme ][ magn ]; in fore200e_supply()
1043 fore200e->bus->write(entry->rbd_block_dma, &entry->cp_entry->rbd_block_haddr); in fore200e_supply()
1051 fore200e_push_rpd(struct fore200e* fore200e, struct atm_vcc* vcc, struct rpd* rpd) in fore200e_push_rpd() argument
1105 …fore200e->bus->dma_sync_for_cpu(fore200e, buffer->data.dma_addr, rpd->rsd[ i ].length, DMA_FROM_DE… in fore200e_push_rpd()
1110 …fore200e->bus->dma_sync_for_device(fore200e, buffer->data.dma_addr, rpd->rsd[ i ].length, DMA_FROM… in fore200e_push_rpd()
1145 fore200e_collect_rpd(struct fore200e* fore200e, struct rpd* rpd) in fore200e_collect_rpd() argument
1156 bsq = &fore200e->host_bsq[ buffer->scheme ][ buffer->magn ]; in fore200e_collect_rpd()
1178 fore200e_rx_irq(struct fore200e* fore200e) in fore200e_rx_irq() argument
1180 struct host_rxq* rxq = &fore200e->host_rxq; in fore200e_rx_irq()
1193 vc_map = FORE200E_VC_MAP(fore200e, entry->rpd->atm_header.vpi, entry->rpd->atm_header.vci); in fore200e_rx_irq()
1199 fore200e->atm_dev->number, in fore200e_rx_irq()
1208 fore200e_push_rpd(fore200e, vcc, entry->rpd); in fore200e_rx_irq()
1212 fore200e->atm_dev->number, in fore200e_rx_irq()
1220 fore200e_collect_rpd(fore200e, entry->rpd); in fore200e_rx_irq()
1223 fore200e->bus->write(entry->rpd_dma, &entry->cp_entry->rpd_haddr); in fore200e_rx_irq()
1226 fore200e_supply(fore200e); in fore200e_rx_irq()
1233 fore200e_irq(struct fore200e* fore200e) in fore200e_irq() argument
1237 spin_lock_irqsave(&fore200e->q_lock, flags); in fore200e_irq()
1238 fore200e_rx_irq(fore200e); in fore200e_irq()
1239 spin_unlock_irqrestore(&fore200e->q_lock, flags); in fore200e_irq()
1241 spin_lock_irqsave(&fore200e->q_lock, flags); in fore200e_irq()
1242 fore200e_tx_irq(fore200e); in fore200e_irq()
1243 spin_unlock_irqrestore(&fore200e->q_lock, flags); in fore200e_irq()
1251 struct fore200e* fore200e = FORE200E_DEV((struct atm_dev*)dev); in fore200e_interrupt() local
1253 if (fore200e->bus->irq_check(fore200e) == 0) { in fore200e_interrupt()
1255 DPRINTK(3, "interrupt NOT triggered by device %d\n", fore200e->atm_dev->number); in fore200e_interrupt()
1258 DPRINTK(3, "interrupt triggered by device %d\n", fore200e->atm_dev->number); in fore200e_interrupt()
1261 tasklet_schedule(&fore200e->tx_tasklet); in fore200e_interrupt()
1262 tasklet_schedule(&fore200e->rx_tasklet); in fore200e_interrupt()
1264 fore200e_irq(fore200e); in fore200e_interrupt()
1267 fore200e->bus->irq_ack(fore200e); in fore200e_interrupt()
1276 struct fore200e* fore200e = (struct fore200e*) data; in fore200e_tx_tasklet() local
1279 DPRINTK(3, "tx tasklet scheduled for device %d\n", fore200e->atm_dev->number); in fore200e_tx_tasklet()
1281 spin_lock_irqsave(&fore200e->q_lock, flags); in fore200e_tx_tasklet()
1282 fore200e_tx_irq(fore200e); in fore200e_tx_tasklet()
1283 spin_unlock_irqrestore(&fore200e->q_lock, flags); in fore200e_tx_tasklet()
1290 struct fore200e* fore200e = (struct fore200e*) data; in fore200e_rx_tasklet() local
1293 DPRINTK(3, "rx tasklet scheduled for device %d\n", fore200e->atm_dev->number); in fore200e_rx_tasklet()
1295 spin_lock_irqsave(&fore200e->q_lock, flags); in fore200e_rx_tasklet()
1296 fore200e_rx_irq((struct fore200e*) data); in fore200e_rx_tasklet()
1297 spin_unlock_irqrestore(&fore200e->q_lock, flags); in fore200e_rx_tasklet()
1316 fore200e_activate_vcin(struct fore200e* fore200e, int activate, struct atm_vcc* vcc, int mtu) in fore200e_activate_vcin() argument
1318 struct host_cmdq* cmdq = &fore200e->host_cmdq; in fore200e_activate_vcin()
1352 fore200e->bus->write(mtu, &entry->cp_entry->cmd.activate_block.mtu); in fore200e_activate_vcin()
1353 …fore200e->bus->write(*(u32*)&vpvc, (u32 __iomem *)&entry->cp_entry->cmd.activate_block.vpv… in fore200e_activate_vcin()
1354 …fore200e->bus->write(*(u32*)&activ_opcode, (u32 __iomem *)&entry->cp_entry->cmd.activate_block.opc… in fore200e_activate_vcin()
1357 …fore200e->bus->write(*(u32*)&vpvc, (u32 __iomem *)&entry->cp_entry->cmd.deactivate_block.v… in fore200e_activate_vcin()
1358 …fore200e->bus->write(*(u32*)&deactiv_opcode, (u32 __iomem *)&entry->cp_entry->cmd.deactivate_block… in fore200e_activate_vcin()
1361 ok = fore200e_poll(fore200e, entry->status, STATUS_COMPLETE, 400); in fore200e_activate_vcin()
1399 struct fore200e* fore200e = FORE200E_DEV(vcc->dev); in fore200e_open() local
1409 spin_lock_irqsave(&fore200e->q_lock, flags); in fore200e_open()
1411 vc_map = FORE200E_VC_MAP(fore200e, vpi, vci); in fore200e_open()
1414 spin_unlock_irqrestore(&fore200e->q_lock, flags); in fore200e_open()
1417 fore200e->atm_dev->number, vpi, vci); in fore200e_open()
1424 spin_unlock_irqrestore(&fore200e->q_lock, flags); in fore200e_open()
1443 mutex_lock(&fore200e->rate_mtx); in fore200e_open()
1444 if (fore200e->available_cell_rate < vcc->qos.txtp.max_pcr) { in fore200e_open()
1445 mutex_unlock(&fore200e->rate_mtx); in fore200e_open()
1453 fore200e->available_cell_rate -= vcc->qos.txtp.max_pcr; in fore200e_open()
1454 mutex_unlock(&fore200e->rate_mtx); in fore200e_open()
1464 if (fore200e_activate_vcin(fore200e, 1, vcc, vcc->qos.rxtp.max_sdu) < 0) { in fore200e_open()
1473 fore200e->available_cell_rate += vcc->qos.txtp.max_pcr; in fore200e_open()
1496 vc_map->incarn = ++fore200e->incarn_count; in fore200e_open()
1508 struct fore200e* fore200e = FORE200E_DEV(vcc->dev); in fore200e_close() local
1521 fore200e_activate_vcin(fore200e, 0, vcc, 0); in fore200e_close()
1523 spin_lock_irqsave(&fore200e->q_lock, flags); in fore200e_close()
1525 vc_map = FORE200E_VC_MAP(fore200e, vcc->vpi, vcc->vci); in fore200e_close()
1535 spin_unlock_irqrestore(&fore200e->q_lock, flags); in fore200e_close()
1540 mutex_lock(&fore200e->rate_mtx); in fore200e_close()
1541 fore200e->available_cell_rate += vcc->qos.txtp.max_pcr; in fore200e_close()
1542 mutex_unlock(&fore200e->rate_mtx); in fore200e_close()
1558 struct fore200e* fore200e = FORE200E_DEV(vcc->dev); in fore200e_send() local
1561 struct host_txq* txq = &fore200e->host_txq; in fore200e_send()
1576 ASSERT(fore200e); in fore200e_send()
1602 DPRINTK(2, "misaligned tx PDU on device %s\n", fore200e->name); in fore200e_send()
1610 DPRINTK(2, "incomplete tx AAL0 PDU on device %s\n", fore200e->name); in fore200e_send()
1635 vc_map = FORE200E_VC_MAP(fore200e, vcc->vpi, vcc->vci); in fore200e_send()
1640 spin_lock_irqsave(&fore200e->q_lock, flags); in fore200e_send()
1647 fore200e_tx_irq(fore200e); in fore200e_send()
1651 spin_unlock_irqrestore(&fore200e->q_lock, flags); in fore200e_send()
1661 fore200e->tx_sat++; in fore200e_send()
1663 fore200e->name, fore200e->cp_queues->heartbeat); in fore200e_send()
1684 tpd->tsd[ 0 ].buffer = fore200e->bus->dma_map(fore200e, data, tx_len, DMA_TO_DEVICE); in fore200e_send()
1734 fore200e->bus->write(*(u32*)&tpd_haddr, (u32 __iomem *)&entry->cp_entry->tpd_haddr); in fore200e_send()
1736 spin_unlock_irqrestore(&fore200e->q_lock, flags); in fore200e_send()
1743 fore200e_getstats(struct fore200e* fore200e) in fore200e_getstats() argument
1745 struct host_cmdq* cmdq = &fore200e->host_cmdq; in fore200e_getstats()
1751 if (fore200e->stats == NULL) { in fore200e_getstats()
1752 fore200e->stats = kzalloc(sizeof(struct stats), GFP_KERNEL | GFP_DMA); in fore200e_getstats()
1753 if (fore200e->stats == NULL) in fore200e_getstats()
1757 stats_dma_addr = fore200e->bus->dma_map(fore200e, fore200e->stats, in fore200e_getstats()
1765 fore200e->bus->write(stats_dma_addr, &entry->cp_entry->cmd.stats_block.stats_haddr); in fore200e_getstats()
1769 fore200e->bus->write(*(u32*)&opcode, (u32 __iomem *)&entry->cp_entry->cmd.stats_block.opcode); in fore200e_getstats()
1771 ok = fore200e_poll(fore200e, entry->status, STATUS_COMPLETE, 400); in fore200e_getstats()
1775 fore200e->bus->dma_unmap(fore200e, stats_dma_addr, sizeof(struct stats), DMA_FROM_DEVICE); in fore200e_getstats()
1778 printk(FORE200E "unable to get statistics from device %s\n", fore200e->name); in fore200e_getstats()
1812 fore200e_get_oc3(struct fore200e* fore200e, struct oc3_regs* regs)
1814 struct host_cmdq* cmdq = &fore200e->host_cmdq;
1820 …oc3_regs_dma_addr = fore200e->bus->dma_map(fore200e, regs, sizeof(struct oc3_regs), DMA_FROM_DEVIC…
1829 fore200e->bus->write(oc3_regs_dma_addr, &entry->cp_entry->cmd.oc3_block.regs_haddr);
1833 fore200e->bus->write(*(u32*)&opcode, (u32*)&entry->cp_entry->cmd.oc3_block.opcode);
1835 ok = fore200e_poll(fore200e, entry->status, STATUS_COMPLETE, 400);
1839 fore200e->bus->dma_unmap(fore200e, oc3_regs_dma_addr, sizeof(struct oc3_regs), DMA_FROM_DEVICE);
1842 printk(FORE200E "unable to get OC-3 regs of device %s\n", fore200e->name);
1852 fore200e_set_oc3(struct fore200e* fore200e, u32 reg, u32 value, u32 mask) in fore200e_set_oc3() argument
1854 struct host_cmdq* cmdq = &fore200e->host_cmdq; in fore200e_set_oc3()
1868 fore200e->bus->write(0, &entry->cp_entry->cmd.oc3_block.regs_haddr); in fore200e_set_oc3()
1872 fore200e->bus->write(*(u32*)&opcode, (u32 __iomem *)&entry->cp_entry->cmd.oc3_block.opcode); in fore200e_set_oc3()
1874 ok = fore200e_poll(fore200e, entry->status, STATUS_COMPLETE, 400); in fore200e_set_oc3()
1879 printk(FORE200E "unable to set OC-3 reg 0x%02x of device %s\n", reg, fore200e->name); in fore200e_set_oc3()
1888 fore200e_setloop(struct fore200e* fore200e, int loop_mode) in fore200e_setloop() argument
1915 error = fore200e_set_oc3(fore200e, SUNI_MCT, mct_value, mct_mask); in fore200e_setloop()
1917 fore200e->loop_mode = loop_mode; in fore200e_setloop()
1924 fore200e_fetch_stats(struct fore200e* fore200e, struct sonet_stats __user *arg) in fore200e_fetch_stats() argument
1928 if (fore200e_getstats(fore200e) < 0) in fore200e_fetch_stats()
1931 tmp.section_bip = be32_to_cpu(fore200e->stats->oc3.section_bip8_errors); in fore200e_fetch_stats()
1932 tmp.line_bip = be32_to_cpu(fore200e->stats->oc3.line_bip24_errors); in fore200e_fetch_stats()
1933 tmp.path_bip = be32_to_cpu(fore200e->stats->oc3.path_bip8_errors); in fore200e_fetch_stats()
1934 tmp.line_febe = be32_to_cpu(fore200e->stats->oc3.line_febe_errors); in fore200e_fetch_stats()
1935 tmp.path_febe = be32_to_cpu(fore200e->stats->oc3.path_febe_errors); in fore200e_fetch_stats()
1936 tmp.corr_hcs = be32_to_cpu(fore200e->stats->oc3.corr_hcs_errors); in fore200e_fetch_stats()
1937 tmp.uncorr_hcs = be32_to_cpu(fore200e->stats->oc3.ucorr_hcs_errors); in fore200e_fetch_stats()
1938 tmp.tx_cells = be32_to_cpu(fore200e->stats->aal0.cells_transmitted) + in fore200e_fetch_stats()
1939 be32_to_cpu(fore200e->stats->aal34.cells_transmitted) + in fore200e_fetch_stats()
1940 be32_to_cpu(fore200e->stats->aal5.cells_transmitted); in fore200e_fetch_stats()
1941 tmp.rx_cells = be32_to_cpu(fore200e->stats->aal0.cells_received) + in fore200e_fetch_stats()
1942 be32_to_cpu(fore200e->stats->aal34.cells_received) + in fore200e_fetch_stats()
1943 be32_to_cpu(fore200e->stats->aal5.cells_received); in fore200e_fetch_stats()
1955 struct fore200e* fore200e = FORE200E_DEV(dev); in fore200e_ioctl() local
1962 return fore200e_fetch_stats(fore200e, (struct sonet_stats __user *)arg); in fore200e_ioctl()
1968 return fore200e_setloop(fore200e, (int)(unsigned long)arg); in fore200e_ioctl()
1971 return put_user(fore200e->loop_mode, (int __user *)arg) ? -EFAULT : 0; in fore200e_ioctl()
1985 struct fore200e* fore200e = FORE200E_DEV(vcc->dev); in fore200e_change_qos() local
2001 flags, fore200e->available_cell_rate); in fore200e_change_qos()
2005 mutex_lock(&fore200e->rate_mtx); in fore200e_change_qos()
2006 if (fore200e->available_cell_rate + vcc->qos.txtp.max_pcr < qos->txtp.max_pcr) { in fore200e_change_qos()
2007 mutex_unlock(&fore200e->rate_mtx); in fore200e_change_qos()
2011 fore200e->available_cell_rate += vcc->qos.txtp.max_pcr; in fore200e_change_qos()
2012 fore200e->available_cell_rate -= qos->txtp.max_pcr; in fore200e_change_qos()
2014 mutex_unlock(&fore200e->rate_mtx); in fore200e_change_qos()
2030 static int fore200e_irq_request(struct fore200e *fore200e) in fore200e_irq_request() argument
2032 …if (request_irq(fore200e->irq, fore200e_interrupt, IRQF_SHARED, fore200e->name, fore200e->atm_dev)… in fore200e_irq_request()
2035 fore200e_irq_itoa(fore200e->irq), fore200e->name); in fore200e_irq_request()
2040 fore200e_irq_itoa(fore200e->irq), fore200e->name); in fore200e_irq_request()
2043 tasklet_init(&fore200e->tx_tasklet, fore200e_tx_tasklet, (unsigned long)fore200e); in fore200e_irq_request()
2044 tasklet_init(&fore200e->rx_tasklet, fore200e_rx_tasklet, (unsigned long)fore200e); in fore200e_irq_request()
2047 fore200e->state = FORE200E_STATE_IRQ; in fore200e_irq_request()
2052 static int fore200e_get_esi(struct fore200e *fore200e) in fore200e_get_esi() argument
2060 ok = fore200e->bus->prom_read(fore200e, prom); in fore200e_get_esi()
2067 fore200e->name, in fore200e_get_esi()
2072 fore200e->esi[ i ] = fore200e->atm_dev->esi[ i ] = prom->mac_addr[ i + 2 ]; in fore200e_get_esi()
2081 static int fore200e_alloc_rx_buf(struct fore200e *fore200e) in fore200e_alloc_rx_buf() argument
2091 bsq = &fore200e->host_bsq[ scheme ][ magn ]; in fore200e_alloc_rx_buf()
2116 if (fore200e_chunk_alloc(fore200e, in fore200e_alloc_rx_buf()
2117 &buffer[ i ].data, size, fore200e->bus->buffer_alignment, in fore200e_alloc_rx_buf()
2121 fore200e_chunk_free(fore200e, &buffer[ --i ].data); in fore200e_alloc_rx_buf()
2140 fore200e->state = FORE200E_STATE_ALLOC_BUF; in fore200e_alloc_rx_buf()
2145 static int fore200e_init_bs_queue(struct fore200e *fore200e) in fore200e_init_bs_queue() argument
2157 bsq = &fore200e->host_bsq[ scheme ][ magn ]; in fore200e_init_bs_queue()
2160 if (fore200e->bus->dma_chunk_alloc(fore200e, in fore200e_init_bs_queue()
2164 fore200e->bus->status_alignment) < 0) { in fore200e_init_bs_queue()
2169 if (fore200e->bus->dma_chunk_alloc(fore200e, in fore200e_init_bs_queue()
2173 fore200e->bus->descr_alignment) < 0) { in fore200e_init_bs_queue()
2175 fore200e->bus->dma_chunk_free(fore200e, &bsq->status); in fore200e_init_bs_queue()
2180 cp_entry = fore200e->virt_base + in fore200e_init_bs_queue()
2181 fore200e->bus->read(&fore200e->cp_queues->cp_bsq[ scheme ][ magn ]); in fore200e_init_bs_queue()
2196 fore200e->bus->write(FORE200E_DMA_INDEX(bsq->status.dma_addr, enum status, i), in fore200e_init_bs_queue()
2202 fore200e->state = FORE200E_STATE_INIT_BSQ; in fore200e_init_bs_queue()
2207 static int fore200e_init_rx_queue(struct fore200e *fore200e) in fore200e_init_rx_queue() argument
2209 struct host_rxq* rxq = &fore200e->host_rxq; in fore200e_init_rx_queue()
2216 if (fore200e->bus->dma_chunk_alloc(fore200e, in fore200e_init_rx_queue()
2220 fore200e->bus->status_alignment) < 0) { in fore200e_init_rx_queue()
2225 if (fore200e->bus->dma_chunk_alloc(fore200e, in fore200e_init_rx_queue()
2229 fore200e->bus->descr_alignment) < 0) { in fore200e_init_rx_queue()
2231 fore200e->bus->dma_chunk_free(fore200e, &rxq->status); in fore200e_init_rx_queue()
2236 cp_entry = fore200e->virt_base + fore200e->bus->read(&fore200e->cp_queues->cp_rxq); in fore200e_init_rx_queue()
2251 fore200e->bus->write(FORE200E_DMA_INDEX(rxq->status.dma_addr, enum status, i), in fore200e_init_rx_queue()
2254 fore200e->bus->write(FORE200E_DMA_INDEX(rxq->rpd.dma_addr, struct rpd, i), in fore200e_init_rx_queue()
2261 fore200e->state = FORE200E_STATE_INIT_RXQ; in fore200e_init_rx_queue()
2266 static int fore200e_init_tx_queue(struct fore200e *fore200e) in fore200e_init_tx_queue() argument
2268 struct host_txq* txq = &fore200e->host_txq; in fore200e_init_tx_queue()
2275 if (fore200e->bus->dma_chunk_alloc(fore200e, in fore200e_init_tx_queue()
2279 fore200e->bus->status_alignment) < 0) { in fore200e_init_tx_queue()
2284 if (fore200e->bus->dma_chunk_alloc(fore200e, in fore200e_init_tx_queue()
2288 fore200e->bus->descr_alignment) < 0) { in fore200e_init_tx_queue()
2290 fore200e->bus->dma_chunk_free(fore200e, &txq->status); in fore200e_init_tx_queue()
2295 cp_entry = fore200e->virt_base + fore200e->bus->read(&fore200e->cp_queues->cp_txq); in fore200e_init_tx_queue()
2310 fore200e->bus->write(FORE200E_DMA_INDEX(txq->status.dma_addr, enum status, i), in fore200e_init_tx_queue()
2323 fore200e->state = FORE200E_STATE_INIT_TXQ; in fore200e_init_tx_queue()
2328 static int fore200e_init_cmd_queue(struct fore200e *fore200e) in fore200e_init_cmd_queue() argument
2330 struct host_cmdq* cmdq = &fore200e->host_cmdq; in fore200e_init_cmd_queue()
2337 if (fore200e->bus->dma_chunk_alloc(fore200e, in fore200e_init_cmd_queue()
2341 fore200e->bus->status_alignment) < 0) { in fore200e_init_cmd_queue()
2346 cp_entry = fore200e->virt_base + fore200e->bus->read(&fore200e->cp_queues->cp_cmdq); in fore200e_init_cmd_queue()
2357 fore200e->bus->write(FORE200E_DMA_INDEX(cmdq->status.dma_addr, enum status, i), in fore200e_init_cmd_queue()
2364 fore200e->state = FORE200E_STATE_INIT_CMDQ; in fore200e_init_cmd_queue()
2369 static void fore200e_param_bs_queue(struct fore200e *fore200e, in fore200e_param_bs_queue() argument
2374 struct bs_spec __iomem * bs_spec = &fore200e->cp_queues->init.bs_spec[ scheme ][ magn ]; in fore200e_param_bs_queue()
2376 fore200e->bus->write(queue_length, &bs_spec->queue_length); in fore200e_param_bs_queue()
2377 fore200e->bus->write(fore200e_rx_buf_size[ scheme ][ magn ], &bs_spec->buffer_size); in fore200e_param_bs_queue()
2378 fore200e->bus->write(pool_size, &bs_spec->pool_size); in fore200e_param_bs_queue()
2379 fore200e->bus->write(supply_blksize, &bs_spec->supply_blksize); in fore200e_param_bs_queue()
2383 static int fore200e_initialize(struct fore200e *fore200e) in fore200e_initialize() argument
2388 DPRINTK(2, "device %s being initialized\n", fore200e->name); in fore200e_initialize()
2390 mutex_init(&fore200e->rate_mtx); in fore200e_initialize()
2391 spin_lock_init(&fore200e->q_lock); in fore200e_initialize()
2393 cpq = fore200e->cp_queues = fore200e->virt_base + FORE200E_CP_QUEUES_OFFSET; in fore200e_initialize()
2396 fore200e->bus->write(1, &cpq->imask); in fore200e_initialize()
2398 if (fore200e->bus->irq_enable) in fore200e_initialize()
2399 fore200e->bus->irq_enable(fore200e); in fore200e_initialize()
2401 fore200e->bus->write(NBR_CONNECT, &cpq->init.num_connect); in fore200e_initialize()
2403 fore200e->bus->write(QUEUE_SIZE_CMD, &cpq->init.cmd_queue_len); in fore200e_initialize()
2404 fore200e->bus->write(QUEUE_SIZE_RX, &cpq->init.rx_queue_len); in fore200e_initialize()
2405 fore200e->bus->write(QUEUE_SIZE_TX, &cpq->init.tx_queue_len); in fore200e_initialize()
2407 fore200e->bus->write(RSD_EXTENSION, &cpq->init.rsd_extension); in fore200e_initialize()
2408 fore200e->bus->write(TSD_EXTENSION, &cpq->init.tsd_extension); in fore200e_initialize()
2412 fore200e_param_bs_queue(fore200e, scheme, magn, in fore200e_initialize()
2418 fore200e->bus->write(STATUS_PENDING, &cpq->init.status); in fore200e_initialize()
2419 fore200e->bus->write(OPCODE_INITIALIZE, &cpq->init.opcode); in fore200e_initialize()
2421 ok = fore200e_io_poll(fore200e, &cpq->init.status, STATUS_COMPLETE, 3000); in fore200e_initialize()
2423 printk(FORE200E "device %s initialization failed\n", fore200e->name); in fore200e_initialize()
2427 printk(FORE200E "device %s initialized\n", fore200e->name); in fore200e_initialize()
2429 fore200e->state = FORE200E_STATE_INITIALIZE; in fore200e_initialize()
2434 static void fore200e_monitor_putc(struct fore200e *fore200e, char c) in fore200e_monitor_putc() argument
2436 struct cp_monitor __iomem * monitor = fore200e->cp_monitor; in fore200e_monitor_putc()
2441 fore200e->bus->write(((u32) c) | FORE200E_CP_MONITOR_UART_AVAIL, &monitor->soft_uart.send); in fore200e_monitor_putc()
2445 static int fore200e_monitor_getc(struct fore200e *fore200e) in fore200e_monitor_getc() argument
2447 struct cp_monitor __iomem * monitor = fore200e->cp_monitor; in fore200e_monitor_getc()
2453 c = (int) fore200e->bus->read(&monitor->soft_uart.recv); in fore200e_monitor_getc()
2457 fore200e->bus->write(FORE200E_CP_MONITOR_UART_FREE, &monitor->soft_uart.recv); in fore200e_monitor_getc()
2469 static void fore200e_monitor_puts(struct fore200e *fore200e, char *str) in fore200e_monitor_puts() argument
2474 while (fore200e_monitor_getc(fore200e) >= 0); in fore200e_monitor_puts()
2476 fore200e_monitor_putc(fore200e, *str++); in fore200e_monitor_puts()
2479 while (fore200e_monitor_getc(fore200e) >= 0); in fore200e_monitor_puts()
2488 static int fore200e_load_and_start_fw(struct fore200e *fore200e) in fore200e_load_and_start_fw() argument
2499 if (strcmp(fore200e->bus->model_name, "PCA-200E") == 0) in fore200e_load_and_start_fw()
2500 device = &((struct pci_dev *) fore200e->bus_dev)->dev; in fore200e_load_and_start_fw()
2502 else if (strcmp(fore200e->bus->model_name, "SBA-200E") == 0) in fore200e_load_and_start_fw()
2503 device = &((struct platform_device *) fore200e->bus_dev)->dev; in fore200e_load_and_start_fw()
2508 sprintf(buf, "%s%s", fore200e->bus->proc_name, FW_EXT); in fore200e_load_and_start_fw()
2510 printk(FORE200E "problem loading firmware image %s\n", fore200e->bus->model_name); in fore200e_load_and_start_fw()
2517 load_addr = fore200e->virt_base + le32_to_cpu(fw_header->load_offset); in fore200e_load_and_start_fw()
2520 fore200e->name, load_addr, fw_size); in fore200e_load_and_start_fw()
2523 printk(FORE200E "corrupted %s firmware image\n", fore200e->bus->model_name); in fore200e_load_and_start_fw()
2528 fore200e->bus->write(le32_to_cpu(*fw_data), load_addr); in fore200e_load_and_start_fw()
2530 DPRINTK(2, "device %s firmware being started\n", fore200e->name); in fore200e_load_and_start_fw()
2538 fore200e_monitor_puts(fore200e, buf); in fore200e_load_and_start_fw()
2540 if (fore200e_io_poll(fore200e, &fore200e->cp_monitor->bstat, BSTAT_CP_RUNNING, 1000) == 0) { in fore200e_load_and_start_fw()
2541 printk(FORE200E "device %s firmware didn't start\n", fore200e->name); in fore200e_load_and_start_fw()
2545 printk(FORE200E "device %s firmware started\n", fore200e->name); in fore200e_load_and_start_fw()
2547 fore200e->state = FORE200E_STATE_START_FW; in fore200e_load_and_start_fw()
2556 static int fore200e_register(struct fore200e *fore200e, struct device *parent) in fore200e_register() argument
2560 DPRINTK(2, "device %s being registered\n", fore200e->name); in fore200e_register()
2562 atm_dev = atm_dev_register(fore200e->bus->proc_name, parent, &fore200e_ops, in fore200e_register()
2565 printk(FORE200E "unable to register device %s\n", fore200e->name); in fore200e_register()
2569 atm_dev->dev_data = fore200e; in fore200e_register()
2570 fore200e->atm_dev = atm_dev; in fore200e_register()
2575 fore200e->available_cell_rate = ATM_OC3_PCR; in fore200e_register()
2577 fore200e->state = FORE200E_STATE_REGISTER; in fore200e_register()
2582 static int fore200e_init(struct fore200e *fore200e, struct device *parent) in fore200e_init() argument
2584 if (fore200e_register(fore200e, parent) < 0) in fore200e_init()
2587 if (fore200e->bus->configure(fore200e) < 0) in fore200e_init()
2590 if (fore200e->bus->map(fore200e) < 0) in fore200e_init()
2593 if (fore200e_reset(fore200e, 1) < 0) in fore200e_init()
2596 if (fore200e_load_and_start_fw(fore200e) < 0) in fore200e_init()
2599 if (fore200e_initialize(fore200e) < 0) in fore200e_init()
2602 if (fore200e_init_cmd_queue(fore200e) < 0) in fore200e_init()
2605 if (fore200e_init_tx_queue(fore200e) < 0) in fore200e_init()
2608 if (fore200e_init_rx_queue(fore200e) < 0) in fore200e_init()
2611 if (fore200e_init_bs_queue(fore200e) < 0) in fore200e_init()
2614 if (fore200e_alloc_rx_buf(fore200e) < 0) in fore200e_init()
2617 if (fore200e_get_esi(fore200e) < 0) in fore200e_init()
2620 if (fore200e_irq_request(fore200e) < 0) in fore200e_init()
2623 fore200e_supply(fore200e); in fore200e_init()
2626 fore200e->state = FORE200E_STATE_COMPLETE; in fore200e_init()
2636 struct fore200e *fore200e; in fore200e_sba_probe() local
2645 fore200e = kzalloc(sizeof(struct fore200e), GFP_KERNEL); in fore200e_sba_probe()
2646 if (!fore200e) in fore200e_sba_probe()
2649 fore200e->bus = bus; in fore200e_sba_probe()
2650 fore200e->bus_dev = op; in fore200e_sba_probe()
2651 fore200e->irq = op->archdata.irqs[0]; in fore200e_sba_probe()
2652 fore200e->phys_base = op->resource[0].start; in fore200e_sba_probe()
2654 sprintf(fore200e->name, "%s-%d", bus->model_name, index); in fore200e_sba_probe()
2656 err = fore200e_init(fore200e, &op->dev); in fore200e_sba_probe()
2658 fore200e_shutdown(fore200e); in fore200e_sba_probe()
2659 kfree(fore200e); in fore200e_sba_probe()
2664 dev_set_drvdata(&op->dev, fore200e); in fore200e_sba_probe()
2671 struct fore200e *fore200e = dev_get_drvdata(&op->dev); in fore200e_sba_remove() local
2673 fore200e_shutdown(fore200e); in fore200e_sba_remove()
2674 kfree(fore200e); in fore200e_sba_remove()
2703 struct fore200e* fore200e; in fore200e_pca_detect() local
2717 fore200e = kzalloc(sizeof(struct fore200e), GFP_KERNEL); in fore200e_pca_detect()
2718 if (fore200e == NULL) { in fore200e_pca_detect()
2723 fore200e->bus = bus; in fore200e_pca_detect()
2724 fore200e->bus_dev = pci_dev; in fore200e_pca_detect()
2725 fore200e->irq = pci_dev->irq; in fore200e_pca_detect()
2726 fore200e->phys_base = pci_resource_start(pci_dev, 0); in fore200e_pca_detect()
2728 sprintf(fore200e->name, "%s-%d", bus->model_name, index - 1); in fore200e_pca_detect()
2733 fore200e->bus->model_name, in fore200e_pca_detect()
2734 fore200e->phys_base, fore200e_irq_itoa(fore200e->irq)); in fore200e_pca_detect()
2736 sprintf(fore200e->name, "%s-%d", bus->model_name, index); in fore200e_pca_detect()
2738 err = fore200e_init(fore200e, &pci_dev->dev); in fore200e_pca_detect()
2740 fore200e_shutdown(fore200e); in fore200e_pca_detect()
2745 pci_set_drvdata(pci_dev, fore200e); in fore200e_pca_detect()
2751 kfree(fore200e); in fore200e_pca_detect()
2760 struct fore200e *fore200e; in fore200e_pca_remove_one() local
2762 fore200e = pci_get_drvdata(pci_dev); in fore200e_pca_remove_one()
2764 fore200e_shutdown(fore200e); in fore200e_pca_remove_one()
2765 kfree(fore200e); in fore200e_pca_remove_one()
2823 struct fore200e* fore200e = FORE200E_DEV(dev); in fore200e_proc_read() local
2831 if (fore200e_getstats(fore200e) < 0) in fore200e_proc_read()
2836 " internal name:\t\t%s\n", fore200e->name); in fore200e_proc_read()
2839 if (fore200e->bus->proc_read) in fore200e_proc_read()
2840 len += fore200e->bus->proc_read(fore200e, page + len); in fore200e_proc_read()
2848 fore200e_irq_itoa(fore200e->irq), in fore200e_proc_read()
2849 (void*)fore200e->phys_base, in fore200e_proc_read()
2850 fore200e->virt_base, in fore200e_proc_read()
2851 fore200e->esi, in fore200e_proc_read()
2852 fore200e->esi[4] * 256 + fore200e->esi[5]); in fore200e_proc_read()
2863 fore200e->host_bsq[ BUFFER_SCHEME_ONE ][ BUFFER_MAGN_SMALL ].freebuf_count, in fore200e_proc_read()
2864 fore200e->host_bsq[ BUFFER_SCHEME_ONE ][ BUFFER_MAGN_LARGE ].freebuf_count, in fore200e_proc_read()
2865 fore200e->host_bsq[ BUFFER_SCHEME_TWO ][ BUFFER_MAGN_SMALL ].freebuf_count, in fore200e_proc_read()
2866 fore200e->host_bsq[ BUFFER_SCHEME_TWO ][ BUFFER_MAGN_LARGE ].freebuf_count); in fore200e_proc_read()
2869 u32 hb = fore200e->bus->read(&fore200e->cp_queues->heartbeat); in fore200e_proc_read()
2900 u32 fw_release = fore200e->bus->read(&fore200e->cp_queues->fw_release); in fore200e_proc_read()
2901 u32 mon960_release = fore200e->bus->read(&fore200e->cp_queues->mon960_release); in fore200e_proc_read()
2902 u32 oc3_revision = fore200e->bus->read(&fore200e->cp_queues->oc3_revision); in fore200e_proc_read()
2903 u32 media_index = FORE200E_MEDIA_INDEX(fore200e->bus->read(&fore200e->cp_queues->media_type)); in fore200e_proc_read()
2909 switch (fore200e->loop_mode) { in fore200e_proc_read()
2933 struct cp_monitor __iomem * cp_monitor = fore200e->cp_monitor; in fore200e_proc_read()
2940 fore200e->bus->read(&cp_monitor->mon_version), in fore200e_proc_read()
2941 fore200e->bus->read(&cp_monitor->bstat)); in fore200e_proc_read()
2951 be32_to_cpu(fore200e->stats->phy.crc_header_errors), in fore200e_proc_read()
2952 be32_to_cpu(fore200e->stats->phy.framing_errors)); in fore200e_proc_read()
2964 be32_to_cpu(fore200e->stats->oc3.section_bip8_errors), in fore200e_proc_read()
2965 be32_to_cpu(fore200e->stats->oc3.path_bip8_errors), in fore200e_proc_read()
2966 be32_to_cpu(fore200e->stats->oc3.line_bip24_errors), in fore200e_proc_read()
2967 be32_to_cpu(fore200e->stats->oc3.line_febe_errors), in fore200e_proc_read()
2968 be32_to_cpu(fore200e->stats->oc3.path_febe_errors), in fore200e_proc_read()
2969 be32_to_cpu(fore200e->stats->oc3.corr_hcs_errors), in fore200e_proc_read()
2970 be32_to_cpu(fore200e->stats->oc3.ucorr_hcs_errors)); in fore200e_proc_read()
2981 be32_to_cpu(fore200e->stats->atm.cells_transmitted), in fore200e_proc_read()
2982 be32_to_cpu(fore200e->stats->atm.cells_received), in fore200e_proc_read()
2983 be32_to_cpu(fore200e->stats->atm.vpi_bad_range), in fore200e_proc_read()
2984 be32_to_cpu(fore200e->stats->atm.vpi_no_conn), in fore200e_proc_read()
2985 be32_to_cpu(fore200e->stats->atm.vci_bad_range), in fore200e_proc_read()
2986 be32_to_cpu(fore200e->stats->atm.vci_no_conn)); in fore200e_proc_read()
2994 be32_to_cpu(fore200e->stats->aal0.cells_transmitted), in fore200e_proc_read()
2995 be32_to_cpu(fore200e->stats->aal0.cells_received), in fore200e_proc_read()
2996 be32_to_cpu(fore200e->stats->aal0.cells_dropped)); in fore200e_proc_read()
3012 be32_to_cpu(fore200e->stats->aal34.cells_transmitted), in fore200e_proc_read()
3013 be32_to_cpu(fore200e->stats->aal34.cells_received), in fore200e_proc_read()
3014 be32_to_cpu(fore200e->stats->aal34.cells_dropped), in fore200e_proc_read()
3015 be32_to_cpu(fore200e->stats->aal34.cells_crc_errors), in fore200e_proc_read()
3016 be32_to_cpu(fore200e->stats->aal34.cells_protocol_errors), in fore200e_proc_read()
3017 be32_to_cpu(fore200e->stats->aal34.cspdus_transmitted), in fore200e_proc_read()
3018 be32_to_cpu(fore200e->stats->aal34.cspdus_received), in fore200e_proc_read()
3019 be32_to_cpu(fore200e->stats->aal34.cspdus_dropped), in fore200e_proc_read()
3020 be32_to_cpu(fore200e->stats->aal34.cspdus_protocol_errors)); in fore200e_proc_read()
3036 be32_to_cpu(fore200e->stats->aal5.cells_transmitted), in fore200e_proc_read()
3037 be32_to_cpu(fore200e->stats->aal5.cells_received), in fore200e_proc_read()
3038 be32_to_cpu(fore200e->stats->aal5.cells_dropped), in fore200e_proc_read()
3039 be32_to_cpu(fore200e->stats->aal5.congestion_experienced), in fore200e_proc_read()
3040 be32_to_cpu(fore200e->stats->aal5.cspdus_transmitted), in fore200e_proc_read()
3041 be32_to_cpu(fore200e->stats->aal5.cspdus_received), in fore200e_proc_read()
3042 be32_to_cpu(fore200e->stats->aal5.cspdus_dropped), in fore200e_proc_read()
3043 be32_to_cpu(fore200e->stats->aal5.cspdus_crc_errors), in fore200e_proc_read()
3044 be32_to_cpu(fore200e->stats->aal5.cspdus_protocol_errors)); in fore200e_proc_read()
3055 be32_to_cpu(fore200e->stats->aux.small_b1_failed), in fore200e_proc_read()
3056 be32_to_cpu(fore200e->stats->aux.large_b1_failed), in fore200e_proc_read()
3057 be32_to_cpu(fore200e->stats->aux.small_b2_failed), in fore200e_proc_read()
3058 be32_to_cpu(fore200e->stats->aux.large_b2_failed), in fore200e_proc_read()
3059 be32_to_cpu(fore200e->stats->aux.rpd_alloc_failed), in fore200e_proc_read()
3060 fore200e->tx_sat); in fore200e_proc_read()
3065 fore200e->stats->aux.receive_carrier ? "ON" : "OFF!"); in fore200e_proc_read()
3075 vcc = fore200e->vc_map[i].vcc; in fore200e_proc_read()
3080 spin_lock_irqsave(&fore200e->q_lock, flags); in fore200e_proc_read()
3098 spin_unlock_irqrestore(&fore200e->q_lock, flags); in fore200e_proc_read()
3102 spin_unlock_irqrestore(&fore200e->q_lock, flags); in fore200e_proc_read()