Lines Matching full:ndev

163 	struct net_device *ndev;  member
192 static inline void __iomem *w5100_mmio(struct net_device *ndev) in w5100_mmio() argument
194 struct w5100_mmio_priv *mmio_priv = w5100_mmio_priv(ndev); in w5100_mmio()
205 static inline int w5100_read_direct(struct net_device *ndev, u32 addr) in w5100_read_direct() argument
207 return ioread8(w5100_mmio(ndev) + (addr << CONFIG_WIZNET_BUS_SHIFT)); in w5100_read_direct()
210 static inline int __w5100_write_direct(struct net_device *ndev, u32 addr, in __w5100_write_direct() argument
213 iowrite8(data, w5100_mmio(ndev) + (addr << CONFIG_WIZNET_BUS_SHIFT)); in __w5100_write_direct()
218 static inline int w5100_write_direct(struct net_device *ndev, u32 addr, u8 data) in w5100_write_direct() argument
220 __w5100_write_direct(ndev, addr, data); in w5100_write_direct()
225 static int w5100_read16_direct(struct net_device *ndev, u32 addr) in w5100_read16_direct() argument
228 data = w5100_read_direct(ndev, addr) << 8; in w5100_read16_direct()
229 data |= w5100_read_direct(ndev, addr + 1); in w5100_read16_direct()
233 static int w5100_write16_direct(struct net_device *ndev, u32 addr, u16 data) in w5100_write16_direct() argument
235 __w5100_write_direct(ndev, addr, data >> 8); in w5100_write16_direct()
236 __w5100_write_direct(ndev, addr + 1, data); in w5100_write16_direct()
241 static int w5100_readbulk_direct(struct net_device *ndev, u32 addr, u8 *buf, in w5100_readbulk_direct() argument
247 *buf++ = w5100_read_direct(ndev, addr); in w5100_readbulk_direct()
252 static int w5100_writebulk_direct(struct net_device *ndev, u32 addr, in w5100_writebulk_direct() argument
258 __w5100_write_direct(ndev, addr, *buf++); in w5100_writebulk_direct()
263 static int w5100_mmio_init(struct net_device *ndev) in w5100_mmio_init() argument
265 struct platform_device *pdev = to_platform_device(ndev->dev.parent); in w5100_mmio_init()
266 struct w5100_priv *priv = netdev_priv(ndev); in w5100_mmio_init()
267 struct w5100_mmio_priv *mmio_priv = w5100_mmio_priv(ndev); in w5100_mmio_init()
277 netdev_info(ndev, "at 0x%llx irq %d\n", (u64)mem->start, priv->irq); in w5100_mmio_init()
304 static int w5100_read_indirect(struct net_device *ndev, u32 addr) in w5100_read_indirect() argument
306 struct w5100_mmio_priv *mmio_priv = w5100_mmio_priv(ndev); in w5100_read_indirect()
311 w5100_write16_direct(ndev, W5100_IDM_AR, addr); in w5100_read_indirect()
312 data = w5100_read_direct(ndev, W5100_IDM_DR); in w5100_read_indirect()
318 static int w5100_write_indirect(struct net_device *ndev, u32 addr, u8 data) in w5100_write_indirect() argument
320 struct w5100_mmio_priv *mmio_priv = w5100_mmio_priv(ndev); in w5100_write_indirect()
324 w5100_write16_direct(ndev, W5100_IDM_AR, addr); in w5100_write_indirect()
325 w5100_write_direct(ndev, W5100_IDM_DR, data); in w5100_write_indirect()
331 static int w5100_read16_indirect(struct net_device *ndev, u32 addr) in w5100_read16_indirect() argument
333 struct w5100_mmio_priv *mmio_priv = w5100_mmio_priv(ndev); in w5100_read16_indirect()
338 w5100_write16_direct(ndev, W5100_IDM_AR, addr); in w5100_read16_indirect()
339 data = w5100_read_direct(ndev, W5100_IDM_DR) << 8; in w5100_read16_indirect()
340 data |= w5100_read_direct(ndev, W5100_IDM_DR); in w5100_read16_indirect()
346 static int w5100_write16_indirect(struct net_device *ndev, u32 addr, u16 data) in w5100_write16_indirect() argument
348 struct w5100_mmio_priv *mmio_priv = w5100_mmio_priv(ndev); in w5100_write16_indirect()
352 w5100_write16_direct(ndev, W5100_IDM_AR, addr); in w5100_write16_indirect()
353 __w5100_write_direct(ndev, W5100_IDM_DR, data >> 8); in w5100_write16_indirect()
354 w5100_write_direct(ndev, W5100_IDM_DR, data); in w5100_write16_indirect()
360 static int w5100_readbulk_indirect(struct net_device *ndev, u32 addr, u8 *buf, in w5100_readbulk_indirect() argument
363 struct w5100_mmio_priv *mmio_priv = w5100_mmio_priv(ndev); in w5100_readbulk_indirect()
368 w5100_write16_direct(ndev, W5100_IDM_AR, addr); in w5100_readbulk_indirect()
371 *buf++ = w5100_read_direct(ndev, W5100_IDM_DR); in w5100_readbulk_indirect()
378 static int w5100_writebulk_indirect(struct net_device *ndev, u32 addr, in w5100_writebulk_indirect() argument
381 struct w5100_mmio_priv *mmio_priv = w5100_mmio_priv(ndev); in w5100_writebulk_indirect()
386 w5100_write16_direct(ndev, W5100_IDM_AR, addr); in w5100_writebulk_indirect()
389 __w5100_write_direct(ndev, W5100_IDM_DR, *buf++); in w5100_writebulk_indirect()
396 static int w5100_reset_indirect(struct net_device *ndev) in w5100_reset_indirect() argument
398 w5100_write_direct(ndev, W5100_MR, MR_RST); in w5100_reset_indirect()
400 w5100_write_direct(ndev, W5100_MR, MR_PB | MR_AI | MR_IND); in w5100_reset_indirect()
421 return w5100_read_direct(priv->ndev, addr); in w5100_read()
426 return w5100_write_direct(priv->ndev, addr, data); in w5100_write()
431 return w5100_read16_direct(priv->ndev, addr); in w5100_read16()
436 return w5100_write16_direct(priv->ndev, addr, data); in w5100_write16()
441 return w5100_readbulk_direct(priv->ndev, addr, buf, len); in w5100_readbulk()
447 return w5100_writebulk_direct(priv->ndev, addr, buf, len); in w5100_writebulk()
454 return w5100_read_indirect(priv->ndev, addr); in w5100_read()
459 return w5100_write_indirect(priv->ndev, addr, data); in w5100_write()
464 return w5100_read16_indirect(priv->ndev, addr); in w5100_read16()
469 return w5100_write16_indirect(priv->ndev, addr, data); in w5100_write16()
474 return w5100_readbulk_indirect(priv->ndev, addr, buf, len); in w5100_readbulk()
480 return w5100_writebulk_indirect(priv->ndev, addr, buf, len); in w5100_writebulk()
487 return priv->ops->read(priv->ndev, addr); in w5100_read()
492 return priv->ops->write(priv->ndev, addr, data); in w5100_write()
497 return priv->ops->read16(priv->ndev, addr); in w5100_read16()
502 return priv->ops->write16(priv->ndev, addr, data); in w5100_write16()
507 return priv->ops->readbulk(priv->ndev, addr, buf, len); in w5100_readbulk()
513 return priv->ops->writebulk(priv->ndev, addr, buf, len); in w5100_writebulk()
568 return priv->ops->reset(priv->ndev); in w5100_reset()
596 struct net_device *ndev = priv->ndev; in w5100_write_macaddr() local
598 w5100_writebulk(priv, W5100_SHAR, ndev->dev_addr, ETH_ALEN); in w5100_write_macaddr()
724 static void w5100_get_drvinfo(struct net_device *ndev, in w5100_get_drvinfo() argument
729 strlcpy(info->bus_info, dev_name(ndev->dev.parent), in w5100_get_drvinfo()
733 static u32 w5100_get_link(struct net_device *ndev) in w5100_get_link() argument
735 struct w5100_priv *priv = netdev_priv(ndev); in w5100_get_link()
743 static u32 w5100_get_msglevel(struct net_device *ndev) in w5100_get_msglevel() argument
745 struct w5100_priv *priv = netdev_priv(ndev); in w5100_get_msglevel()
750 static void w5100_set_msglevel(struct net_device *ndev, u32 value) in w5100_set_msglevel() argument
752 struct w5100_priv *priv = netdev_priv(ndev); in w5100_set_msglevel()
757 static int w5100_get_regs_len(struct net_device *ndev) in w5100_get_regs_len() argument
762 static void w5100_get_regs(struct net_device *ndev, in w5100_get_regs() argument
765 struct w5100_priv *priv = netdev_priv(ndev); in w5100_get_regs()
773 static void w5100_restart(struct net_device *ndev) in w5100_restart() argument
775 struct w5100_priv *priv = netdev_priv(ndev); in w5100_restart()
777 netif_stop_queue(ndev); in w5100_restart()
780 ndev->stats.tx_errors++; in w5100_restart()
781 netif_trans_update(ndev); in w5100_restart()
782 netif_wake_queue(ndev); in w5100_restart()
790 w5100_restart(priv->ndev); in w5100_restart_work()
793 static void w5100_tx_timeout(struct net_device *ndev, unsigned int txqueue) in w5100_tx_timeout() argument
795 struct w5100_priv *priv = netdev_priv(ndev); in w5100_tx_timeout()
800 w5100_restart(ndev); in w5100_tx_timeout()
803 static void w5100_tx_skb(struct net_device *ndev, struct sk_buff *skb) in w5100_tx_skb() argument
805 struct w5100_priv *priv = netdev_priv(ndev); in w5100_tx_skb()
811 ndev->stats.tx_bytes += skb->len; in w5100_tx_skb()
812 ndev->stats.tx_packets++; in w5100_tx_skb()
828 w5100_tx_skb(priv->ndev, skb); in w5100_tx_work()
831 static netdev_tx_t w5100_start_tx(struct sk_buff *skb, struct net_device *ndev) in w5100_start_tx() argument
833 struct w5100_priv *priv = netdev_priv(ndev); in w5100_start_tx()
835 netif_stop_queue(ndev); in w5100_start_tx()
842 w5100_tx_skb(ndev, skb); in w5100_start_tx()
848 static struct sk_buff *w5100_rx_skb(struct net_device *ndev) in w5100_rx_skb() argument
850 struct w5100_priv *priv = netdev_priv(ndev); in w5100_rx_skb()
864 skb = netdev_alloc_skb_ip_align(ndev, rx_len); in w5100_rx_skb()
868 ndev->stats.rx_dropped++; in w5100_rx_skb()
876 skb->protocol = eth_type_trans(skb, ndev); in w5100_rx_skb()
878 ndev->stats.rx_packets++; in w5100_rx_skb()
879 ndev->stats.rx_bytes += rx_len; in w5100_rx_skb()
890 while ((skb = w5100_rx_skb(priv->ndev))) in w5100_rx_work()
902 struct sk_buff *skb = w5100_rx_skb(priv->ndev); in w5100_napi_poll()
920 struct net_device *ndev = ndev_instance; in w5100_interrupt() local
921 struct w5100_priv *priv = netdev_priv(ndev); in w5100_interrupt()
929 netif_dbg(priv, tx_done, ndev, "tx done\n"); in w5100_interrupt()
930 netif_wake_queue(ndev); in w5100_interrupt()
947 struct net_device *ndev = ndev_instance; in w5100_detect_link() local
948 struct w5100_priv *priv = netdev_priv(ndev); in w5100_detect_link()
950 if (netif_running(ndev)) { in w5100_detect_link()
952 netif_info(priv, link, ndev, "link is up\n"); in w5100_detect_link()
953 netif_carrier_on(ndev); in w5100_detect_link()
955 netif_info(priv, link, ndev, "link is down\n"); in w5100_detect_link()
956 netif_carrier_off(ndev); in w5100_detect_link()
971 static void w5100_set_rx_mode(struct net_device *ndev) in w5100_set_rx_mode() argument
973 struct w5100_priv *priv = netdev_priv(ndev); in w5100_set_rx_mode()
974 bool set_promisc = (ndev->flags & IFF_PROMISC) != 0; in w5100_set_rx_mode()
986 static int w5100_set_macaddr(struct net_device *ndev, void *addr) in w5100_set_macaddr() argument
988 struct w5100_priv *priv = netdev_priv(ndev); in w5100_set_macaddr()
993 memcpy(ndev->dev_addr, sock_addr->sa_data, ETH_ALEN); in w5100_set_macaddr()
998 static int w5100_open(struct net_device *ndev) in w5100_open() argument
1000 struct w5100_priv *priv = netdev_priv(ndev); in w5100_open()
1002 netif_info(priv, ifup, ndev, "enabling\n"); in w5100_open()
1005 netif_start_queue(ndev); in w5100_open()
1008 netif_carrier_on(ndev); in w5100_open()
1012 static int w5100_stop(struct net_device *ndev) in w5100_stop() argument
1014 struct w5100_priv *priv = netdev_priv(ndev); in w5100_stop()
1016 netif_info(priv, ifdown, ndev, "shutting down\n"); in w5100_stop()
1018 netif_carrier_off(ndev); in w5100_stop()
1019 netif_stop_queue(ndev); in w5100_stop()
1073 void *w5100_ops_priv(const struct net_device *ndev) in w5100_ops_priv() argument
1075 return netdev_priv(ndev) + in w5100_ops_priv()
1085 struct net_device *ndev; in w5100_probe() local
1096 ndev = alloc_etherdev(alloc_size); in w5100_probe()
1097 if (!ndev) in w5100_probe()
1099 SET_NETDEV_DEV(ndev, dev); in w5100_probe()
1100 dev_set_drvdata(dev, ndev); in w5100_probe()
1101 priv = netdev_priv(ndev); in w5100_probe()
1130 priv->ndev = ndev; in w5100_probe()
1135 ndev->netdev_ops = &w5100_netdev_ops; in w5100_probe()
1136 ndev->ethtool_ops = &w5100_ethtool_ops; in w5100_probe()
1137 netif_napi_add(ndev, &priv->napi, w5100_napi_poll, 16); in w5100_probe()
1142 ndev->features |= NETIF_F_VLAN_CHALLENGED; in w5100_probe()
1144 err = register_netdev(ndev); in w5100_probe()
1149 netdev_name(ndev)); in w5100_probe()
1161 memcpy(ndev->dev_addr, mac_addr, ETH_ALEN); in w5100_probe()
1163 eth_hw_addr_random(ndev); in w5100_probe()
1166 err = priv->ops->init(priv->ndev); in w5100_probe()
1178 netdev_name(ndev), ndev); in w5100_probe()
1181 IRQF_TRIGGER_LOW, netdev_name(ndev), ndev); in w5100_probe()
1193 snprintf(link_name, 16, "%s-link", netdev_name(ndev)); in w5100_probe()
1198 link_name, priv->ndev) < 0) in w5100_probe()
1205 free_irq(priv->irq, ndev); in w5100_probe()
1209 unregister_netdev(ndev); in w5100_probe()
1211 free_netdev(ndev); in w5100_probe()
1218 struct net_device *ndev = dev_get_drvdata(dev); in w5100_remove() local
1219 struct w5100_priv *priv = netdev_priv(ndev); in w5100_remove()
1222 free_irq(priv->irq, ndev); in w5100_remove()
1224 free_irq(priv->link_irq, ndev); in w5100_remove()
1230 unregister_netdev(ndev); in w5100_remove()
1231 free_netdev(ndev); in w5100_remove()
1239 struct net_device *ndev = dev_get_drvdata(dev); in w5100_suspend() local
1240 struct w5100_priv *priv = netdev_priv(ndev); in w5100_suspend()
1242 if (netif_running(ndev)) { in w5100_suspend()
1243 netif_carrier_off(ndev); in w5100_suspend()
1244 netif_device_detach(ndev); in w5100_suspend()
1253 struct net_device *ndev = dev_get_drvdata(dev); in w5100_resume() local
1254 struct w5100_priv *priv = netdev_priv(ndev); in w5100_resume()
1256 if (netif_running(ndev)) { in w5100_resume()
1260 netif_device_attach(ndev); in w5100_resume()
1263 netif_carrier_on(ndev); in w5100_resume()