Hi, On Mon, Nov 27, 2017 at 09:57:41PM +0100, Jernej Skrabec wrote: > This commit adds basic support for VI planes. They are meant for video > overlay and because of that they support YUV formats too. However, using > YUV planes is not straightforward, so only RGB support for now. > > Signed-off-by: Jernej Skrabec <jernej.skra...@siol.net> > --- > drivers/gpu/drm/sun4i/sun8i_layer.c | 40 +++++++--- > drivers/gpu/drm/sun4i/sun8i_mixer.c | 144 > +++++++++++++++++++++++++++++++++--- > drivers/gpu/drm/sun4i/sun8i_mixer.h | 38 ++++++++-- > 3 files changed, 196 insertions(+), 26 deletions(-) > > diff --git a/drivers/gpu/drm/sun4i/sun8i_layer.c > b/drivers/gpu/drm/sun4i/sun8i_layer.c > index 49ccdd0149bd..e1b6ad82145e 100644 > --- a/drivers/gpu/drm/sun4i/sun8i_layer.c > +++ b/drivers/gpu/drm/sun4i/sun8i_layer.c > @@ -47,13 +47,22 @@ static int sun8i_mixer_layer_atomic_check(struct > drm_plane *plane, > true, true); > } > > +static void sun8i_mixer_layer_enable(struct sun8i_layer *layer, bool enable) > +{ > + struct sun8i_mixer *mixer = layer->mixer; > + > + if (layer->id < mixer->cfg->vi_num) > + sun8i_mixer_vi_layer_enable(mixer, layer->id, enable); > + else > + sun8i_mixer_ui_layer_enable(mixer, layer->id, enable); > +} > + > static void sun8i_mixer_layer_atomic_disable(struct drm_plane *plane, > struct drm_plane_state > *old_state) > { > struct sun8i_layer *layer = plane_to_sun8i_layer(plane); > - struct sun8i_mixer *mixer = layer->mixer; > > - sun8i_mixer_layer_enable(mixer, layer->id, false); > + sun8i_mixer_layer_enable(layer, false); > } > > static void sun8i_mixer_layer_atomic_update(struct drm_plane *plane, > @@ -63,14 +72,21 @@ static void sun8i_mixer_layer_atomic_update(struct > drm_plane *plane, > struct sun8i_mixer *mixer = layer->mixer; > > if (!plane->state->visible) { > - sun8i_mixer_layer_enable(mixer, layer->id, false); > + sun8i_mixer_layer_enable(layer, false); > return; > } > > - sun8i_mixer_update_layer_coord(mixer, layer->id, plane); > - sun8i_mixer_update_layer_formats(mixer, layer->id, plane); > - sun8i_mixer_update_layer_buffer(mixer, layer->id, plane); > - sun8i_mixer_layer_enable(mixer, layer->id, true); > + if (layer->id < mixer->cfg->vi_num) { > + sun8i_mixer_update_vi_layer_coord(mixer, layer->id, plane); > + sun8i_mixer_update_vi_layer_formats(mixer, layer->id, plane); > + sun8i_mixer_update_vi_layer_buffer(mixer, layer->id, plane); > + } else { > + sun8i_mixer_update_ui_layer_coord(mixer, layer->id, plane); > + sun8i_mixer_update_ui_layer_formats(mixer, layer->id, plane); > + sun8i_mixer_update_ui_layer_buffer(mixer, layer->id, plane); > + } > + > + sun8i_mixer_layer_enable(layer, true);
So you can probably tell by the patches I had in my other serie, but we should really split the UI and VI support in two files, especially since it has pretty much no code path or data in common (if you combine this patch with the YUV support). Maxime -- Maxime Ripard, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
signature.asc
Description: PGP signature