drm/mcde: More devm_drm_dev_init
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 23 Mar 2020 14:49:32 +0000 (15:49 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 26 Mar 2020 15:05:12 +0000 (16:05 +0100)
Auto-unwind ftw, now possible with the fixed drm_device related
management.

Aside, clk/regulator seem to be missing devm versions for a bunch of
functions, preventing a pile of these simpler drivers from outright
losing their ->remove hook.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20200323144950.3018436-34-daniel.vetter@ffwll.ch
drivers/gpu/drm/mcde/mcde_drv.c

index 03d2e1a00810a2f0d7620269a30315ee61aaa40d..88cc6b4a7a64cac1f932623e25350d466687ef02 100644 (file)
@@ -312,7 +312,7 @@ static int mcde_probe(struct platform_device *pdev)
                return -ENOMEM;
        mcde->dev = dev;
 
-       ret = drm_dev_init(&mcde->drm, &mcde_drm_driver, dev);
+       ret = devm_drm_dev_init(dev, &mcde->drm, &mcde_drm_driver);
        if (ret) {
                kfree(mcde);
                return ret;
@@ -331,12 +331,12 @@ static int mcde_probe(struct platform_device *pdev)
        if (IS_ERR(mcde->epod)) {
                ret = PTR_ERR(mcde->epod);
                dev_err(dev, "can't get EPOD regulator\n");
-               goto dev_unref;
+               return ret;
        }
        ret = regulator_enable(mcde->epod);
        if (ret) {
                dev_err(dev, "can't enable EPOD regulator\n");
-               goto dev_unref;
+               return ret;
        }
        mcde->vana = devm_regulator_get(dev, "vana");
        if (IS_ERR(mcde->vana)) {
@@ -487,8 +487,6 @@ regulator_off:
        regulator_disable(mcde->vana);
 regulator_epod_off:
        regulator_disable(mcde->epod);
-dev_unref:
-       drm_dev_put(drm);
        return ret;
 
 }
@@ -502,7 +500,6 @@ static int mcde_remove(struct platform_device *pdev)
        clk_disable_unprepare(mcde->mcde_clk);
        regulator_disable(mcde->vana);
        regulator_disable(mcde->epod);
-       drm_dev_put(drm);
 
        return 0;
 }