Lines Matching refs:dev

163 #define tx_done(dev) 1  argument
225 readreg(struct net_device *dev, u16 regno) in readreg() argument
227 struct net_local *lp = netdev_priv(dev); in readreg()
234 writereg(struct net_device *dev, u16 regno, u16 value) in writereg() argument
236 struct net_local *lp = netdev_priv(dev); in writereg()
243 wait_eeprom_ready(struct net_device *dev) in wait_eeprom_ready() argument
250 while (readreg(dev, PP_SelfST) & SI_BUSY) in wait_eeprom_ready()
257 get_eeprom_data(struct net_device *dev, int off, int len, int *buffer) in get_eeprom_data() argument
263 if (wait_eeprom_ready(dev) < 0) in get_eeprom_data()
266 writereg(dev, PP_EECMD, (off + i) | EEPROM_READ_CMD); in get_eeprom_data()
267 if (wait_eeprom_ready(dev) < 0) in get_eeprom_data()
269 buffer[i] = readreg(dev, PP_EEData); in get_eeprom_data()
291 write_irq(struct net_device *dev, int chip_type, int irq) in write_irq() argument
308 writereg(dev, PP_CS8900_ISAINT, i); in write_irq()
310 writereg(dev, PP_CS8920_ISAINT, irq); in write_irq()
315 count_rx_errors(int status, struct net_device *dev) in count_rx_errors() argument
317 dev->stats.rx_errors++; in count_rx_errors()
319 dev->stats.rx_length_errors++; in count_rx_errors()
321 dev->stats.rx_length_errors++; in count_rx_errors()
324 dev->stats.rx_crc_errors++; in count_rx_errors()
326 dev->stats.rx_frame_errors++; in count_rx_errors()
338 get_dma_channel(struct net_device *dev) in get_dma_channel() argument
340 struct net_local *lp = netdev_priv(dev); in get_dma_channel()
343 dev->dma = lp->dma; in get_dma_channel()
348 dev->dma = lp->isa_config & DMA_NO_MASK; in get_dma_channel()
350 dev->dma += 5; in get_dma_channel()
351 if (dev->dma < 5 || dev->dma > 7) { in get_dma_channel()
359 write_dma(struct net_device *dev, int chip_type, int dma) in write_dma() argument
361 struct net_local *lp = netdev_priv(dev); in write_dma()
365 writereg(dev, PP_CS8900_ISADMA, dma - 5); in write_dma()
367 writereg(dev, PP_CS8920_ISADMA, dma); in write_dma()
371 set_dma_cfg(struct net_device *dev) in set_dma_cfg() argument
373 struct net_local *lp = netdev_priv(dev); in set_dma_cfg()
391 dma_bufcfg(struct net_device *dev) in dma_bufcfg() argument
393 struct net_local *lp = netdev_priv(dev); in dma_bufcfg()
401 dma_busctl(struct net_device *dev) in dma_busctl() argument
404 struct net_local *lp = netdev_priv(dev); in dma_busctl()
418 dma_rx(struct net_device *dev) in dma_rx() argument
420 struct net_local *lp = netdev_priv(dev); in dma_rx()
430 dev->name, (unsigned long)bp, status, length); in dma_rx()
433 count_rx_errors(status, dev); in dma_rx()
438 skb = netdev_alloc_skb(dev, length + 2); in dma_rx()
440 dev->stats.rx_dropped++; in dma_rx()
465 dev->name, length, in dma_rx()
469 skb->protocol = eth_type_trans(skb, dev); in dma_rx()
471 dev->stats.rx_packets++; in dma_rx()
472 dev->stats.rx_bytes += length; in dma_rx()
487 control_dc_dc(struct net_device *dev, int on_not_off) in control_dc_dc() argument
489 struct net_local *lp = netdev_priv(dev); in control_dc_dc()
502 writereg(dev, PP_SelfCTL, selfcontrol); in control_dc_dc()
511 send_test_pkt(struct net_device *dev) in send_test_pkt() argument
513 struct net_local *lp = netdev_priv(dev); in send_test_pkt()
522 writereg(dev, PP_LineCTL, readreg(dev, PP_LineCTL) | SERIAL_TX_ON); in send_test_pkt()
524 memcpy(test_packet, dev->dev_addr, ETH_ALEN); in send_test_pkt()
525 memcpy(test_packet + ETH_ALEN, dev->dev_addr, ETH_ALEN); in send_test_pkt()
532 if (readreg(dev, PP_BusST) & READY_FOR_TX_NOW) in send_test_pkt()
544 if ((readreg(dev, PP_TxEvent) & TX_SEND_OK_BITS) == TX_OK) { in send_test_pkt()
559 detect_tp(struct net_device *dev) in detect_tp() argument
561 struct net_local *lp = netdev_priv(dev); in detect_tp()
565 cs89_dbg(1, debug, "%s: Attempting TP\n", dev->name); in detect_tp()
574 writereg(dev, PP_LineCTL, lp->linectl & ~AUI_ONLY); in detect_tp()
575 control_dc_dc(dev, 0); in detect_tp()
582 if ((readreg(dev, PP_LineST) & LINK_OK) == 0) in detect_tp()
590 dev->name); in detect_tp()
601 writereg(dev, PP_TestCTL, in detect_tp()
602 readreg(dev, PP_TestCTL) | FDX_8900); in detect_tp()
605 fdx = readreg(dev, PP_TestCTL) & FDX_8900; in detect_tp()
619 writereg(dev, PP_AutoNegCTL, lp->auto_neg_cnf & AUTO_NEG_MASK); in detect_tp()
622 pr_info("%s: negotiating duplex...\n", dev->name); in detect_tp()
623 while (readreg(dev, PP_AutoNegST) & AUTO_NEG_BUSY) { in detect_tp()
630 fdx = readreg(dev, PP_AutoNegST) & FDX_ACTIVE; in detect_tp()
639 detect_bnc(struct net_device *dev) in detect_bnc() argument
641 struct net_local *lp = netdev_priv(dev); in detect_bnc()
643 cs89_dbg(1, debug, "%s: Attempting BNC\n", dev->name); in detect_bnc()
644 control_dc_dc(dev, 1); in detect_bnc()
646 writereg(dev, PP_LineCTL, (lp->linectl & ~AUTO_AUI_10BASET) | AUI_ONLY); in detect_bnc()
648 if (send_test_pkt(dev)) in detect_bnc()
655 detect_aui(struct net_device *dev) in detect_aui() argument
657 struct net_local *lp = netdev_priv(dev); in detect_aui()
659 cs89_dbg(1, debug, "%s: Attempting AUI\n", dev->name); in detect_aui()
660 control_dc_dc(dev, 0); in detect_aui()
662 writereg(dev, PP_LineCTL, (lp->linectl & ~AUTO_AUI_10BASET) | AUI_ONLY); in detect_aui()
664 if (send_test_pkt(dev)) in detect_aui()
672 net_rx(struct net_device *dev) in net_rx() argument
674 struct net_local *lp = netdev_priv(dev); in net_rx()
682 count_rx_errors(status, dev); in net_rx()
687 skb = netdev_alloc_skb(dev, length + 2); in net_rx()
689 dev->stats.rx_dropped++; in net_rx()
699 dev->name, length, in net_rx()
703 skb->protocol = eth_type_trans(skb, dev); in net_rx()
705 dev->stats.rx_packets++; in net_rx()
706 dev->stats.rx_bytes += length; in net_rx()
715 struct net_device *dev = dev_id; in net_interrupt() local
720 lp = netdev_priv(dev); in net_interrupt()
731 cs89_dbg(4, debug, "%s: event=%04x\n", dev->name, status); in net_interrupt()
736 net_rx(dev); in net_interrupt()
739 dev->stats.tx_packets++; in net_interrupt()
740 netif_wake_queue(dev); /* Inform upper layers. */ in net_interrupt()
747 dev->stats.tx_errors++; in net_interrupt()
749 dev->stats.tx_carrier_errors++; in net_interrupt()
751 dev->stats.tx_heartbeat_errors++; in net_interrupt()
753 dev->stats.tx_window_errors++; in net_interrupt()
755 dev->stats.tx_aborted_errors++; in net_interrupt()
766 netif_wake_queue(dev); /* Inform upper layers. */ in net_interrupt()
770 dev->name); in net_interrupt()
782 netif_wake_queue(dev); /* Inform upper layers. */ in net_interrupt()
786 int count = readreg(dev, PP_DmaFrameCnt); in net_interrupt()
790 dev->name, count); in net_interrupt()
794 dev->name, count); in net_interrupt()
795 dma_rx(dev); in net_interrupt()
797 count = readreg(dev, PP_DmaFrameCnt); in net_interrupt()
801 dev->name, count); in net_interrupt()
807 dev->stats.rx_missed_errors += (status >> 6); in net_interrupt()
810 dev->stats.collisions += (status >> 6); in net_interrupt()
828 net_open(struct net_device *dev) in net_open() argument
830 struct net_local *lp = netdev_priv(dev); in net_open()
835 if (dev->irq < 2) { in net_open()
839 writereg(dev, PP_BusCTL, readreg(dev, PP_BusCTL) | ENABLE_IRQ); in net_open()
842 writereg(dev, PP_BusCTL, ENABLE_IRQ | MEMORY_ON); in net_open()
846 if (request_irq(i, net_interrupt, 0, dev->name, in net_open()
847 dev) == 0) { in net_open()
848 dev->irq = i; in net_open()
849 write_irq(dev, lp->chip_type, i); in net_open()
857 writereg(dev, PP_BusCTL, 0); /* disable interrupts. */ 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()
872 writereg(dev, PP_BusCTL, readreg(dev, PP_BusCTL)|ENABLE_IRQ); in net_open()
875 writereg(dev, PP_BusCTL, ENABLE_IRQ | MEMORY_ON); in net_open()
877 write_irq(dev, lp->chip_type, dev->irq); in net_open()
878 ret = request_irq(dev->irq, net_interrupt, 0, dev->name, dev); in net_open()
880 pr_err("request_irq(%d) failed\n", dev->irq); in net_open()
892 dev->name, lp->dmasize); in net_open()
896 dev->name, in net_open()
902 pr_err("%s: not usable as DMA buffer\n", dev->name); in net_open()
906 if (request_dma(dev->dma, dev->name)) { in net_open()
908 dev->name, dev->dma); in net_open()
911 write_dma(dev, lp->chip_type, dev->dma); in net_open()
915 disable_dma(dev->dma); in net_open()
916 clear_dma_ff(dev->dma); in net_open()
917 set_dma_mode(dev->dma, DMA_RX_MODE); /* auto_init as well */ 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()
920 enable_dma(dev->dma); in net_open()
927 writereg(dev, PP_IA + i * 2, in net_open()
928 (dev->dev_addr[i * 2] | in net_open()
929 (dev->dev_addr[i * 2 + 1] << 8))); in net_open()
932 writereg(dev, PP_BusCTL, MEMORY_ON); in net_open()
959 dev->name); in net_open()
962 free_dma(dev->dma); in net_open()
966 writereg(dev, PP_LineCTL, in net_open()
967 readreg(dev, PP_LineCTL) & ~(SERIAL_TX_ON | SERIAL_RX_ON)); in net_open()
968 free_irq(dev->irq, dev); in net_open()
976 result = detect_tp(dev); in net_open()
979 dev->name); in net_open()
985 result = detect_aui(dev); in net_open()
987 pr_warn("%s: 10Base-5 (AUI) has no cable\n", dev->name); in net_open()
993 result = detect_bnc(dev); in net_open()
995 pr_warn("%s: 10Base-2 (BNC) has no cable\n", dev->name); in net_open()
1001 writereg(dev, PP_LineCTL, lp->linectl | AUTO_AUI_10BASET); in net_open()
1003 result = detect_tp(dev); in net_open()
1008 result = detect_aui(dev); in net_open()
1013 result = detect_bnc(dev); in net_open()
1017 pr_err("%s: no media detected\n", dev->name); in net_open()
1023 dev->name); in net_open()
1026 pr_info("%s: using half-duplex 10Base-T (RJ-45)\n", dev->name); in net_open()
1029 pr_info("%s: using full-duplex 10Base-T (RJ-45)\n", dev->name); in net_open()
1032 pr_info("%s: using 10Base-5 (AUI)\n", dev->name); in net_open()
1035 pr_info("%s: using 10Base-2 (BNC)\n", dev->name); in net_open()
1040 writereg(dev, PP_LineCTL, in net_open()
1041 readreg(dev, PP_LineCTL) | SERIAL_RX_ON | SERIAL_TX_ON); in net_open()
1045 writereg(dev, PP_RxCTL, DEF_RX_ACCEPT); in net_open()
1052 set_dma_cfg(dev); in net_open()
1054 writereg(dev, PP_RxCFG, lp->curr_rx_cfg); in net_open()
1056 writereg(dev, PP_TxCFG, (TX_LOST_CRS_ENBL | in net_open()
1064 writereg(dev, PP_BufCFG, (READY_FOR_TX_ENBL | in net_open()
1067 dma_bufcfg(dev) | in net_open()
1073 writereg(dev, PP_BusCTL, (ENABLE_IRQ in net_open()
1074 | (dev->mem_start ? MEMORY_ON : 0) /* turn memory on */ in net_open()
1076 | dma_busctl(dev) in net_open()
1079 netif_start_queue(dev); in net_open()
1088 net_close(struct net_device *dev) in net_close() argument
1091 struct net_local *lp = netdev_priv(dev); in net_close()
1094 netif_stop_queue(dev); in net_close()
1096 writereg(dev, PP_RxCFG, 0); in net_close()
1097 writereg(dev, PP_TxCFG, 0); in net_close()
1098 writereg(dev, PP_BufCFG, 0); in net_close()
1099 writereg(dev, PP_BusCTL, 0); in net_close()
1101 free_irq(dev->irq, dev); in net_close()
1105 free_dma(dev->dma); in net_close()
1118 net_get_stats(struct net_device *dev) in net_get_stats() argument
1120 struct net_local *lp = netdev_priv(dev); in net_get_stats()
1125 dev->stats.rx_missed_errors += (readreg(dev, PP_RxMiss) >> 6); in net_get_stats()
1126 dev->stats.collisions += (readreg(dev, PP_TxCol) >> 6); in net_get_stats()
1129 return &dev->stats; in net_get_stats()
1132 static void net_timeout(struct net_device *dev, unsigned int txqueue) in net_timeout() argument
1137 dev->name, in net_timeout()
1138 tx_done(dev) ? "IRQ conflict" : "network cable problem"); in net_timeout()
1140 netif_wake_queue(dev); in net_timeout()
1143 static netdev_tx_t net_send_packet(struct sk_buff *skb, struct net_device *dev) in net_send_packet() argument
1145 struct net_local *lp = netdev_priv(dev); in net_send_packet()
1149 dev->name, skb->len, in net_send_packet()
1159 netif_stop_queue(dev); in net_send_packet()
1166 if ((readreg(dev, PP_BusST) & READY_FOR_TX_NOW) == 0) { in net_send_packet()
1178 dev->stats.tx_bytes += skb->len; in net_send_packet()
1194 static void set_multicast_list(struct net_device *dev) in set_multicast_list() argument
1196 struct net_local *lp = netdev_priv(dev); in set_multicast_list()
1201 if (dev->flags & IFF_PROMISC) in set_multicast_list()
1203 else if ((dev->flags & IFF_ALLMULTI) || !netdev_mc_empty(dev)) in set_multicast_list()
1211 writereg(dev, PP_RxCTL, DEF_RX_ACCEPT | lp->rx_mode); in set_multicast_list()
1219 writereg(dev, PP_RxCFG, cfg); in set_multicast_list()
1223 static int set_mac_address(struct net_device *dev, void *p) in set_mac_address() argument
1228 if (netif_running(dev)) in set_mac_address()
1231 eth_hw_addr_set(dev, addr->sa_data); in set_mac_address()
1234 dev->name, dev->dev_addr); in set_mac_address()
1238 writereg(dev, PP_IA + i * 2, in set_mac_address()
1239 (dev->dev_addr[i * 2] | in set_mac_address()
1240 (dev->dev_addr[i * 2 + 1] << 8))); in set_mac_address()
1250 static void net_poll_controller(struct net_device *dev) in net_poll_controller() argument
1252 disable_irq(dev->irq); in net_poll_controller()
1253 net_interrupt(dev->irq, dev); in net_poll_controller()
1254 enable_irq(dev->irq); in net_poll_controller()
1272 static void __init reset_chip(struct net_device *dev) in reset_chip() argument
1275 struct net_local *lp = netdev_priv(dev); in reset_chip()
1278 writereg(dev, PP_SelfCTL, readreg(dev, PP_SelfCTL) | POWER_ON_RESET); in reset_chip()
1286 iowrite8(dev->irq, lp->virt_addr + DATA_PORT); in reset_chip()
1290 iowrite8((dev->mem_start >> 16) & 0xff, in reset_chip()
1292 iowrite8((dev->mem_start >> 8) & 0xff, in reset_chip()
1298 while ((readreg(dev, PP_SelfST) & INIT_DONE) == 0 && in reset_chip()
1311 cs89x0_probe1(struct net_device *dev, void __iomem *ioaddr, int modular) in cs89x0_probe1() argument
1313 struct net_local *lp = netdev_priv(dev); in cs89x0_probe1()
1345 dev->name, ioaddr, DATA_PORT, tmp); in cs89x0_probe1()
1353 rev_type = readreg(dev, PRODUCT_ID_ADD); in cs89x0_probe1()
1370 dev->name, in cs89x0_probe1()
1376 reset_chip(dev); in cs89x0_probe1()
1386 if ((readreg(dev, PP_SelfST) & (EEPROM_OK | EEPROM_PRESENT)) == in cs89x0_probe1()
1391 Addr = readreg(dev, PP_IA + i * 2); in cs89x0_probe1()
1395 eth_hw_addr_set(dev, addr); in cs89x0_probe1()
1409 i = readreg(dev, PP_LineCTL); in cs89x0_probe1()
1428 dev->name, i, lp->adapter_cnf); in cs89x0_probe1()
1432 lp->isa_config = readreg(dev, PP_CS8900_ISAINT) & INT_NO_MASK; in cs89x0_probe1()
1441 if ((readreg(dev, PP_SelfST) & EEPROM_PRESENT) == 0) in cs89x0_probe1()
1443 else if (get_eeprom_data(dev, START_EEPROM_DATA, CHKSUM_LEN, eeprom_buff) < 0) { in cs89x0_probe1()
1448 if ((readreg(dev, PP_SelfST) & (EEPROM_OK | EEPROM_PRESENT)) != in cs89x0_probe1()
1465 dev->mem_start = eeprom_buff[PACKET_PAGE_OFFSET / 2] << 8; in cs89x0_probe1()
1473 eth_hw_addr_set(dev, addr); in cs89x0_probe1()
1475 dev->name, lp->adapter_cnf); in cs89x0_probe1()
1504 dev->name, lp->force, lp->adapter_cnf); in cs89x0_probe1()
1524 (i = readreg(dev, PP_CS8920_ISAINT) & 0xff, in cs89x0_probe1()
1526 if (!dev->irq) in cs89x0_probe1()
1527 dev->irq = i; in cs89x0_probe1()
1542 if (get_eeprom_data(dev, IRQ_MAP_EEPROM_DATA, in cs89x0_probe1()
1551 if (!dev->irq) in cs89x0_probe1()
1552 dev->irq = i; in cs89x0_probe1()
1555 pr_cont(" IRQ %d", dev->irq); in cs89x0_probe1()
1559 get_dma_channel(dev); in cs89x0_probe1()
1560 pr_cont(", DMA %d", dev->dma); in cs89x0_probe1()
1566 pr_cont(", MAC %pM\n", dev->dev_addr); in cs89x0_probe1()
1568 dev->netdev_ops = &net_ops; in cs89x0_probe1()
1569 dev->watchdog_timeo = HZ; in cs89x0_probe1()
1573 retval = register_netdev(dev); in cs89x0_probe1()
1590 cs89x0_ioport_probe(struct net_device *dev, unsigned long ioport, int modular) in cs89x0_ioport_probe() argument
1592 struct net_local *lp = netdev_priv(dev); in cs89x0_ioport_probe()
1599 dev->base_addr = ioport; in cs89x0_ioport_probe()
1618 cs89_dbg(1, info, "%s: odd ioaddr 0x%lx\n", dev->name, ioport); in cs89x0_ioport_probe()
1623 dev->name, ioread16(io_mem + ADD_PORT)); in cs89x0_ioport_probe()
1630 ret = cs89x0_probe1(dev, io_mem, modular); in cs89x0_ioport_probe()
1652 struct net_device *dev = alloc_etherdev(sizeof(struct net_local)); in cs89x0_probe() local
1658 if (!dev) in cs89x0_probe()
1661 sprintf(dev->name, "eth%d", unit); in cs89x0_probe()
1662 netdev_boot_setup_check(dev); in cs89x0_probe()
1663 io = dev->base_addr; in cs89x0_probe()
1664 irq = dev->irq; in cs89x0_probe()
1669 err = cs89x0_ioport_probe(dev, io, 0); in cs89x0_probe()
1674 if (cs89x0_ioport_probe(dev, *port, 0) == 0) in cs89x0_probe()
1676 dev->irq = irq; in cs89x0_probe()
1683 return dev; in cs89x0_probe()
1685 free_netdev(dev); in cs89x0_probe()
1762 struct net_device *dev; in cs89x0_isa_init_module() local
1771 dev = alloc_etherdev(sizeof(struct net_local)); in cs89x0_isa_init_module()
1772 if (!dev) in cs89x0_isa_init_module()
1775 dev->irq = irq; in cs89x0_isa_init_module()
1776 dev->base_addr = io; in cs89x0_isa_init_module()
1777 lp = netdev_priv(dev); in cs89x0_isa_init_module()
1820 ret = cs89x0_ioport_probe(dev, io, 1); in cs89x0_isa_init_module()
1824 dev_cs89x0 = dev; in cs89x0_isa_init_module()
1827 free_netdev(dev); in cs89x0_isa_init_module()
1849 struct net_device *dev = alloc_etherdev(sizeof(struct net_local)); in cs89x0_platform_probe() local
1853 if (!dev) in cs89x0_platform_probe()
1856 dev->irq = platform_get_irq(pdev, 0); in cs89x0_platform_probe()
1857 if (dev->irq < 0) { in cs89x0_platform_probe()
1858 err = dev->irq; in cs89x0_platform_probe()
1868 err = cs89x0_probe1(dev, virt_addr, 0); in cs89x0_platform_probe()
1870 dev_warn(&dev->dev, "no cs8900 or cs8920 detected\n"); in cs89x0_platform_probe()
1874 platform_set_drvdata(pdev, dev); in cs89x0_platform_probe()
1878 free_netdev(dev); in cs89x0_platform_probe()
1884 struct net_device *dev = platform_get_drvdata(pdev); in cs89x0_platform_remove() local
1890 unregister_netdev(dev); in cs89x0_platform_remove()
1891 free_netdev(dev); in cs89x0_platform_remove()