[PATCH 1/4] drm/omapdrm: omap_modeset_init: Separate crtc id and plane id indexing
Jyri Sarha
jsarha at ti.com
Fri May 20 06:35:53 UTC 2016
Separate crtc id and plane id indexing in omap_modeset_init(). The
coupling of crtc- and plane-id is hard to follow.
Signed-off-by: Jyri Sarha <jsarha at ti.com>
---
drivers/gpu/drm/omapdrm/omap_drv.c | 31 +++++++++++++++++--------------
1 file changed, 17 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index fe79498..8d0fe45 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -264,24 +264,24 @@ cleanup:
return r;
}
-static int omap_modeset_create_crtc(struct drm_device *dev, int id,
- enum omap_channel channel)
+static int omap_modeset_create_crtc(struct drm_device *dev, int crtc_id,
+ int plane_id, enum omap_channel channel)
{
struct omap_drm_private *priv = dev->dev_private;
struct drm_plane *plane;
struct drm_crtc *crtc;
- plane = omap_plane_init(dev, id, DRM_PLANE_TYPE_PRIMARY);
+ plane = omap_plane_init(dev, plane_id, DRM_PLANE_TYPE_PRIMARY);
if (IS_ERR(plane))
return PTR_ERR(plane);
- crtc = omap_crtc_init(dev, plane, channel, id);
+ crtc = omap_crtc_init(dev, plane, channel, crtc_id);
BUG_ON(priv->num_crtcs >= ARRAY_SIZE(priv->crtcs));
- priv->crtcs[id] = crtc;
+ priv->crtcs[crtc_id] = crtc;
priv->num_crtcs++;
- priv->planes[id] = plane;
+ priv->planes[plane_id] = plane;
priv->num_planes++;
return 0;
@@ -315,7 +315,7 @@ static int omap_modeset_init(struct drm_device *dev)
int num_ovls = dss_feat_get_num_ovls();
int num_mgrs = dss_feat_get_num_mgrs();
int num_crtcs;
- int i, id = 0;
+ int i, crtc_id = 0, plane_id = 0;
int ret;
drm_mode_config_init(dev);
@@ -377,7 +377,7 @@ static int omap_modeset_init(struct drm_device *dev)
* the possible_crtcs field for all the encoders with the final
* set of crtcs we create
*/
- if (id == num_crtcs)
+ if (crtc_id == num_crtcs)
continue;
/*
@@ -396,7 +396,8 @@ static int omap_modeset_init(struct drm_device *dev)
* allocated crtc, we create a new crtc for it
*/
if (!channel_used(dev, channel)) {
- ret = omap_modeset_create_crtc(dev, id, channel);
+ ret = omap_modeset_create_crtc(dev, crtc_id, plane_id,
+ channel);
if (ret < 0) {
dev_err(dev->dev,
"could not create CRTC (channel %u)\n",
@@ -404,7 +405,7 @@ static int omap_modeset_init(struct drm_device *dev)
return ret;
}
- id++;
+ crtc_id++; plane_id++;
}
}
@@ -412,7 +413,7 @@ static int omap_modeset_init(struct drm_device *dev)
* we have allocated crtcs according to the need of the panels/encoders,
* adding more crtcs here if needed
*/
- for (; id < num_crtcs; id++) {
+ for (; crtc_id < num_crtcs; crtc_id++) {
/* find a free manager for this crtc */
for (i = 0; i < num_mgrs; i++) {
@@ -426,21 +427,22 @@ static int omap_modeset_init(struct drm_device *dev)
return -ENOMEM;
}
- ret = omap_modeset_create_crtc(dev, id, i);
+ ret = omap_modeset_create_crtc(dev, crtc_id, plane_id, i);
if (ret < 0) {
dev_err(dev->dev,
"could not create CRTC (channel %u)\n", i);
return ret;
}
+ plane_id++;
}
/*
* Create normal planes for the remaining overlays:
*/
- for (; id < num_ovls; id++) {
+ for (; plane_id < num_ovls; plane_id++) {
struct drm_plane *plane;
- plane = omap_plane_init(dev, id, DRM_PLANE_TYPE_OVERLAY);
+ plane = omap_plane_init(dev, plane_id, DRM_PLANE_TYPE_OVERLAY);
if (IS_ERR(plane))
return PTR_ERR(plane);
@@ -453,6 +455,7 @@ static int omap_modeset_init(struct drm_device *dev)
struct omap_dss_device *dssdev =
omap_encoder_get_dssdev(encoder);
struct omap_dss_device *output;
+ int id;
output = omapdss_find_output_from_display(dssdev);
--
1.9.1
More information about the dri-devel
mailing list