[PATCH] drm: parse color format support for digital displays
Jesse Barnes
jbarnes at virtuousgeek.org
Fri Apr 15 11:40:13 PDT 2011
EDID 1.4 digital displays report the color spaces they support in the
features block. Add support for grabbing this data and stuffing it into
the display_info struct for driver use.
Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
---
drivers/gpu/drm/drm_edid.c | 10 ++++++++++
include/drm/drm_crtc.h | 6 +++++-
2 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index fb5ebd9..64f8b7f 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -1429,6 +1429,7 @@ static void drm_add_display_info(struct edid *edid,
/* driver figures it out in this case */
info->bpp = 0;
+ info->color_formats = 0;
/* Only defined for 1.4 with digital displays */
if (edid->revision < 4)
@@ -1461,6 +1462,15 @@ static void drm_add_display_info(struct edid *edid,
info->bpp = 0;
break;
}
+
+ if (edid->features & DRM_EDID_FEATURE_RGB)
+ info->color_formats = DRM_COLOR_FORMAT_RGB444;
+ else if (edid->features & DRM_EDID_FEATURE_RGB_YCRCB444)
+ info->color_formats = DRM_COLOR_FORMAT_RGB444 |
+ DRM_COLOR_FORMAT_YCRCB444;
+ else if (edid->features & DRM_EDID_FEATURE_RGB_YCRCB)
+ info->color_formats = DRM_COLOR_FORMAT_RGB444 |
+ DRM_COLOR_FORMAT_YCRCB444 | DRM_COLOR_FORMAT_YCRCB422;
}
/**
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index aaec097..5cc7008 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -183,7 +183,9 @@ enum subpixel_order {
SubPixelNone,
};
-
+#define DRM_COLOR_FORMAT_RGB444 (1<<0)
+#define DRM_COLOR_FORMAT_YCRCB444 (1<<1)
+#define DRM_COLOR_FORMAT_YCRCB422 (1<<2)
/*
* Describes a given display (e.g. CRT or flat panel) and its limitations.
*/
@@ -198,8 +200,10 @@ struct drm_display_info {
unsigned int min_vfreq, max_vfreq;
unsigned int min_hfreq, max_hfreq;
unsigned int pixel_clock;
+ unsigned int bpp;
enum subpixel_order subpixel_order;
+ unsigned long color_formats;
char *raw_edid; /* if any */
};
--
1.7.4.1
More information about the dri-devel
mailing list