Lines Matching defs:eni_dev
154 #define eni_in(r) readl(eni_dev->reg+(r)*4)
155 #define eni_out(v,r) writel((v),eni_dev->reg+(r)*4)
161 static void dump_mem(struct eni_dev *eni_dev)
165 for (i = 0; i < eni_dev->free_len; i++)
167 eni_dev->free_list[i].start,
168 1 << eni_dev->free_list[i].order);
174 struct eni_dev *eni_dev;
178 eni_dev = ENI_DEV(dev);
180 dump_mem(eni_dev);
183 if (eni_dev->tx[i].send)
185 eni_dev->tx[i].send,eni_dev->tx[i].words*4);
188 if (eni_dev->rx_map[i] && ENI_VCC(eni_dev->rx_map[i])->rx)
190 ENI_VCC(eni_dev->rx_map[i])->recv,
191 ENI_VCC(eni_dev->rx_map[i])->words*4);
196 static void eni_put_free(struct eni_dev *eni_dev, void __iomem *start,
203 start += eni_dev->base_diff;
204 list = eni_dev->free_list;
205 len = eni_dev->free_len;
207 if (len >= eni_dev->free_list_size) {
224 eni_dev->free_len = len;
225 /*dump_mem(eni_dev);*/
229 static void __iomem *eni_alloc_mem(struct eni_dev *eni_dev, unsigned long *size)
235 list = eni_dev->free_list;
236 len = eni_dev->free_len;
255 start = list[index].start-eni_dev->base_diff;
257 eni_dev->free_len = len;
259 eni_put_free(eni_dev,start+*size,(1 << best_order)-*size);
262 /*dump_mem(eni_dev);*/
267 static void eni_free_mem(struct eni_dev *eni_dev, void __iomem *start,
273 start += eni_dev->base_diff;
274 list = eni_dev->free_list;
275 len = eni_dev->free_len;
289 if (len >= eni_dev->free_list_size) {
296 eni_dev->free_len = len+1;
297 /*dump_mem(eni_dev);*/
310 struct eni_dev *eni_dev;
314 eni_dev = ENI_DEV(dev);
341 struct eni_dev *eni_dev;
349 eni_dev = ENI_DEV(vcc->dev);
353 paddr = dma_map_single(&eni_dev->pci_dev->dev,skb->data,skb->len,
355 if (dma_mapping_error(&eni_dev->pci_dev->dev, paddr))
464 writel(dma[i*2],eni_dev->rx_dma+dma_wr*8);
465 writel(dma[i*2+1],eni_dev->rx_dma+dma_wr*8+4);
470 skb_queue_tail(&eni_dev->rx_queue,skb);
480 dma_unmap_single(&eni_dev->pci_dev->dev,paddr,skb->len,
653 struct eni_dev *eni_dev;
656 eni_dev = ENI_DEV(dev);
657 while ((curr = eni_dev->fast)) {
660 eni_dev->fast = ENI_VCC(curr)->next;
665 while ((curr = eni_dev->slow)) {
668 eni_dev->slow = ENI_VCC(curr)->next;
678 struct eni_dev *eni_dev;
683 eni_dev = ENI_DEV(dev);
684 while (eni_in(MID_SERV_WRITE) != eni_dev->serv_read) {
685 vci = readl(eni_dev->service+eni_dev->serv_read*4);
686 eni_dev->serv_read = (eni_dev->serv_read+1) & (NR_SERVICE-1);
687 vcc = eni_dev->rx_map[vci & 1023];
703 if (eni_dev->fast)
704 ENI_VCC(eni_dev->last_fast)->next = vcc;
705 else eni_dev->fast = vcc;
706 eni_dev->last_fast = vcc;
709 if (eni_dev->slow)
710 ENI_VCC(eni_dev->last_slow)->next = vcc;
711 else eni_dev->slow = vcc;
712 eni_dev->last_slow = vcc;
722 struct eni_dev *eni_dev;
729 eni_dev = ENI_DEV(dev);
732 skb = skb_dequeue(&eni_dev->rx_queue);
747 vci_dsc = eni_dev->vci+vcc->vci*16;
752 skb_queue_head(&eni_dev->rx_queue,skb);
757 dma_unmap_single(&eni_dev->pci_dev->dev,ENI_PRV_PADDR(skb),skb->len,
771 wake_up(&eni_dev->rx_wait);
777 struct eni_dev *eni_dev;
782 eni_dev = ENI_DEV(vcc->dev);
786 size = vcc->qos.rxtp.max_sdu*eni_dev->rx_mult/100;
790 eni_vcc->recv = eni_alloc_mem(eni_dev,&size);
807 struct eni_dev *eni_dev;
813 eni_dev = ENI_DEV(vcc->dev);
817 here = eni_dev->vci+vcc->vci*16;
818 DPRINTK("loc 0x%x\n",(unsigned) (eni_vcc->recv-eni_dev->ram)/4);
823 if (eni_dev->rx_map[vcc->vci])
826 eni_dev->rx_map[vcc->vci] = vcc; /* now it counts */
829 (((eni_vcc->recv-eni_dev->ram) >> (MID_LOC_SKIP+2)) <<
839 struct eni_dev *eni_dev;
844 eni_dev = ENI_DEV(vcc->dev);
846 here = eni_dev->vci+vcc->vci*16;
855 eni_dev->rx_map[vcc->vci] = NULL;
859 add_wait_queue(&eni_dev->rx_wait,&wait);
879 tasklet_disable(&eni_dev->task);
880 tmp = readl(eni_dev->vci+vcc->vci*16+4) & MID_VCI_READ;
882 tasklet_enable(&eni_dev->task);
892 remove_wait_queue(&eni_dev->rx_wait,&wait);
894 eni_free_mem(eni_dev,eni_vcc->recv,eni_vcc->words << 2);
901 struct eni_dev *eni_dev;
903 eni_dev = ENI_DEV(dev);
904 eni_dev->rx_map = (struct atm_vcc **) get_zeroed_page(GFP_KERNEL);
905 if (!eni_dev->rx_map) {
908 free_page((unsigned long) eni_dev->free_list);
911 eni_dev->rx_mult = DEFAULT_RX_MULT;
912 eni_dev->fast = eni_dev->last_fast = NULL;
913 eni_dev->slow = eni_dev->last_slow = NULL;
914 init_waitqueue_head(&eni_dev->rx_wait);
915 skb_queue_head_init(&eni_dev->rx_queue);
916 eni_dev->serv_read = eni_in(MID_SERV_WRITE);
1030 struct eni_dev *eni_dev;
1044 eni_dev = ENI_DEV(vcc->dev);
1045 NULLCHECK(eni_dev);
1113 paddr = dma_map_single(&eni_dev->pci_dev->dev,skb->data,skb->len,
1115 if (dma_mapping_error(&eni_dev->pci_dev->dev, paddr))
1120 eni_dev->dma[j++] = (((tx->tx_pos+TX_DESCR_SIZE) & (tx->words-1)) <<
1125 if (aal5) put_dma(tx->index,eni_dev->dma,&j,paddr,skb->len);
1126 else put_dma(tx->index,eni_dev->dma,&j,paddr+4,skb->len-4);
1131 put_dma(tx->index,eni_dev->dma,&j,(unsigned long)
1135 put_dma(tx->index,eni_dev->dma,&j,(unsigned long)
1141 put_dma(tx->index, eni_dev->dma, &j, eni_dev->zero.dma,
1145 eni_dev->dma[j++] = (((tx->tx_pos+size) & (tx->words-1)) <<
1166 writel(eni_dev->dma[i*2],eni_dev->tx_dma+dma_wr*8);
1167 writel(eni_dev->dma[i*2+1],eni_dev->tx_dma+dma_wr*8+4);
1176 skb_queue_tail(&eni_dev->tx_queue,skb);
1208 struct eni_dev *eni_dev;
1214 eni_dev = ENI_DEV(dev);
1215 NULLCHECK(eni_dev);
1216 while ((skb = skb_dequeue(&eni_dev->tx_queue))) {
1225 skb_queue_head(&eni_dev->tx_queue,skb);
1229 dma_unmap_single(&eni_dev->pci_dev->dev,ENI_PRV_PADDR(skb),skb->len,
1234 wake_up(&eni_dev->tx_wait);
1240 static struct eni_tx *alloc_tx(struct eni_dev *eni_dev,int ubr)
1245 if (!eni_dev->tx[i].send) return eni_dev->tx+i;
1250 static int comp_tx(struct eni_dev *eni_dev,int *pcr,int reserved,int *pre,
1270 if (!*pcr) *pcr = eni_dev->tx_bw+reserved;
1290 struct eni_dev *eni_dev = ENI_DEV(vcc->dev);
1304 size = txtp->max_sdu*eni_dev->tx_mult/100;
1310 if (eni_dev->ubr) {
1311 eni_vcc->tx = eni_dev->ubr;
1321 mem = eni_alloc_mem(eni_dev,&size);
1323 tx = alloc_tx(eni_dev,unlimited);
1325 eni_free_mem(eni_dev,mem,size);
1335 ((tx->send-eni_dev->ram) >> (MID_LOC_SKIP+2)),
1340 error = comp_tx(eni_dev,&rate,tx->reserved,&pre,&res,unlimited);
1344 if (!error && !ubr && rate > eni_dev->tx_bw+tx->reserved)
1353 eni_free_mem(eni_dev,mem,size);
1359 eni_dev->tx_bw += tx->reserved;
1361 eni_dev->tx_bw -= rate;
1364 if (unlimited && new_tx) eni_dev->ubr = tx;
1393 struct eni_dev *eni_dev;
1398 eni_dev = ENI_DEV(vcc->dev);
1401 add_wait_queue(&eni_dev->tx_wait,&wait);
1406 tasklet_disable(&eni_dev->task);
1408 tasklet_enable(&eni_dev->task);
1415 remove_wait_queue(&eni_dev->tx_wait,&wait);
1416 if (eni_vcc->tx != eni_dev->ubr) {
1425 eni_free_mem(eni_dev,eni_vcc->tx->send,eni_vcc->tx->words << 2);
1427 eni_dev->tx_bw += eni_vcc->tx->reserved;
1435 struct eni_dev *eni_dev;
1438 eni_dev = ENI_DEV(dev);
1439 eni_dev->lost = 0;
1440 eni_dev->tx_bw = ATM_OC3_PCR;
1441 eni_dev->tx_mult = DEFAULT_TX_MULT;
1442 init_waitqueue_head(&eni_dev->tx_wait);
1443 eni_dev->ubr = NULL;
1444 skb_queue_head_init(&eni_dev->tx_queue);
1447 eni_dev->tx[i].send = NULL;
1448 eni_dev->tx[i].index = i;
1493 struct eni_dev *eni_dev;
1498 eni_dev = ENI_DEV(dev);
1505 * with eni_dev->events == 0.
1509 eni_dev->lost += eni_in(MID_STAT) & MID_OVFL_TRASH;
1518 spin_lock(&eni_dev->lock);
1519 eni_dev->events |= reason;
1520 spin_unlock(&eni_dev->lock);
1521 tasklet_schedule(&eni_dev->task);
1529 struct eni_dev *eni_dev = ENI_DEV(dev);
1534 spin_lock_irqsave(&eni_dev->lock,flags);
1535 events = xchg(&eni_dev->events,0);
1536 spin_unlock_irqrestore(&eni_dev->lock,flags);
1559 wake_up(&eni_dev->tx_wait);
1587 pci_error = pci_write_config_byte(eni_dev->pci_dev,PCI_TONGA_CTRL,tonga); \
1592 pci_error = pci_read_config_byte(eni_dev->pci_dev,PCI_TONGA_CTRL,&tonga); \
1599 struct eni_dev *eni_dev;
1604 eni_dev = ENI_DEV(dev);
1703 struct eni_dev *eni_dev;
1713 eni_dev = ENI_DEV(dev);
1714 pci_dev = eni_dev->pci_dev;
1716 eni_dev->irq = pci_dev->irq;
1719 (eni_dev->asic ? PCI_COMMAND_PARITY | PCI_COMMAND_SERR : 0)))) {
1725 dev->number,pci_dev->revision,real_base,eni_dev->irq);
1732 eni_dev->ioaddr = base;
1733 eni_dev->base_diff = real_base - (unsigned long) base;
1735 if (!eni_dev->asic) {
1747 eni_dev->phy = base+PHY_BASE;
1748 eni_dev->reg = base+REG_BASE;
1749 eni_dev->ram = base+RAM_BASE;
1752 writel(0x55555555,eni_dev->ram+i);
1753 if (readl(eni_dev->ram+i) != 0x55555555) last = i;
1755 writel(0xAAAAAAAA,eni_dev->ram+i);
1756 if (readl(eni_dev->ram+i) != 0xAAAAAAAA) last = i;
1757 else writel(i,eni_dev->ram+i);
1761 if (readl(eni_dev->ram+i) != i) break;
1762 eni_dev->mem = i;
1763 memset_io(eni_dev->ram,0,eni_dev->mem);
1765 printk("mem=%dkB (",eni_dev->mem >> 10);
1767 if (!(eni_in(MID_RES_ID_MCON) & 0x200) != !eni_dev->asic) {
1774 error = eni_dev->asic ? get_esi_asic(dev) : get_esi_fpga(dev,base);
1796 struct eni_dev *ed = ENI_DEV(dev);
1805 struct eni_dev *eni_dev;
1812 eni_dev = ENI_DEV(dev);
1813 if (request_irq(eni_dev->irq,&eni_int,IRQF_SHARED,DEV_LABEL,dev)) {
1815 dev->number,eni_dev->irq);
1819 pci_set_master(eni_dev->pci_dev);
1820 if ((error = pci_write_config_word(eni_dev->pci_dev,PCI_COMMAND,
1822 (eni_dev->asic ? PCI_COMMAND_PARITY | PCI_COMMAND_SERR : 0)))) {
1827 if ((error = pci_write_config_byte(eni_dev->pci_dev,PCI_TONGA_CTRL,
1834 eni_dev->vci = eni_dev->ram;
1835 eni_dev->rx_dma = eni_dev->ram+NR_VCI*16;
1836 eni_dev->tx_dma = eni_dev->rx_dma+NR_DMA_RX*8;
1837 eni_dev->service = eni_dev->tx_dma+NR_DMA_TX*8;
1838 buf = eni_dev->service+NR_SERVICE*4;
1840 eni_dev->vci,eni_dev->rx_dma,eni_dev->tx_dma,
1841 eni_dev->service,buf);
1842 spin_lock_init(&eni_dev->lock);
1843 tasklet_init(&eni_dev->task,eni_tasklet,(unsigned long) dev);
1844 eni_dev->events = 0;
1846 buffer_mem = eni_dev->mem - (buf - eni_dev->ram);
1847 eni_dev->free_list_size = buffer_mem/MID_MIN_BUF_SIZE/2;
1848 eni_dev->free_list = kmalloc_array(eni_dev->free_list_size + 1,
1849 sizeof(*eni_dev->free_list),
1851 if (!eni_dev->free_list) {
1857 eni_dev->free_len = 0;
1858 eni_put_free(eni_dev,buf,buffer_mem);
1859 memset_io(eni_dev->vci,0,16*NR_VCI); /* clear VCI table */
1884 kfree(eni_dev->free_list);
1887 free_irq(eni_dev->irq, dev);
1958 struct eni_dev *eni_dev = ENI_DEV(vcc->dev);
1964 if (tx == eni_dev->ubr) return -EBADFD;
1980 tasklet_disable(&eni_dev->task);
1981 skb_queue_walk(&eni_dev->tx_queue, skb) {
1990 tasklet_enable(&eni_dev->task);
1997 struct eni_dev *eni_dev = ENI_DEV(dev);
2016 if (mult.tx) eni_dev->tx_mult = mult.tx;
2017 if (mult.rx) eni_dev->rx_mult = mult.rx;
2087 struct eni_dev *eni_dev = ENI_DEV(dev);
2095 eni_dev->mem >> 10,eni_dev->tx_bw);
2141 "",eni_dev->tx_mult,eni_dev->rx_mult);
2143 struct eni_tx *tx = eni_dev->tx+i;
2149 (unsigned long) (tx->send - eni_dev->ram),
2150 tx->send-eni_dev->ram+tx->words*4-1,tx->words*4,
2152 tx == eni_dev->ubr ? " (UBR)" : "");
2175 (unsigned long) (eni_vcc->recv - eni_dev->ram),
2176 eni_vcc->recv-eni_dev->ram+eni_vcc->words*4-1,
2189 for (i = 0; i < eni_dev->free_len; i++) {
2190 struct eni_free *fe = eni_dev->free_list+i;
2194 offset = (unsigned long) eni_dev->ram+eni_dev->base_diff;
2219 struct eni_dev *eni_dev;
2232 eni_dev = kmalloc(sizeof(struct eni_dev), GFP_KERNEL);
2233 if (!eni_dev)
2236 zero = &eni_dev->zero;
2246 dev->dev_data = eni_dev;
2248 eni_dev->pci_dev = pci_dev;
2249 eni_dev->asic = ent->driver_data;
2259 eni_dev->more = eni_boards;
2272 kfree(eni_dev);
2290 struct eni_dev *ed = ENI_DEV(dev);