static const struct drm_mode_config_funcs tegra_drm_mode_config_funcs = {
.fb_create = tegra_fb_create,
-#ifdef CONFIG_DRM_FBDEV_EMULATION
- .output_poll_changed = drm_fb_helper_output_poll_changed,
-#endif
.atomic_check = tegra_atomic_check,
.atomic_commit = drm_atomic_helper_commit,
};
DRIVER_ATOMIC | DRIVER_RENDER | DRIVER_SYNCOBJ,
.open = tegra_drm_open,
.postclose = tegra_drm_postclose,
- .lastclose = drm_fb_helper_lastclose,
#if defined(CONFIG_DEBUG_FS)
.debugfs_init = tegra_debugfs_init,
drm->mode_config.funcs = &tegra_drm_mode_config_funcs;
drm->mode_config.helper_private = &tegra_drm_mode_config_helpers;
- err = tegra_drm_fb_prepare(drm);
- if (err < 0)
- goto config;
-
drm_kms_helper_poll_init(drm);
err = host1x_device_init(dev);
if (err < 0)
- goto fbdev;
+ goto poll;
/*
* Now that all display controller have been initialized, the maximum
if (err < 0)
goto hub;
- err = tegra_drm_fb_init(drm);
+ err = drm_dev_register(drm, 0);
if (err < 0)
goto hub;
- err = drm_dev_register(drm, 0);
- if (err < 0)
- goto fb;
+ tegra_fbdev_setup(drm);
return 0;
-fb:
- tegra_drm_fb_exit(drm);
hub:
if (tegra->hub)
tegra_display_hub_cleanup(tegra->hub);
}
host1x_device_exit(dev);
-fbdev:
+poll:
drm_kms_helper_poll_fini(drm);
- tegra_drm_fb_free(drm);
-config:
drm_mode_config_cleanup(drm);
domain:
if (tegra->domain)
drm_dev_unregister(drm);
drm_kms_helper_poll_fini(drm);
- tegra_drm_fb_exit(drm);
drm_atomic_helper_shutdown(drm);
drm_mode_config_cleanup(drm);