diff options
author | Gustavo Padovan <gustavo.padovan@collabora.co.uk> | 2015-04-03 15:05:52 +0300 |
---|---|---|
committer | Inki Dae <inki.dae@samsung.com> | 2015-04-13 05:39:39 +0300 |
commit | 6e2a3b66e78b693065ee67af91175a1a7e4dc209 (patch) | |
tree | 1d76d7b08ad8d60c908a0136e8af3ba2c74df76e /drivers/gpu/drm/exynos/exynos_drm_vidi.c | |
parent | 7ee14cdcbc4f813b9c5875d6e8e3daef71c366b3 (diff) | |
download | linux-6e2a3b66e78b693065ee67af91175a1a7e4dc209.tar.xz |
drm/exynos: preset zpos value for overlay planes
Usually userspace don't want to have two overlay planes on the same zpos
so this change assign a different zpos for each plane. Before this change
a zpos of value zero was created for all planes so the userspace had to
set up the zpos of every plane it wanted to use.
Also all places that were storing zpos positions are now unsigned int.
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_vidi.c')
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_vidi.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_vidi.c b/drivers/gpu/drm/exynos/exynos_drm_vidi.c index da5ee15f6136..27e84ec21694 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_vidi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_vidi.c @@ -117,18 +117,14 @@ static void vidi_disable_vblank(struct exynos_drm_crtc *crtc) ctx->vblank_on = false; } -static void vidi_win_commit(struct exynos_drm_crtc *crtc, int zpos) +static void vidi_win_commit(struct exynos_drm_crtc *crtc, unsigned int win) { struct vidi_context *ctx = crtc->ctx; struct exynos_drm_plane *plane; - int win = zpos; if (ctx->suspended) return; - if (win == DEFAULT_ZPOS) - win = ctx->default_win; - if (win < 0 || win >= WINDOWS_NR) return; @@ -142,14 +138,10 @@ static void vidi_win_commit(struct exynos_drm_crtc *crtc, int zpos) schedule_work(&ctx->work); } -static void vidi_win_disable(struct exynos_drm_crtc *crtc, int zpos) +static void vidi_win_disable(struct exynos_drm_crtc *crtc, unsigned int win) { struct vidi_context *ctx = crtc->ctx; struct exynos_drm_plane *plane; - int win = zpos; - - if (win == DEFAULT_ZPOS) - win = ctx->default_win; if (win < 0 || win >= WINDOWS_NR) return; @@ -472,7 +464,8 @@ static int vidi_bind(struct device *dev, struct device *master, void *data) struct drm_device *drm_dev = data; struct exynos_drm_plane *exynos_plane; enum drm_plane_type type; - int zpos, ret; + unsigned int zpos; + int ret; vidi_ctx_initialize(ctx, drm_dev); @@ -480,7 +473,7 @@ static int vidi_bind(struct device *dev, struct device *master, void *data) type = (zpos == ctx->default_win) ? DRM_PLANE_TYPE_PRIMARY : DRM_PLANE_TYPE_OVERLAY; ret = exynos_plane_init(drm_dev, &ctx->planes[zpos], - 1 << ctx->pipe, type); + 1 << ctx->pipe, type, zpos); if (ret) return ret; } |