hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/net/ethernet/amd/amd8111e.c
....@@ -1,7 +1,7 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12
23 /* Advanced Micro Devices Inc. AMD8111E Linux Network Driver
34 * Copyright (C) 2004 Advanced Micro Devices
4
- *
55 *
66 * Copyright 2001,2002 Jeff Garzik <jgarzik@mandrakesoft.com> [ 8139cp.c,tg3.c ]
77 * Copyright (C) 2001, 2002 David S. Miller (davem@redhat.com)[ tg3.c]
....@@ -12,19 +12,6 @@
1212 * Carsten Langgaard, carstenl@mips.com [ pcnet32.c ]
1313 * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.
1414 *
15
- *
16
- * This program is free software; you can redistribute it and/or modify
17
- * it under the terms of the GNU General Public License as published by
18
- * the Free Software Foundation; either version 2 of the License, or
19
- * (at your option) any later version.
20
- *
21
- * This program is distributed in the hope that it will be useful,
22
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
23
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24
- * GNU General Public License for more details.
25
- *
26
- * You should have received a copy of the GNU General Public License
27
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
2815
2916 Module Name:
3017
....@@ -97,9 +84,8 @@
9784
9885 #include "amd8111e.h"
9986 #define MODULE_NAME "amd8111e"
100
-#define MODULE_VERS "3.0.7"
10187 MODULE_AUTHOR("Advanced Micro Devices, Inc.");
102
-MODULE_DESCRIPTION ("AMD8111 based 10/100 Ethernet Controller. Driver Version "MODULE_VERS);
88
+MODULE_DESCRIPTION("AMD8111 based 10/100 Ethernet Controller.");
10389 MODULE_LICENSE("GPL");
10490 module_param_array(speed_duplex, int, NULL, 0);
10591 MODULE_PARM_DESC(speed_duplex, "Set device speed and duplex modes, 0: Auto Negotiate, 1: 10Mbps Half Duplex, 2: 10Mbps Full Duplex, 3: 100Mbps Half Duplex, 4: 100Mbps Full Duplex");
....@@ -240,7 +226,9 @@
240226 /* Freeing transmit skbs */
241227 for(i = 0; i < NUM_TX_BUFFERS; i++){
242228 if(lp->tx_skbuff[i]){
243
- pci_unmap_single(lp->pci_dev,lp->tx_dma_addr[i], lp->tx_skbuff[i]->len,PCI_DMA_TODEVICE);
229
+ dma_unmap_single(&lp->pci_dev->dev,
230
+ lp->tx_dma_addr[i],
231
+ lp->tx_skbuff[i]->len, DMA_TO_DEVICE);
244232 dev_kfree_skb (lp->tx_skbuff[i]);
245233 lp->tx_skbuff[i] = NULL;
246234 lp->tx_dma_addr[i] = 0;
....@@ -250,8 +238,9 @@
250238 for (i = 0; i < NUM_RX_BUFFERS; i++){
251239 rx_skbuff = lp->rx_skbuff[i];
252240 if(rx_skbuff != NULL){
253
- pci_unmap_single(lp->pci_dev,lp->rx_dma_addr[i],
254
- lp->rx_buff_len - 2,PCI_DMA_FROMDEVICE);
241
+ dma_unmap_single(&lp->pci_dev->dev,
242
+ lp->rx_dma_addr[i],
243
+ lp->rx_buff_len - 2, DMA_FROM_DEVICE);
255244 dev_kfree_skb(lp->rx_skbuff[i]);
256245 lp->rx_skbuff[i] = NULL;
257246 lp->rx_dma_addr[i] = 0;
....@@ -301,20 +290,20 @@
301290 amd8111e_free_skbs(dev);
302291
303292 else{
304
- /* allocate the tx and rx descriptors */
305
- if((lp->tx_ring = pci_alloc_consistent(lp->pci_dev,
306
- sizeof(struct amd8111e_tx_dr)*NUM_TX_RING_DR,
307
- &lp->tx_ring_dma_addr)) == NULL)
308
-
293
+ /* allocate the tx and rx descriptors */
294
+ lp->tx_ring = dma_alloc_coherent(&lp->pci_dev->dev,
295
+ sizeof(struct amd8111e_tx_dr) * NUM_TX_RING_DR,
296
+ &lp->tx_ring_dma_addr, GFP_ATOMIC);
297
+ if (!lp->tx_ring)
309298 goto err_no_mem;
310299
311
- if((lp->rx_ring = pci_alloc_consistent(lp->pci_dev,
312
- sizeof(struct amd8111e_rx_dr)*NUM_RX_RING_DR,
313
- &lp->rx_ring_dma_addr)) == NULL)
314
-
300
+ lp->rx_ring = dma_alloc_coherent(&lp->pci_dev->dev,
301
+ sizeof(struct amd8111e_rx_dr) * NUM_RX_RING_DR,
302
+ &lp->rx_ring_dma_addr, GFP_ATOMIC);
303
+ if (!lp->rx_ring)
315304 goto err_free_tx_ring;
316
-
317305 }
306
+
318307 /* Set new receive buff size */
319308 amd8111e_set_rx_buff_len(dev);
320309
....@@ -332,8 +321,10 @@
332321 }
333322 /* Initilaizing receive descriptors */
334323 for (i = 0; i < NUM_RX_BUFFERS; i++) {
335
- lp->rx_dma_addr[i] = pci_map_single(lp->pci_dev,
336
- lp->rx_skbuff[i]->data,lp->rx_buff_len-2, PCI_DMA_FROMDEVICE);
324
+ lp->rx_dma_addr[i] = dma_map_single(&lp->pci_dev->dev,
325
+ lp->rx_skbuff[i]->data,
326
+ lp->rx_buff_len - 2,
327
+ DMA_FROM_DEVICE);
337328
338329 lp->rx_ring[i].buff_phy_addr = cpu_to_le32(lp->rx_dma_addr[i]);
339330 lp->rx_ring[i].buff_count = cpu_to_le16(lp->rx_buff_len-2);
....@@ -352,15 +343,15 @@
352343
353344 err_free_rx_ring:
354345
355
- pci_free_consistent(lp->pci_dev,
356
- sizeof(struct amd8111e_rx_dr)*NUM_RX_RING_DR,lp->rx_ring,
357
- lp->rx_ring_dma_addr);
346
+ dma_free_coherent(&lp->pci_dev->dev,
347
+ sizeof(struct amd8111e_rx_dr) * NUM_RX_RING_DR,
348
+ lp->rx_ring, lp->rx_ring_dma_addr);
358349
359350 err_free_tx_ring:
360351
361
- pci_free_consistent(lp->pci_dev,
362
- sizeof(struct amd8111e_tx_dr)*NUM_TX_RING_DR,lp->tx_ring,
363
- lp->tx_ring_dma_addr);
352
+ dma_free_coherent(&lp->pci_dev->dev,
353
+ sizeof(struct amd8111e_tx_dr) * NUM_TX_RING_DR,
354
+ lp->tx_ring, lp->tx_ring_dma_addr);
364355
365356 err_no_mem:
366357 return -ENOMEM;
....@@ -435,7 +426,7 @@
435426 int i,reg_val;
436427
437428 /* stop the chip */
438
- writel(RUN, mmio + CMD0);
429
+ writel(RUN, mmio + CMD0);
439430
440431 if(amd8111e_init_ring(dev))
441432 return -ENOMEM;
....@@ -626,16 +617,16 @@
626617 {
627618 /* Free transmit and receive descriptor rings */
628619 if(lp->rx_ring){
629
- pci_free_consistent(lp->pci_dev,
630
- sizeof(struct amd8111e_rx_dr)*NUM_RX_RING_DR,
631
- lp->rx_ring, lp->rx_ring_dma_addr);
620
+ dma_free_coherent(&lp->pci_dev->dev,
621
+ sizeof(struct amd8111e_rx_dr) * NUM_RX_RING_DR,
622
+ lp->rx_ring, lp->rx_ring_dma_addr);
632623 lp->rx_ring = NULL;
633624 }
634625
635626 if(lp->tx_ring){
636
- pci_free_consistent(lp->pci_dev,
637
- sizeof(struct amd8111e_tx_dr)*NUM_TX_RING_DR,
638
- lp->tx_ring, lp->tx_ring_dma_addr);
627
+ dma_free_coherent(&lp->pci_dev->dev,
628
+ sizeof(struct amd8111e_tx_dr) * NUM_TX_RING_DR,
629
+ lp->tx_ring, lp->tx_ring_dma_addr);
639630
640631 lp->tx_ring = NULL;
641632 }
....@@ -663,10 +654,11 @@
663654
664655 /* We must free the original skb */
665656 if (lp->tx_skbuff[tx_index]) {
666
- pci_unmap_single(lp->pci_dev, lp->tx_dma_addr[tx_index],
667
- lp->tx_skbuff[tx_index]->len,
668
- PCI_DMA_TODEVICE);
669
- dev_kfree_skb_irq (lp->tx_skbuff[tx_index]);
657
+ dma_unmap_single(&lp->pci_dev->dev,
658
+ lp->tx_dma_addr[tx_index],
659
+ lp->tx_skbuff[tx_index]->len,
660
+ DMA_TO_DEVICE);
661
+ dev_consume_skb_irq(lp->tx_skbuff[tx_index]);
670662 lp->tx_skbuff[tx_index] = NULL;
671663 lp->tx_dma_addr[tx_index] = 0;
672664 }
....@@ -751,14 +743,14 @@
751743
752744 skb_reserve(new_skb, 2);
753745 skb = lp->rx_skbuff[rx_index];
754
- pci_unmap_single(lp->pci_dev,lp->rx_dma_addr[rx_index],
755
- lp->rx_buff_len-2, PCI_DMA_FROMDEVICE);
746
+ dma_unmap_single(&lp->pci_dev->dev, lp->rx_dma_addr[rx_index],
747
+ lp->rx_buff_len - 2, DMA_FROM_DEVICE);
756748 skb_put(skb, pkt_len);
757749 lp->rx_skbuff[rx_index] = new_skb;
758
- lp->rx_dma_addr[rx_index] = pci_map_single(lp->pci_dev,
750
+ lp->rx_dma_addr[rx_index] = dma_map_single(&lp->pci_dev->dev,
759751 new_skb->data,
760
- lp->rx_buff_len-2,
761
- PCI_DMA_FROMDEVICE);
752
+ lp->rx_buff_len - 2,
753
+ DMA_FROM_DEVICE);
762754
763755 skb->protocol = eth_type_trans(skb, dev);
764756
....@@ -1284,7 +1276,8 @@
12841276 }
12851277 #endif
12861278 lp->tx_dma_addr[tx_index] =
1287
- pci_map_single(lp->pci_dev, skb->data, skb->len, PCI_DMA_TODEVICE);
1279
+ dma_map_single(&lp->pci_dev->dev, skb->data, skb->len,
1280
+ DMA_TO_DEVICE);
12881281 lp->tx_ring[tx_index].buff_phy_addr =
12891282 cpu_to_le32(lp->tx_dma_addr[tx_index]);
12901283
....@@ -1379,7 +1372,6 @@
13791372 struct amd8111e_priv *lp = netdev_priv(dev);
13801373 struct pci_dev *pci_dev = lp->pci_dev;
13811374 strlcpy(info->driver, MODULE_NAME, sizeof(info->driver));
1382
- strlcpy(info->version, MODULE_VERS, sizeof(info->version));
13831375 snprintf(info->fw_version, sizeof(info->fw_version),
13841376 "%u", chip_version);
13851377 strlcpy(info->bus_info, pci_name(pci_dev), sizeof(info->bus_info));
....@@ -1483,7 +1475,7 @@
14831475 case SIOCGMIIPHY:
14841476 data->phy_id = lp->ext_phy_addr;
14851477
1486
- /* fallthru */
1478
+ fallthrough;
14871479 case SIOCGMIIREG:
14881480
14891481 spin_lock_irq(&lp->lock);
....@@ -1582,7 +1574,7 @@
15821574 * failed or the interface is locked up. This function will reinitialize
15831575 * the hardware.
15841576 */
1585
-static void amd8111e_tx_timeout(struct net_device *dev)
1577
+static void amd8111e_tx_timeout(struct net_device *dev, unsigned int txqueue)
15861578 {
15871579 struct amd8111e_priv *lp = netdev_priv(dev);
15881580 int err;
....@@ -1595,9 +1587,10 @@
15951587 if(!err)
15961588 netif_wake_queue(dev);
15971589 }
1598
-static int amd8111e_suspend(struct pci_dev *pci_dev, pm_message_t state)
1590
+
1591
+static int __maybe_unused amd8111e_suspend(struct device *dev_d)
15991592 {
1600
- struct net_device *dev = pci_get_drvdata(pci_dev);
1593
+ struct net_device *dev = dev_get_drvdata(dev_d);
16011594 struct amd8111e_priv *lp = netdev_priv(dev);
16021595
16031596 if (!netif_running(dev))
....@@ -1624,33 +1617,23 @@
16241617 if(lp->options & OPTION_WAKE_PHY_ENABLE)
16251618 amd8111e_enable_link_change(lp);
16261619
1627
- pci_enable_wake(pci_dev, PCI_D3hot, 1);
1628
- pci_enable_wake(pci_dev, PCI_D3cold, 1);
1620
+ device_set_wakeup_enable(dev_d, 1);
16291621
16301622 }
16311623 else{
1632
- pci_enable_wake(pci_dev, PCI_D3hot, 0);
1633
- pci_enable_wake(pci_dev, PCI_D3cold, 0);
1624
+ device_set_wakeup_enable(dev_d, 0);
16341625 }
1635
-
1636
- pci_save_state(pci_dev);
1637
- pci_set_power_state(pci_dev, PCI_D3hot);
16381626
16391627 return 0;
16401628 }
1641
-static int amd8111e_resume(struct pci_dev *pci_dev)
1629
+
1630
+static int __maybe_unused amd8111e_resume(struct device *dev_d)
16421631 {
1643
- struct net_device *dev = pci_get_drvdata(pci_dev);
1632
+ struct net_device *dev = dev_get_drvdata(dev_d);
16441633 struct amd8111e_priv *lp = netdev_priv(dev);
16451634
16461635 if (!netif_running(dev))
16471636 return 0;
1648
-
1649
- pci_set_power_state(pci_dev, PCI_D0);
1650
- pci_restore_state(pci_dev);
1651
-
1652
- pci_enable_wake(pci_dev, PCI_D3hot, 0);
1653
- pci_enable_wake(pci_dev, PCI_D3cold, 0); /* D3 cold */
16541637
16551638 netif_device_attach(dev);
16561639
....@@ -1720,7 +1703,7 @@
17201703 writew((u32)tmp_ipg, mmio + IPG);
17211704 writew((u32)(tmp_ipg - IFS1_DELTA), mmio + IFS1);
17221705 }
1723
- mod_timer(&lp->ipg_data.ipg_timer, jiffies + IPG_CONVERGE_JIFFIES);
1706
+ mod_timer(&lp->ipg_data.ipg_timer, jiffies + IPG_CONVERGE_JIFFIES);
17241707 return;
17251708
17261709 }
....@@ -1797,7 +1780,7 @@
17971780 }
17981781
17991782 /* Initialize DMA */
1800
- if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32)) < 0) {
1783
+ if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)) < 0) {
18011784 dev_err(&pdev->dev, "DMA not supported\n");
18021785 err = -ENODEV;
18031786 goto err_free_reg;
....@@ -1888,7 +1871,6 @@
18881871
18891872 /* display driver and device information */
18901873 chip_version = (readl(lp->mmio + CHIPID) & 0xf0000000)>>28;
1891
- dev_info(&pdev->dev, "AMD-8111e Driver Version: %s\n", MODULE_VERS);
18921874 dev_info(&pdev->dev, "[ Rev %x ] PCI 10/100BaseT Ethernet %pM\n",
18931875 chip_version, dev->dev_addr);
18941876 if (lp->ext_phy_id)
....@@ -1934,13 +1916,14 @@
19341916 };
19351917 MODULE_DEVICE_TABLE(pci, amd8111e_pci_tbl);
19361918
1919
+static SIMPLE_DEV_PM_OPS(amd8111e_pm_ops, amd8111e_suspend, amd8111e_resume);
1920
+
19371921 static struct pci_driver amd8111e_driver = {
19381922 .name = MODULE_NAME,
19391923 .id_table = amd8111e_pci_tbl,
19401924 .probe = amd8111e_probe_one,
19411925 .remove = amd8111e_remove_one,
1942
- .suspend = amd8111e_suspend,
1943
- .resume = amd8111e_resume
1926
+ .driver.pm = &amd8111e_pm_ops
19441927 };
19451928
19461929 module_pci_driver(amd8111e_driver);