diff options
-rw-r--r-- | drivers/gpu/drm/drm_edid.c | 7 | ||||
-rw-r--r-- | include/drm/drm_crtc.h | 5 | ||||
-rw-r--r-- | include/drm/drm_edid.h | 8 |
3 files changed, 19 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index fe0d3dcd4d31..0a9357c66ff8 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, | |||
1429 | 1429 | ||
1430 | /* driver figures it out in this case */ | 1430 | /* driver figures it out in this case */ |
1431 | info->bpc = 0; | 1431 | info->bpc = 0; |
1432 | info->color_formats = 0; | ||
1432 | 1433 | ||
1433 | /* Only defined for 1.4 with digital displays */ | 1434 | /* Only defined for 1.4 with digital displays */ |
1434 | if (edid->revision < 4) | 1435 | if (edid->revision < 4) |
@@ -1461,6 +1462,12 @@ static void drm_add_display_info(struct edid *edid, | |||
1461 | info->bpc = 0; | 1462 | info->bpc = 0; |
1462 | break; | 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 | /** |
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index ee1cb7012e56..9573e0ce3120 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h | |||
@@ -183,7 +183,9 @@ enum subpixel_order { | |||
183 | SubPixelNone, | 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 | * Describes a given display (e.g. CRT or flat panel) and its limitations. | 190 | * Describes a given display (e.g. CRT or flat panel) and its limitations. |
189 | */ | 191 | */ |
@@ -201,6 +203,7 @@ struct drm_display_info { | |||
201 | unsigned int bpc; | 203 | unsigned int bpc; |
202 | 204 | ||
203 | enum subpixel_order subpixel_order; | 205 | enum subpixel_order subpixel_order; |
206 | u32 color_formats; | ||
204 | 207 | ||
205 | char *raw_edid; /* if any */ | 208 | char *raw_edid; /* if any */ |
206 | }; | 209 | }; |
diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h index 9b9bf946a208..eacb415b309a 100644 --- a/include/drm/drm_edid.h +++ b/include/drm/drm_edid.h | |||
@@ -175,7 +175,15 @@ struct detailed_timing { | |||
175 | #define DRM_EDID_FEATURE_DEFAULT_GTF (1 << 0) | 175 | #define DRM_EDID_FEATURE_DEFAULT_GTF (1 << 0) |
176 | #define DRM_EDID_FEATURE_PREFERRED_TIMING (1 << 1) | 176 | #define DRM_EDID_FEATURE_PREFERRED_TIMING (1 << 1) |
177 | #define DRM_EDID_FEATURE_STANDARD_COLOR (1 << 2) | 177 | #define DRM_EDID_FEATURE_STANDARD_COLOR (1 << 2) |
178 | /* If analog */ | ||
178 | #define DRM_EDID_FEATURE_DISPLAY_TYPE (3 << 3) /* 00=mono, 01=rgb, 10=non-rgb, 11=unknown */ | 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 | #define DRM_EDID_FEATURE_PM_ACTIVE_OFF (1 << 5) | 187 | #define DRM_EDID_FEATURE_PM_ACTIVE_OFF (1 << 5) |
180 | #define DRM_EDID_FEATURE_PM_SUSPEND (1 << 6) | 188 | #define DRM_EDID_FEATURE_PM_SUSPEND (1 << 6) |
181 | #define DRM_EDID_FEATURE_PM_STANDBY (1 << 7) | 189 | #define DRM_EDID_FEATURE_PM_STANDBY (1 << 7) |