There's a few weird codepaths here including some that return err before
it gets set. Clean things up and drop the unnecessary label.

Also make a note about returning 0 when ref clk frequency is 0.

Signed-off-by: Casey Connolly <[email protected]>
---
 drivers/ufs/ufs-uclass.c | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/drivers/ufs/ufs-uclass.c b/drivers/ufs/ufs-uclass.c
index 3c8e4299259c..c6ef93dd101c 100644
--- a/drivers/ufs/ufs-uclass.c
+++ b/drivers/ufs/ufs-uclass.c
@@ -1862,45 +1862,43 @@ static int ufshcd_set_dev_ref_clk(struct ufs_hba *hba)
 
        /* get ref_clk */
        ref_clk = devm_clk_get(hba->dev, "ref_clk");
        if (IS_ERR((const void *)ref_clk)) {
-               err = PTR_ERR(ref_clk);
-               goto out;
+               return PTR_ERR(ref_clk);
        }
 
        host_ref_clk_freq = ufshcd_parse_dev_ref_clk_freq(hba, ref_clk);
-       if (host_ref_clk_freq == REF_CLK_FREQ_INVAL)
+       if (host_ref_clk_freq == REF_CLK_FREQ_INVAL) {
                dev_err(hba->dev,
                        "invalid ref_clk setting = %ld\n", 
clk_get_rate(ref_clk));
-
-       if (host_ref_clk_freq == REF_CLK_FREQ_INVAL)
-               goto out;
+               /* FIXME: qcom platforms don't have this wired up yet but seem 
to work anyway */
+               return 0;
+       }
 
        err = ufshcd_query_attr_retry(hba, UPIU_QUERY_OPCODE_READ_ATTR,
                                      QUERY_ATTR_IDN_REF_CLK_FREQ, 0, 0, 
&dev_ref_clk_freq);
 
        if (err) {
                dev_err(hba->dev, "failed reading bRefClkFreq. err = %d\n", 
err);
-               goto out;
+               return err;
        }
 
        if (dev_ref_clk_freq == host_ref_clk_freq)
-               goto out; /* nothing to update */
+               return 0; /* nothing to update */
 
        err = ufshcd_query_attr_retry(hba, UPIU_QUERY_OPCODE_WRITE_ATTR,
                                      QUERY_ATTR_IDN_REF_CLK_FREQ, 0, 0, 
&host_ref_clk_freq);
 
        if (err) {
                dev_err(hba->dev, "bRefClkFreq setting to %lu Hz failed\n",
                        ufs_ref_clk_freqs[host_ref_clk_freq].freq_hz);
-               goto out;
+               return err;
        }
 
        dev_dbg(hba->dev, "bRefClkFreq setting to %lu Hz succeeded\n",
                ufs_ref_clk_freqs[host_ref_clk_freq].freq_hz);
 
-out:
-       return err;
+       return 0;
 }
 
 /**
  * ufshcd_get_max_pwr_mode - reads the max power mode negotiated with device
-- 
2.51.0

Reply via email to