drm: gc now dead mode_group code
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 9 Jul 2015 21:44:37 +0000 (23:44 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 22 Jul 2015 15:29:38 +0000 (17:29 +0200)
Two nice things here:
- drm_dev_register will truly register everything in the right order
  if the driver doesn't have a ->load callback. Before this we had to
  init the primary mode_group after the device nodes where already
  registered.

- Less things to keep track of when reworking the connector locking,
  yay!

Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
drivers/gpu/drm/drm_crtc.c
drivers/gpu/drm/drm_drv.c
drivers/gpu/drm/i915/intel_dp_mst.c
drivers/gpu/drm/radeon/radeon_dp_mst.c
include/drm/drmP.h
include/drm/drm_crtc.h

index 805ef2f408a74b9b1a95ca74481eecbf9ba66217..e385014ed6160c77b8327ad5330fe963423a50d1 100644 (file)
@@ -1679,70 +1679,6 @@ int drm_mode_create_suggested_offset_properties(struct drm_device *dev)
 }
 EXPORT_SYMBOL(drm_mode_create_suggested_offset_properties);
 
-static int drm_mode_group_init(struct drm_device *dev, struct drm_mode_group *group)
-{
-       uint32_t total_objects = 0;
-
-       total_objects += dev->mode_config.num_crtc;
-       total_objects += dev->mode_config.num_connector;
-       total_objects += dev->mode_config.num_encoder;
-
-       group->id_list = kcalloc(total_objects, sizeof(uint32_t), GFP_KERNEL);
-       if (!group->id_list)
-               return -ENOMEM;
-
-       group->num_crtcs = 0;
-       group->num_connectors = 0;
-       group->num_encoders = 0;
-       return 0;
-}
-
-void drm_mode_group_destroy(struct drm_mode_group *group)
-{
-       kfree(group->id_list);
-       group->id_list = NULL;
-}
-
-/*
- * NOTE: Driver's shouldn't ever call drm_mode_group_init_legacy_group - it is
- * the drm core's responsibility to set up mode control groups.
- */
-int drm_mode_group_init_legacy_group(struct drm_device *dev,
-                                    struct drm_mode_group *group)
-{
-       struct drm_crtc *crtc;
-       struct drm_encoder *encoder;
-       struct drm_connector *connector;
-       int ret;
-
-       ret = drm_mode_group_init(dev, group);
-       if (ret)
-               return ret;
-
-       drm_for_each_crtc(crtc, dev)
-               group->id_list[group->num_crtcs++] = crtc->base.id;
-
-       drm_for_each_encoder(encoder, dev)
-               group->id_list[group->num_crtcs + group->num_encoders++] =
-               encoder->base.id;
-
-       drm_for_each_connector(connector, dev)
-               group->id_list[group->num_crtcs + group->num_encoders +
-                              group->num_connectors++] = connector->base.id;
-
-       return 0;
-}
-EXPORT_SYMBOL(drm_mode_group_init_legacy_group);
-
-void drm_reinit_primary_mode_group(struct drm_device *dev)
-{
-       drm_modeset_lock_all(dev);
-       drm_mode_group_destroy(&dev->primary->mode_group);
-       drm_mode_group_init_legacy_group(dev, &dev->primary->mode_group);
-       drm_modeset_unlock_all(dev);
-}
-EXPORT_SYMBOL(drm_reinit_primary_mode_group);
-
 /**
  * drm_mode_getresources - get graphics configuration
  * @dev: drm device for the ioctl
index b7bf4ce8c012bfb68442307b2b6f9f5658d0df48..f7798c3b543e1aead1f6bb379af8980d49f18323 100644 (file)
@@ -285,7 +285,6 @@ static void drm_minor_free(struct drm_device *dev, unsigned int type)
        if (!minor)
                return;
 
-       drm_mode_group_destroy(&minor->mode_group);
        put_device(minor->kdev);
 
        spin_lock_irqsave(&drm_minor_lock, flags);
@@ -705,20 +704,9 @@ int drm_dev_register(struct drm_device *dev, unsigned long flags)
                        goto err_minors;
        }
 
-       /* setup grouping for legacy outputs */
-       if (drm_core_check_feature(dev, DRIVER_MODESET)) {
-               ret = drm_mode_group_init_legacy_group(dev,
-                               &dev->primary->mode_group);
-               if (ret)
-                       goto err_unload;
-       }
-
        ret = 0;
        goto out_unlock;
 
