Message ID | 20220424162633.12369-10-samuel@sholland.org |
---|---|
State | Accepted |
Commit | c3779dab242f09c0a50753e32028d56070bf6f2f |
Headers | show |
Series | drm/sun4i: Allwinner D1 Display Engine 2.0 Support | expand |
Dne nedelja, 24. april 2022 ob 18:26:27 CEST je Samuel Holland napisal(a): > D1's mixer 1 has no UI layers, only a single VI layer. That means the > mixer can only be used if the primary plane comes from this VI layer. > Add the code to handle this case. > > Signed-off-by: Samuel Holland <samuel@sholland.org> Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com> Best regards, Jernej Skrabec > --- > > (no changes since v2) > > Changes in v2: > - Use Jernej's patches for mixer mode setting. > > drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/ sun8i_vi_layer.c > index bb7c43036dfa..f7d0b082d634 100644 > --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c > +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c > @@ -542,6 +542,7 @@ struct sun8i_vi_layer *sun8i_vi_layer_init_one(struct drm_device *drm, > struct sun8i_mixer *mixer, > int index) > { > + enum drm_plane_type type = DRM_PLANE_TYPE_OVERLAY; > u32 supported_encodings, supported_ranges; > unsigned int plane_cnt, format_count; > struct sun8i_vi_layer *layer; > @@ -560,12 +561,15 @@ struct sun8i_vi_layer *sun8i_vi_layer_init_one(struct drm_device *drm, > format_count = ARRAY_SIZE(sun8i_vi_layer_formats); > } > > + if (!mixer->cfg->ui_num && index == 0) > + type = DRM_PLANE_TYPE_PRIMARY; > + > /* possible crtcs are set later */ > ret = drm_universal_plane_init(drm, &layer->plane, 0, > &sun8i_vi_layer_funcs, > formats, format_count, > sun8i_layer_modifiers, > - DRM_PLANE_TYPE_OVERLAY, NULL); > + type, NULL); > if (ret) { > dev_err(drm->dev, "Couldn't initialize layer\n"); > return ERR_PTR(ret); > -- > 2.35.1 > >
diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index bb7c43036dfa..f7d0b082d634 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -542,6 +542,7 @@ struct sun8i_vi_layer *sun8i_vi_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, int index) { + enum drm_plane_type type = DRM_PLANE_TYPE_OVERLAY; u32 supported_encodings, supported_ranges; unsigned int plane_cnt, format_count; struct sun8i_vi_layer *layer; @@ -560,12 +561,15 @@ struct sun8i_vi_layer *sun8i_vi_layer_init_one(struct drm_device *drm, format_count = ARRAY_SIZE(sun8i_vi_layer_formats); } + if (!mixer->cfg->ui_num && index == 0) + type = DRM_PLANE_TYPE_PRIMARY; + /* possible crtcs are set later */ ret = drm_universal_plane_init(drm, &layer->plane, 0, &sun8i_vi_layer_funcs, formats, format_count, sun8i_layer_modifiers, - DRM_PLANE_TYPE_OVERLAY, NULL); + type, NULL); if (ret) { dev_err(drm->dev, "Couldn't initialize layer\n"); return ERR_PTR(ret);
D1's mixer 1 has no UI layers, only a single VI layer. That means the mixer can only be used if the primary plane comes from this VI layer. Add the code to handle this case. Signed-off-by: Samuel Holland <samuel@sholland.org> --- (no changes since v2) Changes in v2: - Use Jernej's patches for mixer mode setting. drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)