Lines Matching full:lp
198 static void readwords(struct net_local *lp, int portno, void *buf, int length) in readwords() argument
205 tmp16 = ioread16(lp->virt_addr + portno); in readwords()
211 static void writewords(struct net_local *lp, int portno, void *buf, int length) in writewords() argument
220 iowrite16(tmp16, lp->virt_addr + portno); in writewords()
227 struct net_local *lp = netdev_priv(dev); in readreg() local
229 iowrite16(regno, lp->virt_addr + ADD_PORT); in readreg()
230 return ioread16(lp->virt_addr + DATA_PORT); in readreg()
236 struct net_local *lp = netdev_priv(dev); in writereg() local
238 iowrite16(regno, lp->virt_addr + ADD_PORT); in writereg()
239 iowrite16(value, lp->virt_addr + DATA_PORT); in writereg()
340 struct net_local *lp = netdev_priv(dev); in get_dma_channel() local
342 if (lp->dma) { in get_dma_channel()
343 dev->dma = lp->dma; in get_dma_channel()
344 lp->isa_config |= ISA_RxDMA; in get_dma_channel()
346 if ((lp->isa_config & ANY_ISA_DMA) == 0) in get_dma_channel()
348 dev->dma = lp->isa_config & DMA_NO_MASK; in get_dma_channel()
349 if (lp->chip_type == CS8900) in get_dma_channel()
352 lp->isa_config &= ~ANY_ISA_DMA; in get_dma_channel()
361 struct net_local *lp = netdev_priv(dev); in write_dma() local
362 if ((lp->isa_config & ANY_ISA_DMA) == 0) in write_dma()
373 struct net_local *lp = netdev_priv(dev); in set_dma_cfg() local
375 if (lp->use_dma) { in set_dma_cfg()
376 if ((lp->isa_config & ANY_ISA_DMA) == 0) { in set_dma_cfg()
380 if (lp->isa_config & ISA_RxDMA) { in set_dma_cfg()
381 lp->curr_rx_cfg |= RX_DMA_ONLY; in set_dma_cfg()
384 lp->curr_rx_cfg |= AUTO_RX_DMA; /* not that we support it... */ in set_dma_cfg()
393 struct net_local *lp = netdev_priv(dev); in dma_bufcfg() local
394 if (lp->use_dma) in dma_bufcfg()
395 return (lp->isa_config & ANY_ISA_DMA) ? RX_DMA_ENBL : 0; in dma_bufcfg()
404 struct net_local *lp = netdev_priv(dev); in dma_busctl() local
405 if (lp->use_dma) { in dma_busctl()
406 if (lp->isa_config & ANY_ISA_DMA) in dma_busctl()
408 if (lp->isa_config & DMA_BURST) in dma_busctl()
410 if (lp->dmasize == 64) in dma_busctl()
420 struct net_local *lp = netdev_priv(dev); in dma_rx() local
423 unsigned char *bp = lp->rx_dma_ptr; in dma_rx()
445 if (bp >= lp->end_dma_buff) in dma_rx()
446 bp -= lp->dmasize * 1024; in dma_rx()
447 lp->rx_dma_ptr = bp; in dma_rx()
452 if (bp + length > lp->end_dma_buff) { in dma_rx()
453 int semi_cnt = lp->end_dma_buff - bp; in dma_rx()
455 skb_put_data(skb, lp->dma_buff, length - semi_cnt); in dma_rx()
460 if (bp >= lp->end_dma_buff) in dma_rx()
461 bp -= lp->dmasize*1024; in dma_rx()
462 lp->rx_dma_ptr = bp; in dma_rx()
475 static void release_dma_buff(struct net_local *lp) in release_dma_buff() argument
477 if (lp->dma_buff) { in release_dma_buff()
478 free_pages((unsigned long)(lp->dma_buff), in release_dma_buff()
479 get_order(lp->dmasize * 1024)); in release_dma_buff()
480 lp->dma_buff = NULL; in release_dma_buff()
489 struct net_local *lp = netdev_priv(dev); in control_dc_dc() local
498 if (((lp->adapter_cnf & A_CNF_DC_DC_POLARITY) != 0) ^ on_not_off) in control_dc_dc()
513 struct net_local *lp = netdev_priv(dev); in send_test_pkt() local
527 iowrite16(TX_AFTER_ALL, lp->virt_addr + TX_CMD_PORT); in send_test_pkt()
528 iowrite16(ETH_ZLEN, lp->virt_addr + TX_LEN_PORT); in send_test_pkt()
538 writewords(lp, TX_FRAME_PORT, test_packet, (ETH_ZLEN + 1) >> 1); in send_test_pkt()
561 struct net_local *lp = netdev_priv(dev); in detect_tp() local
574 writereg(dev, PP_LineCTL, lp->linectl & ~AUI_ONLY); in detect_tp()
585 if (lp->chip_type == CS8900) { in detect_tp()
586 switch (lp->force & 0xf0) { in detect_tp()
595 lp->force &= ~FORCE_AUTO; in detect_tp()
596 lp->force |= FORCE_HALF; in detect_tp()
607 switch (lp->force & 0xf0) { in detect_tp()
609 lp->auto_neg_cnf = AUTO_NEG_ENABLE; in detect_tp()
612 lp->auto_neg_cnf = 0; in detect_tp()
615 lp->auto_neg_cnf = RE_NEG_NOW | ALLOW_FDX; in detect_tp()
619 writereg(dev, PP_AutoNegCTL, lp->auto_neg_cnf & AUTO_NEG_MASK); in detect_tp()
621 if ((lp->auto_neg_cnf & AUTO_NEG_BITS) == AUTO_NEG_ENABLE) { in detect_tp()
641 struct net_local *lp = netdev_priv(dev); in detect_bnc() local
646 writereg(dev, PP_LineCTL, (lp->linectl & ~AUTO_AUI_10BASET) | AUI_ONLY); in detect_bnc()
657 struct net_local *lp = netdev_priv(dev); in detect_aui() local
662 writereg(dev, PP_LineCTL, (lp->linectl & ~AUTO_AUI_10BASET) | AUI_ONLY); in detect_aui()
674 struct net_local *lp = netdev_priv(dev); in net_rx() local
678 status = ioread16(lp->virt_addr + RX_FRAME_PORT); in net_rx()
679 length = ioread16(lp->virt_addr + RX_FRAME_PORT); in net_rx()
694 readwords(lp, RX_FRAME_PORT, skb_put(skb, length), length >> 1); in net_rx()
696 skb->data[length-1] = ioread16(lp->virt_addr + RX_FRAME_PORT); in net_rx()
716 struct net_local *lp; in net_interrupt() local
720 lp = netdev_priv(dev); in net_interrupt()
730 while ((status = ioread16(lp->virt_addr + ISQ_PORT))) { in net_interrupt()
771 lp->send_underrun++; in net_interrupt()
772 if (lp->send_underrun == 3) in net_interrupt()
773 lp->send_cmd = TX_AFTER_381; in net_interrupt()
774 else if (lp->send_underrun == 6) in net_interrupt()
775 lp->send_cmd = TX_AFTER_ALL; in net_interrupt()
785 if (lp->use_dma && (status & RX_DMA)) { in net_interrupt()
830 struct net_local *lp = netdev_priv(dev); in net_open() local
845 if ((1 << i) & lp->irq_map) { in net_open()
849 write_irq(dev, lp->chip_type, i); in net_open()
864 if (((1 << dev->irq) & lp->irq_map) == 0) { in net_open()
866 dev->name, dev->irq, lp->irq_map); in net_open()
877 write_irq(dev, lp->chip_type, dev->irq); in net_open()
886 if (lp->use_dma && (lp->isa_config & ANY_ISA_DMA)) { in net_open()
888 lp->dma_buff = (unsigned char *)__get_dma_pages(GFP_KERNEL, in net_open()
889 get_order(lp->dmasize * 1024)); in net_open()
890 if (!lp->dma_buff) { in net_open()
892 dev->name, lp->dmasize); in net_open()
897 (unsigned long)lp->dma_buff, in net_open()
898 (unsigned long)isa_virt_to_bus(lp->dma_buff)); in net_open()
899 if ((unsigned long)lp->dma_buff >= MAX_DMA_ADDRESS || in net_open()
900 !dma_page_eq(lp->dma_buff, in net_open()
901 lp->dma_buff + lp->dmasize * 1024 - 1)) { in net_open()
905 memset(lp->dma_buff, 0, lp->dmasize * 1024); /* Why? */ in net_open()
911 write_dma(dev, lp->chip_type, dev->dma); in net_open()
912 lp->rx_dma_ptr = lp->dma_buff; in net_open()
913 lp->end_dma_buff = lp->dma_buff + lp->dmasize * 1024; in net_open()
914 spin_lock_irqsave(&lp->lock, flags); in net_open()
918 set_dma_addr(dev->dma, isa_virt_to_bus(lp->dma_buff)); in net_open()
919 set_dma_count(dev->dma, lp->dmasize * 1024); in net_open()
921 spin_unlock_irqrestore(&lp->lock, flags); in net_open()
935 if ((lp->adapter_cnf & A_CNF_EXTND_10B_2) && in net_open()
936 (lp->adapter_cnf & A_CNF_LOW_RX_SQUELCH)) in net_open()
937 lp->linectl = LOW_RX_SQUELCH; in net_open()
939 lp->linectl = 0; in net_open()
942 switch (lp->adapter_cnf & A_CNF_MEDIA_TYPE) { in net_open()
944 result = lp->adapter_cnf & A_CNF_10B_T; in net_open()
947 result = lp->adapter_cnf & A_CNF_AUI; in net_open()
950 result = lp->adapter_cnf & A_CNF_10B_2; in net_open()
953 result = lp->adapter_cnf & (A_CNF_10B_T | in net_open()
964 release_dma_buff(lp); in net_open()
974 switch (lp->adapter_cnf & A_CNF_MEDIA_TYPE) { in net_open()
980 if (lp->auto_neg_cnf & IMM_BIT) /* check "ignore missing media" bit */ in net_open()
988 if (lp->auto_neg_cnf & IMM_BIT) /* check "ignore missing media" bit */ in net_open()
996 if (lp->auto_neg_cnf & IMM_BIT) /* check "ignore missing media" bit */ in net_open()
1001 writereg(dev, PP_LineCTL, lp->linectl | AUTO_AUI_10BASET); in net_open()
1002 if (lp->adapter_cnf & A_CNF_10B_T) { in net_open()
1007 if (lp->adapter_cnf & A_CNF_AUI) { in net_open()
1012 if (lp->adapter_cnf & A_CNF_10B_2) { in net_open()
1044 lp->rx_mode = 0; in net_open()
1047 lp->curr_rx_cfg = RX_OK_ENBL | RX_CRC_ERROR_ENBL; in net_open()
1049 if (lp->isa_config & STREAM_TRANSFER) in net_open()
1050 lp->curr_rx_cfg |= RX_STREAM_ENBL; in net_open()
1054 writereg(dev, PP_RxCFG, lp->curr_rx_cfg); in net_open()
1091 struct net_local *lp = netdev_priv(dev); in net_close() local
1104 if (lp->use_dma && lp->dma) { in net_close()
1106 release_dma_buff(lp); in net_close()
1120 struct net_local *lp = netdev_priv(dev); in net_get_stats() local
1123 spin_lock_irqsave(&lp->lock, flags); in net_get_stats()
1127 spin_unlock_irqrestore(&lp->lock, flags); in net_get_stats()
1145 struct net_local *lp = netdev_priv(dev); in net_send_packet() local
1158 spin_lock_irqsave(&lp->lock, flags); in net_send_packet()
1162 iowrite16(lp->send_cmd, lp->virt_addr + TX_CMD_PORT); in net_send_packet()
1163 iowrite16(skb->len, lp->virt_addr + TX_LEN_PORT); in net_send_packet()
1171 spin_unlock_irqrestore(&lp->lock, flags); in net_send_packet()
1176 writewords(lp, TX_FRAME_PORT, skb->data, (skb->len + 1) >> 1); in net_send_packet()
1177 spin_unlock_irqrestore(&lp->lock, flags); in net_send_packet()
1196 struct net_local *lp = netdev_priv(dev); in set_multicast_list() local
1200 spin_lock_irqsave(&lp->lock, flags); in set_multicast_list()
1202 lp->rx_mode = RX_ALL_ACCEPT; in set_multicast_list()
1207 lp->rx_mode = RX_MULTCAST_ACCEPT; in set_multicast_list()
1209 lp->rx_mode = 0; in set_multicast_list()
1211 writereg(dev, PP_RxCTL, DEF_RX_ACCEPT | lp->rx_mode); in set_multicast_list()
1216 cfg = lp->curr_rx_cfg; in set_multicast_list()
1217 if (lp->rx_mode == RX_ALL_ACCEPT) in set_multicast_list()
1220 spin_unlock_irqrestore(&lp->lock, flags); in set_multicast_list()
1275 struct net_local *lp = netdev_priv(dev); in reset_chip() local
1283 if (lp->chip_type != CS8900) { in reset_chip()
1285 iowrite16(PP_CS8920_ISAINT, lp->virt_addr + ADD_PORT); in reset_chip()
1286 iowrite8(dev->irq, lp->virt_addr + DATA_PORT); in reset_chip()
1287 iowrite8(0, lp->virt_addr + DATA_PORT + 1); in reset_chip()
1289 iowrite16(PP_CS8920_ISAMemB, lp->virt_addr + ADD_PORT); in reset_chip()
1291 lp->virt_addr + DATA_PORT); in reset_chip()
1293 lp->virt_addr + DATA_PORT + 1); in reset_chip()
1313 struct net_local *lp = netdev_priv(dev); in cs89x0_probe1() local
1323 memset(lp, 0, sizeof(*lp)); in cs89x0_probe1()
1324 spin_lock_init(&lp->lock); in cs89x0_probe1()
1328 lp->use_dma = 1; in cs89x0_probe1()
1329 lp->dma = g_cs89x0_dma; in cs89x0_probe1()
1330 lp->dmasize = 16; /* Could make this an option... */ in cs89x0_probe1()
1333 lp->force = g_cs89x0_media__force; in cs89x0_probe1()
1350 lp->virt_addr = ioaddr; in cs89x0_probe1()
1354 lp->chip_type = rev_type & ~REVISON_BITS; in cs89x0_probe1()
1355 lp->chip_revision = ((rev_type & REVISON_BITS) >> 8) + 'A'; in cs89x0_probe1()
1361 lp->send_cmd = TX_AFTER_381; in cs89x0_probe1()
1362 if (lp->chip_type == CS8900 && lp->chip_revision >= 'F') in cs89x0_probe1()
1363 lp->send_cmd = TX_NOW; in cs89x0_probe1()
1364 if (lp->chip_type != CS8900 && lp->chip_revision >= 'C') in cs89x0_probe1()
1365 lp->send_cmd = TX_NOW; in cs89x0_probe1()
1371 lp->chip_type == CS8900 ? '0' : '2', in cs89x0_probe1()
1372 lp->chip_type == CS8920M ? "M" : "", in cs89x0_probe1()
1373 lp->chip_revision, in cs89x0_probe1()
1374 lp->virt_addr); in cs89x0_probe1()
1408 lp->adapter_cnf = 0; in cs89x0_probe1()
1412 lp->adapter_cnf |= A_CNF_DC_DC_POLARITY; in cs89x0_probe1()
1415 lp->adapter_cnf |= A_CNF_EXTND_10B_2 | A_CNF_LOW_RX_SQUELCH; in cs89x0_probe1()
1418 lp->adapter_cnf |= A_CNF_10B_T | A_CNF_MEDIA_10B_T; in cs89x0_probe1()
1421 lp->adapter_cnf |= A_CNF_AUI | A_CNF_MEDIA_AUI; in cs89x0_probe1()
1424 lp->adapter_cnf |= A_CNF_AUI | A_CNF_10B_T | in cs89x0_probe1()
1428 dev->name, i, lp->adapter_cnf); in cs89x0_probe1()
1431 if (lp->chip_type == CS8900) in cs89x0_probe1()
1432 lp->isa_config = readreg(dev, PP_CS8900_ISAINT) & INT_NO_MASK; in cs89x0_probe1()
1458 if (!lp->auto_neg_cnf) in cs89x0_probe1()
1459 lp->auto_neg_cnf = eeprom_buff[AUTO_NEG_CNF_OFFSET / 2]; in cs89x0_probe1()
1461 if (!lp->adapter_cnf) in cs89x0_probe1()
1462 lp->adapter_cnf = eeprom_buff[ADAPTER_CNF_OFFSET / 2]; in cs89x0_probe1()
1464 lp->isa_config = eeprom_buff[ISA_CNF_OFFSET / 2]; in cs89x0_probe1()
1475 dev->name, lp->adapter_cnf); in cs89x0_probe1()
1481 if (lp->force & FORCE_RJ45) { in cs89x0_probe1()
1482 lp->adapter_cnf |= A_CNF_10B_T; in cs89x0_probe1()
1485 if (lp->force & FORCE_AUI) { in cs89x0_probe1()
1486 lp->adapter_cnf |= A_CNF_AUI; in cs89x0_probe1()
1489 if (lp->force & FORCE_BNC) { in cs89x0_probe1()
1490 lp->adapter_cnf |= A_CNF_10B_2; in cs89x0_probe1()
1494 lp->adapter_cnf |= A_CNF_MEDIA_AUTO; in cs89x0_probe1()
1495 else if (lp->force & FORCE_RJ45) in cs89x0_probe1()
1496 lp->adapter_cnf |= A_CNF_MEDIA_10B_T; in cs89x0_probe1()
1497 else if (lp->force & FORCE_AUI) in cs89x0_probe1()
1498 lp->adapter_cnf |= A_CNF_MEDIA_AUI; in cs89x0_probe1()
1499 else if (lp->force & FORCE_BNC) in cs89x0_probe1()
1500 lp->adapter_cnf |= A_CNF_MEDIA_10B_2; in cs89x0_probe1()
1504 dev->name, lp->force, lp->adapter_cnf); in cs89x0_probe1()
1508 …/* FIXME: We don't let you set the IMM bit from the command line: add it to lp->auto_neg_cnf here … in cs89x0_probe1()
1515 (lp->adapter_cnf & A_CNF_10B_T) ? "RJ-45," : "", in cs89x0_probe1()
1516 (lp->adapter_cnf & A_CNF_AUI) ? "AUI," : "", in cs89x0_probe1()
1517 (lp->adapter_cnf & A_CNF_10B_2) ? "BNC," : ""); in cs89x0_probe1()
1519 lp->irq_map = 0xffff; in cs89x0_probe1()
1522 if (lp->chip_type != CS8900 && in cs89x0_probe1()
1529 i = lp->isa_config & INT_NO_MASK; in cs89x0_probe1()
1531 if (lp->chip_type == CS8900) { in cs89x0_probe1()
1538 lp->irq_map = CS8900_IRQ_MAP; /* fixed IRQ map for CS8900 */ in cs89x0_probe1()
1546 lp->irq_map = ((irq_map_buff[0] >> 8) | in cs89x0_probe1()
1558 if (lp->use_dma) { in cs89x0_probe1()
1578 iowrite16(PP_ChipID, lp->virt_addr + ADD_PORT); in cs89x0_probe1()
1592 struct net_local *lp = netdev_priv(dev); in cs89x0_ioport_probe() local
1596 if (!lp) in cs89x0_ioport_probe()
1763 struct net_local *lp; in cs89x0_isa_init_module() local
1777 lp = netdev_priv(dev); in cs89x0_isa_init_module()
1781 lp->use_dma = use_dma; in cs89x0_isa_init_module()
1782 lp->dma = dma; in cs89x0_isa_init_module()
1783 lp->dmasize = dmasize; in cs89x0_isa_init_module()
1787 spin_lock_init(&lp->lock); in cs89x0_isa_init_module()
1791 lp->adapter_cnf = A_CNF_MEDIA_10B_T | A_CNF_10B_T; in cs89x0_isa_init_module()
1793 lp->adapter_cnf = A_CNF_MEDIA_AUI | A_CNF_AUI; in cs89x0_isa_init_module()
1795 lp->adapter_cnf = A_CNF_MEDIA_10B_2 | A_CNF_10B_2; in cs89x0_isa_init_module()
1797 lp->adapter_cnf = A_CNF_MEDIA_10B_T | A_CNF_10B_T; in cs89x0_isa_init_module()
1800 lp->auto_neg_cnf = AUTO_NEG_ENABLE; in cs89x0_isa_init_module()
1834 struct net_local *lp = netdev_priv(dev_cs89x0); in cs89x0_isa_cleanup_module() local
1837 iowrite16(PP_ChipID, lp->virt_addr + ADD_PORT); in cs89x0_isa_cleanup_module()
1838 ioport_unmap(lp->virt_addr); in cs89x0_isa_cleanup_module()