OSDN Git Service

drm/st7735r: Use devm_drm_dev_alloc
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 15 Apr 2020 07:39:48 +0000 (09:39 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 28 Apr 2020 13:44:05 +0000 (15:44 +0200)
Already using devm_drm_dev_init, so very simple replacment.

Aside: There was an oddity in the old code, we allocated priv but in
the error path we've freed priv->dbidev ...

Acked-by: David Lechner <david@lechnology.com>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: David Lechner <david@lechnology.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200415074034.175360-14-daniel.vetter@ffwll.ch
drivers/gpu/drm/tiny/st7735r.c

index c2c7dc0..0af1b15 100644 (file)
@@ -195,21 +195,16 @@ static int st7735r_probe(struct spi_device *spi)
        if (!cfg)
                cfg = (void *)spi_get_device_id(spi)->driver_data;
 
-       priv = kzalloc(sizeof(*priv), GFP_KERNEL);
-       if (!priv)
-               return -ENOMEM;
+       priv = devm_drm_dev_alloc(dev, &st7735r_driver,
+                                 struct st7735r_priv, dbidev.drm);
+       if (IS_ERR(priv))
+               return PTR_ERR(priv);
 
        dbidev = &priv->dbidev;
        priv->cfg = cfg;
 
        dbi = &dbidev->dbi;
        drm = &dbidev->drm;
-       ret = devm_drm_dev_init(dev, drm, &st7735r_driver);
-       if (ret) {
-               kfree(dbidev);
-               return ret;
-       }
-       drmm_add_final_kfree(drm, dbidev);
 
        dbi->reset = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
        if (IS_ERR(dbi->reset)) {