OSDN Git Service

mmc: meson-gx: use devm_mmc_alloc_host
authorHeiner Kallweit <hkallweit1@gmail.com>
Fri, 3 Feb 2023 23:54:48 +0000 (00:54 +0100)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 13 Feb 2023 22:55:44 +0000 (23:55 +0100)
Use new function devm_mmc_alloc_host() to simplify the code.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Link: https://lore.kernel.org/r/728f159b-885f-c78a-1a3d-f55c245250e1@gmail.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/meson-gx-mmc.c

index 6e5ea02..96115bf 100644 (file)
@@ -1179,7 +1179,7 @@ static int meson_mmc_probe(struct platform_device *pdev)
        struct mmc_host *mmc;
        int ret;
 
-       mmc = mmc_alloc_host(sizeof(struct meson_host), &pdev->dev);
+       mmc = devm_mmc_alloc_host(&pdev->dev, sizeof(struct meson_host));
        if (!mmc)
                return -ENOMEM;
        host = mmc_priv(mmc);
@@ -1195,46 +1195,33 @@ static int meson_mmc_probe(struct platform_device *pdev)
        host->vqmmc_enabled = false;
        ret = mmc_regulator_get_supply(mmc);
        if (ret)
-               goto free_host;
+               return ret;
 
        ret = mmc_of_parse(mmc);
-       if (ret) {
-               if (ret != -EPROBE_DEFER)
-                       dev_warn(&pdev->dev, "error parsing DT: %d\n", ret);
-               goto free_host;
-       }
+       if (ret)
+               return dev_err_probe(&pdev->dev, ret, "error parsing DT\n");
 
        host->data = (struct meson_mmc_data *)
                of_device_get_match_data(&pdev->dev);
-       if (!host->data) {
-               ret = -EINVAL;
-               goto free_host;
-       }
+       if (!host->data)
+               return -EINVAL;
 
        ret = device_reset_optional(&pdev->dev);
-       if (ret) {
-               dev_err_probe(&pdev->dev, ret, "device reset failed\n");
-               goto free_host;
-       }
+       if (ret)
+               return dev_err_probe(&pdev->dev, ret, "device reset failed\n");
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        host->regs = devm_ioremap_resource(&pdev->dev, res);
-       if (IS_ERR(host->regs)) {
-               ret = PTR_ERR(host->regs);
-               goto free_host;
-       }
+       if (IS_ERR(host->regs))
+               return PTR_ERR(host->regs);
 
        host->irq = platform_get_irq(pdev, 0);
-       if (host->irq <= 0) {
-               ret = -EINVAL;
-               goto free_host;
-       }
+       if (host->irq <= 0)
+               return -EINVAL;
 
        host->pinctrl = devm_pinctrl_get(&pdev->dev);
-       if (IS_ERR(host->pinctrl)) {
-               ret = PTR_ERR(host->pinctrl);
-               goto free_host;
-       }
+       if (IS_ERR(host->pinctrl))
+               return PTR_ERR(host->pinctrl);
 
        host->pins_clk_gate = pinctrl_lookup_state(host->pinctrl,
                                                   "clk-gate");
@@ -1245,14 +1232,12 @@ static int meson_mmc_probe(struct platform_device *pdev)
        }
 
        host->core_clk = devm_clk_get(&pdev->dev, "core");
-       if (IS_ERR(host->core_clk)) {
-               ret = PTR_ERR(host->core_clk);
-               goto free_host;
-       }
+       if (IS_ERR(host->core_clk))
+               return PTR_ERR(host->core_clk);
 
        ret = clk_prepare_enable(host->core_clk);
        if (ret)
-               goto free_host;
+               return ret;
 
        ret = meson_mmc_clk_init(host);
        if (ret)
@@ -1347,8 +1332,6 @@ err_init_clk:
        clk_disable_unprepare(host->mmc_clk);
 err_core_clk:
        clk_disable_unprepare(host->core_clk);
-free_host:
-       mmc_free_host(mmc);
        return ret;
 }
 
@@ -1365,7 +1348,6 @@ static int meson_mmc_remove(struct platform_device *pdev)
        clk_disable_unprepare(host->mmc_clk);
        clk_disable_unprepare(host->core_clk);
 
-       mmc_free_host(host->mmc);
        return 0;
 }