]> www.infradead.org Git - users/willy/linux.git/commitdiff
phy: cadence-torrent: extract calls to clk_get from cdns_torrent_clk
authorThomas Richard <thomas.richard@bootlin.com>
Tue, 16 Apr 2024 12:52:33 +0000 (14:52 +0200)
committerVinod Koul <vkoul@kernel.org>
Mon, 3 Jun 2024 13:47:01 +0000 (19:17 +0530)
Extract calls to clk_get from cdns_torrent_clk into a separate function.
It needs to call cdns_torrent_clk at resume without looking up the clock.

Co-developed-by: Théo Lebrun <theo.lebrun@bootlin.com>
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Link: https://lore.kernel.org/r/20240412-j7200-phy-s2r-v1-4-f15815833974@bootlin.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/cadence/phy-cadence-torrent.c

index 651f8fc969d8be82687eab55cf1c673ec464f967..bf1923919d7bda288b8efcf03dca585483bc7a9a 100644 (file)
@@ -2699,20 +2699,29 @@ static int cdns_torrent_reset(struct cdns_torrent_phy *cdns_phy)
        return 0;
 }
 
+static int cdns_torrent_of_get_clk(struct cdns_torrent_phy *cdns_phy)
+{
+       /* refclk: Input reference clock for PLL0 */
+       cdns_phy->clk = devm_clk_get(cdns_phy->dev, "refclk");
+       if (IS_ERR(cdns_phy->clk))
+               return dev_err_probe(cdns_phy->dev, PTR_ERR(cdns_phy->clk),
+                                    "phy ref clock not found\n");
+
+       /* refclk1: Input reference clock for PLL1 */
+       cdns_phy->clk1 = devm_clk_get_optional(cdns_phy->dev, "pll1_refclk");
+       if (IS_ERR(cdns_phy->clk1))
+               return dev_err_probe(cdns_phy->dev, PTR_ERR(cdns_phy->clk1),
+                                    "phy PLL1 ref clock not found\n");
+
+       return 0;
+}
+
 static int cdns_torrent_clk(struct cdns_torrent_phy *cdns_phy)
 {
-       struct device *dev = cdns_phy->dev;
        unsigned long ref_clk1_rate;
        unsigned long ref_clk_rate;
        int ret;
 
-       /* refclk: Input reference clock for PLL0 */
-       cdns_phy->clk = devm_clk_get(dev, "refclk");
-       if (IS_ERR(cdns_phy->clk)) {
-               dev_err(dev, "phy ref clock not found\n");
-               return PTR_ERR(cdns_phy->clk);
-       }
-
        ret = clk_prepare_enable(cdns_phy->clk);
        if (ret) {
                dev_err(cdns_phy->dev, "Failed to prepare ref clock: %d\n", ret);
@@ -2745,14 +2754,6 @@ static int cdns_torrent_clk(struct cdns_torrent_phy *cdns_phy)
                goto disable_clk;
        }
 
-       /* refclk1: Input reference clock for PLL1 */
-       cdns_phy->clk1 = devm_clk_get_optional(dev, "pll1_refclk");
-       if (IS_ERR(cdns_phy->clk1)) {
-               dev_err(dev, "phy PLL1 ref clock not found\n");
-               ret = PTR_ERR(cdns_phy->clk1);
-               goto disable_clk;
-       }
-
        if (cdns_phy->clk1) {
                ret = clk_prepare_enable(cdns_phy->clk1);
                if (ret) {
@@ -2846,6 +2847,10 @@ static int cdns_torrent_phy_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
+       ret = cdns_torrent_of_get_clk(cdns_phy);
+       if (ret)
+               goto clk_cleanup;
+
        regmap_field_read(cdns_phy->phy_pma_cmn_ctrl_1, &already_configured);
 
        if (!already_configured) {