hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/net/ethernet/rdc/r6040.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * RDC R6040 Fast Ethernet MAC support
34 *
....@@ -5,21 +6,6 @@
56 * Copyright (C) 2007
67 * Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
78 * Copyright (C) 2007-2012 Florian Fainelli <f.fainelli@gmail.com>
8
- *
9
- * This program is free software; you can redistribute it and/or
10
- * modify it under the terms of the GNU General Public License
11
- * as published by the Free Software Foundation; either version 2
12
- * of the License, or (at your option) any later version.
13
- *
14
- * This program is distributed in the hope that it will be useful,
15
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
- * GNU General Public License for more details.
18
- *
19
- * You should have received a copy of the GNU General Public License
20
- * along with this program; if not, write to the
21
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22
- * Boston, MA 02110-1301, USA.
239 */
2410
2511 #include <linux/kernel.h>
....@@ -278,9 +264,9 @@
278264
279265 for (i = 0; i < TX_DCNT; i++) {
280266 if (lp->tx_insert_ptr->skb_ptr) {
281
- pci_unmap_single(lp->pdev,
282
- le32_to_cpu(lp->tx_insert_ptr->buf),
283
- MAX_BUF_SIZE, PCI_DMA_TODEVICE);
267
+ dma_unmap_single(&lp->pdev->dev,
268
+ le32_to_cpu(lp->tx_insert_ptr->buf),
269
+ MAX_BUF_SIZE, DMA_TO_DEVICE);
284270 dev_kfree_skb(lp->tx_insert_ptr->skb_ptr);
285271 lp->tx_insert_ptr->skb_ptr = NULL;
286272 }
....@@ -295,9 +281,9 @@
295281
296282 for (i = 0; i < RX_DCNT; i++) {
297283 if (lp->rx_insert_ptr->skb_ptr) {
298
- pci_unmap_single(lp->pdev,
299
- le32_to_cpu(lp->rx_insert_ptr->buf),
300
- MAX_BUF_SIZE, PCI_DMA_FROMDEVICE);
284
+ dma_unmap_single(&lp->pdev->dev,
285
+ le32_to_cpu(lp->rx_insert_ptr->buf),
286
+ MAX_BUF_SIZE, DMA_FROM_DEVICE);
301287 dev_kfree_skb(lp->rx_insert_ptr->skb_ptr);
302288 lp->rx_insert_ptr->skb_ptr = NULL;
303289 }
....@@ -351,9 +337,10 @@
351337 goto err_exit;
352338 }
353339 desc->skb_ptr = skb;
354
- desc->buf = cpu_to_le32(pci_map_single(lp->pdev,
355
- desc->skb_ptr->data,
356
- MAX_BUF_SIZE, PCI_DMA_FROMDEVICE));
340
+ desc->buf = cpu_to_le32(dma_map_single(&lp->pdev->dev,
341
+ desc->skb_ptr->data,
342
+ MAX_BUF_SIZE,
343
+ DMA_FROM_DEVICE));
357344 desc->status = DSC_OWNER_MAC;
358345 desc = desc->vndescp;
359346 } while (desc != lp->rx_ring);
....@@ -431,7 +418,7 @@
431418 iowrite16(TM2TX, ioaddr + MTPR);
432419 }
433420
434
-static void r6040_tx_timeout(struct net_device *dev)
421
+static void r6040_tx_timeout(struct net_device *dev, unsigned int txqueue)
435422 {
436423 struct r6040_private *priv = netdev_priv(dev);
437424 void __iomem *ioaddr = priv->base;
....@@ -505,26 +492,18 @@
505492
506493 /* Free Descriptor memory */
507494 if (lp->rx_ring) {
508
- pci_free_consistent(pdev,
509
- RX_DESC_SIZE, lp->rx_ring, lp->rx_ring_dma);
495
+ dma_free_coherent(&pdev->dev, RX_DESC_SIZE, lp->rx_ring,
496
+ lp->rx_ring_dma);
510497 lp->rx_ring = NULL;
511498 }
512499
513500 if (lp->tx_ring) {
514
- pci_free_consistent(pdev,
515
- TX_DESC_SIZE, lp->tx_ring, lp->tx_ring_dma);
501
+ dma_free_coherent(&pdev->dev, TX_DESC_SIZE, lp->tx_ring,
502
+ lp->tx_ring_dma);
516503 lp->tx_ring = NULL;
517504 }
518505
519506 return 0;
520
-}
521
-
522
-static int r6040_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
523
-{
524
- if (!dev->phydev)
525
- return -EINVAL;
526
-
527
- return phy_mii_ioctl(dev->phydev, rq, cmd);
528507 }
529508
530509 static int r6040_rx(struct net_device *dev, int limit)
....@@ -573,8 +552,8 @@
573552
574553 /* Do not count the CRC */
575554 skb_put(skb_ptr, descptr->len - 4);
576
- pci_unmap_single(priv->pdev, le32_to_cpu(descptr->buf),
577
- MAX_BUF_SIZE, PCI_DMA_FROMDEVICE);
555
+ dma_unmap_single(&priv->pdev->dev, le32_to_cpu(descptr->buf),
556
+ MAX_BUF_SIZE, DMA_FROM_DEVICE);
578557 skb_ptr->protocol = eth_type_trans(skb_ptr, priv->dev);
579558
580559 /* Send to upper layer */
....@@ -584,9 +563,10 @@
584563
585564 /* put new skb into descriptor */
586565 descptr->skb_ptr = new_skb;
587
- descptr->buf = cpu_to_le32(pci_map_single(priv->pdev,
588
- descptr->skb_ptr->data,
589
- MAX_BUF_SIZE, PCI_DMA_FROMDEVICE));
566
+ descptr->buf = cpu_to_le32(dma_map_single(&priv->pdev->dev,
567
+ descptr->skb_ptr->data,
568
+ MAX_BUF_SIZE,
569
+ DMA_FROM_DEVICE));
590570
591571 next_descr:
592572 /* put the descriptor back to the MAC */
....@@ -626,8 +606,8 @@
626606 dev->stats.tx_packets++;
627607 dev->stats.tx_bytes += skb_ptr->len;
628608
629
- pci_unmap_single(priv->pdev, le32_to_cpu(descptr->buf),
630
- skb_ptr->len, PCI_DMA_TODEVICE);
609
+ dma_unmap_single(&priv->pdev->dev, le32_to_cpu(descptr->buf),
610
+ skb_ptr->len, DMA_TO_DEVICE);
631611 /* Free buffer */
632612 dev_kfree_skb(skb_ptr);
633613 descptr->skb_ptr = NULL;
....@@ -779,14 +759,16 @@
779759
780760 /* Allocate Descriptor memory */
781761 lp->rx_ring =
782
- pci_alloc_consistent(lp->pdev, RX_DESC_SIZE, &lp->rx_ring_dma);
762
+ dma_alloc_coherent(&lp->pdev->dev, RX_DESC_SIZE,
763
+ &lp->rx_ring_dma, GFP_KERNEL);
783764 if (!lp->rx_ring) {
784765 ret = -ENOMEM;
785766 goto err_free_irq;
786767 }
787768
788769 lp->tx_ring =
789
- pci_alloc_consistent(lp->pdev, TX_DESC_SIZE, &lp->tx_ring_dma);
770
+ dma_alloc_coherent(&lp->pdev->dev, TX_DESC_SIZE,
771
+ &lp->tx_ring_dma, GFP_KERNEL);
790772 if (!lp->tx_ring) {
791773 ret = -ENOMEM;
792774 goto err_free_rx_ring;
....@@ -802,11 +784,11 @@
802784 return 0;
803785
804786 err_free_tx_ring:
805
- pci_free_consistent(lp->pdev, TX_DESC_SIZE, lp->tx_ring,
806
- lp->tx_ring_dma);
787
+ dma_free_coherent(&lp->pdev->dev, TX_DESC_SIZE, lp->tx_ring,
788
+ lp->tx_ring_dma);
807789 err_free_rx_ring:
808
- pci_free_consistent(lp->pdev, RX_DESC_SIZE, lp->rx_ring,
809
- lp->rx_ring_dma);
790
+ dma_free_coherent(&lp->pdev->dev, RX_DESC_SIZE, lp->rx_ring,
791
+ lp->rx_ring_dma);
810792 err_free_irq:
811793 free_irq(dev->irq, dev);
812794 out:
....@@ -840,14 +822,14 @@
840822 descptr = lp->tx_insert_ptr;
841823 descptr->len = skb->len;
842824 descptr->skb_ptr = skb;
843
- descptr->buf = cpu_to_le32(pci_map_single(lp->pdev,
844
- skb->data, skb->len, PCI_DMA_TODEVICE));
825
+ descptr->buf = cpu_to_le32(dma_map_single(&lp->pdev->dev, skb->data,
826
+ skb->len, DMA_TO_DEVICE));
845827 descptr->status = DSC_OWNER_MAC;
846828
847829 skb_tx_timestamp(skb);
848830
849831 /* Trigger the MAC to check the TX descriptor */
850
- if (!skb->xmit_more || netif_queue_stopped(dev))
832
+ if (!netdev_xmit_more() || netif_queue_stopped(dev))
851833 iowrite16(TM2TX, ioaddr + MTPR);
852834 lp->tx_insert_ptr = descptr->vndescp;
853835
....@@ -978,7 +960,7 @@
978960 .ndo_set_rx_mode = r6040_multicast_list,
979961 .ndo_validate_addr = eth_validate_addr,
980962 .ndo_set_mac_address = eth_mac_addr,
981
- .ndo_do_ioctl = r6040_ioctl,
963
+ .ndo_do_ioctl = phy_do_ioctl,
982964 .ndo_tx_timeout = r6040_tx_timeout,
983965 #ifdef CONFIG_NET_POLL_CONTROLLER
984966 .ndo_poll_controller = r6040_poll_controller,
....@@ -1031,16 +1013,8 @@
10311013 return PTR_ERR(phydev);
10321014 }
10331015
1034
- /* mask with MAC supported features */
1035
- phydev->supported &= (SUPPORTED_10baseT_Half
1036
- | SUPPORTED_10baseT_Full
1037
- | SUPPORTED_100baseT_Half
1038
- | SUPPORTED_100baseT_Full
1039
- | SUPPORTED_Autoneg
1040
- | SUPPORTED_MII
1041
- | SUPPORTED_TP);
1016
+ phy_set_max_speed(phydev, SPEED_100);
10421017
1043
- phydev->advertising = phydev->supported;
10441018 lp->old_link = 0;
10451019 lp->old_duplex = -1;
10461020
....@@ -1066,12 +1040,12 @@
10661040 goto err_out;
10671041
10681042 /* this should always be supported */
1069
- err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
1043
+ err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
10701044 if (err) {
10711045 dev_err(&pdev->dev, "32-bit PCI DMA addresses not supported by the card\n");
10721046 goto err_out_disable_dev;
10731047 }
1074
- err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
1048
+ err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
10751049 if (err) {
10761050 dev_err(&pdev->dev, "32-bit PCI DMA addresses not supported by the card\n");
10771051 goto err_out_disable_dev;
....@@ -1184,10 +1158,12 @@
11841158 err = register_netdev(dev);
11851159 if (err) {
11861160 dev_err(&pdev->dev, "Failed to register net device\n");
1187
- goto err_out_mdio_unregister;
1161
+ goto err_out_phy_disconnect;
11881162 }
11891163 return 0;
11901164
1165
+err_out_phy_disconnect:
1166
+ phy_disconnect(dev->phydev);
11911167 err_out_mdio_unregister:
11921168 mdiobus_unregister(lp->mii_bus);
11931169 err_out_mdio:
....@@ -1211,6 +1187,7 @@
12111187 struct r6040_private *lp = netdev_priv(dev);
12121188
12131189 unregister_netdev(dev);
1190
+ phy_disconnect(dev->phydev);
12141191 mdiobus_unregister(lp->mii_bus);
12151192 mdiobus_free(lp->mii_bus);
12161193 netif_napi_del(&lp->napi);