hc
2023-12-06 08f87f769b595151be1afeff53e144f543faa614
kernel/drivers/net/ethernet/dec/tulip/uli526x.c
....@@ -1,13 +1,5 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
2
- This program is free software; you can redistribute it and/or
3
- modify it under the terms of the GNU General Public License
4
- as published by the Free Software Foundation; either version 2
5
- of the License, or (at your option) any later version.
6
-
7
- This program is distributed in the hope that it will be useful,
8
- but WITHOUT ANY WARRANTY; without even the implied warranty of
9
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
- GNU General Public License for more details.
113
124
135 */
....@@ -15,8 +7,6 @@
157 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
168
179 #define DRV_NAME "uli526x"
18
-#define DRV_VERSION "0.9.3"
19
-#define DRV_RELDATE "2005-7-29"
2010
2111 #include <linux/module.h>
2212
....@@ -204,10 +194,6 @@
204194 };
205195
206196 /* Global variable declaration ----------------------------- */
207
-static int printed_version;
208
-static const char version[] =
209
- "ULi M5261/M5263 net driver, version " DRV_VERSION " (" DRV_RELDATE ")";
210
-
211197 static int uli526x_debug;
212198 static unsigned char uli526x_media_mode = ULI526X_AUTO;
213199 static u32 uli526x_cr6_user_set;
....@@ -290,16 +276,13 @@
290276
291277 ULI526X_DBUG(0, "uli526x_init_one()", 0);
292278
293
- if (!printed_version++)
294
- pr_info("%s\n", version);
295
-
296279 /* Init network device */
297280 dev = alloc_etherdev(sizeof(*db));
298281 if (dev == NULL)
299282 return -ENOMEM;
300283 SET_NETDEV_DEV(dev, &pdev->dev);
301284
302
- if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) {
285
+ if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) {
303286 pr_warn("32-bit PCI DMA not available\n");
304287 err = -ENODEV;
305288 goto err_out_free;
....@@ -334,11 +317,15 @@
334317 /* Allocate Tx/Rx descriptor memory */
335318 err = -ENOMEM;
336319
337
- db->desc_pool_ptr = pci_alloc_consistent(pdev, sizeof(struct tx_desc) * DESC_ALL_CNT + 0x20, &db->desc_pool_dma_ptr);
320
+ db->desc_pool_ptr = dma_alloc_coherent(&pdev->dev,
321
+ sizeof(struct tx_desc) * DESC_ALL_CNT + 0x20,
322
+ &db->desc_pool_dma_ptr, GFP_KERNEL);
338323 if (!db->desc_pool_ptr)
339324 goto err_out_release;
340325
341
- db->buf_pool_ptr = pci_alloc_consistent(pdev, TX_BUF_ALLOC * TX_DESC_CNT + 4, &db->buf_pool_dma_ptr);
326
+ db->buf_pool_ptr = dma_alloc_coherent(&pdev->dev,
327
+ TX_BUF_ALLOC * TX_DESC_CNT + 4,
328
+ &db->buf_pool_dma_ptr, GFP_KERNEL);
342329 if (!db->buf_pool_ptr)
343330 goto err_out_free_tx_desc;
344331
....@@ -418,11 +405,12 @@
418405 err_out_unmap:
419406 pci_iounmap(pdev, db->ioaddr);
420407 err_out_free_tx_buf:
421
- pci_free_consistent(pdev, TX_BUF_ALLOC * TX_DESC_CNT + 4,
422
- db->buf_pool_ptr, db->buf_pool_dma_ptr);
408
+ dma_free_coherent(&pdev->dev, TX_BUF_ALLOC * TX_DESC_CNT + 4,
409
+ db->buf_pool_ptr, db->buf_pool_dma_ptr);
423410 err_out_free_tx_desc:
424
- pci_free_consistent(pdev, sizeof(struct tx_desc) * DESC_ALL_CNT + 0x20,
425
- db->desc_pool_ptr, db->desc_pool_dma_ptr);
411
+ dma_free_coherent(&pdev->dev,
412
+ sizeof(struct tx_desc) * DESC_ALL_CNT + 0x20,
413
+ db->desc_pool_ptr, db->desc_pool_dma_ptr);
426414 err_out_release:
427415 pci_release_regions(pdev);
428416 err_out_disable:
....@@ -441,11 +429,11 @@
441429
442430 unregister_netdev(dev);
443431 pci_iounmap(pdev, db->ioaddr);
444
- pci_free_consistent(db->pdev, sizeof(struct tx_desc) *
445
- DESC_ALL_CNT + 0x20, db->desc_pool_ptr,
446
- db->desc_pool_dma_ptr);
447
- pci_free_consistent(db->pdev, TX_BUF_ALLOC * TX_DESC_CNT + 4,
448
- db->buf_pool_ptr, db->buf_pool_dma_ptr);
432
+ dma_free_coherent(&db->pdev->dev,
433
+ sizeof(struct tx_desc) * DESC_ALL_CNT + 0x20,
434
+ db->desc_pool_ptr, db->desc_pool_dma_ptr);
435
+ dma_free_coherent(&db->pdev->dev, TX_BUF_ALLOC * TX_DESC_CNT + 4,
436
+ db->buf_pool_ptr, db->buf_pool_dma_ptr);
449437 pci_release_regions(pdev);
450438 pci_disable_device(pdev);
451439 free_netdev(dev);
....@@ -827,7 +815,8 @@
827815 db->rx_avail_cnt--;
828816 db->interval_rx_cnt++;
829817
830
- pci_unmap_single(db->pdev, le32_to_cpu(rxptr->rdes2), RX_ALLOC_SIZE, PCI_DMA_FROMDEVICE);
818
+ dma_unmap_single(&db->pdev->dev, le32_to_cpu(rxptr->rdes2),
819
+ RX_ALLOC_SIZE, DMA_FROM_DEVICE);
831820 if ( (rdes0 & 0x300) != 0x300) {
832821 /* A packet without First/Last flag */
833822 /* reuse this SKB */
....@@ -980,7 +969,6 @@
980969 struct uli526x_board_info *np = netdev_priv(dev);
981970
982971 strlcpy(info->driver, DRV_NAME, sizeof(info->driver));
983
- strlcpy(info->version, DRV_VERSION, sizeof(info->version));
984972 strlcpy(info->bus_info, pci_name(np->pdev), sizeof(info->bus_info));
985973 }
986974
....@@ -1181,22 +1169,15 @@
11811169 netif_wake_queue(dev);
11821170 }
11831171
1184
-
1185
-#ifdef CONFIG_PM
1186
-
11871172 /*
11881173 * Suspend the interface.
11891174 */
11901175
1191
-static int uli526x_suspend(struct pci_dev *pdev, pm_message_t state)
1176
+static int __maybe_unused uli526x_suspend(struct device *dev_d)
11921177 {
1193
- struct net_device *dev = pci_get_drvdata(pdev);
1194
- pci_power_t power_state;
1195
- int err;
1178
+ struct net_device *dev = dev_get_drvdata(dev_d);
11961179
11971180 ULI526X_DBUG(0, "uli526x_suspend", 0);
1198
-
1199
- pci_save_state(pdev);
12001181
12011182 if (!netif_running(dev))
12021183 return 0;
....@@ -1204,41 +1185,24 @@
12041185 netif_device_detach(dev);
12051186 uli526x_reset_prepare(dev);
12061187
1207
- power_state = pci_choose_state(pdev, state);
1208
- pci_enable_wake(pdev, power_state, 0);
1209
- err = pci_set_power_state(pdev, power_state);
1210
- if (err) {
1211
- netif_device_attach(dev);
1212
- /* Re-initialize ULI526X board */
1213
- uli526x_init(dev);
1214
- /* Restart upper layer interface */
1215
- netif_wake_queue(dev);
1216
- }
1188
+ device_set_wakeup_enable(dev_d, 0);
12171189
1218
- return err;
1190
+ return 0;
12191191 }
12201192
12211193 /*
12221194 * Resume the interface.
12231195 */
12241196
1225
-static int uli526x_resume(struct pci_dev *pdev)
1197
+static int __maybe_unused uli526x_resume(struct device *dev_d)
12261198 {
1227
- struct net_device *dev = pci_get_drvdata(pdev);
1228
- int err;
1199
+ struct net_device *dev = dev_get_drvdata(dev_d);
12291200
12301201 ULI526X_DBUG(0, "uli526x_resume", 0);
12311202
1232
- pci_restore_state(pdev);
12331203
12341204 if (!netif_running(dev))
12351205 return 0;
1236
-
1237
- err = pci_set_power_state(pdev, PCI_D0);
1238
- if (err) {
1239
- netdev_warn(dev, "Could not put device into D0\n");
1240
- return err;
1241
- }
12421206
12431207 netif_device_attach(dev);
12441208 /* Re-initialize ULI526X board */
....@@ -1248,14 +1212,6 @@
12481212
12491213 return 0;
12501214 }
1251
-
1252
-#else /* !CONFIG_PM */
1253
-
1254
-#define uli526x_suspend NULL
1255
-#define uli526x_resume NULL
1256
-
1257
-#endif /* !CONFIG_PM */
1258
-
12591215
12601216 /*
12611217 * free all allocated rx buffer
....@@ -1284,10 +1240,8 @@
12841240
12851241 if (!(rxptr->rdes0 & cpu_to_le32(0x80000000))) {
12861242 rxptr->rx_skb_ptr = skb;
1287
- rxptr->rdes2 = cpu_to_le32(pci_map_single(db->pdev,
1288
- skb_tail_pointer(skb),
1289
- RX_ALLOC_SIZE,
1290
- PCI_DMA_FROMDEVICE));
1243
+ rxptr->rdes2 = cpu_to_le32(dma_map_single(&db->pdev->dev, skb_tail_pointer(skb),
1244
+ RX_ALLOC_SIZE, DMA_FROM_DEVICE));
12911245 wmb();
12921246 rxptr->rdes0 = cpu_to_le32(0x80000000);
12931247 db->rx_avail_cnt++;
....@@ -1459,10 +1413,8 @@
14591413 if (skb == NULL)
14601414 break;
14611415 rxptr->rx_skb_ptr = skb; /* FIXME (?) */
1462
- rxptr->rdes2 = cpu_to_le32(pci_map_single(db->pdev,
1463
- skb_tail_pointer(skb),
1464
- RX_ALLOC_SIZE,
1465
- PCI_DMA_FROMDEVICE));
1416
+ rxptr->rdes2 = cpu_to_le32(dma_map_single(&db->pdev->dev, skb_tail_pointer(skb),
1417
+ RX_ALLOC_SIZE, DMA_FROM_DEVICE));
14661418 wmb();
14671419 rxptr->rdes0 = cpu_to_le32(0x80000000);
14681420 rxptr = rxptr->next_rx_desc;
....@@ -1779,14 +1731,14 @@
17791731 };
17801732 MODULE_DEVICE_TABLE(pci, uli526x_pci_tbl);
17811733
1734
+static SIMPLE_DEV_PM_OPS(uli526x_pm_ops, uli526x_suspend, uli526x_resume);
17821735
17831736 static struct pci_driver uli526x_driver = {
17841737 .name = "uli526x",
17851738 .id_table = uli526x_pci_tbl,
17861739 .probe = uli526x_init_one,
17871740 .remove = uli526x_remove_one,
1788
- .suspend = uli526x_suspend,
1789
- .resume = uli526x_resume,
1741
+ .driver.pm = &uli526x_pm_ops,
17901742 };
17911743
17921744 MODULE_AUTHOR("Peer Chen, peer.chen@uli.com.tw");
....@@ -1806,9 +1758,6 @@
18061758
18071759 static int __init uli526x_init_module(void)
18081760 {
1809
-
1810
- pr_info("%s\n", version);
1811
- printed_version = 1;
18121761
18131762 ULI526X_DBUG(0, "init_module() ", debug);
18141763