.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * Dave DNET Ethernet Controller driver |
---|
3 | 4 | * |
---|
4 | 5 | * Copyright (C) 2008 Dave S.r.l. <www.dave.eu> |
---|
5 | 6 | * Copyright (C) 2009 Ilya Yanok, Emcraft Systems Ltd, <yanok@emcraft.com> |
---|
6 | | - * |
---|
7 | | - * This program is free software; you can redistribute it and/or modify |
---|
8 | | - * it under the terms of the GNU General Public License version 2 as |
---|
9 | | - * published by the Free Software Foundation. |
---|
10 | 7 | */ |
---|
11 | 8 | #include <linux/io.h> |
---|
12 | 9 | #include <linux/module.h> |
---|
.. | .. |
---|
284 | 281 | |
---|
285 | 282 | /* mask with MAC supported features */ |
---|
286 | 283 | if (bp->capabilities & DNET_HAS_GIGABIT) |
---|
287 | | - phydev->supported &= PHY_GBIT_FEATURES; |
---|
| 284 | + phy_set_max_speed(phydev, SPEED_1000); |
---|
288 | 285 | else |
---|
289 | | - phydev->supported &= PHY_BASIC_FEATURES; |
---|
| 286 | + phy_set_max_speed(phydev, SPEED_100); |
---|
290 | 287 | |
---|
291 | | - phydev->supported |= SUPPORTED_Asym_Pause | SUPPORTED_Pause; |
---|
292 | | - |
---|
293 | | - phydev->advertising = phydev->supported; |
---|
| 288 | + phy_support_asym_pause(phydev); |
---|
294 | 289 | |
---|
295 | 290 | bp->link = 0; |
---|
296 | 291 | bp->speed = 0; |
---|
.. | .. |
---|
512 | 507 | { |
---|
513 | 508 | |
---|
514 | 509 | struct dnet *bp = netdev_priv(dev); |
---|
515 | | - u32 tx_status, irq_enable; |
---|
516 | | - unsigned int len, i, tx_cmd, wrsz; |
---|
| 510 | + unsigned int i, tx_cmd, wrsz; |
---|
517 | 511 | unsigned long flags; |
---|
518 | 512 | unsigned int *bufp; |
---|
| 513 | + u32 irq_enable; |
---|
519 | 514 | |
---|
520 | | - tx_status = dnet_readl(bp, TX_STATUS); |
---|
| 515 | + dnet_readl(bp, TX_STATUS); |
---|
521 | 516 | |
---|
522 | 517 | pr_debug("start_xmit: len %u head %p data %p\n", |
---|
523 | 518 | skb->len, skb->head, skb->data); |
---|
524 | 519 | dnet_print_skb(skb); |
---|
525 | 520 | |
---|
526 | | - /* frame size (words) */ |
---|
527 | | - len = (skb->len + 3) >> 2; |
---|
528 | | - |
---|
529 | 521 | spin_lock_irqsave(&bp->lock, flags); |
---|
530 | 522 | |
---|
531 | | - tx_status = dnet_readl(bp, TX_STATUS); |
---|
| 523 | + dnet_readl(bp, TX_STATUS); |
---|
532 | 524 | |
---|
533 | 525 | bufp = (unsigned int *)(((unsigned long) skb->data) & ~0x3UL); |
---|
534 | 526 | wrsz = (u32) skb->len + 3; |
---|
.. | .. |
---|
550 | 542 | |
---|
551 | 543 | if (dnet_readl(bp, TX_FIFO_WCNT) > DNET_FIFO_TX_DATA_AF_TH) { |
---|
552 | 544 | netif_stop_queue(dev); |
---|
553 | | - tx_status = dnet_readl(bp, INTR_SRC); |
---|
| 545 | + dnet_readl(bp, INTR_SRC); |
---|
554 | 546 | irq_enable = dnet_readl(bp, INTR_ENB); |
---|
555 | 547 | irq_enable |= DNET_INTR_ENB_TX_FIFOAE; |
---|
556 | 548 | dnet_writel(bp, irq_enable, INTR_ENB); |
---|
.. | .. |
---|
730 | 722 | return nstat; |
---|
731 | 723 | } |
---|
732 | 724 | |
---|
733 | | -static int dnet_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) |
---|
734 | | -{ |
---|
735 | | - struct phy_device *phydev = dev->phydev; |
---|
736 | | - |
---|
737 | | - if (!netif_running(dev)) |
---|
738 | | - return -EINVAL; |
---|
739 | | - |
---|
740 | | - if (!phydev) |
---|
741 | | - return -ENODEV; |
---|
742 | | - |
---|
743 | | - return phy_mii_ioctl(phydev, rq, cmd); |
---|
744 | | -} |
---|
745 | | - |
---|
746 | 725 | static void dnet_get_drvinfo(struct net_device *dev, |
---|
747 | 726 | struct ethtool_drvinfo *info) |
---|
748 | 727 | { |
---|
749 | 728 | strlcpy(info->driver, DRV_NAME, sizeof(info->driver)); |
---|
750 | | - strlcpy(info->version, DRV_VERSION, sizeof(info->version)); |
---|
751 | 729 | strlcpy(info->bus_info, "0", sizeof(info->bus_info)); |
---|
752 | 730 | } |
---|
753 | 731 | |
---|
.. | .. |
---|
764 | 742 | .ndo_stop = dnet_close, |
---|
765 | 743 | .ndo_get_stats = dnet_get_stats, |
---|
766 | 744 | .ndo_start_xmit = dnet_start_xmit, |
---|
767 | | - .ndo_do_ioctl = dnet_ioctl, |
---|
| 745 | + .ndo_do_ioctl = phy_do_ioctl_running, |
---|
768 | 746 | .ndo_set_mac_address = eth_mac_addr, |
---|
769 | 747 | .ndo_validate_addr = eth_validate_addr, |
---|
770 | 748 | }; |
---|
.. | .. |
---|
795 | 773 | |
---|
796 | 774 | spin_lock_init(&bp->lock); |
---|
797 | 775 | |
---|
798 | | - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
---|
799 | | - bp->regs = devm_ioremap_resource(&pdev->dev, res); |
---|
| 776 | + bp->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &res); |
---|
800 | 777 | if (IS_ERR(bp->regs)) { |
---|
801 | 778 | err = PTR_ERR(bp->regs); |
---|
802 | 779 | goto err_out_free_dev; |
---|