.. | .. |
---|
40 | 40 | #include <linux/of_platform.h> |
---|
41 | 41 | #include <linux/of_gpio.h> |
---|
42 | 42 | #include <linux/of_net.h> |
---|
| 43 | +#include <linux/pgtable.h> |
---|
43 | 44 | |
---|
44 | 45 | #include <linux/vmalloc.h> |
---|
45 | | -#include <asm/pgtable.h> |
---|
46 | 46 | #include <asm/irq.h> |
---|
47 | 47 | #include <linux/uaccess.h> |
---|
48 | 48 | |
---|
.. | .. |
---|
53 | 53 | MODULE_AUTHOR("Pantelis Antoniou <panto@intracom.gr>"); |
---|
54 | 54 | MODULE_DESCRIPTION("Freescale Ethernet Driver"); |
---|
55 | 55 | MODULE_LICENSE("GPL"); |
---|
56 | | -MODULE_VERSION(DRV_MODULE_VERSION); |
---|
57 | 56 | |
---|
58 | 57 | static int fs_enet_debug = -1; /* -1 == use FS_ENET_DEF_MSG_ENABLE as value */ |
---|
59 | 58 | module_param(fs_enet_debug, int, 0); |
---|
.. | .. |
---|
501 | 500 | nr_frags = skb_shinfo(skb)->nr_frags; |
---|
502 | 501 | frag = skb_shinfo(skb)->frags; |
---|
503 | 502 | for (i = 0; i < nr_frags; i++, frag++) { |
---|
504 | | - if (!IS_ALIGNED(frag->page_offset, 4)) { |
---|
| 503 | + if (!IS_ALIGNED(skb_frag_off(frag), 4)) { |
---|
505 | 504 | is_aligned = 0; |
---|
506 | 505 | break; |
---|
507 | 506 | } |
---|
.. | .. |
---|
563 | 562 | BD_ENET_TX_TC); |
---|
564 | 563 | CBDS_SC(bdp, BD_ENET_TX_READY); |
---|
565 | 564 | |
---|
566 | | - if ((CBDR_SC(bdp) & BD_ENET_TX_WRAP) == 0) |
---|
567 | | - bdp++, curidx++; |
---|
568 | | - else |
---|
569 | | - bdp = fep->tx_bd_base, curidx = 0; |
---|
| 565 | + if ((CBDR_SC(bdp) & BD_ENET_TX_WRAP) == 0) { |
---|
| 566 | + bdp++; |
---|
| 567 | + curidx++; |
---|
| 568 | + } else { |
---|
| 569 | + bdp = fep->tx_bd_base; |
---|
| 570 | + curidx = 0; |
---|
| 571 | + } |
---|
570 | 572 | |
---|
571 | 573 | len = skb_frag_size(frag); |
---|
572 | 574 | CBDW_BUFADDR(bdp, skb_frag_dma_map(fep->dev, frag, 0, len, |
---|
.. | .. |
---|
641 | 643 | netif_wake_queue(dev); |
---|
642 | 644 | } |
---|
643 | 645 | |
---|
644 | | -static void fs_timeout(struct net_device *dev) |
---|
| 646 | +static void fs_timeout(struct net_device *dev, unsigned int txqueue) |
---|
645 | 647 | { |
---|
646 | 648 | struct fs_enet_private *fep = netdev_priv(dev); |
---|
647 | 649 | |
---|
.. | .. |
---|
790 | 792 | struct ethtool_drvinfo *info) |
---|
791 | 793 | { |
---|
792 | 794 | strlcpy(info->driver, DRV_MODULE_NAME, sizeof(info->driver)); |
---|
793 | | - strlcpy(info->version, DRV_MODULE_VERSION, sizeof(info->version)); |
---|
794 | 795 | } |
---|
795 | 796 | |
---|
796 | 797 | static int fs_get_regs_len(struct net_device *dev) |
---|
.. | .. |
---|
882 | 883 | .set_tunable = fs_set_tunable, |
---|
883 | 884 | }; |
---|
884 | 885 | |
---|
885 | | -static int fs_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) |
---|
886 | | -{ |
---|
887 | | - if (!netif_running(dev)) |
---|
888 | | - return -EINVAL; |
---|
889 | | - |
---|
890 | | - return phy_mii_ioctl(dev->phydev, rq, cmd); |
---|
891 | | -} |
---|
892 | | - |
---|
893 | 886 | extern int fs_mii_connect(struct net_device *dev); |
---|
894 | 887 | extern void fs_mii_disconnect(struct net_device *dev); |
---|
895 | 888 | |
---|
.. | .. |
---|
907 | 900 | .ndo_start_xmit = fs_enet_start_xmit, |
---|
908 | 901 | .ndo_tx_timeout = fs_timeout, |
---|
909 | 902 | .ndo_set_rx_mode = fs_set_multicast_list, |
---|
910 | | - .ndo_do_ioctl = fs_ioctl, |
---|
| 903 | + .ndo_do_ioctl = phy_do_ioctl_running, |
---|
911 | 904 | .ndo_validate_addr = eth_validate_addr, |
---|
912 | 905 | .ndo_set_mac_address = eth_mac_addr, |
---|
913 | 906 | #ifdef CONFIG_NET_POLL_CONTROLLER |
---|
.. | .. |
---|
1014 | 1007 | spin_lock_init(&fep->tx_lock); |
---|
1015 | 1008 | |
---|
1016 | 1009 | mac_addr = of_get_mac_address(ofdev->dev.of_node); |
---|
1017 | | - if (mac_addr) |
---|
1018 | | - memcpy(ndev->dev_addr, mac_addr, ETH_ALEN); |
---|
| 1010 | + if (!IS_ERR(mac_addr)) |
---|
| 1011 | + ether_addr_copy(ndev->dev_addr, mac_addr); |
---|
1019 | 1012 | |
---|
1020 | 1013 | ret = fep->ops->allocate_bd(ndev); |
---|
1021 | 1014 | if (ret) |
---|
.. | .. |
---|
1053 | 1046 | out_free_dev: |
---|
1054 | 1047 | free_netdev(ndev); |
---|
1055 | 1048 | out_put: |
---|
1056 | | - if (fpi->clk_per) |
---|
1057 | | - clk_disable_unprepare(fpi->clk_per); |
---|
| 1049 | + clk_disable_unprepare(fpi->clk_per); |
---|
1058 | 1050 | out_deregister_fixed_link: |
---|
1059 | 1051 | of_node_put(fpi->phy_node); |
---|
1060 | 1052 | if (of_phy_is_fixed_link(ofdev->dev.of_node)) |
---|
.. | .. |
---|
1075 | 1067 | fep->ops->cleanup_data(ndev); |
---|
1076 | 1068 | dev_set_drvdata(fep->dev, NULL); |
---|
1077 | 1069 | of_node_put(fep->fpi->phy_node); |
---|
1078 | | - if (fep->fpi->clk_per) |
---|
1079 | | - clk_disable_unprepare(fep->fpi->clk_per); |
---|
| 1070 | + clk_disable_unprepare(fep->fpi->clk_per); |
---|
1080 | 1071 | if (of_phy_is_fixed_link(ofdev->dev.of_node)) |
---|
1081 | 1072 | of_phy_deregister_fixed_link(ofdev->dev.of_node); |
---|
1082 | 1073 | free_netdev(ndev); |
---|