diff options
Diffstat (limited to 'drivers/gpu/drm/tegra/drm.c')
-rw-r--r-- | drivers/gpu/drm/tegra/drm.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c index 07eba596d458..c71594754f46 100644 --- a/drivers/gpu/drm/tegra/drm.c +++ b/drivers/gpu/drm/tegra/drm.c | |||
@@ -104,9 +104,11 @@ static void tegra_drm_context_free(struct tegra_drm_context *context) | |||
104 | 104 | ||
105 | static void tegra_drm_lastclose(struct drm_device *drm) | 105 | static void tegra_drm_lastclose(struct drm_device *drm) |
106 | { | 106 | { |
107 | #ifdef CONFIG_DRM_TEGRA_FBDEV | ||
107 | struct tegra_drm *tegra = drm->dev_private; | 108 | struct tegra_drm *tegra = drm->dev_private; |
108 | 109 | ||
109 | tegra_fbdev_restore_mode(tegra->fbdev); | 110 | tegra_fbdev_restore_mode(tegra->fbdev); |
111 | #endif | ||
110 | } | 112 | } |
111 | 113 | ||
112 | static struct host1x_bo * | 114 | static struct host1x_bo * |
@@ -578,7 +580,7 @@ static void tegra_debugfs_cleanup(struct drm_minor *minor) | |||
578 | #endif | 580 | #endif |
579 | 581 | ||
580 | static struct drm_driver tegra_drm_driver = { | 582 | static struct drm_driver tegra_drm_driver = { |
581 | .driver_features = DRIVER_MODESET | DRIVER_GEM, | 583 | .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME, |
582 | .load = tegra_drm_load, | 584 | .load = tegra_drm_load, |
583 | .unload = tegra_drm_unload, | 585 | .unload = tegra_drm_unload, |
584 | .open = tegra_drm_open, | 586 | .open = tegra_drm_open, |
@@ -596,6 +598,12 @@ static struct drm_driver tegra_drm_driver = { | |||
596 | 598 | ||
597 | .gem_free_object = tegra_bo_free_object, | 599 | .gem_free_object = tegra_bo_free_object, |
598 | .gem_vm_ops = &tegra_bo_vm_ops, | 600 | .gem_vm_ops = &tegra_bo_vm_ops, |
601 | |||
602 | .prime_handle_to_fd = drm_gem_prime_handle_to_fd, | ||
603 | .prime_fd_to_handle = drm_gem_prime_fd_to_handle, | ||
604 | .gem_prime_export = tegra_gem_prime_export, | ||
605 | .gem_prime_import = tegra_gem_prime_import, | ||
606 | |||
599 | .dumb_create = tegra_bo_dumb_create, | 607 | .dumb_create = tegra_bo_dumb_create, |
600 | .dumb_map_offset = tegra_bo_dumb_map_offset, | 608 | .dumb_map_offset = tegra_bo_dumb_map_offset, |
601 | .dumb_destroy = drm_gem_dumb_destroy, | 609 | .dumb_destroy = drm_gem_dumb_destroy, |
@@ -653,8 +661,10 @@ static const struct of_device_id host1x_drm_subdevs[] = { | |||
653 | { .compatible = "nvidia,tegra30-hdmi", }, | 661 | { .compatible = "nvidia,tegra30-hdmi", }, |
654 | { .compatible = "nvidia,tegra30-gr2d", }, | 662 | { .compatible = "nvidia,tegra30-gr2d", }, |
655 | { .compatible = "nvidia,tegra30-gr3d", }, | 663 | { .compatible = "nvidia,tegra30-gr3d", }, |
664 | { .compatible = "nvidia,tegra114-dsi", }, | ||
656 | { .compatible = "nvidia,tegra114-hdmi", }, | 665 | { .compatible = "nvidia,tegra114-hdmi", }, |
657 | { .compatible = "nvidia,tegra114-gr3d", }, | 666 | { .compatible = "nvidia,tegra114-gr3d", }, |
667 | { .compatible = "nvidia,tegra124-dc", }, | ||
658 | { /* sentinel */ } | 668 | { /* sentinel */ } |
659 | }; | 669 | }; |
660 | 670 | ||
@@ -677,10 +687,14 @@ static int __init host1x_drm_init(void) | |||
677 | if (err < 0) | 687 | if (err < 0) |
678 | goto unregister_host1x; | 688 | goto unregister_host1x; |
679 | 689 | ||
680 | err = platform_driver_register(&tegra_hdmi_driver); | 690 | err = platform_driver_register(&tegra_dsi_driver); |
681 | if (err < 0) | 691 | if (err < 0) |
682 | goto unregister_dc; | 692 | goto unregister_dc; |
683 | 693 | ||
694 | err = platform_driver_register(&tegra_hdmi_driver); | ||
695 | if (err < 0) | ||
696 | goto unregister_dsi; | ||
697 | |||
684 | err = platform_driver_register(&tegra_gr2d_driver); | 698 | err = platform_driver_register(&tegra_gr2d_driver); |
685 | if (err < 0) | 699 | if (err < 0) |
686 | goto unregister_hdmi; | 700 | goto unregister_hdmi; |
@@ -695,6 +709,8 @@ unregister_gr2d: | |||
695 | platform_driver_unregister(&tegra_gr2d_driver); | 709 | platform_driver_unregister(&tegra_gr2d_driver); |
696 | unregister_hdmi: | 710 | unregister_hdmi: |
697 | platform_driver_unregister(&tegra_hdmi_driver); | 711 | platform_driver_unregister(&tegra_hdmi_driver); |
712 | unregister_dsi: | ||
713 | platform_driver_unregister(&tegra_dsi_driver); | ||
698 | unregister_dc: | 714 | unregister_dc: |
699 | platform_driver_unregister(&tegra_dc_driver); | 715 | platform_driver_unregister(&tegra_dc_driver); |
700 | unregister_host1x: | 716 | unregister_host1x: |
@@ -708,6 +724,7 @@ static void __exit host1x_drm_exit(void) | |||
708 | platform_driver_unregister(&tegra_gr3d_driver); | 724 | platform_driver_unregister(&tegra_gr3d_driver); |
709 | platform_driver_unregister(&tegra_gr2d_driver); | 725 | platform_driver_unregister(&tegra_gr2d_driver); |
710 | platform_driver_unregister(&tegra_hdmi_driver); | 726 | platform_driver_unregister(&tegra_hdmi_driver); |
727 | platform_driver_unregister(&tegra_dsi_driver); | ||
711 | platform_driver_unregister(&tegra_dc_driver); | 728 | platform_driver_unregister(&tegra_dc_driver); |
712 | host1x_driver_unregister(&host1x_drm_driver); | 729 | host1x_driver_unregister(&host1x_drm_driver); |
713 | } | 730 | } |