r8169: use devm_clk_get_optional_enabled() to simplify the code
authorHeiner Kallweit <hkallweit1@gmail.com>
Fri, 2 Sep 2022 20:52:34 +0000 (22:52 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 5 Sep 2022 11:41:13 +0000 (12:41 +0100)
Now that we have devm_clk_get_optional_enabled(), we don't have to
open-code it.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/realtek/r8169_main.c

index 6572a64..a2ecc9c 100644 (file)
@@ -5119,37 +5119,6 @@ static int rtl_jumbo_max(struct rtl8169_private *tp)
        }
 }
 
-static void rtl_disable_clk(void *data)
-{
-       clk_disable_unprepare(data);
-}
-
-static int rtl_get_ether_clk(struct rtl8169_private *tp)
-{
-       struct device *d = tp_to_dev(tp);
-       struct clk *clk;
-       int rc;
-
-       clk = devm_clk_get(d, "ether_clk");
-       if (IS_ERR(clk)) {
-               rc = PTR_ERR(clk);
-               if (rc == -ENOENT)
-                       /* clk-core allows NULL (for suspend / resume) */
-                       rc = 0;
-               else
-                       dev_err_probe(d, rc, "failed to get clk\n");
-       } else {
-               tp->clk = clk;
-               rc = clk_prepare_enable(clk);
-               if (rc)
-                       dev_err(d, "failed to enable clk: %d\n", rc);
-               else
-                       rc = devm_add_action_or_reset(d, rtl_disable_clk, clk);
-       }
-
-       return rc;
-}
-
 static void rtl_init_mac_address(struct rtl8169_private *tp)
 {
        u8 mac_addr[ETH_ALEN] __aligned(2) = {};
@@ -5213,9 +5182,9 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
                return -ENOMEM;
 
        /* Get the *optional* external "ether_clk" used on some boards */
-       rc = rtl_get_ether_clk(tp);
-       if (rc)
-               return rc;
+       tp->clk = devm_clk_get_optional_enabled(&pdev->dev, "ether_clk");
+       if (IS_ERR(tp->clk))
+               return dev_err_probe(&pdev->dev, PTR_ERR(tp->clk), "failed to get ether_clk\n");
 
        /* enable device (incl. PCI PM wakeup and hotplug setup) */
        rc = pcim_enable_device(pdev);