hc
2024-05-10 37f49e37ab4cb5d0bc4c60eb5c6d4dd57db767bb
kernel/include/drm/drm_edid.h
....@@ -91,6 +91,11 @@
9191 u8 str[13];
9292 } __attribute__((packed));
9393
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
+
9499 struct detailed_data_monitor_range {
95100 u8 min_vfreq;
96101 u8 max_vfreq;
....@@ -177,21 +182,23 @@
177182 #define DRM_EDID_INPUT_BLANK_TO_BLACK (1 << 4)
178183 #define DRM_EDID_INPUT_VIDEO_LEVEL (3 << 5)
179184 #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 */
195202
196203 #define DRM_EDID_FEATURE_DEFAULT_GTF (1 << 0)
197204 #define DRM_EDID_FEATURE_PREFERRED_TIMING (1 << 1)
....@@ -222,16 +229,7 @@
222229 DRM_EDID_YCBCR420_DC_36 | \
223230 DRM_EDID_YCBCR420_DC_30)
224231
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
235233 /* HDMI 2.1 additional fields */
236234 #define DRM_EDID_MAX_FRL_RATE_MASK 0xf0
237235 #define DRM_EDID_FAPA_START_LOCATION (1 << 0)
....@@ -261,6 +259,7 @@
261259 #define DRM_EDID_DSC_MAX_FRL_RATE_MASK 0xf0
262260 #define DRM_EDID_DSC_MAX_SLICES 0xf
263261 #define DRM_EDID_DSC_TOTAL_CHUNK_KBYTES 0x3f
262
+#endif
264263
265264 /* ELD Header Block */
266265 #define DRM_ELD_HEADER_BLOCK_SIZE 4
....@@ -319,11 +318,6 @@
319318 #define DRM_ELD_MONITOR_NAME_STRING 20 /* offsets 20..(20+mnl-1) inclusive */
320319
321320 #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)
327321
328322 struct edid {
329323 u8 header[8];
....@@ -399,18 +393,26 @@
399393
400394 int
401395 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);
404398 int
405399 drm_hdmi_vendor_infoframe_from_display_mode(struct hdmi_vendor_infoframe *frame,
406
- struct drm_connector *connector,
400
+ const struct drm_connector *connector,
407401 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
+
408411 void
409412 drm_hdmi_avi_infoframe_quant_range(struct hdmi_avi_infoframe *frame,
413
+ const struct drm_connector *connector,
410414 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);
414416
415417 int
416418 drm_hdmi_infoframe_set_hdr_metadata(struct hdmi_drm_infoframe *frame,
....@@ -514,9 +516,7 @@
514516 struct edid *drm_get_edid_switcheroo(struct drm_connector *connector,
515517 struct i2c_adapter *adapter);
516518
517
-enum hdmi_picture_aspect drm_get_cea_aspect_ratio(const u8 video_code);
518519 bool drm_detect_hdmi_monitor(struct edid *edid);
519
-bool drm_rgb_quant_range_selectable(struct edid *edid);
520520 enum hdmi_quantization_range
521521 drm_default_rgb_quant_range(const struct drm_display_mode *mode);
522522 void drm_set_preferred_mode(struct drm_connector *connector,
....@@ -525,10 +525,10 @@
525525 int drm_edid_header_is_valid(const u8 *raw_edid);
526526 bool drm_edid_block_valid(u8 *raw_edid, int block, bool print_bad_edid,
527527 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
+
532532 #ifdef CONFIG_DRM_EDID
533533 struct edid *drm_get_edid(struct drm_connector *connector,
534534 struct i2c_adapter *adapter);
....@@ -541,6 +541,11 @@
541541 bool drm_detect_monitor_audio(struct edid *edid);
542542 void drm_edid_get_monitor_name(struct edid *edid, char *name,
543543 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);
544549 #else
545550 static inline struct edid *drm_get_edid(struct drm_connector *connector,
546551 struct i2c_adapter *adapter)
....@@ -584,6 +589,23 @@
584589 int buflen)
585590 {
586591 }
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
+}
587609 #endif
588610
589611 #endif /* __DRM_EDID_H__ */