hc
2024-01-31 f9004dbfff8a3fbbd7e2a88c8a4327c7f2f8e5b2
kernel/drivers/net/ethernet/freescale/fman/mac.c
....@@ -370,8 +370,8 @@
370370 /**
371371 * fman_get_pause_cfg
372372 * @mac_dev: A pointer to the MAC device
373
- * @rx: Return value for RX setting
374
- * @tx: Return value for TX setting
373
+ * @rx_pause: Return value for RX setting
374
+ * @tx_pause: Return value for TX setting
375375 *
376376 * Determine the MAC RX/TX PAUSE frames settings based on PHY
377377 * autonegotiation or values set by eththool.
....@@ -404,11 +404,7 @@
404404 */
405405
406406 /* get local capabilities */
407
- lcl_adv = 0;
408
- if (phy_dev->advertising & ADVERTISED_Pause)
409
- lcl_adv |= ADVERTISE_PAUSE_CAP;
410
- if (phy_dev->advertising & ADVERTISED_Asym_Pause)
411
- lcl_adv |= ADVERTISE_PAUSE_ASYM;
407
+ lcl_adv = linkmode_adv_to_lcl_adv_t(phy_dev->advertising);
412408
413409 /* get link partner capabilities */
414410 rmt_adv = 0;
....@@ -623,7 +619,7 @@
623619 const u8 *mac_addr;
624620 u32 val;
625621 u8 fman_id;
626
- int phy_if;
622
+ phy_interface_t phy_if;
627623
628624 dev = &_of_dev->dev;
629625 mac_node = dev->of_node;
....@@ -707,7 +703,7 @@
707703
708704 mac_dev->res = __devm_request_region(dev,
709705 fman_get_mem_region(priv->fman),
710
- res.start, res.end + 1 - res.start,
706
+ res.start, resource_size(&res),
711707 "mac");
712708 if (!mac_dev->res) {
713709 dev_err(dev, "__devm_request_mem_region(mac) failed\n");
....@@ -716,7 +712,7 @@
716712 }
717713
718714 priv->vaddr = devm_ioremap(dev, mac_dev->res->start,
719
- mac_dev->res->end + 1 - mac_dev->res->start);
715
+ resource_size(mac_dev->res));
720716 if (!priv->vaddr) {
721717 dev_err(dev, "devm_ioremap() failed\n");
722718 err = -EIO;
....@@ -739,12 +735,10 @@
739735
740736 /* Get the MAC address */
741737 mac_addr = of_get_mac_address(mac_node);
742
- if (!mac_addr) {
743
- dev_err(dev, "of_get_mac_address(%pOF) failed\n", mac_node);
744
- err = -EINVAL;
745
- goto _return_of_get_parent;
746
- }
747
- memcpy(mac_dev->addr, mac_addr, sizeof(mac_dev->addr));
738
+ if (IS_ERR(mac_addr))
739
+ dev_warn(dev, "of_get_mac_address(%pOF) failed\n", mac_node);
740
+ else
741
+ ether_addr_copy(mac_dev->addr, mac_addr);
748742
749743 /* Get the port handles */
750744 nph = of_count_phandle_with_args(mac_node, "fsl,fman-ports", NULL);
....@@ -791,8 +785,8 @@
791785 }
792786
793787 /* Get the PHY connection type */
794
- phy_if = of_get_phy_mode(mac_node);
795
- if (phy_if < 0) {
788
+ err = of_get_phy_mode(mac_node, &phy_if);
789
+ if (err) {
796790 dev_warn(dev,
797791 "of_get_phy_mode() for %pOF failed. Defaulting to SGMII\n",
798792 mac_node);
....@@ -870,9 +864,8 @@
870864 if (err < 0)
871865 dev_err(dev, "fman_set_mac_active_pause() = %d\n", err);
872866
873
- dev_info(dev, "FMan MAC address: %02hx:%02hx:%02hx:%02hx:%02hx:%02hx\n",
874
- mac_dev->addr[0], mac_dev->addr[1], mac_dev->addr[2],
875
- mac_dev->addr[3], mac_dev->addr[4], mac_dev->addr[5]);
867
+ if (!IS_ERR(mac_addr))
868
+ dev_info(dev, "FMan MAC address: %pM\n", mac_dev->addr);
876869
877870 priv->eth_dev = dpaa_eth_add_device(fman_id, mac_dev);
878871 if (IS_ERR(priv->eth_dev)) {
....@@ -891,12 +884,21 @@
891884 return err;
892885 }
893886
887
+static int mac_remove(struct platform_device *pdev)
888
+{
889
+ struct mac_device *mac_dev = platform_get_drvdata(pdev);
890
+
891
+ platform_device_unregister(mac_dev->priv->eth_dev);
892
+ return 0;
893
+}
894
+
894895 static struct platform_driver mac_driver = {
895896 .driver = {
896897 .name = KBUILD_MODNAME,
897898 .of_match_table = mac_match,
898899 },
899900 .probe = mac_probe,
901
+ .remove = mac_remove,
900902 };
901903
902904 builtin_platform_driver(mac_driver);