aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxime Ripard <maxime.ripard@free-electrons.com>2016-10-18 04:46:14 -0400
committerMaxime Ripard <maxime.ripard@free-electrons.com>2016-11-02 14:37:37 -0400
commit47d7fbb32c57c8d1722a3e9bd21e501e80fd0741 (patch)
tree8638153286dc1184896c2eb24965d865395b32d1
parent49c440e87cd6f547f93d0dc53571ae0e11d9ec8f (diff)
drm/sun4i: Add a few formats
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>
-rw-r--r--drivers/gpu/drm/sun4i/sun4i_backend.c20
-rw-r--r--drivers/gpu/drm/sun4i/sun4i_layer.c6
2 files changed, 26 insertions, 0 deletions
diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.c b/drivers/gpu/drm/sun4i/sun4i_backend.c
index 6e6c59a661b6..7eb2a965f83d 100644
--- a/drivers/gpu/drm/sun4i/sun4i_backend.c
+++ b/drivers/gpu/drm/sun4i/sun4i_backend.c
@@ -95,6 +95,22 @@ static int sun4i_backend_drm_format_to_layer(struct drm_plane *plane,
95 *mode = SUN4I_BACKEND_LAY_FBFMT_ARGB8888; 95 *mode = SUN4I_BACKEND_LAY_FBFMT_ARGB8888;
96 break; 96 break;
97 97
98 case DRM_FORMAT_ARGB4444:
99 *mode = SUN4I_BACKEND_LAY_FBFMT_ARGB4444;
100 break;
101
102 case DRM_FORMAT_ARGB1555:
103 *mode = SUN4I_BACKEND_LAY_FBFMT_ARGB1555;
104 break;
105
106 case DRM_FORMAT_RGBA5551:
107 *mode = SUN4I_BACKEND_LAY_FBFMT_RGBA5551;
108 break;
109
110 case DRM_FORMAT_RGBA4444:
111 *mode = SUN4I_BACKEND_LAY_FBFMT_RGBA4444;
112 break;
113
98 case DRM_FORMAT_XRGB8888: 114 case DRM_FORMAT_XRGB8888:
99 *mode = SUN4I_BACKEND_LAY_FBFMT_XRGB8888; 115 *mode = SUN4I_BACKEND_LAY_FBFMT_XRGB8888;
100 break; 116 break;
@@ -103,6 +119,10 @@ static int sun4i_backend_drm_format_to_layer(struct drm_plane *plane,
103 *mode = SUN4I_BACKEND_LAY_FBFMT_RGB888; 119 *mode = SUN4I_BACKEND_LAY_FBFMT_RGB888;
104 break; 120 break;
105 121
122 case DRM_FORMAT_RGB565:
123 *mode = SUN4I_BACKEND_LAY_FBFMT_RGB565;
124 break;
125
106 default: 126 default:
107 return -EINVAL; 127 return -EINVAL;
108 } 128 }
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 = {
73static const uint32_t sun4i_backend_layer_formats_primary[] = { 73static const uint32_t sun4i_backend_layer_formats_primary[] = {
74 DRM_FORMAT_ARGB8888, 74 DRM_FORMAT_ARGB8888,
75 DRM_FORMAT_RGB888, 75 DRM_FORMAT_RGB888,
76 DRM_FORMAT_RGB565,
76 DRM_FORMAT_XRGB8888, 77 DRM_FORMAT_XRGB8888,
77}; 78};
78 79
79static const uint32_t sun4i_backend_layer_formats_overlay[] = { 80static const uint32_t sun4i_backend_layer_formats_overlay[] = {
80 DRM_FORMAT_ARGB8888, 81 DRM_FORMAT_ARGB8888,
82 DRM_FORMAT_ARGB4444,
83 DRM_FORMAT_ARGB1555,
84 DRM_FORMAT_RGBA5551,
85 DRM_FORMAT_RGBA4444,
81 DRM_FORMAT_RGB888, 86 DRM_FORMAT_RGB888,
87 DRM_FORMAT_RGB565,
82 DRM_FORMAT_XRGB8888, 88 DRM_FORMAT_XRGB8888,
83}; 89};
84 90