On Mon, Jun 20, 2016 at 05:22:57PM +0200, Benjamin Gaignard wrote:
static int sti_bind(struct device *dev) {
- return drm_platform_init(&sti_driver, to_platform_device(dev));
- struct drm_device *ddev;
- int ret;
- ddev = drm_dev_alloc(&sti_driver, dev);
- if (!ddev)
return -ENOMEM;
- drm_dev_set_unique(ddev, dev_name(dev));
- ddev->platformdev = to_platform_device(dev);
- ret = sti_init(ddev);
- if (ret)
goto err_drm_dev_unref;
- ret = component_bind_all(ddev->dev, ddev);
- if (ret)
goto err_cleanup;
- ret = drm_dev_register(ddev, 0);
- if (ret)
goto err_register;
Instead of coupling compositor_debug_init into the first CRTC, you can call it explicitly now (since it is not CRTC related but dev).
- drm_mode_config_reset(ddev);
- return 0;
+err_register:
- drm_mode_config_cleanup(ddev);
+err_cleanup:
- sti_cleanup(ddev);
+err_drm_dev_unref:
- drm_dev_unref(ddev);
- return ret;
}
static void sti_unbind(struct device *dev) {
- drm_put_dev(dev_get_drvdata(dev));
- struct drm_device *ddev = dev_get_drvdata(dev);
- drm_connector_unregister_all(ddev);
^ redundant.
- drm_dev_unregister(ddev);
- sti_cleanup(ddev);
- drm_dev_unref(ddev);
}