aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/exynos/exynos_drm_encoder.c
diff options
context:
space:
mode:
authorJoonyoung Shim <jy0922.shim@samsung.com>2012-06-27 01:27:05 -0400
committerInki Dae <inki.dae@samsung.com>2012-07-26 22:13:53 -0400
commit4070d212eb54ec9f204646d95c17d95ad812a008 (patch)
tree26a65fbb910803715e0c984400c9fb8e2d43964d /drivers/gpu/drm/exynos/exynos_drm_encoder.c
parentb5d2eb3bd691c0b6869a2013e719a61c595d73a6 (diff)
drm/exynos: update overlay via plane from crtc
There is no any reason to update overlay at crtc directly because the crtc uses plane. Move its code to plane and call proper functions of plane from crtc. Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_encoder.c')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_encoder.c66
1 files changed, 30 insertions, 36 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_encoder.c b/drivers/gpu/drm/exynos/exynos_drm_encoder.c
index 33f3c41869d7..c25bd4812594 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_encoder.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_encoder.c
@@ -323,30 +323,6 @@ void exynos_drm_disable_vblank(struct drm_encoder *encoder, void *data)
323 manager_ops->disable_vblank(manager->dev); 323 manager_ops->disable_vblank(manager->dev);
324} 324}
325 325
326void exynos_drm_encoder_crtc_plane_commit(struct drm_encoder *encoder,
327 void *data)
328{
329 struct exynos_drm_manager *manager =
330 to_exynos_encoder(encoder)->manager;
331 struct exynos_drm_overlay_ops *overlay_ops = manager->overlay_ops;
332 int zpos = DEFAULT_ZPOS;
333
334 if (data)
335 zpos = *(int *)data;
336
337 if (overlay_ops && overlay_ops->commit)
338 overlay_ops->commit(manager->dev, zpos);
339}
340
341void exynos_drm_encoder_crtc_commit(struct drm_encoder *encoder, void *data)
342{
343 int zpos = DEFAULT_ZPOS;
344
345 DRM_DEBUG_KMS("%s\n", __FILE__);
346
347 exynos_drm_encoder_crtc_plane_commit(encoder, &zpos);
348}
349
350void exynos_drm_encoder_dpms_from_crtc(struct drm_encoder *encoder, void *data) 326void exynos_drm_encoder_dpms_from_crtc(struct drm_encoder *encoder, void *data)
351{ 327{
352 struct exynos_drm_encoder *exynos_encoder = to_exynos_encoder(encoder); 328 struct exynos_drm_encoder *exynos_encoder = to_exynos_encoder(encoder);
@@ -393,44 +369,62 @@ void exynos_drm_encoder_crtc_dpms(struct drm_encoder *encoder, void *data)
393 } 369 }
394} 370}
395 371
396void exynos_drm_encoder_crtc_mode_set(struct drm_encoder *encoder, void *data) 372void exynos_drm_encoder_crtc_pipe(struct drm_encoder *encoder, void *data)
373{
374 struct exynos_drm_manager *manager =
375 to_exynos_encoder(encoder)->manager;
376 int pipe = *(int *)data;
377
378 DRM_DEBUG_KMS("%s\n", __FILE__);
379
380 /*
381 * when crtc is detached from encoder, this pipe is used
382 * to select manager operation
383 */
384 manager->pipe = pipe;
385}
386
387void exynos_drm_encoder_plane_mode_set(struct drm_encoder *encoder, void *data)
397{ 388{
398 struct exynos_drm_manager *manager = 389 struct exynos_drm_manager *manager =
399 to_exynos_encoder(encoder)->manager; 390 to_exynos_encoder(encoder)->manager;
400 struct exynos_drm_overlay_ops *overlay_ops = manager->overlay_ops; 391 struct exynos_drm_overlay_ops *overlay_ops = manager->overlay_ops;
401 struct exynos_drm_overlay *overlay = data; 392 struct exynos_drm_overlay *overlay = data;
402 393
394 DRM_DEBUG_KMS("%s\n", __FILE__);
395
403 if (overlay_ops && overlay_ops->mode_set) 396 if (overlay_ops && overlay_ops->mode_set)
404 overlay_ops->mode_set(manager->dev, overlay); 397 overlay_ops->mode_set(manager->dev, overlay);
405} 398}
406 399
407void exynos_drm_encoder_crtc_disable(struct drm_encoder *encoder, void *data) 400void exynos_drm_encoder_plane_commit(struct drm_encoder *encoder, void *data)
408{ 401{
409 struct exynos_drm_manager *manager = 402 struct exynos_drm_manager *manager =
410 to_exynos_encoder(encoder)->manager; 403 to_exynos_encoder(encoder)->manager;
411 struct exynos_drm_overlay_ops *overlay_ops = manager->overlay_ops; 404 struct exynos_drm_overlay_ops *overlay_ops = manager->overlay_ops;
412 int zpos = DEFAULT_ZPOS; 405 int zpos = DEFAULT_ZPOS;
413 406
414 DRM_DEBUG_KMS("\n"); 407 DRM_DEBUG_KMS("%s\n", __FILE__);
415 408
416 if (data) 409 if (data)
417 zpos = *(int *)data; 410 zpos = *(int *)data;
418 411
419 if (overlay_ops && overlay_ops->disable) 412 if (overlay_ops && overlay_ops->commit)
420 overlay_ops->disable(manager->dev, zpos); 413 overlay_ops->commit(manager->dev, zpos);
421} 414}
422 415
423void exynos_drm_encoder_crtc_pipe(struct drm_encoder *encoder, void *data) 416void exynos_drm_encoder_plane_disable(struct drm_encoder *encoder, void *data)
424{ 417{
425 struct exynos_drm_manager *manager = 418 struct exynos_drm_manager *manager =
426 to_exynos_encoder(encoder)->manager; 419 to_exynos_encoder(encoder)->manager;
427 int pipe = *(int *)data; 420 struct exynos_drm_overlay_ops *overlay_ops = manager->overlay_ops;
421 int zpos = DEFAULT_ZPOS;
428 422
429 DRM_DEBUG_KMS("%s\n", __FILE__); 423 DRM_DEBUG_KMS("%s\n", __FILE__);
430 424
431 /* 425 if (data)
432 * when crtc is detached from encoder, this pipe is used 426 zpos = *(int *)data;
433 * to select manager operation 427
434 */ 428 if (overlay_ops && overlay_ops->disable)
435 manager->pipe = pipe; 429 overlay_ops->disable(manager->dev, zpos);
436} 430}