Lines Matching refs:ndev
62 static void update_mac_address(struct net_device *ndev) in update_mac_address() argument
64 u32 ioaddr = ndev->base_addr; in update_mac_address()
66 ctrl_outl((ndev->dev_addr[0] << 24) | (ndev->dev_addr[1] << 16) | in update_mac_address()
67 (ndev->dev_addr[2] << 8) | (ndev->dev_addr[3]), in update_mac_address()
69 ctrl_outl((ndev->dev_addr[4] << 8) | (ndev->dev_addr[5]), in update_mac_address()
81 static void read_mac_address(struct net_device *ndev) in read_mac_address() argument
83 u32 ioaddr = ndev->base_addr; in read_mac_address()
85 ndev->dev_addr[0] = (ctrl_inl(ioaddr + MAHR) >> 24); in read_mac_address()
86 ndev->dev_addr[1] = (ctrl_inl(ioaddr + MAHR) >> 16) & 0xFF; in read_mac_address()
87 ndev->dev_addr[2] = (ctrl_inl(ioaddr + MAHR) >> 8) & 0xFF; in read_mac_address()
88 ndev->dev_addr[3] = (ctrl_inl(ioaddr + MAHR) & 0xFF); in read_mac_address()
89 ndev->dev_addr[4] = (ctrl_inl(ioaddr + MALR) >> 8) & 0xFF; in read_mac_address()
90 ndev->dev_addr[5] = (ctrl_inl(ioaddr + MALR) & 0xFF); in read_mac_address()
169 static void sh_eth_reset(struct net_device *ndev) in sh_eth_reset() argument
171 u32 ioaddr = ndev->base_addr; in sh_eth_reset()
204 static void sh_eth_ring_free(struct net_device *ndev) in sh_eth_ring_free() argument
206 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_ring_free()
229 static void sh_eth_ring_format(struct net_device *ndev) in sh_eth_ring_format() argument
231 u32 ioaddr = ndev->base_addr, reserve = 0; in sh_eth_ring_format()
232 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_ring_format()
253 skb->dev = ndev; /* Mark as being used by this device. */ in sh_eth_ring_format()
316 static int sh_eth_ring_init(struct net_device *ndev) in sh_eth_ring_init() argument
318 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_ring_init()
327 mdp->rx_buf_sz = (ndev->mtu <= 1492 ? PKT_BUF_SZ : in sh_eth_ring_init()
328 (((ndev->mtu + 26 + 7) & ~7) + 2 + 16)); in sh_eth_ring_init()
334 printk(KERN_ERR "%s: Cannot allocate Rx skb\n", ndev->name); in sh_eth_ring_init()
342 printk(KERN_ERR "%s: Cannot allocate Tx skb\n", ndev->name); in sh_eth_ring_init()
354 ndev->name, rx_ringsize); in sh_eth_ring_init()
367 ndev->name, tx_ringsize); in sh_eth_ring_init()
379 sh_eth_ring_free(ndev); in sh_eth_ring_init()
384 static int sh_eth_dev_init(struct net_device *ndev) in sh_eth_dev_init() argument
387 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_dev_init()
388 u32 ioaddr = ndev->base_addr; in sh_eth_dev_init()
393 sh_eth_reset(ndev); in sh_eth_dev_init()
396 sh_eth_ring_format(ndev); in sh_eth_dev_init()
449 update_mac_address(ndev); in sh_eth_dev_init()
464 netif_start_queue(ndev); in sh_eth_dev_init()
470 static int sh_eth_txfree(struct net_device *ndev) in sh_eth_txfree() argument
472 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_txfree()
499 static int sh_eth_rx(struct net_device *ndev) in sh_eth_rx() argument
501 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_rx()
541 skb->protocol = eth_type_trans(skb, ndev); in sh_eth_rx()
562 skb->dev = ndev; in sh_eth_rx()
584 if (!(ctrl_inl(ndev->base_addr + EDRRR) & EDRRR_R)) in sh_eth_rx()
585 ctrl_outl(EDRRR_R, ndev->base_addr + EDRRR); in sh_eth_rx()
591 static void sh_eth_error(struct net_device *ndev, int intr_status) in sh_eth_error() argument
593 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_error()
594 u32 ioaddr = ndev->base_addr; in sh_eth_error()
667 u32 edtrr = ctrl_inl(ndev->base_addr + EDTRR); in sh_eth_error()
670 ndev->name, intr_status, mdp->cur_tx); in sh_eth_error()
672 mdp->dirty_tx, (u32) ndev->state, edtrr); in sh_eth_error()
674 sh_eth_txfree(ndev); in sh_eth_error()
679 ctrl_outl(EDTRR_TRNS, ndev->base_addr + EDTRR); in sh_eth_error()
682 netif_wake_queue(ndev); in sh_eth_error()
688 struct net_device *ndev = netdev; in sh_eth_interrupt() local
689 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_interrupt()
694 ioaddr = ndev->base_addr; in sh_eth_interrupt()
715 sh_eth_rx(ndev); in sh_eth_interrupt()
720 sh_eth_txfree(ndev); in sh_eth_interrupt()
721 netif_wake_queue(ndev); in sh_eth_interrupt()
725 sh_eth_error(ndev, intr_status); in sh_eth_interrupt()
730 ndev->name, intr_status); in sh_eth_interrupt()
741 struct net_device *ndev = (struct net_device *)data; in sh_eth_timer() local
742 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_timer()
748 static void sh_eth_adjust_link(struct net_device *ndev) in sh_eth_adjust_link() argument
750 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_adjust_link()
752 u32 ioaddr = ndev->base_addr; in sh_eth_adjust_link()
804 static int sh_eth_phy_init(struct net_device *ndev) in sh_eth_phy_init() argument
806 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_phy_init()
818 phydev = phy_connect(ndev, phy_id, &sh_eth_adjust_link, in sh_eth_phy_init()
821 dev_err(&ndev->dev, "phy_connect failed\n"); in sh_eth_phy_init()
824 dev_info(&ndev->dev, "attached phy %i to driver %s\n", in sh_eth_phy_init()
833 static int sh_eth_phy_start(struct net_device *ndev) in sh_eth_phy_start() argument
835 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_phy_start()
838 ret = sh_eth_phy_init(ndev); in sh_eth_phy_start()
850 static int sh_eth_open(struct net_device *ndev) in sh_eth_open() argument
853 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_open()
855 ret = request_irq(ndev->irq, &sh_eth_interrupt, in sh_eth_open()
861 ndev->name, ndev); in sh_eth_open()
868 ret = sh_eth_ring_init(ndev); in sh_eth_open()
873 ret = sh_eth_dev_init(ndev); in sh_eth_open()
878 ret = sh_eth_phy_start(ndev); in sh_eth_open()
885 setup_timer(&mdp->timer, sh_eth_timer, (unsigned long)ndev); in sh_eth_open()
890 free_irq(ndev->irq, ndev); in sh_eth_open()
895 static void sh_eth_tx_timeout(struct net_device *ndev) in sh_eth_tx_timeout() argument
897 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_tx_timeout()
898 u32 ioaddr = ndev->base_addr; in sh_eth_tx_timeout()
902 netif_stop_queue(ndev); in sh_eth_tx_timeout()
906 " resetting...\n", ndev->name, (int)ctrl_inl(ioaddr + EESR)); in sh_eth_tx_timeout()
930 sh_eth_dev_init(ndev); in sh_eth_tx_timeout()
938 static int sh_eth_start_xmit(struct sk_buff *skb, struct net_device *ndev) in sh_eth_start_xmit() argument
940 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_start_xmit()
947 if (!sh_eth_txfree(ndev)) { in sh_eth_start_xmit()
948 netif_stop_queue(ndev); in sh_eth_start_xmit()
975 if (!(ctrl_inl(ndev->base_addr + EDTRR) & EDTRR_TRNS)) in sh_eth_start_xmit()
976 ctrl_outl(EDTRR_TRNS, ndev->base_addr + EDTRR); in sh_eth_start_xmit()
978 ndev->trans_start = jiffies; in sh_eth_start_xmit()
984 static int sh_eth_close(struct net_device *ndev) in sh_eth_close() argument
986 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_close()
987 u32 ioaddr = ndev->base_addr; in sh_eth_close()
990 netif_stop_queue(ndev); in sh_eth_close()
1005 free_irq(ndev->irq, ndev); in sh_eth_close()
1010 sh_eth_ring_free(ndev); in sh_eth_close()
1023 static struct net_device_stats *sh_eth_get_stats(struct net_device *ndev) in sh_eth_get_stats() argument
1025 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_get_stats()
1026 u32 ioaddr = ndev->base_addr; in sh_eth_get_stats()
1047 static int sh_eth_do_ioctl(struct net_device *ndev, struct ifreq *rq, in sh_eth_do_ioctl() argument
1050 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_eth_do_ioctl()
1053 if (!netif_running(ndev)) in sh_eth_do_ioctl()
1064 static void sh_eth_set_multicast_list(struct net_device *ndev) in sh_eth_set_multicast_list() argument
1066 u32 ioaddr = ndev->base_addr; in sh_eth_set_multicast_list()
1068 if (ndev->flags & IFF_PROMISC) { in sh_eth_set_multicast_list()
1109 static int sh_mdio_release(struct net_device *ndev) in sh_mdio_release() argument
1111 struct mii_bus *bus = dev_get_drvdata(&ndev->dev); in sh_mdio_release()
1117 dev_set_drvdata(&ndev->dev, NULL); in sh_mdio_release()
1126 static int sh_mdio_init(struct net_device *ndev, int id) in sh_mdio_init() argument
1130 struct sh_eth_private *mdp = netdev_priv(ndev); in sh_mdio_init()
1140 bitbang->addr = ndev->base_addr + PIR; in sh_mdio_init()
1156 mdp->mii_bus->parent = &ndev->dev; in sh_mdio_init()
1174 dev_set_drvdata(&ndev->dev, mdp->mii_bus); in sh_mdio_init()
1195 struct net_device *ndev = NULL; in sh_eth_drv_probe() local
1207 ndev = alloc_etherdev(sizeof(struct sh_eth_private)); in sh_eth_drv_probe()
1208 if (!ndev) { in sh_eth_drv_probe()
1215 ndev->base_addr = res->start; in sh_eth_drv_probe()
1220 ndev->dma = -1; in sh_eth_drv_probe()
1226 ndev->irq = ret; in sh_eth_drv_probe()
1228 SET_NETDEV_DEV(ndev, &pdev->dev); in sh_eth_drv_probe()
1231 ether_setup(ndev); in sh_eth_drv_probe()
1233 mdp = netdev_priv(ndev); in sh_eth_drv_probe()
1243 ndev->open = sh_eth_open; in sh_eth_drv_probe()
1244 ndev->hard_start_xmit = sh_eth_start_xmit; in sh_eth_drv_probe()
1245 ndev->stop = sh_eth_close; in sh_eth_drv_probe()
1246 ndev->get_stats = sh_eth_get_stats; in sh_eth_drv_probe()
1247 ndev->set_multicast_list = sh_eth_set_multicast_list; in sh_eth_drv_probe()
1248 ndev->do_ioctl = sh_eth_do_ioctl; in sh_eth_drv_probe()
1249 ndev->tx_timeout = sh_eth_tx_timeout; in sh_eth_drv_probe()
1250 ndev->watchdog_timeo = TX_TIMEOUT; in sh_eth_drv_probe()
1256 read_mac_address(ndev); in sh_eth_drv_probe()
1273 ret = register_netdev(ndev); in sh_eth_drv_probe()
1278 ret = sh_mdio_init(ndev, pdev->id); in sh_eth_drv_probe()
1284 ndev->name, CARDNAME, (u32) ndev->base_addr); in sh_eth_drv_probe()
1287 printk("%02X:", ndev->dev_addr[i]); in sh_eth_drv_probe()
1288 printk("%02X, IRQ %d.\n", ndev->dev_addr[i], ndev->irq); in sh_eth_drv_probe()
1290 platform_set_drvdata(pdev, ndev); in sh_eth_drv_probe()
1295 unregister_netdev(ndev); in sh_eth_drv_probe()
1299 if (ndev) in sh_eth_drv_probe()
1300 free_netdev(ndev); in sh_eth_drv_probe()
1308 struct net_device *ndev = platform_get_drvdata(pdev); in sh_eth_drv_remove() local
1310 sh_mdio_release(ndev); in sh_eth_drv_remove()
1311 unregister_netdev(ndev); in sh_eth_drv_remove()
1314 free_netdev(ndev); in sh_eth_drv_remove()