Commit da05a5a71ad8fc7c51d526151be193b7ef6e6c95
Committed by
Dave Airlie
1 parent
3b11228b54
drm: parse color format support for digital displays
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@virtuousgeek.org> Reviewed-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Showing 3 changed files with 19 additions and 1 deletions Side-by-side Diff
drivers/gpu/drm/drm_edid.c
... | ... | @@ -1429,6 +1429,7 @@ |
1429 | 1429 | |
1430 | 1430 | /* driver figures it out in this case */ |
1431 | 1431 | info->bpc = 0; |
1432 | + info->color_formats = 0; | |
1432 | 1433 | |
1433 | 1434 | /* Only defined for 1.4 with digital displays */ |
1434 | 1435 | if (edid->revision < 4) |
... | ... | @@ -1461,6 +1462,12 @@ |
1461 | 1462 | info->bpc = 0; |
1462 | 1463 | break; |
1463 | 1464 | } |
1465 | + | |
1466 | + info->color_formats = DRM_COLOR_FORMAT_RGB444; | |
1467 | + if (info->color_formats & DRM_EDID_FEATURE_RGB_YCRCB444) | |
1468 | + info->color_formats = DRM_COLOR_FORMAT_YCRCB444; | |
1469 | + if (info->color_formats & DRM_EDID_FEATURE_RGB_YCRCB422) | |
1470 | + info->color_formats = DRM_COLOR_FORMAT_YCRCB422; | |
1464 | 1471 | } |
1465 | 1472 | |
1466 | 1473 | /** |
include/drm/drm_crtc.h
... | ... | @@ -183,7 +183,9 @@ |
183 | 183 | SubPixelNone, |
184 | 184 | }; |
185 | 185 | |
186 | - | |
186 | +#define DRM_COLOR_FORMAT_RGB444 (1<<0) | |
187 | +#define DRM_COLOR_FORMAT_YCRCB444 (1<<1) | |
188 | +#define DRM_COLOR_FORMAT_YCRCB422 (1<<2) | |
187 | 189 | /* |
188 | 190 | * Describes a given display (e.g. CRT or flat panel) and its limitations. |
189 | 191 | */ |
... | ... | @@ -201,6 +203,7 @@ |
201 | 203 | unsigned int bpc; |
202 | 204 | |
203 | 205 | enum subpixel_order subpixel_order; |
206 | + u32 color_formats; | |
204 | 207 | |
205 | 208 | char *raw_edid; /* if any */ |
206 | 209 | }; |
include/drm/drm_edid.h
... | ... | @@ -175,7 +175,15 @@ |
175 | 175 | #define DRM_EDID_FEATURE_DEFAULT_GTF (1 << 0) |
176 | 176 | #define DRM_EDID_FEATURE_PREFERRED_TIMING (1 << 1) |
177 | 177 | #define DRM_EDID_FEATURE_STANDARD_COLOR (1 << 2) |
178 | +/* If analog */ | |
178 | 179 | #define DRM_EDID_FEATURE_DISPLAY_TYPE (3 << 3) /* 00=mono, 01=rgb, 10=non-rgb, 11=unknown */ |
180 | +/* If digital */ | |
181 | +#define DRM_EDID_FEATURE_COLOR_MASK (3 << 3) | |
182 | +#define DRM_EDID_FEATURE_RGB (0 << 3) | |
183 | +#define DRM_EDID_FEATURE_RGB_YCRCB444 (1 << 3) | |
184 | +#define DRM_EDID_FEATURE_RGB_YCRCB422 (2 << 3) | |
185 | +#define DRM_EDID_FEATURE_RGB_YCRCB (3 << 3) /* both 4:4:4 and 4:2:2 */ | |
186 | + | |
179 | 187 | #define DRM_EDID_FEATURE_PM_ACTIVE_OFF (1 << 5) |
180 | 188 | #define DRM_EDID_FEATURE_PM_SUSPEND (1 << 6) |
181 | 189 | #define DRM_EDID_FEATURE_PM_STANDBY (1 << 7) |