hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/net/ethernet/dnet.c
....@@ -1,12 +1,9 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * Dave DNET Ethernet Controller driver
34 *
45 * Copyright (C) 2008 Dave S.r.l. <www.dave.eu>
56 * 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.
107 */
118 #include <linux/io.h>
129 #include <linux/module.h>
....@@ -284,13 +281,11 @@
284281
285282 /* mask with MAC supported features */
286283 if (bp->capabilities & DNET_HAS_GIGABIT)
287
- phydev->supported &= PHY_GBIT_FEATURES;
284
+ phy_set_max_speed(phydev, SPEED_1000);
288285 else
289
- phydev->supported &= PHY_BASIC_FEATURES;
286
+ phy_set_max_speed(phydev, SPEED_100);
290287
291
- phydev->supported |= SUPPORTED_Asym_Pause | SUPPORTED_Pause;
292
-
293
- phydev->advertising = phydev->supported;
288
+ phy_support_asym_pause(phydev);
294289
295290 bp->link = 0;
296291 bp->speed = 0;
....@@ -512,23 +507,20 @@
512507 {
513508
514509 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;
517511 unsigned long flags;
518512 unsigned int *bufp;
513
+ u32 irq_enable;
519514
520
- tx_status = dnet_readl(bp, TX_STATUS);
515
+ dnet_readl(bp, TX_STATUS);
521516
522517 pr_debug("start_xmit: len %u head %p data %p\n",
523518 skb->len, skb->head, skb->data);
524519 dnet_print_skb(skb);
525520
526
- /* frame size (words) */
527
- len = (skb->len + 3) >> 2;
528
-
529521 spin_lock_irqsave(&bp->lock, flags);
530522
531
- tx_status = dnet_readl(bp, TX_STATUS);
523
+ dnet_readl(bp, TX_STATUS);
532524
533525 bufp = (unsigned int *)(((unsigned long) skb->data) & ~0x3UL);
534526 wrsz = (u32) skb->len + 3;
....@@ -550,7 +542,7 @@
550542
551543 if (dnet_readl(bp, TX_FIFO_WCNT) > DNET_FIFO_TX_DATA_AF_TH) {
552544 netif_stop_queue(dev);
553
- tx_status = dnet_readl(bp, INTR_SRC);
545
+ dnet_readl(bp, INTR_SRC);
554546 irq_enable = dnet_readl(bp, INTR_ENB);
555547 irq_enable |= DNET_INTR_ENB_TX_FIFOAE;
556548 dnet_writel(bp, irq_enable, INTR_ENB);
....@@ -730,24 +722,10 @@
730722 return nstat;
731723 }
732724
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
-
746725 static void dnet_get_drvinfo(struct net_device *dev,
747726 struct ethtool_drvinfo *info)
748727 {
749728 strlcpy(info->driver, DRV_NAME, sizeof(info->driver));
750
- strlcpy(info->version, DRV_VERSION, sizeof(info->version));
751729 strlcpy(info->bus_info, "0", sizeof(info->bus_info));
752730 }
753731
....@@ -764,7 +742,7 @@
764742 .ndo_stop = dnet_close,
765743 .ndo_get_stats = dnet_get_stats,
766744 .ndo_start_xmit = dnet_start_xmit,
767
- .ndo_do_ioctl = dnet_ioctl,
745
+ .ndo_do_ioctl = phy_do_ioctl_running,
768746 .ndo_set_mac_address = eth_mac_addr,
769747 .ndo_validate_addr = eth_validate_addr,
770748 };
....@@ -795,8 +773,7 @@
795773
796774 spin_lock_init(&bp->lock);
797775
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);
800777 if (IS_ERR(bp->regs)) {
801778 err = PTR_ERR(bp->regs);
802779 goto err_out_free_dev;