drm_mode_group structure (meant for subgrouping) of display resources didn't include planes, which made it impossible to do any subgrouping of planes. This patch rectifies the problem. Signed-off-by: Ilija Hadzic <ihadzic@xxxxxxxxxxxxxxxxxxxxxx> --- drivers/gpu/drm/drm_crtc.c | 8 ++++++++ include/drm/drm_crtc.h | 2 ++ 2 files changed, 10 insertions(+), 0 deletions(-) diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index d2e5560..29ede0a 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -940,6 +940,7 @@ int drm_mode_group_init(struct drm_device *dev, struct drm_mode_group *group) total_objects += dev->mode_config.num_crtc; total_objects += dev->mode_config.num_connector; total_objects += dev->mode_config.num_encoder; + total_objects += dev->mode_config.num_plane; group->id_list = kzalloc(total_objects * sizeof(uint32_t), GFP_KERNEL); if (!group->id_list) @@ -948,6 +949,7 @@ int drm_mode_group_init(struct drm_device *dev, struct drm_mode_group *group) group->num_crtcs = 0; group->num_connectors = 0; group->num_encoders = 0; + group->num_planes = 0; return 0; } @@ -957,6 +959,7 @@ int drm_mode_group_init_legacy_group(struct drm_device *dev, struct drm_crtc *crtc; struct drm_encoder *encoder; struct drm_connector *connector; + struct drm_plane *plane; int ret; if ((ret = drm_mode_group_init(dev, group))) @@ -973,6 +976,11 @@ int drm_mode_group_init_legacy_group(struct drm_device *dev, group->id_list[group->num_crtcs + group->num_encoders + group->num_connectors++] = connector->base.id; + list_for_each_entry(plane, &dev->mode_config.plane_list, head) + group->id_list[group->num_crtcs + group->num_encoders + + group->num_connectors + group->num_planes++] = + plane->base.id; + return 0; } diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index 9595c2c..4aa793e 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h @@ -696,6 +696,7 @@ struct drm_mode_config_funcs { * @num_crtcs: CRTC count * @num_encoders: encoder count * @num_connectors: connector count + * @num_planes: connector count * @id_list: list of KMS object IDs in this group * * Currently this simply tracks the global mode setting state. But in the @@ -708,6 +709,7 @@ struct drm_mode_group { uint32_t num_crtcs; uint32_t num_encoders; uint32_t num_connectors; + uint32_t num_planes; /* list of object IDs for this group */ uint32_t *id_list; -- 1.7.8.5 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel