OSDN Git Service

drm/tegra: Implement fbdev emulation as in-kernel client
[tomoyo/tomoyo-test1.git] / drivers / gpu / drm / tegra / drm.c
index 6ca9f39..85ba96c 100644 (file)
@@ -56,9 +56,6 @@ static int tegra_atomic_check(struct drm_device *drm,
 
 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,
 };
@@ -885,7 +882,6 @@ static const struct drm_driver tegra_drm_driver = {
                           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,
@@ -1185,15 +1181,11 @@ static int host1x_drm_probe(struct host1x_device *dev)
        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
@@ -1256,18 +1248,14 @@ static int host1x_drm_probe(struct host1x_device *dev)
        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);
@@ -1280,10 +1268,8 @@ device:
        }
 
        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)
@@ -1304,7 +1290,6 @@ static int host1x_drm_remove(struct host1x_device *dev)
        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);