.. | .. |
---|
91 | 91 | u8 str[13]; |
---|
92 | 92 | } __attribute__((packed)); |
---|
93 | 93 | |
---|
| 94 | +#define DRM_EDID_DEFAULT_GTF_SUPPORT_FLAG 0x00 |
---|
| 95 | +#define DRM_EDID_RANGE_LIMITS_ONLY_FLAG 0x01 |
---|
| 96 | +#define DRM_EDID_SECONDARY_GTF_SUPPORT_FLAG 0x02 |
---|
| 97 | +#define DRM_EDID_CVT_SUPPORT_FLAG 0x04 |
---|
| 98 | + |
---|
94 | 99 | struct detailed_data_monitor_range { |
---|
95 | 100 | u8 min_vfreq; |
---|
96 | 101 | u8 max_vfreq; |
---|
.. | .. |
---|
177 | 182 | #define DRM_EDID_INPUT_BLANK_TO_BLACK (1 << 4) |
---|
178 | 183 | #define DRM_EDID_INPUT_VIDEO_LEVEL (3 << 5) |
---|
179 | 184 | #define DRM_EDID_INPUT_DIGITAL (1 << 7) |
---|
180 | | -#define DRM_EDID_DIGITAL_DEPTH_MASK (7 << 4) |
---|
181 | | -#define DRM_EDID_DIGITAL_DEPTH_UNDEF (0 << 4) |
---|
182 | | -#define DRM_EDID_DIGITAL_DEPTH_6 (1 << 4) |
---|
183 | | -#define DRM_EDID_DIGITAL_DEPTH_8 (2 << 4) |
---|
184 | | -#define DRM_EDID_DIGITAL_DEPTH_10 (3 << 4) |
---|
185 | | -#define DRM_EDID_DIGITAL_DEPTH_12 (4 << 4) |
---|
186 | | -#define DRM_EDID_DIGITAL_DEPTH_14 (5 << 4) |
---|
187 | | -#define DRM_EDID_DIGITAL_DEPTH_16 (6 << 4) |
---|
188 | | -#define DRM_EDID_DIGITAL_DEPTH_RSVD (7 << 4) |
---|
189 | | -#define DRM_EDID_DIGITAL_TYPE_UNDEF (0) |
---|
190 | | -#define DRM_EDID_DIGITAL_TYPE_DVI (1) |
---|
191 | | -#define DRM_EDID_DIGITAL_TYPE_HDMI_A (2) |
---|
192 | | -#define DRM_EDID_DIGITAL_TYPE_HDMI_B (3) |
---|
193 | | -#define DRM_EDID_DIGITAL_TYPE_MDDI (4) |
---|
194 | | -#define DRM_EDID_DIGITAL_TYPE_DP (5) |
---|
| 185 | +#define DRM_EDID_DIGITAL_DEPTH_MASK (7 << 4) /* 1.4 */ |
---|
| 186 | +#define DRM_EDID_DIGITAL_DEPTH_UNDEF (0 << 4) /* 1.4 */ |
---|
| 187 | +#define DRM_EDID_DIGITAL_DEPTH_6 (1 << 4) /* 1.4 */ |
---|
| 188 | +#define DRM_EDID_DIGITAL_DEPTH_8 (2 << 4) /* 1.4 */ |
---|
| 189 | +#define DRM_EDID_DIGITAL_DEPTH_10 (3 << 4) /* 1.4 */ |
---|
| 190 | +#define DRM_EDID_DIGITAL_DEPTH_12 (4 << 4) /* 1.4 */ |
---|
| 191 | +#define DRM_EDID_DIGITAL_DEPTH_14 (5 << 4) /* 1.4 */ |
---|
| 192 | +#define DRM_EDID_DIGITAL_DEPTH_16 (6 << 4) /* 1.4 */ |
---|
| 193 | +#define DRM_EDID_DIGITAL_DEPTH_RSVD (7 << 4) /* 1.4 */ |
---|
| 194 | +#define DRM_EDID_DIGITAL_TYPE_MASK (7 << 0) /* 1.4 */ |
---|
| 195 | +#define DRM_EDID_DIGITAL_TYPE_UNDEF (0 << 0) /* 1.4 */ |
---|
| 196 | +#define DRM_EDID_DIGITAL_TYPE_DVI (1 << 0) /* 1.4 */ |
---|
| 197 | +#define DRM_EDID_DIGITAL_TYPE_HDMI_A (2 << 0) /* 1.4 */ |
---|
| 198 | +#define DRM_EDID_DIGITAL_TYPE_HDMI_B (3 << 0) /* 1.4 */ |
---|
| 199 | +#define DRM_EDID_DIGITAL_TYPE_MDDI (4 << 0) /* 1.4 */ |
---|
| 200 | +#define DRM_EDID_DIGITAL_TYPE_DP (5 << 0) /* 1.4 */ |
---|
| 201 | +#define DRM_EDID_DIGITAL_DFP_1_X (1 << 0) /* 1.3 */ |
---|
195 | 202 | |
---|
196 | 203 | #define DRM_EDID_FEATURE_DEFAULT_GTF (1 << 0) |
---|
197 | 204 | #define DRM_EDID_FEATURE_PREFERRED_TIMING (1 << 1) |
---|
.. | .. |
---|
222 | 229 | DRM_EDID_YCBCR420_DC_36 | \ |
---|
223 | 230 | DRM_EDID_YCBCR420_DC_30) |
---|
224 | 231 | |
---|
225 | | -#define DRM_EDID_CLRMETRY_xvYCC_601 (1 << 0) |
---|
226 | | -#define DRM_EDID_CLRMETRY_xvYCC_709 (1 << 1) |
---|
227 | | -#define DRM_EDID_CLRMETRY_sYCC_601 (1 << 2) |
---|
228 | | -#define DRM_EDID_CLRMETRY_ADBYCC_601 (1 << 3) |
---|
229 | | -#define DRM_EDID_CLRMETRY_ADB_RGB (1 << 4) |
---|
230 | | -#define DRM_EDID_CLRMETRY_BT2020_CYCC (1 << 5) |
---|
231 | | -#define DRM_EDID_CLRMETRY_BT2020_YCC (1 << 6) |
---|
232 | | -#define DRM_EDID_CLRMETRY_BT2020_RGB (1 << 7) |
---|
233 | | -#define DRM_EDID_CLRMETRY_DCI_P3 (1 << 15) |
---|
234 | | - |
---|
| 232 | +#ifdef CONFIG_NO_GKI |
---|
235 | 233 | /* HDMI 2.1 additional fields */ |
---|
236 | 234 | #define DRM_EDID_MAX_FRL_RATE_MASK 0xf0 |
---|
237 | 235 | #define DRM_EDID_FAPA_START_LOCATION (1 << 0) |
---|
.. | .. |
---|
261 | 259 | #define DRM_EDID_DSC_MAX_FRL_RATE_MASK 0xf0 |
---|
262 | 260 | #define DRM_EDID_DSC_MAX_SLICES 0xf |
---|
263 | 261 | #define DRM_EDID_DSC_TOTAL_CHUNK_KBYTES 0x3f |
---|
| 262 | +#endif |
---|
264 | 263 | |
---|
265 | 264 | /* ELD Header Block */ |
---|
266 | 265 | #define DRM_ELD_HEADER_BLOCK_SIZE 4 |
---|
.. | .. |
---|
319 | 318 | #define DRM_ELD_MONITOR_NAME_STRING 20 /* offsets 20..(20+mnl-1) inclusive */ |
---|
320 | 319 | |
---|
321 | 320 | #define DRM_ELD_CEA_SAD(mnl, sad) (20 + (mnl) + 3 * (sad)) |
---|
322 | | - |
---|
323 | | -/* HDMI 2.0 */ |
---|
324 | | -#define DRM_EDID_3D_INDEPENDENT_VIEW (1 << 2) |
---|
325 | | -#define DRM_EDID_3D_DUAL_VIEW (1 << 1) |
---|
326 | | -#define DRM_EDID_3D_OSD_DISPARITY (1 << 0) |
---|
327 | 321 | |
---|
328 | 322 | struct edid { |
---|
329 | 323 | u8 header[8]; |
---|
.. | .. |
---|
399 | 393 | |
---|
400 | 394 | int |
---|
401 | 395 | drm_hdmi_avi_infoframe_from_display_mode(struct hdmi_avi_infoframe *frame, |
---|
402 | | - const struct drm_display_mode *mode, |
---|
403 | | - bool is_hdmi2_sink); |
---|
| 396 | + const struct drm_connector *connector, |
---|
| 397 | + const struct drm_display_mode *mode); |
---|
404 | 398 | int |
---|
405 | 399 | drm_hdmi_vendor_infoframe_from_display_mode(struct hdmi_vendor_infoframe *frame, |
---|
406 | | - struct drm_connector *connector, |
---|
| 400 | + const struct drm_connector *connector, |
---|
407 | 401 | const struct drm_display_mode *mode); |
---|
| 402 | + |
---|
| 403 | +void |
---|
| 404 | +drm_hdmi_avi_infoframe_colorspace(struct hdmi_avi_infoframe *frame, |
---|
| 405 | + const struct drm_connector_state *conn_state); |
---|
| 406 | + |
---|
| 407 | +void |
---|
| 408 | +drm_hdmi_avi_infoframe_bars(struct hdmi_avi_infoframe *frame, |
---|
| 409 | + const struct drm_connector_state *conn_state); |
---|
| 410 | + |
---|
408 | 411 | void |
---|
409 | 412 | drm_hdmi_avi_infoframe_quant_range(struct hdmi_avi_infoframe *frame, |
---|
| 413 | + const struct drm_connector *connector, |
---|
410 | 414 | const struct drm_display_mode *mode, |
---|
411 | | - enum hdmi_quantization_range rgb_quant_range, |
---|
412 | | - bool rgb_quant_range_selectable, |
---|
413 | | - bool is_hdmi2_sink); |
---|
| 415 | + enum hdmi_quantization_range rgb_quant_range); |
---|
414 | 416 | |
---|
415 | 417 | int |
---|
416 | 418 | drm_hdmi_infoframe_set_hdr_metadata(struct hdmi_drm_infoframe *frame, |
---|
.. | .. |
---|
514 | 516 | struct edid *drm_get_edid_switcheroo(struct drm_connector *connector, |
---|
515 | 517 | struct i2c_adapter *adapter); |
---|
516 | 518 | |
---|
517 | | -enum hdmi_picture_aspect drm_get_cea_aspect_ratio(const u8 video_code); |
---|
518 | 519 | bool drm_detect_hdmi_monitor(struct edid *edid); |
---|
519 | | -bool drm_rgb_quant_range_selectable(struct edid *edid); |
---|
520 | 520 | enum hdmi_quantization_range |
---|
521 | 521 | drm_default_rgb_quant_range(const struct drm_display_mode *mode); |
---|
522 | 522 | void drm_set_preferred_mode(struct drm_connector *connector, |
---|
.. | .. |
---|
525 | 525 | int drm_edid_header_is_valid(const u8 *raw_edid); |
---|
526 | 526 | bool drm_edid_block_valid(u8 *raw_edid, int block, bool print_bad_edid, |
---|
527 | 527 | bool *edid_corrupt); |
---|
528 | | -bool drm_edid_is_valid(struct edid *edid); |
---|
529 | | -struct drm_display_mode *drm_mode_find_dmt(struct drm_device *dev, |
---|
530 | | - int hsize, int vsize, int fresh, |
---|
531 | | - bool rb); |
---|
| 528 | +struct drm_display_mode * |
---|
| 529 | +drm_display_mode_from_cea_vic(struct drm_device *dev, |
---|
| 530 | + u8 video_code); |
---|
| 531 | + |
---|
532 | 532 | #ifdef CONFIG_DRM_EDID |
---|
533 | 533 | struct edid *drm_get_edid(struct drm_connector *connector, |
---|
534 | 534 | struct i2c_adapter *adapter); |
---|
.. | .. |
---|
541 | 541 | bool drm_detect_monitor_audio(struct edid *edid); |
---|
542 | 542 | void drm_edid_get_monitor_name(struct edid *edid, char *name, |
---|
543 | 543 | int buflen); |
---|
| 544 | +bool drm_edid_is_valid(struct edid *edid); |
---|
| 545 | +bool drm_edid_are_equal(const struct edid *edid1, const struct edid *edid2); |
---|
| 546 | +struct drm_display_mode *drm_mode_find_dmt(struct drm_device *dev, |
---|
| 547 | + int hsize, int vsize, int fresh, |
---|
| 548 | + bool rb); |
---|
544 | 549 | #else |
---|
545 | 550 | static inline struct edid *drm_get_edid(struct drm_connector *connector, |
---|
546 | 551 | struct i2c_adapter *adapter) |
---|
.. | .. |
---|
584 | 589 | int buflen) |
---|
585 | 590 | { |
---|
586 | 591 | } |
---|
| 592 | + |
---|
| 593 | +static inline bool drm_edid_is_valid(struct edid *edid) |
---|
| 594 | +{ |
---|
| 595 | + return false; |
---|
| 596 | +} |
---|
| 597 | + |
---|
| 598 | +static inline bool drm_edid_are_equal(const struct edid *edid1, const struct edid *edid2) |
---|
| 599 | +{ |
---|
| 600 | + return false; |
---|
| 601 | +} |
---|
| 602 | + |
---|
| 603 | +static inline struct drm_display_mode *drm_mode_find_dmt(struct drm_device *dev, |
---|
| 604 | + int hsize, int vsize, int fresh, |
---|
| 605 | + bool rb) |
---|
| 606 | +{ |
---|
| 607 | + return NULL; |
---|
| 608 | +} |
---|
587 | 609 | #endif |
---|
588 | 610 | |
---|
589 | 611 | #endif /* __DRM_EDID_H__ */ |
---|