forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
....@@ -28,7 +28,6 @@
2828 #include <asm/octeon/cvmx-agl-defs.h>
2929
3030 #define DRV_NAME "octeon_mgmt"
31
-#define DRV_VERSION "2.0"
3231 #define DRV_DESCRIPTION \
3332 "Cavium Networks Octeon MII (management) port Network Driver"
3433
....@@ -316,9 +315,9 @@
316315 netif_wake_queue(p->netdev);
317316 }
318317
319
-static void octeon_mgmt_clean_tx_tasklet(unsigned long arg)
318
+static void octeon_mgmt_clean_tx_tasklet(struct tasklet_struct *t)
320319 {
321
- struct octeon_mgmt *p = (struct octeon_mgmt *)arg;
320
+ struct octeon_mgmt *p = from_tasklet(p, t, tx_clean_tasklet);
322321 octeon_mgmt_clean_tx_buffers(p);
323322 octeon_mgmt_enable_tx_irq(p);
324323 }
....@@ -795,9 +794,7 @@
795794 case SIOCSHWTSTAMP:
796795 return octeon_mgmt_ioctl_hwtstamp(netdev, rq, cmd);
797796 default:
798
- if (netdev->phydev)
799
- return phy_mii_ioctl(netdev->phydev, rq, cmd);
800
- return -EINVAL;
797
+ return phy_do_ioctl(netdev, rq, cmd);
801798 }
802799 }
803800
....@@ -964,7 +961,7 @@
964961 PHY_INTERFACE_MODE_MII);
965962
966963 if (!phydev)
967
- return -ENODEV;
964
+ return -EPROBE_DEFER;
968965
969966 return 0;
970967 }
....@@ -1085,8 +1082,11 @@
10851082 /* Set the mode of the interface, RGMII/MII. */
10861083 if (OCTEON_IS_MODEL(OCTEON_CN6XXX) && netdev->phydev) {
10871084 union cvmx_agl_prtx_ctl agl_prtx_ctl;
1088
- int rgmii_mode = (netdev->phydev->supported &
1089
- (SUPPORTED_1000baseT_Half | SUPPORTED_1000baseT_Full)) != 0;
1085
+ int rgmii_mode =
1086
+ (linkmode_test_bit(ETHTOOL_LINK_MODE_1000baseT_Half_BIT,
1087
+ netdev->phydev->supported) |
1088
+ linkmode_test_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
1089
+ netdev->phydev->supported)) != 0;
10901090
10911091 agl_prtx_ctl.u64 = cvmx_read_csr(p->agl_prt_ctl);
10921092 agl_prtx_ctl.s.mode = rgmii_mode ? 0 : 1;
....@@ -1219,7 +1219,7 @@
12191219 */
12201220 if (netdev->phydev) {
12211221 netif_carrier_off(netdev);
1222
- phy_start_aneg(netdev->phydev);
1222
+ phy_start(netdev->phydev);
12231223 }
12241224
12251225 netif_wake_queue(netdev);
....@@ -1247,8 +1247,10 @@
12471247 napi_disable(&p->napi);
12481248 netif_stop_queue(netdev);
12491249
1250
- if (netdev->phydev)
1250
+ if (netdev->phydev) {
1251
+ phy_stop(netdev->phydev);
12511252 phy_disconnect(netdev->phydev);
1253
+ }
12521254
12531255 netif_carrier_off(netdev);
12541256
....@@ -1344,9 +1346,6 @@
13441346 struct ethtool_drvinfo *info)
13451347 {
13461348 strlcpy(info->driver, DRV_NAME, sizeof(info->driver));
1347
- strlcpy(info->version, DRV_VERSION, sizeof(info->version));
1348
- strlcpy(info->fw_version, "N/A", sizeof(info->fw_version));
1349
- strlcpy(info->bus_info, "N/A", sizeof(info->bus_info));
13501349 }
13511350
13521351 static int octeon_mgmt_nway_reset(struct net_device *dev)
....@@ -1492,8 +1491,8 @@
14921491
14931492 skb_queue_head_init(&p->tx_list);
14941493 skb_queue_head_init(&p->rx_list);
1495
- tasklet_init(&p->tx_clean_tasklet,
1496
- octeon_mgmt_clean_tx_tasklet, (unsigned long)p);
1494
+ tasklet_setup(&p->tx_clean_tasklet,
1495
+ octeon_mgmt_clean_tx_tasklet);
14971496
14981497 netdev->priv_flags |= IFF_UNICAST_FLT;
14991498
....@@ -1505,8 +1504,8 @@
15051504
15061505 mac = of_get_mac_address(pdev->dev.of_node);
15071506
1508
- if (mac)
1509
- memcpy(netdev->dev_addr, mac, ETH_ALEN);
1507
+ if (!IS_ERR(mac))
1508
+ ether_addr_copy(netdev->dev_addr, mac);
15101509 else
15111510 eth_hw_addr_random(netdev);
15121511
....@@ -1521,7 +1520,6 @@
15211520 if (result)
15221521 goto err;
15231522
1524
- dev_info(&pdev->dev, "Version " DRV_VERSION "\n");
15251523 return 0;
15261524
15271525 err:
....@@ -1558,12 +1556,8 @@
15581556 .remove = octeon_mgmt_remove,
15591557 };
15601558
1561
-extern void octeon_mdiobus_force_mod_depencency(void);
1562
-
15631559 static int __init octeon_mgmt_mod_init(void)
15641560 {
1565
- /* Force our mdiobus driver module to be loaded first. */
1566
- octeon_mdiobus_force_mod_depencency();
15671561 return platform_driver_register(&octeon_mgmt_driver);
15681562 }
15691563
....@@ -1575,7 +1569,7 @@
15751569 module_init(octeon_mgmt_mod_init);
15761570 module_exit(octeon_mgmt_mod_exit);
15771571
1572
+MODULE_SOFTDEP("pre: mdio-cavium");
15781573 MODULE_DESCRIPTION(DRV_DESCRIPTION);
15791574 MODULE_AUTHOR("David Daney");
15801575 MODULE_LICENSE("GPL");
1581
-MODULE_VERSION(DRV_VERSION);