Re: [PATCH] drm/sun4i: Add a few formats
From: Chen-Yu Tsai
Date: Mon Oct 24 2016 - 20:43:03 EST
On Mon, Oct 24, 2016 at 10:40 PM, Maxime Ripard
<maxime.ripard@xxxxxxxxxxxxxxxxxx> wrote:
> Hi,
>
> On Fri, Oct 21, 2016 at 11:15:32AM +0800, Chen-Yu Tsai wrote:
>> On Tue, Oct 18, 2016 at 4:46 PM, Maxime Ripard
>> <maxime.ripard@xxxxxxxxxxxxxxxxxx> wrote:
>> > The planes can do more than what was previously exposed. Add support for
>> > them.
>> >
>> > Signed-off-by: Maxime Ripard <maxime.ripard@xxxxxxxxxxxxxxxxxx>
>> > ---
>> > drivers/gpu/drm/sun4i/sun4i_backend.c | 20 ++++++++++++++++++++
>> > drivers/gpu/drm/sun4i/sun4i_layer.c | 6 ++++++
>> > 2 files changed, 26 insertions(+)
>> >
>> > diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.c b/drivers/gpu/drm/sun4i/sun4i_backend.c
>> > index afb7ddf660ef..b184a476a480 100644
>> > --- a/drivers/gpu/drm/sun4i/sun4i_backend.c
>> > +++ b/drivers/gpu/drm/sun4i/sun4i_backend.c
>> > @@ -96,6 +96,22 @@ static int sun4i_backend_drm_format_to_layer(struct drm_plane *plane,
>> > *mode = SUN4I_BACKEND_LAY_FBFMT_ARGB8888;
>> > break;
>> >
>> > + case DRM_FORMAT_ARGB4444:
>> > + *mode = SUN4I_BACKEND_LAY_FBFMT_ARGB4444;
>> > + break;
>> > +
>> > + case DRM_FORMAT_ARGB1555:
>> > + *mode = SUN4I_BACKEND_LAY_FBFMT_ARGB1555;
>> > + break;
>> > +
>> > + case DRM_FORMAT_RGBA5551:
>> > + *mode = SUN4I_BACKEND_LAY_FBFMT_RGBA5551;
>> > + break;
>> > +
>> > + case DRM_FORMAT_RGBA4444:
>> > + *mode = SUN4I_BACKEND_LAY_FBFMT_RGBA4444;
>>
>> The A20 manual only lists ARGB4444, not RGBA4444. There might be
>> some discrepancy here. We can deal with them
>
> Hmm, yes, that's weird. But I guess this would be part of porting it
> to the A20.
>
>> Also there are some more formats missing from the list, could you
>> add them as well?
>
> Which one do you refer to?
RGB556 and RGB655.
>
>> > + break;
>> > +
>> > case DRM_FORMAT_XRGB8888:
>> > *mode = SUN4I_BACKEND_LAY_FBFMT_XRGB8888;
>> > break;
>> > @@ -104,6 +120,10 @@ static int sun4i_backend_drm_format_to_layer(struct drm_plane *plane,
>> > *mode = SUN4I_BACKEND_LAY_FBFMT_RGB888;
>> > break;
>> >
>> > + case DRM_FORMAT_RGB565:
>> > + *mode = SUN4I_BACKEND_LAY_FBFMT_RGB565;
>> > + break;
>> > +
>> > default:
>> > return -EINVAL;
>> > }
>> > diff --git a/drivers/gpu/drm/sun4i/sun4i_layer.c b/drivers/gpu/drm/sun4i/sun4i_layer.c
>> > index f0035bf5efea..5d53c977bca5 100644
>> > --- a/drivers/gpu/drm/sun4i/sun4i_layer.c
>> > +++ b/drivers/gpu/drm/sun4i/sun4i_layer.c
>> > @@ -73,12 +73,18 @@ static const struct drm_plane_funcs sun4i_backend_layer_funcs = {
>> > static const uint32_t sun4i_backend_layer_formats_primary[] = {
>> > DRM_FORMAT_ARGB8888,
>> > DRM_FORMAT_RGB888,
>> > + DRM_FORMAT_RGB565,
>> > DRM_FORMAT_XRGB8888,
>> > };
>> >
>> > static const uint32_t sun4i_backend_layer_formats_overlay[] = {
>> > DRM_FORMAT_ARGB8888,
>> > + DRM_FORMAT_ARGB4444,
>> > + DRM_FORMAT_ARGB1555,
>> > + DRM_FORMAT_RGBA5551,
>> > + DRM_FORMAT_RGBA4444,
>> > DRM_FORMAT_RGB888,
>> > + DRM_FORMAT_RGB565,
>> > DRM_FORMAT_XRGB8888,
>>
>> Could you explain in the commit log why these 2 aren't the same?
>
> Yep, I will.
Cool! Thanks.
ChenYu
>
> Thanks!
> Maxime
>
> --
> Maxime Ripard, Free Electrons
> Embedded Linux and Kernel engineering
> http://free-electrons.com