Lines Matching refs:dev

160 #define tx_done(dev) 1  argument
222 readreg(struct net_device *dev, u16 regno) in readreg() argument
224 struct net_local *lp = netdev_priv(dev); in readreg()
231 writereg(struct net_device *dev, u16 regno, u16 value) in writereg() argument
233 struct net_local *lp = netdev_priv(dev); in writereg()
240 wait_eeprom_ready(struct net_device *dev) in wait_eeprom_ready() argument
247 while (readreg(dev, PP_SelfST) & SI_BUSY) in wait_eeprom_ready()
254 get_eeprom_data(struct net_device *dev, int off, int len, int *buffer) in get_eeprom_data() argument
260 if (wait_eeprom_ready(dev) < 0) in get_eeprom_data()
263 writereg(dev, PP_EECMD, (off + i) | EEPROM_READ_CMD); in get_eeprom_data()
264 if (wait_eeprom_ready(dev) < 0) in get_eeprom_data()
266 buffer[i] = readreg(dev, PP_EEData); in get_eeprom_data()
288 write_irq(struct net_device *dev, int chip_type, int irq) in write_irq() argument
305 writereg(dev, PP_CS8900_ISAINT, i); in write_irq()
307 writereg(dev, PP_CS8920_ISAINT, irq); in write_irq()
312 count_rx_errors(int status, struct net_device *dev) in count_rx_errors() argument
314 dev->stats.rx_errors++; in count_rx_errors()
316 dev->stats.rx_length_errors++; in count_rx_errors()
318 dev->stats.rx_length_errors++; in count_rx_errors()
321 dev->stats.rx_crc_errors++; in count_rx_errors()
323 dev->stats.rx_frame_errors++; in count_rx_errors()
335 get_dma_channel(struct net_device *dev) in get_dma_channel() argument
337 struct net_local *lp = netdev_priv(dev); in get_dma_channel()
340 dev->dma = lp->dma; in get_dma_channel()
345 dev->dma = lp->isa_config & DMA_NO_MASK; in get_dma_channel()
347 dev->dma += 5; in get_dma_channel()
348 if (dev->dma < 5 || dev->dma > 7) { in get_dma_channel()
356 write_dma(struct net_device *dev, int chip_type, int dma) in write_dma() argument
358 struct net_local *lp = netdev_priv(dev); in write_dma()
362 writereg(dev, PP_CS8900_ISADMA, dma - 5); in write_dma()
364 writereg(dev, PP_CS8920_ISADMA, dma); in write_dma()
368 set_dma_cfg(struct net_device *dev) in set_dma_cfg() argument
370 struct net_local *lp = netdev_priv(dev); in set_dma_cfg()
388 dma_bufcfg(struct net_device *dev) in dma_bufcfg() argument
390 struct net_local *lp = netdev_priv(dev); in dma_bufcfg()
398 dma_busctl(struct net_device *dev) in dma_busctl() argument
401 struct net_local *lp = netdev_priv(dev); in dma_busctl()
415 dma_rx(struct net_device *dev) in dma_rx() argument
417 struct net_local *lp = netdev_priv(dev); in dma_rx()
427 dev->name, (unsigned long)bp, status, length); in dma_rx()
430 count_rx_errors(status, dev); in dma_rx()
435 skb = netdev_alloc_skb(dev, length + 2); in dma_rx()
437 dev->stats.rx_dropped++; in dma_rx()
463 dev->name, length, in dma_rx()
467 skb->protocol = eth_type_trans(skb, dev); in dma_rx()
469 dev->stats.rx_packets++; in dma_rx()
470 dev->stats.rx_bytes += length; in dma_rx()
485 control_dc_dc(struct net_device *dev, int on_not_off) in control_dc_dc() argument
487 struct net_local *lp = netdev_priv(dev); in control_dc_dc()
500 writereg(dev, PP_SelfCTL, selfcontrol); in control_dc_dc()
509 send_test_pkt(struct net_device *dev) in send_test_pkt() argument
511 struct net_local *lp = netdev_priv(dev); in send_test_pkt()
520 writereg(dev, PP_LineCTL, readreg(dev, PP_LineCTL) | SERIAL_TX_ON); in send_test_pkt()
522 memcpy(test_packet, dev->dev_addr, ETH_ALEN); in send_test_pkt()
523 memcpy(test_packet + ETH_ALEN, dev->dev_addr, ETH_ALEN); in send_test_pkt()
530 if (readreg(dev, PP_BusST) & READY_FOR_TX_NOW) in send_test_pkt()
542 if ((readreg(dev, PP_TxEvent) & TX_SEND_OK_BITS) == TX_OK) { in send_test_pkt()
557 detect_tp(struct net_device *dev) in detect_tp() argument
559 struct net_local *lp = netdev_priv(dev); in detect_tp()
563 cs89_dbg(1, debug, "%s: Attempting TP\n", dev->name); in detect_tp()
572 writereg(dev, PP_LineCTL, lp->linectl & ~AUI_ONLY); in detect_tp()
573 control_dc_dc(dev, 0); in detect_tp()
580 if ((readreg(dev, PP_LineST) & LINK_OK) == 0) in detect_tp()
588 dev->name); in detect_tp()
599 writereg(dev, PP_TestCTL, in detect_tp()
600 readreg(dev, PP_TestCTL) | FDX_8900); in detect_tp()
603 fdx = readreg(dev, PP_TestCTL) & FDX_8900; in detect_tp()
617 writereg(dev, PP_AutoNegCTL, lp->auto_neg_cnf & AUTO_NEG_MASK); in detect_tp()
620 pr_info("%s: negotiating duplex...\n", dev->name); in detect_tp()
621 while (readreg(dev, PP_AutoNegST) & AUTO_NEG_BUSY) { in detect_tp()
628 fdx = readreg(dev, PP_AutoNegST) & FDX_ACTIVE; in detect_tp()
637 detect_bnc(struct net_device *dev) in detect_bnc() argument
639 struct net_local *lp = netdev_priv(dev); in detect_bnc()
641 cs89_dbg(1, debug, "%s: Attempting BNC\n", dev->name); in detect_bnc()
642 control_dc_dc(dev, 1); in detect_bnc()
644 writereg(dev, PP_LineCTL, (lp->linectl & ~AUTO_AUI_10BASET) | AUI_ONLY); in detect_bnc()
646 if (send_test_pkt(dev)) in detect_bnc()
653 detect_aui(struct net_device *dev) in detect_aui() argument
655 struct net_local *lp = netdev_priv(dev); in detect_aui()
657 cs89_dbg(1, debug, "%s: Attempting AUI\n", dev->name); in detect_aui()
658 control_dc_dc(dev, 0); in detect_aui()
660 writereg(dev, PP_LineCTL, (lp->linectl & ~AUTO_AUI_10BASET) | AUI_ONLY); in detect_aui()
662 if (send_test_pkt(dev)) in detect_aui()
670 net_rx(struct net_device *dev) in net_rx() argument
672 struct net_local *lp = netdev_priv(dev); in net_rx()
680 count_rx_errors(status, dev); in net_rx()
685 skb = netdev_alloc_skb(dev, length + 2); in net_rx()
687 dev->stats.rx_dropped++; in net_rx()
697 dev->name, length, in net_rx()
701 skb->protocol = eth_type_trans(skb, dev); in net_rx()
703 dev->stats.rx_packets++; in net_rx()
704 dev->stats.rx_bytes += length; in net_rx()
713 struct net_device *dev = dev_id; in net_interrupt() local
718 lp = netdev_priv(dev); in net_interrupt()
729 cs89_dbg(4, debug, "%s: event=%04x\n", dev->name, status); in net_interrupt()
734 net_rx(dev); in net_interrupt()
737 dev->stats.tx_packets++; in net_interrupt()
738 netif_wake_queue(dev); /* Inform upper layers. */ in net_interrupt()
745 dev->stats.tx_errors++; in net_interrupt()
747 dev->stats.tx_carrier_errors++; in net_interrupt()
749 dev->stats.tx_heartbeat_errors++; in net_interrupt()
751 dev->stats.tx_window_errors++; in net_interrupt()
753 dev->stats.tx_aborted_errors++; in net_interrupt()
764 netif_wake_queue(dev); /* Inform upper layers. */ in net_interrupt()
768 dev->name); in net_interrupt()
780 netif_wake_queue(dev); /* Inform upper layers. */ in net_interrupt()
784 int count = readreg(dev, PP_DmaFrameCnt); in net_interrupt()
788 dev->name, count); in net_interrupt()
792 dev->name, count); in net_interrupt()
793 dma_rx(dev); in net_interrupt()
795 count = readreg(dev, PP_DmaFrameCnt); in net_interrupt()
799 dev->name, count); in net_interrupt()
805 dev->stats.rx_missed_errors += (status >> 6); in net_interrupt()
808 dev->stats.collisions += (status >> 6); in net_interrupt()
826 net_open(struct net_device *dev) in net_open() argument
828 struct net_local *lp = netdev_priv(dev); in net_open()
833 if (dev->irq < 2) { in net_open()
837 writereg(dev, PP_BusCTL, readreg(dev, PP_BusCTL) | ENABLE_IRQ); in net_open()
840 writereg(dev, PP_BusCTL, ENABLE_IRQ | MEMORY_ON); in net_open()
844 if (request_irq(i, net_interrupt, 0, dev->name, in net_open()
845 dev) == 0) { in net_open()
846 dev->irq = i; in net_open()
847 write_irq(dev, lp->chip_type, i); in net_open()
855 writereg(dev, PP_BusCTL, 0); /* disable interrupts. */ 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()
870 writereg(dev, PP_BusCTL, readreg(dev, PP_BusCTL)|ENABLE_IRQ); in net_open()
873 writereg(dev, PP_BusCTL, ENABLE_IRQ | MEMORY_ON); in net_open()
875 write_irq(dev, lp->chip_type, dev->irq); in net_open()
876 ret = request_irq(dev->irq, net_interrupt, 0, dev->name, dev); in net_open()
878 pr_err("request_irq(%d) failed\n", dev->irq); in net_open()
890 dev->name, lp->dmasize); in net_open()
894 dev->name, in net_open()
900 pr_err("%s: not usable as DMA buffer\n", dev->name); in net_open()
904 if (request_dma(dev->dma, dev->name)) { in net_open()
906 dev->name, dev->dma); in net_open()
909 write_dma(dev, lp->chip_type, dev->dma); in net_open()
913 disable_dma(dev->dma); in net_open()
914 clear_dma_ff(dev->dma); in net_open()
915 set_dma_mode(dev->dma, DMA_RX_MODE); /* auto_init as well */ 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()
918 enable_dma(dev->dma); in net_open()
925 writereg(dev, PP_IA + i * 2, in net_open()
926 (dev->dev_addr[i * 2] | in net_open()
927 (dev->dev_addr[i * 2 + 1] << 8))); in net_open()
930 writereg(dev, PP_BusCTL, MEMORY_ON); in net_open()
957 dev->name); in net_open()
960 free_dma(dev->dma); in net_open()
964 writereg(dev, PP_LineCTL, in net_open()
965 readreg(dev, PP_LineCTL) & ~(SERIAL_TX_ON | SERIAL_RX_ON)); in net_open()
966 free_irq(dev->irq, dev); in net_open()
974 result = detect_tp(dev); in net_open()
977 dev->name); in net_open()
983 result = detect_aui(dev); in net_open()
985 pr_warn("%s: 10Base-5 (AUI) has no cable\n", dev->name); in net_open()
991 result = detect_bnc(dev); in net_open()
993 pr_warn("%s: 10Base-2 (BNC) has no cable\n", dev->name); in net_open()
999 writereg(dev, PP_LineCTL, lp->linectl | AUTO_AUI_10BASET); in net_open()
1001 result = detect_tp(dev); in net_open()
1006 result = detect_aui(dev); in net_open()
1011 result = detect_bnc(dev); in net_open()
1015 pr_err("%s: no media detected\n", dev->name); in net_open()
1021 dev->name); in net_open()
1024 pr_info("%s: using half-duplex 10Base-T (RJ-45)\n", dev->name); in net_open()
1027 pr_info("%s: using full-duplex 10Base-T (RJ-45)\n", dev->name); in net_open()
1030 pr_info("%s: using 10Base-5 (AUI)\n", dev->name); in net_open()
1033 pr_info("%s: using 10Base-2 (BNC)\n", dev->name); in net_open()
1038 writereg(dev, PP_LineCTL, in net_open()
1039 readreg(dev, PP_LineCTL) | SERIAL_RX_ON | SERIAL_TX_ON); in net_open()
1043 writereg(dev, PP_RxCTL, DEF_RX_ACCEPT); in net_open()
1050 set_dma_cfg(dev); in net_open()
1052 writereg(dev, PP_RxCFG, lp->curr_rx_cfg); in net_open()
1054 writereg(dev, PP_TxCFG, (TX_LOST_CRS_ENBL | in net_open()
1062 writereg(dev, PP_BufCFG, (READY_FOR_TX_ENBL | in net_open()
1065 dma_bufcfg(dev) | in net_open()
1071 writereg(dev, PP_BusCTL, (ENABLE_IRQ in net_open()
1072 | (dev->mem_start ? MEMORY_ON : 0) /* turn memory on */ in net_open()
1074 | dma_busctl(dev) in net_open()
1077 netif_start_queue(dev); in net_open()
1086 net_close(struct net_device *dev) in net_close() argument
1089 struct net_local *lp = netdev_priv(dev); in net_close()
1092 netif_stop_queue(dev); in net_close()
1094 writereg(dev, PP_RxCFG, 0); in net_close()
1095 writereg(dev, PP_TxCFG, 0); in net_close()
1096 writereg(dev, PP_BufCFG, 0); in net_close()
1097 writereg(dev, PP_BusCTL, 0); in net_close()
1099 free_irq(dev->irq, dev); in net_close()
1103 free_dma(dev->dma); in net_close()
1116 net_get_stats(struct net_device *dev) in net_get_stats() argument
1118 struct net_local *lp = netdev_priv(dev); in net_get_stats()
1123 dev->stats.rx_missed_errors += (readreg(dev, PP_RxMiss) >> 6); in net_get_stats()
1124 dev->stats.collisions += (readreg(dev, PP_TxCol) >> 6); in net_get_stats()
1127 return &dev->stats; in net_get_stats()
1130 static void net_timeout(struct net_device *dev) in net_timeout() argument
1135 dev->name, in net_timeout()
1136 tx_done(dev) ? "IRQ conflict" : "network cable problem"); in net_timeout()
1138 netif_wake_queue(dev); in net_timeout()
1141 static netdev_tx_t net_send_packet(struct sk_buff *skb, struct net_device *dev) in net_send_packet() argument
1143 struct net_local *lp = netdev_priv(dev); in net_send_packet()
1147 dev->name, skb->len, in net_send_packet()
1157 netif_stop_queue(dev); in net_send_packet()
1164 if ((readreg(dev, PP_BusST) & READY_FOR_TX_NOW) == 0) { in net_send_packet()
1176 dev->stats.tx_bytes += skb->len; in net_send_packet()
1192 static void set_multicast_list(struct net_device *dev) in set_multicast_list() argument
1194 struct net_local *lp = netdev_priv(dev); in set_multicast_list()
1199 if (dev->flags & IFF_PROMISC) in set_multicast_list()
1201 else if ((dev->flags & IFF_ALLMULTI) || !netdev_mc_empty(dev)) in set_multicast_list()
1209 writereg(dev, PP_RxCTL, DEF_RX_ACCEPT | lp->rx_mode); in set_multicast_list()
1217 writereg(dev, PP_RxCFG, cfg); in set_multicast_list()
1221 static int set_mac_address(struct net_device *dev, void *p) in set_mac_address() argument
1226 if (netif_running(dev)) in set_mac_address()
1229 memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); in set_mac_address()
1232 dev->name, dev->dev_addr); in set_mac_address()
1236 writereg(dev, PP_IA + i * 2, in set_mac_address()
1237 (dev->dev_addr[i * 2] | in set_mac_address()
1238 (dev->dev_addr[i * 2 + 1] << 8))); in set_mac_address()
1248 static void net_poll_controller(struct net_device *dev) in net_poll_controller() argument
1250 disable_irq(dev->irq); in net_poll_controller()
1251 net_interrupt(dev->irq, dev); in net_poll_controller()
1252 enable_irq(dev->irq); in net_poll_controller()
1271 static void __init reset_chip(struct net_device *dev) in reset_chip() argument
1274 struct net_local *lp = netdev_priv(dev); in reset_chip()
1277 writereg(dev, PP_SelfCTL, readreg(dev, PP_SelfCTL) | POWER_ON_RESET); in reset_chip()
1285 iowrite8(dev->irq, lp->virt_addr + DATA_PORT); in reset_chip()
1289 iowrite8((dev->mem_start >> 16) & 0xff, in reset_chip()
1291 iowrite8((dev->mem_start >> 8) & 0xff, in reset_chip()
1297 while ((readreg(dev, PP_SelfST) & INIT_DONE) == 0 && in reset_chip()
1310 cs89x0_probe1(struct net_device *dev, void __iomem *ioaddr, int modular) in cs89x0_probe1() argument
1312 struct net_local *lp = netdev_priv(dev); in cs89x0_probe1()
1343 dev->name, ioaddr, DATA_PORT, tmp); in cs89x0_probe1()
1351 rev_type = readreg(dev, PRODUCT_ID_ADD); in cs89x0_probe1()
1368 dev->name, in cs89x0_probe1()
1374 reset_chip(dev); in cs89x0_probe1()
1384 if ((readreg(dev, PP_SelfST) & (EEPROM_OK | EEPROM_PRESENT)) == in cs89x0_probe1()
1389 Addr = readreg(dev, PP_IA + i * 2); in cs89x0_probe1()
1390 dev->dev_addr[i * 2] = Addr & 0xFF; in cs89x0_probe1()
1391 dev->dev_addr[i * 2 + 1] = Addr >> 8; in cs89x0_probe1()
1406 i = readreg(dev, PP_LineCTL); in cs89x0_probe1()
1425 dev->name, i, lp->adapter_cnf); in cs89x0_probe1()
1429 lp->isa_config = readreg(dev, PP_CS8900_ISAINT) & INT_NO_MASK; in cs89x0_probe1()
1438 if ((readreg(dev, PP_SelfST) & EEPROM_PRESENT) == 0) in cs89x0_probe1()
1440 else if (get_eeprom_data(dev, START_EEPROM_DATA, CHKSUM_LEN, eeprom_buff) < 0) { in cs89x0_probe1()
1445 if ((readreg(dev, PP_SelfST) & (EEPROM_OK | EEPROM_PRESENT)) != in cs89x0_probe1()
1462 dev->mem_start = eeprom_buff[PACKET_PAGE_OFFSET / 2] << 8; in cs89x0_probe1()
1467 dev->dev_addr[i * 2] = eeprom_buff[i]; in cs89x0_probe1()
1468 dev->dev_addr[i * 2 + 1] = eeprom_buff[i] >> 8; in cs89x0_probe1()
1471 dev->name, lp->adapter_cnf); in cs89x0_probe1()
1500 dev->name, lp->force, lp->adapter_cnf); in cs89x0_probe1()
1520 (i = readreg(dev, PP_CS8920_ISAINT) & 0xff, in cs89x0_probe1()
1522 if (!dev->irq) in cs89x0_probe1()
1523 dev->irq = i; in cs89x0_probe1()
1538 if (get_eeprom_data(dev, IRQ_MAP_EEPROM_DATA, in cs89x0_probe1()
1547 if (!dev->irq) in cs89x0_probe1()
1548 dev->irq = i; in cs89x0_probe1()
1551 pr_cont(" IRQ %d", dev->irq); in cs89x0_probe1()
1555 get_dma_channel(dev); in cs89x0_probe1()
1556 pr_cont(", DMA %d", dev->dma); in cs89x0_probe1()
1562 pr_cont(", MAC %pM\n", dev->dev_addr); in cs89x0_probe1()
1564 dev->netdev_ops = &net_ops; in cs89x0_probe1()
1565 dev->watchdog_timeo = HZ; in cs89x0_probe1()
1569 retval = register_netdev(dev); in cs89x0_probe1()
1586 cs89x0_ioport_probe(struct net_device *dev, unsigned long ioport, int modular) in cs89x0_ioport_probe() argument
1588 struct net_local *lp = netdev_priv(dev); in cs89x0_ioport_probe()
1595 dev->base_addr = ioport; in cs89x0_ioport_probe()
1614 cs89_dbg(1, info, "%s: odd ioaddr 0x%lx\n", dev->name, ioport); in cs89x0_ioport_probe()
1619 dev->name, ioread16(io_mem + ADD_PORT)); in cs89x0_ioport_probe()
1626 ret = cs89x0_probe1(dev, io_mem, modular); in cs89x0_ioport_probe()
1648 struct net_device *dev = alloc_etherdev(sizeof(struct net_local)); in cs89x0_probe() local
1654 if (!dev) in cs89x0_probe()
1657 sprintf(dev->name, "eth%d", unit); in cs89x0_probe()
1658 netdev_boot_setup_check(dev); in cs89x0_probe()
1659 io = dev->base_addr; in cs89x0_probe()
1660 irq = dev->irq; in cs89x0_probe()
1665 err = cs89x0_ioport_probe(dev, io, 0); in cs89x0_probe()
1670 if (cs89x0_ioport_probe(dev, *port, 0) == 0) in cs89x0_probe()
1672 dev->irq = irq; in cs89x0_probe()
1679 return dev; in cs89x0_probe()
1681 free_netdev(dev); in cs89x0_probe()
1762 struct net_device *dev = alloc_etherdev(sizeof(struct net_local)); in init_module() local
1771 if (!dev) in init_module()
1774 dev->irq = irq; in init_module()
1775 dev->base_addr = io; in init_module()
1776 lp = netdev_priv(dev); in init_module()
1819 ret = cs89x0_ioport_probe(dev, io, 1); in init_module()
1823 dev_cs89x0 = dev; in init_module()
1826 free_netdev(dev); in init_module()
1846 struct net_device *dev = alloc_etherdev(sizeof(struct net_local)); in cs89x0_platform_probe() local
1852 if (!dev) in cs89x0_platform_probe()
1855 lp = netdev_priv(dev); in cs89x0_platform_probe()
1857 dev->irq = platform_get_irq(pdev, 0); in cs89x0_platform_probe()
1858 if (dev->irq <= 0) { in cs89x0_platform_probe()
1859 dev_warn(&dev->dev, "interrupt resource missing\n"); in cs89x0_platform_probe()
1865 virt_addr = devm_ioremap_resource(&pdev->dev, mem_res); in cs89x0_platform_probe()
1871 err = cs89x0_probe1(dev, virt_addr, 0); in cs89x0_platform_probe()
1873 dev_warn(&dev->dev, "no cs8900 or cs8920 detected\n"); in cs89x0_platform_probe()
1877 platform_set_drvdata(pdev, dev); in cs89x0_platform_probe()
1881 free_netdev(dev); in cs89x0_platform_probe()
1887 struct net_device *dev = platform_get_drvdata(pdev); in cs89x0_platform_remove() local
1893 unregister_netdev(dev); in cs89x0_platform_remove()
1894 free_netdev(dev); in cs89x0_platform_remove()