]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/mmc/host/meson-gx-mmc.c
mmc: meson-gx: fix error path in meson_mmc_clk_init / meson_mmc_probe
[karo-tx-linux.git] / drivers / mmc / host / meson-gx-mmc.c
index 68e76fa8052bed1e95b98e48407ca15aaa78c8bf..002e4aac7ca99f05dc3bcbdb21b8d665dfa862b1 100644 (file)
@@ -321,7 +321,7 @@ static int meson_mmc_clk_init(struct meson_host *host)
        host->mmc->f_min = clk_round_rate(host->cfg_div_clk, 400000);
 
        ret = meson_mmc_clk_set(host, host->mmc->f_min);
-       if (!ret)
+       if (ret)
                clk_disable_unprepare(host->cfg_div_clk);
 
        return ret;
@@ -771,7 +771,7 @@ static int meson_mmc_probe(struct platform_device *pdev)
                                        meson_mmc_irq_thread, IRQF_SHARED,
                                        DRIVER_NAME, host);
        if (ret)
-               goto free_host;
+               goto err_div_clk;
 
        mmc->max_blk_count = CMD_CFG_LENGTH_MASK;
        mmc->max_req_size = mmc->max_blk_count * mmc->max_blk_size;
@@ -784,7 +784,7 @@ static int meson_mmc_probe(struct platform_device *pdev)
        if (host->bounce_buf == NULL) {
                dev_err(host->dev, "Unable to map allocate DMA bounce buffer.\n");
                ret = -ENOMEM;
-               goto free_host;
+               goto err_div_clk;
        }
 
        mmc->ops = &meson_mmc_ops;
@@ -792,8 +792,9 @@ static int meson_mmc_probe(struct platform_device *pdev)
 
        return 0;
 
-free_host:
+err_div_clk:
        clk_disable_unprepare(host->cfg_div_clk);
+free_host:
        clk_disable_unprepare(host->core_clk);
        mmc_free_host(mmc);
        return ret;