]> www.infradead.org Git - users/willy/xarray.git/commitdiff
phy: rockchip-pcie: Refactor mutex handling in rockchip_pcie_phy_power_on()
authorAnand Moon <linux.amoon@gmail.com>
Sat, 12 Oct 2024 07:19:07 +0000 (12:49 +0530)
committerVinod Koul <vkoul@kernel.org>
Wed, 4 Dec 2024 13:27:08 +0000 (18:57 +0530)
Refactor the mutex handling in the rockchip_pcie_phy_power_on() function to
improve code readability and maintainability. The goto statement has
been removed, and the mutex_unlock call is now directly within the
conditional block.

Return the result of reset_control_deassert() or regmap_read_poll_timeout()
function, with 0 indicating success and an error code indicating failure.

Signed-off-by: Anand Moon <linux.amoon@gmail.com>
Link: https://lore.kernel.org/r/20241012071919.3726-6-linux.amoon@gmail.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/rockchip/phy-rockchip-pcie.c

index c84a3c20931557b9521dd50afc6d3ebdfb8828b4..6dd014625226431d7000f1954ac5a173aad0c8a1 100644 (file)
@@ -163,13 +163,17 @@ static int rockchip_pcie_phy_power_on(struct phy *phy)
 
        mutex_lock(&rk_phy->pcie_mutex);
 
-       if (rk_phy->pwr_cnt++)
-               goto err_out;
+       if (rk_phy->pwr_cnt++) {
+               mutex_unlock(&rk_phy->pcie_mutex);
+               return 0;
+       }
 
        err = reset_control_deassert(rk_phy->phy_rst);
        if (err) {
                dev_err(&phy->dev, "deassert phy_rst err %d\n", err);
-               goto err_pwr_cnt;
+               rk_phy->pwr_cnt--;
+               mutex_unlock(&rk_phy->pcie_mutex);
+               return err;
        }
 
        regmap_write(rk_phy->reg_base, rk_phy->phy_data->pcie_conf,
@@ -226,13 +230,11 @@ static int rockchip_pcie_phy_power_on(struct phy *phy)
                goto err_pll_lock;
        }
 
-err_out:
        mutex_unlock(&rk_phy->pcie_mutex);
-       return 0;
+       return err;
 
 err_pll_lock:
        reset_control_assert(rk_phy->phy_rst);
-err_pwr_cnt:
        rk_phy->pwr_cnt--;
        mutex_unlock(&rk_phy->pcie_mutex);
        return err;