Lines Matching refs:lp

195 static void readwords(struct net_local *lp, int portno, void *buf, int length)  in readwords()  argument
202 tmp16 = ioread16(lp->virt_addr + portno); in readwords()
208 static void writewords(struct net_local *lp, int portno, void *buf, int length) in writewords() argument
217 iowrite16(tmp16, lp->virt_addr + portno); in writewords()
224 struct net_local *lp = netdev_priv(dev); in readreg() local
226 iowrite16(regno, lp->virt_addr + ADD_PORT); in readreg()
227 return ioread16(lp->virt_addr + DATA_PORT); in readreg()
233 struct net_local *lp = netdev_priv(dev); in writereg() local
235 iowrite16(regno, lp->virt_addr + ADD_PORT); in writereg()
236 iowrite16(value, lp->virt_addr + DATA_PORT); in writereg()
337 struct net_local *lp = netdev_priv(dev); in get_dma_channel() local
339 if (lp->dma) { in get_dma_channel()
340 dev->dma = lp->dma; in get_dma_channel()
341 lp->isa_config |= ISA_RxDMA; in get_dma_channel()
343 if ((lp->isa_config & ANY_ISA_DMA) == 0) in get_dma_channel()
345 dev->dma = lp->isa_config & DMA_NO_MASK; in get_dma_channel()
346 if (lp->chip_type == CS8900) in get_dma_channel()
349 lp->isa_config &= ~ANY_ISA_DMA; in get_dma_channel()
358 struct net_local *lp = netdev_priv(dev); in write_dma() local
359 if ((lp->isa_config & ANY_ISA_DMA) == 0) in write_dma()
370 struct net_local *lp = netdev_priv(dev); in set_dma_cfg() local
372 if (lp->use_dma) { in set_dma_cfg()
373 if ((lp->isa_config & ANY_ISA_DMA) == 0) { in set_dma_cfg()
377 if (lp->isa_config & ISA_RxDMA) { in set_dma_cfg()
378 lp->curr_rx_cfg |= RX_DMA_ONLY; in set_dma_cfg()
381 lp->curr_rx_cfg |= AUTO_RX_DMA; /* not that we support it... */ in set_dma_cfg()
390 struct net_local *lp = netdev_priv(dev); in dma_bufcfg() local
391 if (lp->use_dma) in dma_bufcfg()
392 return (lp->isa_config & ANY_ISA_DMA) ? RX_DMA_ENBL : 0; in dma_bufcfg()
401 struct net_local *lp = netdev_priv(dev); in dma_busctl() local
402 if (lp->use_dma) { in dma_busctl()
403 if (lp->isa_config & ANY_ISA_DMA) in dma_busctl()
405 if (lp->isa_config & DMA_BURST) in dma_busctl()
407 if (lp->dmasize == 64) in dma_busctl()
417 struct net_local *lp = netdev_priv(dev); in dma_rx() local
420 unsigned char *bp = lp->rx_dma_ptr; in dma_rx()
442 if (bp >= lp->end_dma_buff) in dma_rx()
443 bp -= lp->dmasize * 1024; in dma_rx()
444 lp->rx_dma_ptr = bp; in dma_rx()
449 if (bp + length > lp->end_dma_buff) { in dma_rx()
450 int semi_cnt = lp->end_dma_buff - bp; in dma_rx()
452 memcpy(skb_put(skb, length - semi_cnt), lp->dma_buff, in dma_rx()
458 if (bp >= lp->end_dma_buff) in dma_rx()
459 bp -= lp->dmasize*1024; in dma_rx()
460 lp->rx_dma_ptr = bp; in dma_rx()
473 static void release_dma_buff(struct net_local *lp) in release_dma_buff() argument
475 if (lp->dma_buff) { in release_dma_buff()
476 free_pages((unsigned long)(lp->dma_buff), in release_dma_buff()
477 get_order(lp->dmasize * 1024)); in release_dma_buff()
478 lp->dma_buff = NULL; in release_dma_buff()
487 struct net_local *lp = netdev_priv(dev); in control_dc_dc() local
496 if (((lp->adapter_cnf & A_CNF_DC_DC_POLARITY) != 0) ^ on_not_off) in control_dc_dc()
511 struct net_local *lp = netdev_priv(dev); in send_test_pkt() local
525 iowrite16(TX_AFTER_ALL, lp->virt_addr + TX_CMD_PORT); in send_test_pkt()
526 iowrite16(ETH_ZLEN, lp->virt_addr + TX_LEN_PORT); in send_test_pkt()
536 writewords(lp, TX_FRAME_PORT, test_packet, (ETH_ZLEN + 1) >> 1); in send_test_pkt()
559 struct net_local *lp = netdev_priv(dev); in detect_tp() local
572 writereg(dev, PP_LineCTL, lp->linectl & ~AUI_ONLY); in detect_tp()
583 if (lp->chip_type == CS8900) { in detect_tp()
584 switch (lp->force & 0xf0) { in detect_tp()
593 lp->force &= ~FORCE_AUTO; in detect_tp()
594 lp->force |= FORCE_HALF; in detect_tp()
605 switch (lp->force & 0xf0) { in detect_tp()
607 lp->auto_neg_cnf = AUTO_NEG_ENABLE; in detect_tp()
610 lp->auto_neg_cnf = 0; in detect_tp()
613 lp->auto_neg_cnf = RE_NEG_NOW | ALLOW_FDX; in detect_tp()
617 writereg(dev, PP_AutoNegCTL, lp->auto_neg_cnf & AUTO_NEG_MASK); in detect_tp()
619 if ((lp->auto_neg_cnf & AUTO_NEG_BITS) == AUTO_NEG_ENABLE) { in detect_tp()
639 struct net_local *lp = netdev_priv(dev); in detect_bnc() local
644 writereg(dev, PP_LineCTL, (lp->linectl & ~AUTO_AUI_10BASET) | AUI_ONLY); in detect_bnc()
655 struct net_local *lp = netdev_priv(dev); in detect_aui() local
660 writereg(dev, PP_LineCTL, (lp->linectl & ~AUTO_AUI_10BASET) | AUI_ONLY); in detect_aui()
672 struct net_local *lp = netdev_priv(dev); in net_rx() local
676 status = ioread16(lp->virt_addr + RX_FRAME_PORT); in net_rx()
677 length = ioread16(lp->virt_addr + RX_FRAME_PORT); in net_rx()
692 readwords(lp, RX_FRAME_PORT, skb_put(skb, length), length >> 1); in net_rx()
694 skb->data[length-1] = ioread16(lp->virt_addr + RX_FRAME_PORT); in net_rx()
714 struct net_local *lp; in net_interrupt() local
718 lp = netdev_priv(dev); in net_interrupt()
728 while ((status = ioread16(lp->virt_addr + ISQ_PORT))) { in net_interrupt()
769 lp->send_underrun++; in net_interrupt()
770 if (lp->send_underrun == 3) in net_interrupt()
771 lp->send_cmd = TX_AFTER_381; in net_interrupt()
772 else if (lp->send_underrun == 6) in net_interrupt()
773 lp->send_cmd = TX_AFTER_ALL; in net_interrupt()
783 if (lp->use_dma && (status & RX_DMA)) { in net_interrupt()
828 struct net_local *lp = netdev_priv(dev); in net_open() local
843 if ((1 << i) & lp->irq_map) { in net_open()
847 write_irq(dev, lp->chip_type, i); in net_open()
862 if (((1 << dev->irq) & lp->irq_map) == 0) { in net_open()
864 dev->name, dev->irq, lp->irq_map); in net_open()
875 write_irq(dev, lp->chip_type, dev->irq); in net_open()
884 if (lp->use_dma && (lp->isa_config & ANY_ISA_DMA)) { in net_open()
886 lp->dma_buff = (unsigned char *)__get_dma_pages(GFP_KERNEL, in net_open()
887 get_order(lp->dmasize * 1024)); in net_open()
888 if (!lp->dma_buff) { in net_open()
890 dev->name, lp->dmasize); in net_open()
895 (unsigned long)lp->dma_buff, in net_open()
896 (unsigned long)isa_virt_to_bus(lp->dma_buff)); in net_open()
897 if ((unsigned long)lp->dma_buff >= MAX_DMA_ADDRESS || in net_open()
898 !dma_page_eq(lp->dma_buff, in net_open()
899 lp->dma_buff + lp->dmasize * 1024 - 1)) { in net_open()
903 memset(lp->dma_buff, 0, lp->dmasize * 1024); /* Why? */ in net_open()
909 write_dma(dev, lp->chip_type, dev->dma); in net_open()
910 lp->rx_dma_ptr = lp->dma_buff; in net_open()
911 lp->end_dma_buff = lp->dma_buff + lp->dmasize * 1024; in net_open()
912 spin_lock_irqsave(&lp->lock, flags); in net_open()
916 set_dma_addr(dev->dma, isa_virt_to_bus(lp->dma_buff)); in net_open()
917 set_dma_count(dev->dma, lp->dmasize * 1024); in net_open()
919 spin_unlock_irqrestore(&lp->lock, flags); in net_open()
933 if ((lp->adapter_cnf & A_CNF_EXTND_10B_2) && in net_open()
934 (lp->adapter_cnf & A_CNF_LOW_RX_SQUELCH)) in net_open()
935 lp->linectl = LOW_RX_SQUELCH; in net_open()
937 lp->linectl = 0; in net_open()
940 switch (lp->adapter_cnf & A_CNF_MEDIA_TYPE) { in net_open()
942 result = lp->adapter_cnf & A_CNF_10B_T; in net_open()
945 result = lp->adapter_cnf & A_CNF_AUI; in net_open()
948 result = lp->adapter_cnf & A_CNF_10B_2; in net_open()
951 result = lp->adapter_cnf & (A_CNF_10B_T | in net_open()
962 release_dma_buff(lp); in net_open()
972 switch (lp->adapter_cnf & A_CNF_MEDIA_TYPE) { in net_open()
978 if (lp->auto_neg_cnf & IMM_BIT) /* check "ignore missing media" bit */ in net_open()
986 if (lp->auto_neg_cnf & IMM_BIT) /* check "ignore missing media" bit */ in net_open()
994 if (lp->auto_neg_cnf & IMM_BIT) /* check "ignore missing media" bit */ in net_open()
999 writereg(dev, PP_LineCTL, lp->linectl | AUTO_AUI_10BASET); in net_open()
1000 if (lp->adapter_cnf & A_CNF_10B_T) { in net_open()
1005 if (lp->adapter_cnf & A_CNF_AUI) { in net_open()
1010 if (lp->adapter_cnf & A_CNF_10B_2) { in net_open()
1042 lp->rx_mode = 0; in net_open()
1045 lp->curr_rx_cfg = RX_OK_ENBL | RX_CRC_ERROR_ENBL; in net_open()
1047 if (lp->isa_config & STREAM_TRANSFER) in net_open()
1048 lp->curr_rx_cfg |= RX_STREAM_ENBL; in net_open()
1052 writereg(dev, PP_RxCFG, lp->curr_rx_cfg); in net_open()
1089 struct net_local *lp = netdev_priv(dev); in net_close() local
1102 if (lp->use_dma && lp->dma) { in net_close()
1104 release_dma_buff(lp); in net_close()
1118 struct net_local *lp = netdev_priv(dev); in net_get_stats() local
1121 spin_lock_irqsave(&lp->lock, flags); in net_get_stats()
1125 spin_unlock_irqrestore(&lp->lock, flags); in net_get_stats()
1143 struct net_local *lp = netdev_priv(dev); in net_send_packet() local
1156 spin_lock_irqsave(&lp->lock, flags); in net_send_packet()
1160 iowrite16(lp->send_cmd, lp->virt_addr + TX_CMD_PORT); in net_send_packet()
1161 iowrite16(skb->len, lp->virt_addr + TX_LEN_PORT); in net_send_packet()
1169 spin_unlock_irqrestore(&lp->lock, flags); in net_send_packet()
1174 writewords(lp, TX_FRAME_PORT, skb->data, (skb->len + 1) >> 1); in net_send_packet()
1175 spin_unlock_irqrestore(&lp->lock, flags); in net_send_packet()
1194 struct net_local *lp = netdev_priv(dev); in set_multicast_list() local
1198 spin_lock_irqsave(&lp->lock, flags); in set_multicast_list()
1200 lp->rx_mode = RX_ALL_ACCEPT; in set_multicast_list()
1205 lp->rx_mode = RX_MULTCAST_ACCEPT; in set_multicast_list()
1207 lp->rx_mode = 0; in set_multicast_list()
1209 writereg(dev, PP_RxCTL, DEF_RX_ACCEPT | lp->rx_mode); in set_multicast_list()
1214 cfg = lp->curr_rx_cfg; in set_multicast_list()
1215 if (lp->rx_mode == RX_ALL_ACCEPT) in set_multicast_list()
1218 spin_unlock_irqrestore(&lp->lock, flags); in set_multicast_list()
1274 struct net_local *lp = netdev_priv(dev); in reset_chip() local
1282 if (lp->chip_type != CS8900) { in reset_chip()
1284 iowrite16(PP_CS8920_ISAINT, lp->virt_addr + ADD_PORT); in reset_chip()
1285 iowrite8(dev->irq, lp->virt_addr + DATA_PORT); in reset_chip()
1286 iowrite8(0, lp->virt_addr + DATA_PORT + 1); in reset_chip()
1288 iowrite16(PP_CS8920_ISAMemB, lp->virt_addr + ADD_PORT); in reset_chip()
1290 lp->virt_addr + DATA_PORT); in reset_chip()
1292 lp->virt_addr + DATA_PORT + 1); in reset_chip()
1312 struct net_local *lp = netdev_priv(dev); in cs89x0_probe1() local
1321 memset(lp, 0, sizeof(*lp)); in cs89x0_probe1()
1322 spin_lock_init(&lp->lock); in cs89x0_probe1()
1326 lp->use_dma = 1; in cs89x0_probe1()
1327 lp->dma = g_cs89x0_dma; in cs89x0_probe1()
1328 lp->dmasize = 16; /* Could make this an option... */ in cs89x0_probe1()
1331 lp->force = g_cs89x0_media__force; in cs89x0_probe1()
1348 lp->virt_addr = ioaddr; in cs89x0_probe1()
1352 lp->chip_type = rev_type & ~REVISON_BITS; in cs89x0_probe1()
1353 lp->chip_revision = ((rev_type & REVISON_BITS) >> 8) + 'A'; in cs89x0_probe1()
1359 lp->send_cmd = TX_AFTER_381; in cs89x0_probe1()
1360 if (lp->chip_type == CS8900 && lp->chip_revision >= 'F') in cs89x0_probe1()
1361 lp->send_cmd = TX_NOW; in cs89x0_probe1()
1362 if (lp->chip_type != CS8900 && lp->chip_revision >= 'C') in cs89x0_probe1()
1363 lp->send_cmd = TX_NOW; in cs89x0_probe1()
1369 lp->chip_type == CS8900 ? '0' : '2', in cs89x0_probe1()
1370 lp->chip_type == CS8920M ? "M" : "", in cs89x0_probe1()
1371 lp->chip_revision, in cs89x0_probe1()
1372 lp->virt_addr); in cs89x0_probe1()
1405 lp->adapter_cnf = 0; in cs89x0_probe1()
1409 lp->adapter_cnf |= A_CNF_DC_DC_POLARITY; in cs89x0_probe1()
1412 lp->adapter_cnf |= A_CNF_EXTND_10B_2 | A_CNF_LOW_RX_SQUELCH; in cs89x0_probe1()
1415 lp->adapter_cnf |= A_CNF_10B_T | A_CNF_MEDIA_10B_T; in cs89x0_probe1()
1418 lp->adapter_cnf |= A_CNF_AUI | A_CNF_MEDIA_AUI; in cs89x0_probe1()
1421 lp->adapter_cnf |= A_CNF_AUI | A_CNF_10B_T | in cs89x0_probe1()
1425 dev->name, i, lp->adapter_cnf); in cs89x0_probe1()
1428 if (lp->chip_type == CS8900) in cs89x0_probe1()
1429 lp->isa_config = readreg(dev, PP_CS8900_ISAINT) & INT_NO_MASK; in cs89x0_probe1()
1455 if (!lp->auto_neg_cnf) in cs89x0_probe1()
1456 lp->auto_neg_cnf = eeprom_buff[AUTO_NEG_CNF_OFFSET / 2]; in cs89x0_probe1()
1458 if (!lp->adapter_cnf) in cs89x0_probe1()
1459 lp->adapter_cnf = eeprom_buff[ADAPTER_CNF_OFFSET / 2]; in cs89x0_probe1()
1461 lp->isa_config = eeprom_buff[ISA_CNF_OFFSET / 2]; in cs89x0_probe1()
1471 dev->name, lp->adapter_cnf); in cs89x0_probe1()
1477 if (lp->force & FORCE_RJ45) { in cs89x0_probe1()
1478 lp->adapter_cnf |= A_CNF_10B_T; in cs89x0_probe1()
1481 if (lp->force & FORCE_AUI) { in cs89x0_probe1()
1482 lp->adapter_cnf |= A_CNF_AUI; in cs89x0_probe1()
1485 if (lp->force & FORCE_BNC) { in cs89x0_probe1()
1486 lp->adapter_cnf |= A_CNF_10B_2; in cs89x0_probe1()
1490 lp->adapter_cnf |= A_CNF_MEDIA_AUTO; in cs89x0_probe1()
1491 else if (lp->force & FORCE_RJ45) in cs89x0_probe1()
1492 lp->adapter_cnf |= A_CNF_MEDIA_10B_T; in cs89x0_probe1()
1493 else if (lp->force & FORCE_AUI) in cs89x0_probe1()
1494 lp->adapter_cnf |= A_CNF_MEDIA_AUI; in cs89x0_probe1()
1495 else if (lp->force & FORCE_BNC) in cs89x0_probe1()
1496 lp->adapter_cnf |= A_CNF_MEDIA_10B_2; in cs89x0_probe1()
1500 dev->name, lp->force, lp->adapter_cnf); in cs89x0_probe1()
1511 (lp->adapter_cnf & A_CNF_10B_T) ? "RJ-45," : "", in cs89x0_probe1()
1512 (lp->adapter_cnf & A_CNF_AUI) ? "AUI," : "", in cs89x0_probe1()
1513 (lp->adapter_cnf & A_CNF_10B_2) ? "BNC," : ""); in cs89x0_probe1()
1515 lp->irq_map = 0xffff; in cs89x0_probe1()
1518 if (lp->chip_type != CS8900 && in cs89x0_probe1()
1525 i = lp->isa_config & INT_NO_MASK; in cs89x0_probe1()
1527 if (lp->chip_type == CS8900) { in cs89x0_probe1()
1534 lp->irq_map = CS8900_IRQ_MAP; /* fixed IRQ map for CS8900 */ in cs89x0_probe1()
1542 lp->irq_map = ((irq_map_buff[0] >> 8) | in cs89x0_probe1()
1554 if (lp->use_dma) { in cs89x0_probe1()
1574 iowrite16(PP_ChipID, lp->virt_addr + ADD_PORT); in cs89x0_probe1()
1588 struct net_local *lp = netdev_priv(dev); in cs89x0_ioport_probe() local
1592 if (!lp) in cs89x0_ioport_probe()
1763 struct net_local *lp; in init_module() local
1776 lp = netdev_priv(dev); in init_module()
1780 lp->use_dma = use_dma; in init_module()
1781 lp->dma = dma; in init_module()
1782 lp->dmasize = dmasize; in init_module()
1786 spin_lock_init(&lp->lock); in init_module()
1790 lp->adapter_cnf = A_CNF_MEDIA_10B_T | A_CNF_10B_T; in init_module()
1792 lp->adapter_cnf = A_CNF_MEDIA_AUI | A_CNF_AUI; in init_module()
1794 lp->adapter_cnf = A_CNF_MEDIA_10B_2 | A_CNF_10B_2; in init_module()
1796 lp->adapter_cnf = A_CNF_MEDIA_10B_T | A_CNF_10B_T; in init_module()
1799 lp->auto_neg_cnf = AUTO_NEG_ENABLE; in init_module()
1833 struct net_local *lp = netdev_priv(dev_cs89x0); in cleanup_module() local
1836 iowrite16(PP_ChipID, lp->virt_addr + ADD_PORT); in cleanup_module()
1837 ioport_unmap(lp->virt_addr); in cleanup_module()
1847 struct net_local *lp; in cs89x0_platform_probe() local
1855 lp = netdev_priv(dev); in cs89x0_platform_probe()