-err_unload:
-       if (dev->driver->unload)
-               dev->driver->unload(dev);
 err_minors:
        drm_minor_unregister(dev, DRM_MINOR_LEGACY);
        drm_minor_unregister(dev, DRM_MINOR_RENDER);
index d0b2569c62412648c6cbddde495178da5b79fffd..585f0a45b3f1cf0cb53603c9204f9c271eb06df1 100644 (file)
@@ -441,7 +441,6 @@ static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topolo
        drm_object_attach_property(&connector->base, dev->mode_config.tile_property, 0);
 
        drm_mode_connector_set_path_property(connector, pathprop);
-       drm_reinit_primary_mode_group(dev);
        drm_modeset_lock_all(dev);
        intel_connector_add_to_fbdev(intel_connector);
        drm_modeset_unlock_all(dev);
@@ -466,8 +465,6 @@ static void intel_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr,
        drm_connector_cleanup(connector);
        drm_modeset_unlock_all(dev);
 
-       drm_reinit_primary_mode_group(dev);
-
        kfree(intel_connector);
        DRM_DEBUG_KMS("\n");
 }
index e649c8ff20a0d783e45025eed8d0ff1a72f938e9..e4fc8f3bf58b09175c0d1dc868b2ce52327c4c18 100644 (file)
@@ -284,7 +284,6 @@ static struct drm_connector *radeon_dp_add_mst_connector(struct drm_dp_mst_topol
 
        drm_object_attach_property(&connector->base, dev->mode_config.path_property, 0);
        drm_mode_connector_set_path_property(connector, pathprop);
-       drm_reinit_primary_mode_group(dev);
 
        drm_modeset_lock_all(dev);
        radeon_fb_add_connector(rdev, connector);
@@ -309,8 +308,6 @@ static void radeon_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr,
 
        drm_connector_cleanup(connector);
        drm_modeset_unlock_all(dev);
-       drm_reinit_primary_mode_group(dev);
-
 
        kfree(connector);
        DRM_DEBUG_KMS("\n");
index 48db6a56975f5ebc874d19054828b70a5f4aaa15..c89351ede92c488161421a249c69fa91219df6d6 100644 (file)
@@ -675,7 +675,6 @@ struct drm_minor {
 
        /* currently active master for this node. Protected by master_mutex */
        struct drm_master *master;
-       struct drm_mode_group mode_group;
 };
 
 
index fe3100115a41db351de9a353c8cdebdeb1d5a0f0..3071319ea19406190a566b3c1daf84a42d2003f9 100644 (file)
@@ -1017,29 +1017,6 @@ struct drm_mode_config_funcs {
        void (*atomic_state_free)(struct drm_atomic_state *state);
 };
 
-/**
- * struct drm_mode_group - group of mode setting resources for potential sub-grouping
- * @num_crtcs: CRTC count
- * @num_encoders: encoder count
- * @num_connectors: connector count
- * @num_bridges: bridge count
- * @id_list: list of KMS object IDs in this group
- *
- * Currently this simply tracks the global mode setting state.  But in the
- * future it could allow groups of objects to be set aside into independent
- * control groups for use by different user level processes (e.g. two X servers
- * running simultaneously on different heads, each with their own mode
- * configuration and freedom of mode setting).
- */
-struct drm_mode_group {
-       uint32_t num_crtcs;
-       uint32_t num_encoders;
-       uint32_t num_connectors;
-
-       /* list of object IDs for this group */
-       uint32_t *id_list;
-};
-
 /**
  * struct drm_mode_config - Mode configuration control structure
  * @mutex: mutex protecting KMS related lists and structures
@@ -1324,9 +1301,6 @@ extern const char *drm_get_tv_select_name(int val);
 extern void drm_fb_release(struct drm_file *file_priv);
 extern void drm_property_destroy_user_blobs(struct drm_device *dev,
                                             struct drm_file *file_priv);
-extern int drm_mode_group_init_legacy_group(struct drm_device *dev, struct drm_mode_group *group);
-extern void drm_mode_group_destroy(struct drm_mode_group *group);
-extern void drm_reinit_primary_mode_group(struct drm_device *dev);
 extern bool drm_probe_ddc(struct i2c_adapter *adapter);
 extern struct edid *drm_get_edid(struct drm_connector *connector,
                                 struct i2c_adapter *adapter);