summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/sysfb/drm_sysfb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/sysfb/drm_sysfb.c')
-rw-r--r--drivers/gpu/drm/sysfb/drm_sysfb.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/gpu/drm/sysfb/drm_sysfb.c b/drivers/gpu/drm/sysfb/drm_sysfb.c
index 308f82153b15..fbfb37d0fae1 100644
--- a/drivers/gpu/drm/sysfb/drm_sysfb.c
+++ b/drivers/gpu/drm/sysfb/drm_sysfb.c
@@ -31,5 +31,29 @@ int drm_sysfb_get_validated_int0(struct drm_device *dev, const char *name,
}
EXPORT_SYMBOL(drm_sysfb_get_validated_int0);
+const struct drm_format_info *drm_sysfb_get_format(struct drm_device *dev,
+ const struct drm_sysfb_format *formats,
+ size_t nformats,
+ const struct pixel_format *pixel)
+{
+ const struct drm_format_info *format = NULL;
+ size_t i;
+
+ for (i = 0; i < nformats; ++i) {
+ const struct drm_sysfb_format *f = &formats[i];
+
+ if (pixel_format_equal(pixel, &f->pixel)) {
+ format = drm_format_info(f->fourcc);
+ break;
+ }
+ }
+
+ if (!format)
+ drm_warn(dev, "No compatible color format found\n");
+
+ return format;
+}
+EXPORT_SYMBOL(drm_sysfb_get_format);
+
MODULE_DESCRIPTION("Helpers for DRM sysfb drivers");
MODULE_LICENSE("GPL");