diff options
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_plane.c')
| -rw-r--r-- | drivers/gpu/drm/omapdrm/omap_plane.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_plane.c b/drivers/gpu/drm/omapdrm/omap_plane.c index 7abb49b7d606..9168154d749e 100644 --- a/drivers/gpu/drm/omapdrm/omap_plane.c +++ b/drivers/gpu/drm/omapdrm/omap_plane.c | |||
| @@ -324,24 +324,37 @@ static const struct drm_plane_funcs omap_plane_funcs = { | |||
| 324 | .atomic_get_property = omap_plane_atomic_get_property, | 324 | .atomic_get_property = omap_plane_atomic_get_property, |
| 325 | }; | 325 | }; |
| 326 | 326 | ||
| 327 | static const char *plane_names[] = { | 327 | static const char *plane_id_to_name[] = { |
| 328 | [OMAP_DSS_GFX] = "gfx", | 328 | [OMAP_DSS_GFX] = "gfx", |
| 329 | [OMAP_DSS_VIDEO1] = "vid1", | 329 | [OMAP_DSS_VIDEO1] = "vid1", |
| 330 | [OMAP_DSS_VIDEO2] = "vid2", | 330 | [OMAP_DSS_VIDEO2] = "vid2", |
| 331 | [OMAP_DSS_VIDEO3] = "vid3", | 331 | [OMAP_DSS_VIDEO3] = "vid3", |
| 332 | }; | 332 | }; |
| 333 | 333 | ||
| 334 | static const enum omap_plane_id plane_idx_to_id[] = { | ||
| 335 | OMAP_DSS_GFX, | ||
| 336 | OMAP_DSS_VIDEO1, | ||
| 337 | OMAP_DSS_VIDEO2, | ||
| 338 | OMAP_DSS_VIDEO3, | ||
| 339 | }; | ||
| 340 | |||
| 334 | /* initialize plane */ | 341 | /* initialize plane */ |
| 335 | struct drm_plane *omap_plane_init(struct drm_device *dev, | 342 | struct drm_plane *omap_plane_init(struct drm_device *dev, |
| 336 | int id, enum drm_plane_type type, | 343 | int idx, enum drm_plane_type type, |
| 337 | u32 possible_crtcs) | 344 | u32 possible_crtcs) |
| 338 | { | 345 | { |
| 339 | struct omap_drm_private *priv = dev->dev_private; | 346 | struct omap_drm_private *priv = dev->dev_private; |
| 340 | struct drm_plane *plane; | 347 | struct drm_plane *plane; |
| 341 | struct omap_plane *omap_plane; | 348 | struct omap_plane *omap_plane; |
| 349 | enum omap_plane_id id; | ||
| 342 | int ret; | 350 | int ret; |
| 343 | 351 | ||
| 344 | DBG("%s: type=%d", plane_names[id], type); | 352 | if (WARN_ON(idx >= ARRAY_SIZE(plane_idx_to_id))) |
| 353 | return ERR_PTR(-EINVAL); | ||
| 354 | |||
| 355 | id = plane_idx_to_id[idx]; | ||
| 356 | |||
| 357 | DBG("%s: type=%d", plane_id_to_name[id], type); | ||
| 345 | 358 | ||
| 346 | omap_plane = kzalloc(sizeof(*omap_plane), GFP_KERNEL); | 359 | omap_plane = kzalloc(sizeof(*omap_plane), GFP_KERNEL); |
| 347 | if (!omap_plane) | 360 | if (!omap_plane) |
| @@ -351,7 +364,7 @@ struct drm_plane *omap_plane_init(struct drm_device *dev, | |||
| 351 | omap_plane->formats, ARRAY_SIZE(omap_plane->formats), | 364 | omap_plane->formats, ARRAY_SIZE(omap_plane->formats), |
| 352 | priv->dispc_ops->ovl_get_color_modes(id)); | 365 | priv->dispc_ops->ovl_get_color_modes(id)); |
| 353 | omap_plane->id = id; | 366 | omap_plane->id = id; |
| 354 | omap_plane->name = plane_names[id]; | 367 | omap_plane->name = plane_id_to_name[id]; |
| 355 | 368 | ||
| 356 | plane = &omap_plane->base; | 369 | plane = &omap_plane->base; |
| 357 | 370 | ||
| @@ -368,6 +381,9 @@ struct drm_plane *omap_plane_init(struct drm_device *dev, | |||
| 368 | return plane; | 381 | return plane; |
| 369 | 382 | ||
| 370 | error: | 383 | error: |
| 384 | dev_err(dev->dev, "%s(): could not create plane: %s\n", | ||
| 385 | __func__, plane_id_to_name[id]); | ||
| 386 | |||
| 371 | kfree(omap_plane); | 387 | kfree(omap_plane); |
| 372 | return NULL; | 388 | return NULL; |
| 373 | } | 389 | } |
