diff options
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 64 | ||||
| -rw-r--r-- | drivers/gpu/drm/drm_drv.c | 12 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_dp_mst.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_dp_mst.c | 3 |
4 files changed, 0 insertions, 82 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 805ef2f408a7..e385014ed616 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c | |||
| @@ -1679,70 +1679,6 @@ int drm_mode_create_suggested_offset_properties(struct drm_device *dev) | |||
| 1679 | } | 1679 | } |
| 1680 | EXPORT_SYMBOL(drm_mode_create_suggested_offset_properties); | 1680 | EXPORT_SYMBOL(drm_mode_create_suggested_offset_properties); |
| 1681 | 1681 | ||
| 1682 | static int drm_mode_group_init(struct drm_device *dev, struct drm_mode_group *group) | ||
| 1683 | { | ||
| 1684 | uint32_t total_objects = 0; | ||
| 1685 | |||
| 1686 | total_objects += dev->mode_config.num_crtc; | ||
| 1687 | total_objects += dev->mode_config.num_connector; | ||
| 1688 | total_objects += dev->mode_config.num_encoder; | ||
| 1689 | |||
| 1690 | group->id_list = kcalloc(total_objects, sizeof(uint32_t), GFP_KERNEL); | ||
| 1691 | if (!group->id_list) | ||
| 1692 | return -ENOMEM; | ||
| 1693 | |||
| 1694 | group->num_crtcs = 0; | ||
| 1695 | group->num_connectors = 0; | ||
| 1696 | group->num_encoders = 0; | ||
| 1697 | return 0; | ||
| 1698 | } | ||
| 1699 | |||
| 1700 | void drm_mode_group_destroy(struct drm_mode_group *group) | ||
| 1701 | { | ||
| 1702 | kfree(group->id_list); | ||
| 1703 | group->id_list = NULL; | ||
| 1704 | } | ||
| 1705 | |||
| 1706 | /* | ||
| 1707 | * NOTE: Driver's shouldn't ever call drm_mode_group_init_legacy_group - it is | ||
| 1708 | * the drm core's responsibility to set up mode control groups. | ||
| 1709 | */ | ||
| 1710 | int drm_mode_group_init_legacy_group(struct drm_device *dev, | ||
| 1711 | struct drm_mode_group *group) | ||
| 1712 | { | ||
| 1713 | struct drm_crtc *crtc; | ||
| 1714 | struct drm_encoder *encoder; | ||
| 1715 | struct drm_connector *connector; | ||
| 1716 | int ret; | ||
| 1717 | |||
| 1718 | ret = drm_mode_group_init(dev, group); | ||
| 1719 | if (ret) | ||
| 1720 | return ret; | ||
| 1721 | |||
| 1722 | drm_for_each_crtc(crtc, dev) | ||
| 1723 | group->id_list[group->num_crtcs++] = crtc->base.id; | ||
| 1724 | |||
| 1725 | drm_for_each_encoder(encoder, dev) | ||
| 1726 | group->id_list[group->num_crtcs + group->num_encoders++] = | ||
| 1727 | encoder->base.id; | ||
| 1728 | |||
| 1729 | drm_for_each_connector(connector, dev) | ||
| 1730 | group->id_list[group->num_crtcs + group->num_encoders + | ||
| 1731 | group->num_connectors++] = connector->base.id; | ||
| 1732 | |||
| 1733 | return 0; | ||
| 1734 | } | ||
| 1735 | EXPORT_SYMBOL(drm_mode_group_init_legacy_group); | ||
| 1736 | |||
| 1737 | void drm_reinit_primary_mode_group(struct drm_device *dev) | ||
| 1738 | { | ||
| 1739 | drm_modeset_lock_all(dev); | ||
| 1740 | drm_mode_group_destroy(&dev->primary->mode_group); | ||
| 1741 | drm_mode_group_init_legacy_group(dev, &dev->primary->mode_group); | ||
| 1742 | drm_modeset_unlock_all(dev); | ||
| 1743 | } | ||
| 1744 | EXPORT_SYMBOL(drm_reinit_primary_mode_group); | ||
| 1745 | |||
| 1746 | /** | 1682 | /** |
| 1747 | * drm_mode_getresources - get graphics configuration | 1683 | * drm_mode_getresources - get graphics configuration |
| 1748 | * @dev: drm device for the ioctl | 1684 | * @dev: drm device for the ioctl |
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c index b7bf4ce8c012..f7798c3b543e 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c | |||
| @@ -285,7 +285,6 @@ static void drm_minor_free(struct drm_device *dev, unsigned int type) | |||
| 285 | if (!minor) | 285 | if (!minor) |
| 286 | return; | 286 | return; |
| 287 | 287 | ||
| 288 | drm_mode_group_destroy(&minor->mode_group); | ||
| 289 | put_device(minor->kdev); | 288 | put_device(minor->kdev); |
| 290 | 289 | ||
| 291 | spin_lock_irqsave(&drm_minor_lock, flags); | 290 | spin_lock_irqsave(&drm_minor_lock, flags); |
| @@ -705,20 +704,9 @@ int drm_dev_register(struct drm_device *dev, unsigned long flags) | |||
| 705 | goto err_minors; | 704 | goto err_minors; |
| 706 | } | 705 | } |
| 707 | 706 | ||
| 708 | /* setup grouping for legacy outputs */ | ||
| 709 | if (drm_core_check_feature(dev, DRIVER_MODESET)) { | ||
| 710 | ret = drm_mode_group_init_legacy_group(dev, | ||
| 711 | &dev->primary->mode_group); | ||
| 712 | if (ret) | ||
| 713 | goto err_unload; | ||
| 714 | } | ||
| 715 | |||
| 716 | ret = 0; | 707 | ret = 0; |
| 717 | goto out_unlock; | 708 | goto out_unlock; |
| 718 | 709 | ||
| 719 | err_unload: | ||
| 720 | if (dev->driver->unload) | ||
| 721 | dev->driver->unload(dev); | ||
| 722 | err_minors: | 710 | err_minors: |
| 723 | drm_minor_unregister(dev, DRM_MINOR_LEGACY); | 711 | drm_minor_unregister(dev, DRM_MINOR_LEGACY); |
| 724 | drm_minor_unregister(dev, DRM_MINOR_RENDER); | 712 | drm_minor_unregister(dev, DRM_MINOR_RENDER); |
diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c index d0b2569c6241..585f0a45b3f1 100644 --- a/drivers/gpu/drm/i915/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/intel_dp_mst.c | |||
| @@ -441,7 +441,6 @@ static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topolo | |||
| 441 | drm_object_attach_property(&connector->base, dev->mode_config.tile_property, 0); | 441 | drm_object_attach_property(&connector->base, dev->mode_config.tile_property, 0); |
| 442 | 442 | ||
| 443 | drm_mode_connector_set_path_property(connector, pathprop); | 443 | drm_mode_connector_set_path_property(connector, pathprop); |
| 444 | drm_reinit_primary_mode_group(dev); | ||
| 445 | drm_modeset_lock_all(dev); | 444 | drm_modeset_lock_all(dev); |
| 446 | intel_connector_add_to_fbdev(intel_connector); | 445 | intel_connector_add_to_fbdev(intel_connector); |
| 447 | drm_modeset_unlock_all(dev); | 446 | drm_modeset_unlock_all(dev); |
| @@ -466,8 +465,6 @@ static void intel_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr, | |||
| 466 | drm_connector_cleanup(connector); | 465 | drm_connector_cleanup(connector); |
| 467 | drm_modeset_unlock_all(dev); | 466 | drm_modeset_unlock_all(dev); |
| 468 | 467 | ||
| 469 | drm_reinit_primary_mode_group(dev); | ||
| 470 | |||
| 471 | kfree(intel_connector); | 468 | kfree(intel_connector); |
| 472 | DRM_DEBUG_KMS("\n"); | 469 | DRM_DEBUG_KMS("\n"); |
| 473 | } | 470 | } |
diff --git a/drivers/gpu/drm/radeon/radeon_dp_mst.c b/drivers/gpu/drm/radeon/radeon_dp_mst.c index e649c8ff20a0..e4fc8f3bf58b 100644 --- a/drivers/gpu/drm/radeon/radeon_dp_mst.c +++ b/drivers/gpu/drm/radeon/radeon_dp_mst.c | |||
| @@ -284,7 +284,6 @@ static struct drm_connector *radeon_dp_add_mst_connector(struct drm_dp_mst_topol | |||
| 284 | 284 | ||
| 285 | drm_object_attach_property(&connector->base, dev->mode_config.path_property, 0); | 285 | drm_object_attach_property(&connector->base, dev->mode_config.path_property, 0); |
| 286 | drm_mode_connector_set_path_property(connector, pathprop); | 286 | drm_mode_connector_set_path_property(connector, pathprop); |
| 287 | drm_reinit_primary_mode_group(dev); | ||
| 288 | 287 | ||
| 289 | drm_modeset_lock_all(dev); | 288 | drm_modeset_lock_all(dev); |
| 290 | radeon_fb_add_connector(rdev, connector); | 289 | radeon_fb_add_connector(rdev, connector); |
| @@ -309,8 +308,6 @@ static void radeon_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr, | |||
| 309 | 308 | ||
| 310 | drm_connector_cleanup(connector); | 309 | drm_connector_cleanup(connector); |
| 311 | drm_modeset_unlock_all(dev); | 310 | drm_modeset_unlock_all(dev); |
| 312 | drm_reinit_primary_mode_group(dev); | ||
| 313 | |||
| 314 | 311 | ||
| 315 | kfree(connector); | 312 | kfree(connector); |
| 316 | DRM_DEBUG_KMS("\n"); | 313 | DRM_DEBUG_KMS("\n"); |
