diff options
author | Paul Kocialkowski <paul.kocialkowski@bootlin.com> | 2018-11-23 04:24:36 -0500 |
---|---|---|
committer | Maxime Ripard <maxime.ripard@bootlin.com> | 2018-11-27 03:33:34 -0500 |
commit | 3d4265f89d064df2a6952e3f24a3da4fd687cc65 (patch) | |
tree | f1b3348c9894cbe04a46a6b3e050b537ddc34b9c | |
parent | ad25d0736db00afb2c7bf355bc50437434325387 (diff) |
drm/sun4i: backend: Add a helper and a list for supported formats
In order to check whether the backend supports a specific format, an
explicit list and a related helper are introduced.
The prototype of this helper is added to the header so that it can be
called from sun4i_layer later (when introducing tiled mode support).
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181123092515.2511-5-paul.kocialkowski@bootlin.com
-rw-r--r-- | drivers/gpu/drm/sun4i/sun4i_backend.c | 27 | ||||
-rw-r--r-- | drivers/gpu/drm/sun4i/sun4i_backend.h | 1 |
2 files changed, 28 insertions, 0 deletions
diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.c b/drivers/gpu/drm/sun4i/sun4i_backend.c index c3444246755b..7dd24eb03f89 100644 --- a/drivers/gpu/drm/sun4i/sun4i_backend.c +++ b/drivers/gpu/drm/sun4i/sun4i_backend.c | |||
@@ -155,6 +155,33 @@ static int sun4i_backend_drm_format_to_layer(u32 format, u32 *mode) | |||
155 | return 0; | 155 | return 0; |
156 | } | 156 | } |
157 | 157 | ||
158 | static const uint32_t sun4i_backend_formats[] = { | ||
159 | DRM_FORMAT_ARGB1555, | ||
160 | DRM_FORMAT_ARGB4444, | ||
161 | DRM_FORMAT_ARGB8888, | ||
162 | DRM_FORMAT_BGRX8888, | ||
163 | DRM_FORMAT_RGB565, | ||
164 | DRM_FORMAT_RGB888, | ||
165 | DRM_FORMAT_RGBA4444, | ||
166 | DRM_FORMAT_RGBA5551, | ||
167 | DRM_FORMAT_UYVY, | ||
168 | DRM_FORMAT_VYUY, | ||
169 | DRM_FORMAT_XRGB8888, | ||
170 | DRM_FORMAT_YUYV, | ||
171 | DRM_FORMAT_YVYU, | ||
172 | }; | ||
173 | |||
174 | bool sun4i_backend_format_is_supported(uint32_t fmt) | ||
175 | { | ||
176 | unsigned int i; | ||
177 | |||
178 | for (i = 0; i < ARRAY_SIZE(sun4i_backend_formats); i++) | ||
179 | if (sun4i_backend_formats[i] == fmt) | ||
180 | return true; | ||
181 | |||
182 | return false; | ||
183 | } | ||
184 | |||
158 | int sun4i_backend_update_layer_coord(struct sun4i_backend *backend, | 185 | int sun4i_backend_update_layer_coord(struct sun4i_backend *backend, |
159 | int layer, struct drm_plane *plane) | 186 | int layer, struct drm_plane *plane) |
160 | { | 187 | { |
diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.h b/drivers/gpu/drm/sun4i/sun4i_backend.h index 339dbff1cce4..93db3af675b3 100644 --- a/drivers/gpu/drm/sun4i/sun4i_backend.h +++ b/drivers/gpu/drm/sun4i/sun4i_backend.h | |||
@@ -198,6 +198,7 @@ engine_to_sun4i_backend(struct sunxi_engine *engine) | |||
198 | 198 | ||
199 | void sun4i_backend_layer_enable(struct sun4i_backend *backend, | 199 | void sun4i_backend_layer_enable(struct sun4i_backend *backend, |
200 | int layer, bool enable); | 200 | int layer, bool enable); |
201 | bool sun4i_backend_format_is_supported(uint32_t fmt); | ||
201 | int sun4i_backend_update_layer_coord(struct sun4i_backend *backend, | 202 | int sun4i_backend_update_layer_coord(struct sun4i_backend *backend, |
202 | int layer, struct drm_plane *plane); | 203 | int layer, struct drm_plane *plane); |
203 | int sun4i_backend_update_layer_formats(struct sun4i_backend *backend, | 204 | int sun4i_backend_update_layer_formats(struct sun4i_backend *backend, |