drm/sun4i: Add a few formats
authorMaxime Ripard <maxime.ripard@free-electrons.com>
Tue, 18 Oct 2016 08:46:14 +0000 (10:46 +0200)
committerMaxime Ripard <maxime.ripard@free-electrons.com>
Wed, 2 Nov 2016 18:37:37 +0000 (19:37 +0100)
The planes can do more than what was previously exposed. Add support for
them.

Since we still have the issue that the primary plane cannot have any alpha
component, we will expose only the non-alpha formats in the primary
formats, and the alpha formats will be exposed in the overlays.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Chen-Yu Tsai <wens@csie.org>
drivers/gpu/drm/sun4i/sun4i_backend.c
drivers/gpu/drm/sun4i/sun4i_layer.c

index 6e6c59a661b669c09b9edaa676da59561dd83903..7eb2a965f83d83ac98234b7ae8d914cf22d2015a 100644 (file)
@@ -95,6 +95,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;
+               break;
+
        case DRM_FORMAT_XRGB8888:
                *mode = SUN4I_BACKEND_LAY_FBFMT_XRGB8888;
                break;
@@ -103,6 +119,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;
        }
index f0035bf5efea68fe89f30e500f85e5c582974099..5d53c977bca5d0cce752e389f7dc9b38ce195155 100644 (file)
@@ -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,
 };