drm/mgag200: Separate device initialization into allocation
authorThomas Zimmermann <tzimmermann@suse.de>
Fri, 5 Jun 2020 13:58:00 +0000 (15:58 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Thu, 11 Jun 2020 08:06:03 +0000 (10:06 +0200)
Embedding the DRM device instance in struct mga_device will require
changes to device allocation. Moving the device initialization into
its own functions gets it out of the way.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20200605135803.19811-12-tzimmermann@suse.de
drivers/gpu/drm/mgag200/mgag200_drv.c

index f8bb241..926437a 100644 (file)
@@ -43,17 +43,11 @@ static struct drm_driver mgag200_driver = {
  * DRM device
  */
 
-static int mgag200_driver_load(struct drm_device *dev, unsigned long flags)
+static int mgag200_device_init(struct mga_device *mdev, unsigned long flags)
 {
-       struct mga_device *mdev;
+       struct drm_device *dev = mdev->dev;
        int ret, option;
 
-       mdev = devm_kzalloc(dev->dev, sizeof(struct mga_device), GFP_KERNEL);
-       if (mdev == NULL)
-               return -ENOMEM;
-       dev->dev_private = (void *)mdev;
-       mdev->dev = dev;
-
        mdev->flags = mgag200_flags_from_driver_data(flags);
        mdev->type = mgag200_type_from_driver_data(flags);
 
@@ -83,15 +77,33 @@ static int mgag200_driver_load(struct drm_device *dev, unsigned long flags)
 
        ret = mgag200_mm_init(mdev);
        if (ret)
-               goto err_mm;
+               return ret;
 
        ret = mgag200_modeset_init(mdev);
        if (ret) {
                drm_err(dev, "Fatal error during modeset init: %d\n", ret);
-               goto err_mm;
+               return ret;
        }
 
        return 0;
+}
+
+static int mgag200_driver_load(struct drm_device *dev, unsigned long flags)
+{
+       struct mga_device *mdev;
+       int ret;
+
+       mdev = devm_kzalloc(dev->dev, sizeof(struct mga_device), GFP_KERNEL);
+       if (mdev == NULL)
+               return -ENOMEM;
+       dev->dev_private = (void *)mdev;
+       mdev->dev = dev;
+
+       ret = mgag200_device_init(mdev, flags);
+       if (ret)
+               goto err_mm;
+
+       return 0;
 
 err_mm:
        dev->dev_private = NULL;