Lines Matching refs:lp

197 static void readwords(struct net_local *lp, int portno, void *buf, int length)  in readwords()  argument
204 tmp16 = ioread16(lp->virt_addr + portno); in readwords()
210 static void writewords(struct net_local *lp, int portno, void *buf, int length) in writewords() argument
219 iowrite16(tmp16, lp->virt_addr + portno); in writewords()
226 struct net_local *lp = netdev_priv(dev); in readreg() local
228 iowrite16(regno, lp->virt_addr + ADD_PORT); in readreg()
229 return ioread16(lp->virt_addr + DATA_PORT); in readreg()
235 struct net_local *lp = netdev_priv(dev); in writereg() local
237 iowrite16(regno, lp->virt_addr + ADD_PORT); in writereg()
238 iowrite16(value, lp->virt_addr + DATA_PORT); in writereg()
339 struct net_local *lp = netdev_priv(dev); in get_dma_channel() local
341 if (lp->dma) { in get_dma_channel()
342 dev->dma = lp->dma; in get_dma_channel()
343 lp->isa_config |= ISA_RxDMA; in get_dma_channel()
345 if ((lp->isa_config & ANY_ISA_DMA) == 0) in get_dma_channel()
347 dev->dma = lp->isa_config & DMA_NO_MASK; in get_dma_channel()
348 if (lp->chip_type == CS8900) in get_dma_channel()
351 lp->isa_config &= ~ANY_ISA_DMA; in get_dma_channel()
360 struct net_local *lp = netdev_priv(dev); in write_dma() local
361 if ((lp->isa_config & ANY_ISA_DMA) == 0) in write_dma()
372 struct net_local *lp = netdev_priv(dev); in set_dma_cfg() local
374 if (lp->use_dma) { in set_dma_cfg()
375 if ((lp->isa_config & ANY_ISA_DMA) == 0) { in set_dma_cfg()
379 if (lp->isa_config & ISA_RxDMA) { in set_dma_cfg()
380 lp->curr_rx_cfg |= RX_DMA_ONLY; in set_dma_cfg()
383 lp->curr_rx_cfg |= AUTO_RX_DMA; /* not that we support it... */ in set_dma_cfg()
392 struct net_local *lp = netdev_priv(dev); in dma_bufcfg() local
393 if (lp->use_dma) in dma_bufcfg()
394 return (lp->isa_config & ANY_ISA_DMA) ? RX_DMA_ENBL : 0; in dma_bufcfg()
403 struct net_local *lp = netdev_priv(dev); in dma_busctl() local
404 if (lp->use_dma) { in dma_busctl()
405 if (lp->isa_config & ANY_ISA_DMA) in dma_busctl()
407 if (lp->isa_config & DMA_BURST) in dma_busctl()
409 if (lp->dmasize == 64) in dma_busctl()
419 struct net_local *lp = netdev_priv(dev); in dma_rx() local
422 unsigned char *bp = lp->rx_dma_ptr; in dma_rx()
444 if (bp >= lp->end_dma_buff) in dma_rx()
445 bp -= lp->dmasize * 1024; in dma_rx()
446 lp->rx_dma_ptr = bp; in dma_rx()
451 if (bp + length > lp->end_dma_buff) { in dma_rx()
452 int semi_cnt = lp->end_dma_buff - bp; in dma_rx()
454 skb_put_data(skb, lp->dma_buff, length - semi_cnt); in dma_rx()
459 if (bp >= lp->end_dma_buff) in dma_rx()
460 bp -= lp->dmasize*1024; in dma_rx()
461 lp->rx_dma_ptr = bp; in dma_rx()
474 static void release_dma_buff(struct net_local *lp) in release_dma_buff() argument
476 if (lp->dma_buff) { in release_dma_buff()
477 free_pages((unsigned long)(lp->dma_buff), in release_dma_buff()
478 get_order(lp->dmasize * 1024)); in release_dma_buff()
479 lp->dma_buff = NULL; in release_dma_buff()
488 struct net_local *lp = netdev_priv(dev); in control_dc_dc() local
497 if (((lp->adapter_cnf & A_CNF_DC_DC_POLARITY) != 0) ^ on_not_off) in control_dc_dc()
512 struct net_local *lp = netdev_priv(dev); in send_test_pkt() local
526 iowrite16(TX_AFTER_ALL, lp->virt_addr + TX_CMD_PORT); in send_test_pkt()
527 iowrite16(ETH_ZLEN, lp->virt_addr + TX_LEN_PORT); in send_test_pkt()
537 writewords(lp, TX_FRAME_PORT, test_packet, (ETH_ZLEN + 1) >> 1); in send_test_pkt()
560 struct net_local *lp = netdev_priv(dev); in detect_tp() local
573 writereg(dev, PP_LineCTL, lp->linectl & ~AUI_ONLY); in detect_tp()
584 if (lp->chip_type == CS8900) { in detect_tp()
585 switch (lp->force & 0xf0) { in detect_tp()
594 lp->force &= ~FORCE_AUTO; in detect_tp()
595 lp->force |= FORCE_HALF; in detect_tp()
606 switch (lp->force & 0xf0) { in detect_tp()
608 lp->auto_neg_cnf = AUTO_NEG_ENABLE; in detect_tp()
611 lp->auto_neg_cnf = 0; in detect_tp()
614 lp->auto_neg_cnf = RE_NEG_NOW | ALLOW_FDX; in detect_tp()
618 writereg(dev, PP_AutoNegCTL, lp->auto_neg_cnf & AUTO_NEG_MASK); in detect_tp()
620 if ((lp->auto_neg_cnf & AUTO_NEG_BITS) == AUTO_NEG_ENABLE) { in detect_tp()
640 struct net_local *lp = netdev_priv(dev); in detect_bnc() local
645 writereg(dev, PP_LineCTL, (lp->linectl & ~AUTO_AUI_10BASET) | AUI_ONLY); in detect_bnc()
656 struct net_local *lp = netdev_priv(dev); in detect_aui() local
661 writereg(dev, PP_LineCTL, (lp->linectl & ~AUTO_AUI_10BASET) | AUI_ONLY); in detect_aui()
673 struct net_local *lp = netdev_priv(dev); in net_rx() local
677 status = ioread16(lp->virt_addr + RX_FRAME_PORT); in net_rx()
678 length = ioread16(lp->virt_addr + RX_FRAME_PORT); in net_rx()
693 readwords(lp, RX_FRAME_PORT, skb_put(skb, length), length >> 1); in net_rx()
695 skb->data[length-1] = ioread16(lp->virt_addr + RX_FRAME_PORT); in net_rx()
715 struct net_local *lp; in net_interrupt() local
719 lp = netdev_priv(dev); in net_interrupt()
729 while ((status = ioread16(lp->virt_addr + ISQ_PORT))) { in net_interrupt()
770 lp->send_underrun++; in net_interrupt()
771 if (lp->send_underrun == 3) in net_interrupt()
772 lp->send_cmd = TX_AFTER_381; in net_interrupt()
773 else if (lp->send_underrun == 6) in net_interrupt()
774 lp->send_cmd = TX_AFTER_ALL; in net_interrupt()
784 if (lp->use_dma && (status & RX_DMA)) { in net_interrupt()
829 struct net_local *lp = netdev_priv(dev); in net_open() local
844 if ((1 << i) & lp->irq_map) { in net_open()
848 write_irq(dev, lp->chip_type, i); in net_open()
863 if (((1 << dev->irq) & lp->irq_map) == 0) { in net_open()
865 dev->name, dev->irq, lp->irq_map); in net_open()
876 write_irq(dev, lp->chip_type, dev->irq); in net_open()
885 if (lp->use_dma && (lp->isa_config & ANY_ISA_DMA)) { in net_open()
887 lp->dma_buff = (unsigned char *)__get_dma_pages(GFP_KERNEL, in net_open()
888 get_order(lp->dmasize * 1024)); in net_open()
889 if (!lp->dma_buff) { in net_open()
891 dev->name, lp->dmasize); in net_open()
896 (unsigned long)lp->dma_buff, in net_open()
897 (unsigned long)isa_virt_to_bus(lp->dma_buff)); in net_open()
898 if ((unsigned long)lp->dma_buff >= MAX_DMA_ADDRESS || in net_open()
899 !dma_page_eq(lp->dma_buff, in net_open()
900 lp->dma_buff + lp->dmasize * 1024 - 1)) { in net_open()
904 memset(lp->dma_buff, 0, lp->dmasize * 1024); /* Why? */ in net_open()
910 write_dma(dev, lp->chip_type, dev->dma); in net_open()
911 lp->rx_dma_ptr = lp->dma_buff; in net_open()
912 lp->end_dma_buff = lp->dma_buff + lp->dmasize * 1024; in net_open()
913 spin_lock_irqsave(&lp->lock, flags); in net_open()
917 set_dma_addr(dev->dma, isa_virt_to_bus(lp->dma_buff)); in net_open()
918 set_dma_count(dev->dma, lp->dmasize * 1024); in net_open()
920 spin_unlock_irqrestore(&lp->lock, flags); in net_open()
934 if ((lp->adapter_cnf & A_CNF_EXTND_10B_2) && in net_open()
935 (lp->adapter_cnf & A_CNF_LOW_RX_SQUELCH)) in net_open()
936 lp->linectl = LOW_RX_SQUELCH; in net_open()
938 lp->linectl = 0; in net_open()
941 switch (lp->adapter_cnf & A_CNF_MEDIA_TYPE) { in net_open()
943 result = lp->adapter_cnf & A_CNF_10B_T; in net_open()
946 result = lp->adapter_cnf & A_CNF_AUI; in net_open()
949 result = lp->adapter_cnf & A_CNF_10B_2; in net_open()
952 result = lp->adapter_cnf & (A_CNF_10B_T | in net_open()
963 release_dma_buff(lp); in net_open()
973 switch (lp->adapter_cnf & A_CNF_MEDIA_TYPE) { in net_open()
979 if (lp->auto_neg_cnf & IMM_BIT) /* check "ignore missing media" bit */ in net_open()
987 if (lp->auto_neg_cnf & IMM_BIT) /* check "ignore missing media" bit */ in net_open()
995 if (lp->auto_neg_cnf & IMM_BIT) /* check "ignore missing media" bit */ in net_open()
1000 writereg(dev, PP_LineCTL, lp->linectl | AUTO_AUI_10BASET); in net_open()
1001 if (lp->adapter_cnf & A_CNF_10B_T) { in net_open()
1006 if (lp->adapter_cnf & A_CNF_AUI) { in net_open()
1011 if (lp->adapter_cnf & A_CNF_10B_2) { in net_open()
1043 lp->rx_mode = 0; in net_open()
1046 lp->curr_rx_cfg = RX_OK_ENBL | RX_CRC_ERROR_ENBL; in net_open()
1048 if (lp->isa_config & STREAM_TRANSFER) in net_open()
1049 lp->curr_rx_cfg |= RX_STREAM_ENBL; in net_open()
1053 writereg(dev, PP_RxCFG, lp->curr_rx_cfg); in net_open()
1090 struct net_local *lp = netdev_priv(dev); in net_close() local
1103 if (lp->use_dma && lp->dma) { in net_close()
1105 release_dma_buff(lp); in net_close()
1119 struct net_local *lp = netdev_priv(dev); in net_get_stats() local
1122 spin_lock_irqsave(&lp->lock, flags); in net_get_stats()
1126 spin_unlock_irqrestore(&lp->lock, flags); in net_get_stats()
1144 struct net_local *lp = netdev_priv(dev); in net_send_packet() local
1157 spin_lock_irqsave(&lp->lock, flags); in net_send_packet()
1161 iowrite16(lp->send_cmd, lp->virt_addr + TX_CMD_PORT); in net_send_packet()
1162 iowrite16(skb->len, lp->virt_addr + TX_LEN_PORT); in net_send_packet()
1170 spin_unlock_irqrestore(&lp->lock, flags); in net_send_packet()
1175 writewords(lp, TX_FRAME_PORT, skb->data, (skb->len + 1) >> 1); in net_send_packet()
1176 spin_unlock_irqrestore(&lp->lock, flags); in net_send_packet()
1195 struct net_local *lp = netdev_priv(dev); in set_multicast_list() local
1199 spin_lock_irqsave(&lp->lock, flags); in set_multicast_list()
1201 lp->rx_mode = RX_ALL_ACCEPT; in set_multicast_list()
1206 lp->rx_mode = RX_MULTCAST_ACCEPT; in set_multicast_list()
1208 lp->rx_mode = 0; in set_multicast_list()
1210 writereg(dev, PP_RxCTL, DEF_RX_ACCEPT | lp->rx_mode); in set_multicast_list()
1215 cfg = lp->curr_rx_cfg; in set_multicast_list()
1216 if (lp->rx_mode == RX_ALL_ACCEPT) in set_multicast_list()
1219 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
1322 memset(lp, 0, sizeof(*lp)); in cs89x0_probe1()
1323 spin_lock_init(&lp->lock); in cs89x0_probe1()
1327 lp->use_dma = 1; in cs89x0_probe1()
1328 lp->dma = g_cs89x0_dma; in cs89x0_probe1()
1329 lp->dmasize = 16; /* Could make this an option... */ in cs89x0_probe1()
1332 lp->force = g_cs89x0_media__force; in cs89x0_probe1()
1349 lp->virt_addr = ioaddr; in cs89x0_probe1()
1353 lp->chip_type = rev_type & ~REVISON_BITS; in cs89x0_probe1()
1354 lp->chip_revision = ((rev_type & REVISON_BITS) >> 8) + 'A'; in cs89x0_probe1()
1360 lp->send_cmd = TX_AFTER_381; in cs89x0_probe1()
1361 if (lp->chip_type == CS8900 && lp->chip_revision >= 'F') in cs89x0_probe1()
1362 lp->send_cmd = TX_NOW; in cs89x0_probe1()
1363 if (lp->chip_type != CS8900 && lp->chip_revision >= 'C') in cs89x0_probe1()
1364 lp->send_cmd = TX_NOW; in cs89x0_probe1()
1370 lp->chip_type == CS8900 ? '0' : '2', in cs89x0_probe1()
1371 lp->chip_type == CS8920M ? "M" : "", in cs89x0_probe1()
1372 lp->chip_revision, in cs89x0_probe1()
1373 lp->virt_addr); in cs89x0_probe1()
1407 lp->adapter_cnf = 0; in cs89x0_probe1()
1411 lp->adapter_cnf |= A_CNF_DC_DC_POLARITY; in cs89x0_probe1()
1414 lp->adapter_cnf |= A_CNF_EXTND_10B_2 | A_CNF_LOW_RX_SQUELCH; in cs89x0_probe1()
1417 lp->adapter_cnf |= A_CNF_10B_T | A_CNF_MEDIA_10B_T; in cs89x0_probe1()
1420 lp->adapter_cnf |= A_CNF_AUI | A_CNF_MEDIA_AUI; in cs89x0_probe1()
1423 lp->adapter_cnf |= A_CNF_AUI | A_CNF_10B_T | in cs89x0_probe1()
1427 dev->name, i, lp->adapter_cnf); in cs89x0_probe1()
1430 if (lp->chip_type == CS8900) in cs89x0_probe1()
1431 lp->isa_config = readreg(dev, PP_CS8900_ISAINT) & INT_NO_MASK; in cs89x0_probe1()
1457 if (!lp->auto_neg_cnf) in cs89x0_probe1()
1458 lp->auto_neg_cnf = eeprom_buff[AUTO_NEG_CNF_OFFSET / 2]; in cs89x0_probe1()
1460 if (!lp->adapter_cnf) in cs89x0_probe1()
1461 lp->adapter_cnf = eeprom_buff[ADAPTER_CNF_OFFSET / 2]; in cs89x0_probe1()
1463 lp->isa_config = eeprom_buff[ISA_CNF_OFFSET / 2]; in cs89x0_probe1()
1474 dev->name, lp->adapter_cnf); in cs89x0_probe1()
1480 if (lp->force & FORCE_RJ45) { in cs89x0_probe1()
1481 lp->adapter_cnf |= A_CNF_10B_T; in cs89x0_probe1()
1484 if (lp->force & FORCE_AUI) { in cs89x0_probe1()
1485 lp->adapter_cnf |= A_CNF_AUI; in cs89x0_probe1()
1488 if (lp->force & FORCE_BNC) { in cs89x0_probe1()
1489 lp->adapter_cnf |= A_CNF_10B_2; in cs89x0_probe1()
1493 lp->adapter_cnf |= A_CNF_MEDIA_AUTO; in cs89x0_probe1()
1494 else if (lp->force & FORCE_RJ45) in cs89x0_probe1()
1495 lp->adapter_cnf |= A_CNF_MEDIA_10B_T; in cs89x0_probe1()
1496 else if (lp->force & FORCE_AUI) in cs89x0_probe1()
1497 lp->adapter_cnf |= A_CNF_MEDIA_AUI; in cs89x0_probe1()
1498 else if (lp->force & FORCE_BNC) in cs89x0_probe1()
1499 lp->adapter_cnf |= A_CNF_MEDIA_10B_2; in cs89x0_probe1()
1503 dev->name, lp->force, lp->adapter_cnf); in cs89x0_probe1()
1514 (lp->adapter_cnf & A_CNF_10B_T) ? "RJ-45," : "", in cs89x0_probe1()
1515 (lp->adapter_cnf & A_CNF_AUI) ? "AUI," : "", in cs89x0_probe1()
1516 (lp->adapter_cnf & A_CNF_10B_2) ? "BNC," : ""); in cs89x0_probe1()
1518 lp->irq_map = 0xffff; in cs89x0_probe1()
1521 if (lp->chip_type != CS8900 && in cs89x0_probe1()
1528 i = lp->isa_config & INT_NO_MASK; in cs89x0_probe1()
1530 if (lp->chip_type == CS8900) { in cs89x0_probe1()
1537 lp->irq_map = CS8900_IRQ_MAP; /* fixed IRQ map for CS8900 */ in cs89x0_probe1()
1545 lp->irq_map = ((irq_map_buff[0] >> 8) | in cs89x0_probe1()
1557 if (lp->use_dma) { in cs89x0_probe1()
1577 iowrite16(PP_ChipID, lp->virt_addr + ADD_PORT); in cs89x0_probe1()
1591 struct net_local *lp = netdev_priv(dev); in cs89x0_ioport_probe() local
1595 if (!lp) in cs89x0_ioport_probe()
1762 struct net_local *lp; in cs89x0_isa_init_module() local
1776 lp = netdev_priv(dev); in cs89x0_isa_init_module()
1780 lp->use_dma = use_dma; in cs89x0_isa_init_module()
1781 lp->dma = dma; in cs89x0_isa_init_module()
1782 lp->dmasize = dmasize; in cs89x0_isa_init_module()
1786 spin_lock_init(&lp->lock); in cs89x0_isa_init_module()
1790 lp->adapter_cnf = A_CNF_MEDIA_10B_T | A_CNF_10B_T; in cs89x0_isa_init_module()
1792 lp->adapter_cnf = A_CNF_MEDIA_AUI | A_CNF_AUI; in cs89x0_isa_init_module()
1794 lp->adapter_cnf = A_CNF_MEDIA_10B_2 | A_CNF_10B_2; in cs89x0_isa_init_module()
1796 lp->adapter_cnf = A_CNF_MEDIA_10B_T | A_CNF_10B_T; in cs89x0_isa_init_module()
1799 lp->auto_neg_cnf = AUTO_NEG_ENABLE; in cs89x0_isa_init_module()
1833 struct net_local *lp = netdev_priv(dev_cs89x0); in cs89x0_isa_cleanup_module() local
1836 iowrite16(PP_ChipID, lp->virt_addr + ADD_PORT); in cs89x0_isa_cleanup_module()
1837 ioport_unmap(lp->virt_addr); in cs89x0_isa_cleanup_module()