|
@@ -692,7 +692,7 @@ int drm_crtc_init_with_planes(struct drm_device *dev, struct drm_crtc *crtc,
|
|
|
crtc->base.properties = &crtc->properties;
|
|
|
|
|
|
list_add_tail(&crtc->head, &config->crtc_list);
|
|
|
- config->num_crtc++;
|
|
|
+ crtc->index = config->num_crtc++;
|
|
|
|
|
|
crtc->primary = primary;
|
|
|
crtc->cursor = cursor;
|
|
@@ -722,6 +722,11 @@ void drm_crtc_cleanup(struct drm_crtc *crtc)
|
|
|
{
|
|
|
struct drm_device *dev = crtc->dev;
|
|
|
|
|
|
+ /* Note that the crtc_list is considered to be static; should we
|
|
|
+ * remove the drm_crtc at runtime we would have to decrement all
|
|
|
+ * the indices on the drm_crtc after us in the crtc_list.
|
|
|
+ */
|
|
|
+
|
|
|
kfree(crtc->gamma_store);
|
|
|
crtc->gamma_store = NULL;
|
|
|
|
|
@@ -741,29 +746,6 @@ void drm_crtc_cleanup(struct drm_crtc *crtc)
|
|
|
}
|
|
|
EXPORT_SYMBOL(drm_crtc_cleanup);
|
|
|
|
|
|
-/**
|
|
|
- * drm_crtc_index - find the index of a registered CRTC
|
|
|
- * @crtc: CRTC to find index for
|
|
|
- *
|
|
|
- * Given a registered CRTC, return the index of that CRTC within a DRM
|
|
|
- * device's list of CRTCs.
|
|
|
- */
|
|
|
-unsigned int drm_crtc_index(struct drm_crtc *crtc)
|
|
|
-{
|
|
|
- unsigned int index = 0;
|
|
|
- struct drm_crtc *tmp;
|
|
|
-
|
|
|
- drm_for_each_crtc(tmp, crtc->dev) {
|
|
|
- if (tmp == crtc)
|
|
|
- return index;
|
|
|
-
|
|
|
- index++;
|
|
|
- }
|
|
|
-
|
|
|
- BUG();
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(drm_crtc_index);
|
|
|
-
|
|
|
/*
|
|
|
* drm_mode_remove - remove and free a mode
|
|
|
* @connector: connector list to modify
|
|
@@ -1166,7 +1148,7 @@ int drm_encoder_init(struct drm_device *dev,
|
|
|
}
|
|
|
|
|
|
list_add_tail(&encoder->head, &dev->mode_config.encoder_list);
|
|
|
- dev->mode_config.num_encoder++;
|
|
|
+ encoder->index = dev->mode_config.num_encoder++;
|
|
|
|
|
|
out_put:
|
|
|
if (ret)
|
|
@@ -1179,29 +1161,6 @@ out_unlock:
|
|
|
}
|
|
|
EXPORT_SYMBOL(drm_encoder_init);
|
|
|
|
|
|
-/**
|
|
|
- * drm_encoder_index - find the index of a registered encoder
|
|
|
- * @encoder: encoder to find index for
|
|
|
- *
|
|
|
- * Given a registered encoder, return the index of that encoder within a DRM
|
|
|
- * device's list of encoders.
|
|
|
- */
|
|
|
-unsigned int drm_encoder_index(struct drm_encoder *encoder)
|
|
|
-{
|
|
|
- unsigned int index = 0;
|
|
|
- struct drm_encoder *tmp;
|
|
|
-
|
|
|
- drm_for_each_encoder(tmp, encoder->dev) {
|
|
|
- if (tmp == encoder)
|
|
|
- return index;
|
|
|
-
|
|
|
- index++;
|
|
|
- }
|
|
|
-
|
|
|
- BUG();
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(drm_encoder_index);
|
|
|
-
|
|
|
/**
|
|
|
* drm_encoder_cleanup - cleans up an initialised encoder
|
|
|
* @encoder: encoder to cleanup
|
|
@@ -1212,6 +1171,11 @@ void drm_encoder_cleanup(struct drm_encoder *encoder)
|
|
|
{
|
|
|
struct drm_device *dev = encoder->dev;
|
|
|
|
|
|
+ /* Note that the encoder_list is considered to be static; should we
|
|
|
+ * remove the drm_encoder at runtime we would have to decrement all
|
|
|
+ * the indices on the drm_encoder after us in the encoder_list.
|
|
|
+ */
|
|
|
+
|
|
|
drm_modeset_lock_all(dev);
|
|
|
drm_mode_object_unregister(dev, &encoder->base);
|
|
|
kfree(encoder->name);
|
|
@@ -1300,7 +1264,7 @@ int drm_universal_plane_init(struct drm_device *dev, struct drm_plane *plane,
|
|
|
plane->type = type;
|
|
|
|
|
|
list_add_tail(&plane->head, &config->plane_list);
|
|
|
- config->num_total_plane++;
|
|
|
+ plane->index = config->num_total_plane++;
|
|
|
if (plane->type == DRM_PLANE_TYPE_OVERLAY)
|
|
|
config->num_overlay_plane++;
|
|
|
|
|
@@ -1374,6 +1338,11 @@ void drm_plane_cleanup(struct drm_plane *plane)
|
|
|
|
|
|
BUG_ON(list_empty(&plane->head));
|
|
|
|
|
|
+ /* Note that the plane_list is considered to be static; should we
|
|
|
+ * remove the drm_plane at runtime we would have to decrement all
|
|
|
+ * the indices on the drm_plane after us in the plane_list.
|
|
|
+ */
|
|
|
+
|
|
|
list_del(&plane->head);
|
|
|
dev->mode_config.num_total_plane--;
|
|
|
if (plane->type == DRM_PLANE_TYPE_OVERLAY)
|
|
@@ -1390,29 +1359,6 @@ void drm_plane_cleanup(struct drm_plane *plane)
|
|
|
}
|
|
|
EXPORT_SYMBOL(drm_plane_cleanup);
|
|
|
|
|
|
-/**
|
|
|
- * drm_plane_index - find the index of a registered plane
|
|
|
- * @plane: plane to find index for
|
|
|
- *
|
|
|
- * Given a registered plane, return the index of that CRTC within a DRM
|
|
|
- * device's list of planes.
|
|
|
- */
|
|
|
-unsigned int drm_plane_index(struct drm_plane *plane)
|
|
|
-{
|
|
|
- unsigned int index = 0;
|
|
|
- struct drm_plane *tmp;
|
|
|
-
|
|
|
- drm_for_each_plane(tmp, plane->dev) {
|
|
|
- if (tmp == plane)
|
|
|
- return index;
|
|
|
-
|
|
|
- index++;
|
|
|
- }
|
|
|
-
|
|
|
- BUG();
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(drm_plane_index);
|
|
|
-
|
|
|
/**
|
|
|
* drm_plane_from_index - find the registered plane at an index
|
|
|
* @dev: DRM device
|
|
@@ -1425,13 +1371,11 @@ struct drm_plane *
|
|
|
drm_plane_from_index(struct drm_device *dev, int idx)
|
|
|
{
|
|
|
struct drm_plane *plane;
|
|
|
- unsigned int i = 0;
|
|
|
|
|
|
- drm_for_each_plane(plane, dev) {
|
|
|
- if (i == idx)
|
|
|
+ drm_for_each_plane(plane, dev)
|
|
|
+ if (idx == plane->index)
|
|
|
return plane;
|
|
|
- i++;
|
|
|
- }
|
|
|
+
|
|
|
return NULL;
|
|
|
}
|
|
|
EXPORT_SYMBOL(drm_plane_from_index);
|