[PATCH] drm/exynos: add cursor plane support
On 2015ë 09ì 04ì¼ 16:19, Daniel Vetter wrote: > On Fri, Sep 04, 2015 at 01:05:35PM +0900, Inki Dae wrote: >> Hi Gustavo, >> >> I had already a review but I didn't give any comment to you. Sorry about >> that. This patch looks good to me but one thing isn't clear. Below is my >> comment. >> >> >> On 2015ë 09ì 04ì¼ 05:14, Gustavo Padovan wrote: >>> From: Gustavo Padovan >>> >>> Set one of the planes for each crtc driver as a cursor plane enabled >>> window managers to fully work on exynos. >>> >>> Signed-off-by: Gustavo Padovan >>> --- >>> drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 9 ++--- >>> drivers/gpu/drm/exynos/exynos7_drm_decon.c| 8 ++-- >>> drivers/gpu/drm/exynos/exynos_drm_drv.h | 3 +++ >>> drivers/gpu/drm/exynos/exynos_drm_fimd.c | 8 ++-- >>> drivers/gpu/drm/exynos/exynos_drm_plane.c | 18 +++--- >>> drivers/gpu/drm/exynos/exynos_drm_plane.h | 5 ++--- >>> drivers/gpu/drm/exynos/exynos_drm_vidi.c | 9 ++--- >>> drivers/gpu/drm/exynos/exynos_mixer.c | 10 +++--- >>> 8 files changed, 31 insertions(+), 39 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c >>> b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c >>> index b3c7307..79b2b22 100644 >>> --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c >>> +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c >>> @@ -33,7 +33,6 @@ struct decon_context { >>> struct exynos_drm_plane planes[WINDOWS_NR]; >>> void __iomem*addr; >>> struct clk *clks[6]; >>> - unsigned intdefault_win; >>> unsigned long irq_flags; >>> int pipe; >>> boolsuspended; >>> @@ -493,7 +492,6 @@ static int decon_bind(struct device *dev, struct device >>> *master, void *data) >>> struct drm_device *drm_dev = data; >>> struct exynos_drm_private *priv = drm_dev->dev_private; >>> struct exynos_drm_plane *exynos_plane; >>> - enum drm_plane_type type; >>> unsigned int zpos; >>> int ret; >>> >>> @@ -501,16 +499,14 @@ static int decon_bind(struct device *dev, struct >>> device *master, void *data) >>> ctx->pipe = priv->pipe++; >>> >>> for (zpos = 0; zpos < WINDOWS_NR; zpos++) { >>> - type = (zpos == ctx->default_win) ? DRM_PLANE_TYPE_PRIMARY : >>> - DRM_PLANE_TYPE_OVERLAY; >>> ret = exynos_plane_init(drm_dev, >planes[zpos], >>> - 1 << ctx->pipe, type, decon_formats, >>> + 1 << ctx->pipe, decon_formats, >>> ARRAY_SIZE(decon_formats), zpos); >>> if (ret) >>> return ret; >>> } >>> >>> - exynos_plane = >planes[ctx->default_win]; >>> + exynos_plane = >planes[DEFAULT_WIN]; >>> ctx->crtc = exynos_drm_crtc_create(drm_dev, _plane->base, >>> ctx->pipe, EXYNOS_DISPLAY_TYPE_LCD, >>> _crtc_ops, ctx); >>> @@ -607,7 +603,6 @@ static int exynos5433_decon_probe(struct >>> platform_device *pdev) >>> if (!ctx) >>> return -ENOMEM; >>> >>> - ctx->default_win = 0; >>> ctx->suspended = true; >>> ctx->dev = dev; >>> if (of_get_child_by_name(dev->of_node, "i80-if-timings")) >>> diff --git a/drivers/gpu/drm/exynos/exynos7_drm_decon.c >>> b/drivers/gpu/drm/exynos/exynos7_drm_decon.c >>> index cbdb78e..f3826dc 100644 >>> --- a/drivers/gpu/drm/exynos/exynos7_drm_decon.c >>> +++ b/drivers/gpu/drm/exynos/exynos7_drm_decon.c >>> @@ -52,7 +52,6 @@ struct decon_context { >>> struct clk *eclk; >>> struct clk *vclk; >>> void __iomem*regs; >>> - unsigned intdefault_win; >>> unsigned long irq_flags; >>> booli80_if; >>> boolsuspended; >>> @@ -691,7 +690,6 @@ static int decon_bind(struct device *dev, struct device >>> *master, void *data) >>> struct decon_context *ctx = dev_get_drvdata(dev); >>> struct drm_device *drm_dev = data; >>> struct exynos_drm_plane *exynos_plane; >>> - enum drm_plane_type type; >>> unsigned int zpos; >>> int ret; >>> >>> @@ -702,16 +700,14 @@ static int decon_bind(struct device *dev, struct >>> device *master, void *data) >>> } >>> >>> for (zpos = 0; zpos < WINDOWS_NR; zpos++) { >>> - type = (zpos == ctx->default_win) ? DRM_PLANE_TYPE_PRIMARY : >>> - DRM_PLANE_TYPE_OVERLAY; >>> ret = exynos_plane_init(drm_dev, >planes[zpos], >>> - 1 << ctx->pipe, type, decon_formats, >>> + 1 << ctx->pipe, decon_formats, >>>
[PATCH] drm/exynos: add cursor plane support
Hi Inki, 2015-09-04 Inki Dae : > Hi Gustavo, > > I had already a review but I didn't give any comment to you. Sorry about > that. This patch looks good to me but one thing isn't clear. Below is my > comment. > > > On 2015ë 09ì 04ì¼ 05:14, Gustavo Padovan wrote: > > From: Gustavo Padovan > > > > Set one of the planes for each crtc driver as a cursor plane enabled > > window managers to fully work on exynos. > > > > Signed-off-by: Gustavo Padovan > > --- > > drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 9 ++--- > > drivers/gpu/drm/exynos/exynos7_drm_decon.c| 8 ++-- > > drivers/gpu/drm/exynos/exynos_drm_drv.h | 3 +++ > > drivers/gpu/drm/exynos/exynos_drm_fimd.c | 8 ++-- > > drivers/gpu/drm/exynos/exynos_drm_plane.c | 18 +++--- > > drivers/gpu/drm/exynos/exynos_drm_plane.h | 5 ++--- > > drivers/gpu/drm/exynos/exynos_drm_vidi.c | 9 ++--- > > drivers/gpu/drm/exynos/exynos_mixer.c | 10 +++--- > > 8 files changed, 31 insertions(+), 39 deletions(-) > > > > diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > > b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > > index b3c7307..79b2b22 100644 > > --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > > +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > > @@ -33,7 +33,6 @@ struct decon_context { > > struct exynos_drm_plane planes[WINDOWS_NR]; > > void __iomem*addr; > > struct clk *clks[6]; > > - unsigned intdefault_win; > > unsigned long irq_flags; > > int pipe; > > boolsuspended; > > @@ -493,7 +492,6 @@ static int decon_bind(struct device *dev, struct device > > *master, void *data) > > struct drm_device *drm_dev = data; > > struct exynos_drm_private *priv = drm_dev->dev_private; > > struct exynos_drm_plane *exynos_plane; > > - enum drm_plane_type type; > > unsigned int zpos; > > int ret; > > > > @@ -501,16 +499,14 @@ static int decon_bind(struct device *dev, struct > > device *master, void *data) > > ctx->pipe = priv->pipe++; > > > > for (zpos = 0; zpos < WINDOWS_NR; zpos++) { > > - type = (zpos == ctx->default_win) ? DRM_PLANE_TYPE_PRIMARY : > > - DRM_PLANE_TYPE_OVERLAY; > > ret = exynos_plane_init(drm_dev, >planes[zpos], > > - 1 << ctx->pipe, type, decon_formats, > > + 1 << ctx->pipe, decon_formats, > > ARRAY_SIZE(decon_formats), zpos); > > if (ret) > > return ret; > > } > > > > - exynos_plane = >planes[ctx->default_win]; > > + exynos_plane = >planes[DEFAULT_WIN]; > > ctx->crtc = exynos_drm_crtc_create(drm_dev, _plane->base, > > ctx->pipe, EXYNOS_DISPLAY_TYPE_LCD, > > _crtc_ops, ctx); > > @@ -607,7 +603,6 @@ static int exynos5433_decon_probe(struct > > platform_device *pdev) > > if (!ctx) > > return -ENOMEM; > > > > - ctx->default_win = 0; > > ctx->suspended = true; > > ctx->dev = dev; > > if (of_get_child_by_name(dev->of_node, "i80-if-timings")) > > diff --git a/drivers/gpu/drm/exynos/exynos7_drm_decon.c > > b/drivers/gpu/drm/exynos/exynos7_drm_decon.c > > index cbdb78e..f3826dc 100644 > > --- a/drivers/gpu/drm/exynos/exynos7_drm_decon.c > > +++ b/drivers/gpu/drm/exynos/exynos7_drm_decon.c > > @@ -52,7 +52,6 @@ struct decon_context { > > struct clk *eclk; > > struct clk *vclk; > > void __iomem*regs; > > - unsigned intdefault_win; > > unsigned long irq_flags; > > booli80_if; > > boolsuspended; > > @@ -691,7 +690,6 @@ static int decon_bind(struct device *dev, struct device > > *master, void *data) > > struct decon_context *ctx = dev_get_drvdata(dev); > > struct drm_device *drm_dev = data; > > struct exynos_drm_plane *exynos_plane; > > - enum drm_plane_type type; > > unsigned int zpos; > > int ret; > > > > @@ -702,16 +700,14 @@ static int decon_bind(struct device *dev, struct > > device *master, void *data) > > } > > > > for (zpos = 0; zpos < WINDOWS_NR; zpos++) { > > - type = (zpos == ctx->default_win) ? DRM_PLANE_TYPE_PRIMARY : > > - DRM_PLANE_TYPE_OVERLAY; > > ret = exynos_plane_init(drm_dev, >planes[zpos], > > - 1 << ctx->pipe, type, decon_formats, > > + 1 << ctx->pipe, decon_formats, > > ARRAY_SIZE(decon_formats), zpos); > > if (ret) > >
[PATCH] drm/exynos: add cursor plane support
Hi Gustavo, I had already a review but I didn't give any comment to you. Sorry about that. This patch looks good to me but one thing isn't clear. Below is my comment. On 2015ë 09ì 04ì¼ 05:14, Gustavo Padovan wrote: > From: Gustavo Padovan > > Set one of the planes for each crtc driver as a cursor plane enabled > window managers to fully work on exynos. > > Signed-off-by: Gustavo Padovan > --- > drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 9 ++--- > drivers/gpu/drm/exynos/exynos7_drm_decon.c| 8 ++-- > drivers/gpu/drm/exynos/exynos_drm_drv.h | 3 +++ > drivers/gpu/drm/exynos/exynos_drm_fimd.c | 8 ++-- > drivers/gpu/drm/exynos/exynos_drm_plane.c | 18 +++--- > drivers/gpu/drm/exynos/exynos_drm_plane.h | 5 ++--- > drivers/gpu/drm/exynos/exynos_drm_vidi.c | 9 ++--- > drivers/gpu/drm/exynos/exynos_mixer.c | 10 +++--- > 8 files changed, 31 insertions(+), 39 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > index b3c7307..79b2b22 100644 > --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > @@ -33,7 +33,6 @@ struct decon_context { > struct exynos_drm_plane planes[WINDOWS_NR]; > void __iomem*addr; > struct clk *clks[6]; > - unsigned intdefault_win; > unsigned long irq_flags; > int pipe; > boolsuspended; > @@ -493,7 +492,6 @@ static int decon_bind(struct device *dev, struct device > *master, void *data) > struct drm_device *drm_dev = data; > struct exynos_drm_private *priv = drm_dev->dev_private; > struct exynos_drm_plane *exynos_plane; > - enum drm_plane_type type; > unsigned int zpos; > int ret; > > @@ -501,16 +499,14 @@ static int decon_bind(struct device *dev, struct device > *master, void *data) > ctx->pipe = priv->pipe++; > > for (zpos = 0; zpos < WINDOWS_NR; zpos++) { > - type = (zpos == ctx->default_win) ? DRM_PLANE_TYPE_PRIMARY : > - DRM_PLANE_TYPE_OVERLAY; > ret = exynos_plane_init(drm_dev, >planes[zpos], > - 1 << ctx->pipe, type, decon_formats, > + 1 << ctx->pipe, decon_formats, > ARRAY_SIZE(decon_formats), zpos); > if (ret) > return ret; > } > > - exynos_plane = >planes[ctx->default_win]; > + exynos_plane = >planes[DEFAULT_WIN]; > ctx->crtc = exynos_drm_crtc_create(drm_dev, _plane->base, > ctx->pipe, EXYNOS_DISPLAY_TYPE_LCD, > _crtc_ops, ctx); > @@ -607,7 +603,6 @@ static int exynos5433_decon_probe(struct platform_device > *pdev) > if (!ctx) > return -ENOMEM; > > - ctx->default_win = 0; > ctx->suspended = true; > ctx->dev = dev; > if (of_get_child_by_name(dev->of_node, "i80-if-timings")) > diff --git a/drivers/gpu/drm/exynos/exynos7_drm_decon.c > b/drivers/gpu/drm/exynos/exynos7_drm_decon.c > index cbdb78e..f3826dc 100644 > --- a/drivers/gpu/drm/exynos/exynos7_drm_decon.c > +++ b/drivers/gpu/drm/exynos/exynos7_drm_decon.c > @@ -52,7 +52,6 @@ struct decon_context { > struct clk *eclk; > struct clk *vclk; > void __iomem*regs; > - unsigned intdefault_win; > unsigned long irq_flags; > booli80_if; > boolsuspended; > @@ -691,7 +690,6 @@ static int decon_bind(struct device *dev, struct device > *master, void *data) > struct decon_context *ctx = dev_get_drvdata(dev); > struct drm_device *drm_dev = data; > struct exynos_drm_plane *exynos_plane; > - enum drm_plane_type type; > unsigned int zpos; > int ret; > > @@ -702,16 +700,14 @@ static int decon_bind(struct device *dev, struct device > *master, void *data) > } > > for (zpos = 0; zpos < WINDOWS_NR; zpos++) { > - type = (zpos == ctx->default_win) ? DRM_PLANE_TYPE_PRIMARY : > - DRM_PLANE_TYPE_OVERLAY; > ret = exynos_plane_init(drm_dev, >planes[zpos], > - 1 << ctx->pipe, type, decon_formats, > + 1 << ctx->pipe, decon_formats, > ARRAY_SIZE(decon_formats), zpos); > if (ret) > return ret; > } > > - exynos_plane = >planes[ctx->default_win]; > + exynos_plane = >planes[DEFAULT_WIN]; > ctx->crtc =
[PATCH] drm/exynos: add cursor plane support
On Fri, Sep 04, 2015 at 01:05:35PM +0900, Inki Dae wrote: > Hi Gustavo, > > I had already a review but I didn't give any comment to you. Sorry about > that. This patch looks good to me but one thing isn't clear. Below is my > comment. > > > On 2015ë 09ì 04ì¼ 05:14, Gustavo Padovan wrote: > > From: Gustavo Padovan > > > > Set one of the planes for each crtc driver as a cursor plane enabled > > window managers to fully work on exynos. > > > > Signed-off-by: Gustavo Padovan > > --- > > drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 9 ++--- > > drivers/gpu/drm/exynos/exynos7_drm_decon.c| 8 ++-- > > drivers/gpu/drm/exynos/exynos_drm_drv.h | 3 +++ > > drivers/gpu/drm/exynos/exynos_drm_fimd.c | 8 ++-- > > drivers/gpu/drm/exynos/exynos_drm_plane.c | 18 +++--- > > drivers/gpu/drm/exynos/exynos_drm_plane.h | 5 ++--- > > drivers/gpu/drm/exynos/exynos_drm_vidi.c | 9 ++--- > > drivers/gpu/drm/exynos/exynos_mixer.c | 10 +++--- > > 8 files changed, 31 insertions(+), 39 deletions(-) > > > > diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > > b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > > index b3c7307..79b2b22 100644 > > --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > > +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > > @@ -33,7 +33,6 @@ struct decon_context { > > struct exynos_drm_plane planes[WINDOWS_NR]; > > void __iomem*addr; > > struct clk *clks[6]; > > - unsigned intdefault_win; > > unsigned long irq_flags; > > int pipe; > > boolsuspended; > > @@ -493,7 +492,6 @@ static int decon_bind(struct device *dev, struct device > > *master, void *data) > > struct drm_device *drm_dev = data; > > struct exynos_drm_private *priv = drm_dev->dev_private; > > struct exynos_drm_plane *exynos_plane; > > - enum drm_plane_type type; > > unsigned int zpos; > > int ret; > > > > @@ -501,16 +499,14 @@ static int decon_bind(struct device *dev, struct > > device *master, void *data) > > ctx->pipe = priv->pipe++; > > > > for (zpos = 0; zpos < WINDOWS_NR; zpos++) { > > - type = (zpos == ctx->default_win) ? DRM_PLANE_TYPE_PRIMARY : > > - DRM_PLANE_TYPE_OVERLAY; > > ret = exynos_plane_init(drm_dev, >planes[zpos], > > - 1 << ctx->pipe, type, decon_formats, > > + 1 << ctx->pipe, decon_formats, > > ARRAY_SIZE(decon_formats), zpos); > > if (ret) > > return ret; > > } > > > > - exynos_plane = >planes[ctx->default_win]; > > + exynos_plane = >planes[DEFAULT_WIN]; > > ctx->crtc = exynos_drm_crtc_create(drm_dev, _plane->base, > > ctx->pipe, EXYNOS_DISPLAY_TYPE_LCD, > > _crtc_ops, ctx); > > @@ -607,7 +603,6 @@ static int exynos5433_decon_probe(struct > > platform_device *pdev) > > if (!ctx) > > return -ENOMEM; > > > > - ctx->default_win = 0; > > ctx->suspended = true; > > ctx->dev = dev; > > if (of_get_child_by_name(dev->of_node, "i80-if-timings")) > > diff --git a/drivers/gpu/drm/exynos/exynos7_drm_decon.c > > b/drivers/gpu/drm/exynos/exynos7_drm_decon.c > > index cbdb78e..f3826dc 100644 > > --- a/drivers/gpu/drm/exynos/exynos7_drm_decon.c > > +++ b/drivers/gpu/drm/exynos/exynos7_drm_decon.c > > @@ -52,7 +52,6 @@ struct decon_context { > > struct clk *eclk; > > struct clk *vclk; > > void __iomem*regs; > > - unsigned intdefault_win; > > unsigned long irq_flags; > > booli80_if; > > boolsuspended; > > @@ -691,7 +690,6 @@ static int decon_bind(struct device *dev, struct device > > *master, void *data) > > struct decon_context *ctx = dev_get_drvdata(dev); > > struct drm_device *drm_dev = data; > > struct exynos_drm_plane *exynos_plane; > > - enum drm_plane_type type; > > unsigned int zpos; > > int ret; > > > > @@ -702,16 +700,14 @@ static int decon_bind(struct device *dev, struct > > device *master, void *data) > > } > > > > for (zpos = 0; zpos < WINDOWS_NR; zpos++) { > > - type = (zpos == ctx->default_win) ? DRM_PLANE_TYPE_PRIMARY : > > - DRM_PLANE_TYPE_OVERLAY; > > ret = exynos_plane_init(drm_dev, >planes[zpos], > > - 1 << ctx->pipe, type, decon_formats, > > + 1 << ctx->pipe, decon_formats, > > ARRAY_SIZE(decon_formats), zpos); > > if (ret) > >
[PATCH] drm/exynos: add cursor plane support
From: Gustavo PadovanSet one of the planes for each crtc driver as a cursor plane enabled window managers to fully work on exynos. Signed-off-by: Gustavo Padovan --- drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 9 ++--- drivers/gpu/drm/exynos/exynos7_drm_decon.c| 8 ++-- drivers/gpu/drm/exynos/exynos_drm_drv.h | 3 +++ drivers/gpu/drm/exynos/exynos_drm_fimd.c | 8 ++-- drivers/gpu/drm/exynos/exynos_drm_plane.c | 18 +++--- drivers/gpu/drm/exynos/exynos_drm_plane.h | 5 ++--- drivers/gpu/drm/exynos/exynos_drm_vidi.c | 9 ++--- drivers/gpu/drm/exynos/exynos_mixer.c | 10 +++--- 8 files changed, 31 insertions(+), 39 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c index b3c7307..79b2b22 100644 --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c @@ -33,7 +33,6 @@ struct decon_context { struct exynos_drm_plane planes[WINDOWS_NR]; void __iomem*addr; struct clk *clks[6]; - unsigned intdefault_win; unsigned long irq_flags; int pipe; boolsuspended; @@ -493,7 +492,6 @@ static int decon_bind(struct device *dev, struct device *master, void *data) struct drm_device *drm_dev = data; struct exynos_drm_private *priv = drm_dev->dev_private; struct exynos_drm_plane *exynos_plane; - enum drm_plane_type type; unsigned int zpos; int ret; @@ -501,16 +499,14 @@ static int decon_bind(struct device *dev, struct device *master, void *data) ctx->pipe = priv->pipe++; for (zpos = 0; zpos < WINDOWS_NR; zpos++) { - type = (zpos == ctx->default_win) ? DRM_PLANE_TYPE_PRIMARY : - DRM_PLANE_TYPE_OVERLAY; ret = exynos_plane_init(drm_dev, >planes[zpos], - 1 << ctx->pipe, type, decon_formats, + 1 << ctx->pipe, decon_formats, ARRAY_SIZE(decon_formats), zpos); if (ret) return ret; } - exynos_plane = >planes[ctx->default_win]; + exynos_plane = >planes[DEFAULT_WIN]; ctx->crtc = exynos_drm_crtc_create(drm_dev, _plane->base, ctx->pipe, EXYNOS_DISPLAY_TYPE_LCD, _crtc_ops, ctx); @@ -607,7 +603,6 @@ static int exynos5433_decon_probe(struct platform_device *pdev) if (!ctx) return -ENOMEM; - ctx->default_win = 0; ctx->suspended = true; ctx->dev = dev; if (of_get_child_by_name(dev->of_node, "i80-if-timings")) diff --git a/drivers/gpu/drm/exynos/exynos7_drm_decon.c b/drivers/gpu/drm/exynos/exynos7_drm_decon.c index cbdb78e..f3826dc 100644 --- a/drivers/gpu/drm/exynos/exynos7_drm_decon.c +++ b/drivers/gpu/drm/exynos/exynos7_drm_decon.c @@ -52,7 +52,6 @@ struct decon_context { struct clk *eclk; struct clk *vclk; void __iomem*regs; - unsigned intdefault_win; unsigned long irq_flags; booli80_if; boolsuspended; @@ -691,7 +690,6 @@ static int decon_bind(struct device *dev, struct device *master, void *data) struct decon_context *ctx = dev_get_drvdata(dev); struct drm_device *drm_dev = data; struct exynos_drm_plane *exynos_plane; - enum drm_plane_type type; unsigned int zpos; int ret; @@ -702,16 +700,14 @@ static int decon_bind(struct device *dev, struct device *master, void *data) } for (zpos = 0; zpos < WINDOWS_NR; zpos++) { - type = (zpos == ctx->default_win) ? DRM_PLANE_TYPE_PRIMARY : - DRM_PLANE_TYPE_OVERLAY; ret = exynos_plane_init(drm_dev, >planes[zpos], - 1 << ctx->pipe, type, decon_formats, + 1 << ctx->pipe, decon_formats, ARRAY_SIZE(decon_formats), zpos); if (ret) return ret; } - exynos_plane = >planes[ctx->default_win]; + exynos_plane = >planes[DEFAULT_WIN]; ctx->crtc = exynos_drm_crtc_create(drm_dev, _plane->base, ctx->pipe, EXYNOS_DISPLAY_TYPE_LCD, _crtc_ops, ctx); diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h b/drivers/gpu/drm/exynos/exynos_drm_drv.h index
[PATCH] drm/exynos: add cursor plane support
From: Gustavo PadovanSet one of the planes for each crtc driver as a cursor plane enabled window managers to fully work on exynos. Signed-off-by: Gustavo Padovan --- drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 9 ++--- drivers/gpu/drm/exynos/exynos7_drm_decon.c| 8 ++-- drivers/gpu/drm/exynos/exynos_drm_drv.h | 3 +++ drivers/gpu/drm/exynos/exynos_drm_fimd.c | 8 ++-- drivers/gpu/drm/exynos/exynos_drm_plane.c | 16 ++-- drivers/gpu/drm/exynos/exynos_drm_plane.h | 3 +-- drivers/gpu/drm/exynos/exynos_drm_vidi.c | 9 ++--- drivers/gpu/drm/exynos/exynos_mixer.c | 10 +++--- 8 files changed, 29 insertions(+), 37 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c index 8d65e45..fdc04d0 100644 --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c @@ -33,7 +33,6 @@ struct decon_context { struct exynos_drm_plane planes[WINDOWS_NR]; void __iomem*addr; struct clk *clks[6]; - unsigned intdefault_win; unsigned long irq_flags; int pipe; boolsuspended; @@ -466,7 +465,6 @@ static int decon_bind(struct device *dev, struct device *master, void *data) struct drm_device *drm_dev = data; struct exynos_drm_private *priv = drm_dev->dev_private; struct exynos_drm_plane *exynos_plane; - enum drm_plane_type type; unsigned int zpos; int ret; @@ -474,15 +472,13 @@ static int decon_bind(struct device *dev, struct device *master, void *data) ctx->pipe = priv->pipe++; for (zpos = 0; zpos < WINDOWS_NR; zpos++) { - type = (zpos == ctx->default_win) ? DRM_PLANE_TYPE_PRIMARY : - DRM_PLANE_TYPE_OVERLAY; ret = exynos_plane_init(drm_dev, >planes[zpos], - 1 << ctx->pipe, type, zpos); + 1 << ctx->pipe, zpos); if (ret) return ret; } - exynos_plane = >planes[ctx->default_win]; + exynos_plane = >planes[DEFAULT_WIN]; ctx->crtc = exynos_drm_crtc_create(drm_dev, _plane->base, ctx->pipe, EXYNOS_DISPLAY_TYPE_LCD, _crtc_ops, ctx); @@ -579,7 +575,6 @@ static int exynos5433_decon_probe(struct platform_device *pdev) if (!ctx) return -ENOMEM; - ctx->default_win = 0; ctx->suspended = true; ctx->dev = dev; if (of_get_child_by_name(dev->of_node, "i80-if-timings")) diff --git a/drivers/gpu/drm/exynos/exynos7_drm_decon.c b/drivers/gpu/drm/exynos/exynos7_drm_decon.c index 7651499..569a666 100644 --- a/drivers/gpu/drm/exynos/exynos7_drm_decon.c +++ b/drivers/gpu/drm/exynos/exynos7_drm_decon.c @@ -52,7 +52,6 @@ struct decon_context { struct clk *eclk; struct clk *vclk; void __iomem*regs; - unsigned intdefault_win; unsigned long irq_flags; booli80_if; boolsuspended; @@ -661,7 +660,6 @@ static int decon_bind(struct device *dev, struct device *master, void *data) struct decon_context *ctx = dev_get_drvdata(dev); struct drm_device *drm_dev = data; struct exynos_drm_plane *exynos_plane; - enum drm_plane_type type; unsigned int zpos; int ret; @@ -672,15 +670,13 @@ static int decon_bind(struct device *dev, struct device *master, void *data) } for (zpos = 0; zpos < WINDOWS_NR; zpos++) { - type = (zpos == ctx->default_win) ? DRM_PLANE_TYPE_PRIMARY : - DRM_PLANE_TYPE_OVERLAY; ret = exynos_plane_init(drm_dev, >planes[zpos], - 1 << ctx->pipe, type, zpos); + 1 << ctx->pipe, zpos); if (ret) return ret; } - exynos_plane = >planes[ctx->default_win]; + exynos_plane = >planes[DEFAULT_WIN]; ctx->crtc = exynos_drm_crtc_create(drm_dev, _plane->base, ctx->pipe, EXYNOS_DISPLAY_TYPE_LCD, _crtc_ops, ctx); diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h b/drivers/gpu/drm/exynos/exynos_drm_drv.h index 5d052235..1631024 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h @@ -22,6 +22,9 @@ #define MAX_PLANE 5 #define