Lines Matching +full:0 +full:x720
63 #define EDID_QUIRK_PREFER_LARGE_60 (1 << 0)
97 #define LEVEL_DMT 0
110 { "API", 0x7602, EDID_QUIRK_PREFER_LARGE_60 },
112 /* AEO model 0 reports 8 bpc, but is a 6 bpc panel */
113 { "AEO", 0, EDID_QUIRK_FORCE_6BPC },
116 { "BOE", 0x78b, EDID_QUIRK_FORCE_6BPC },
119 { "CPT", 0x17df, EDID_QUIRK_FORCE_6BPC },
122 { "SDC", 0x3652, EDID_QUIRK_FORCE_6BPC },
124 /* BOE model 0x0771 reports 8 bpc, but is a 6 bpc panel */
125 { "BOE", 0x0771, EDID_QUIRK_FORCE_6BPC },
129 { "MAX", 0x77e, EDID_QUIRK_PREFER_LARGE_60 },
144 { "LPL", 0, EDID_QUIRK_DETAILED_USE_MAXIMUM_SIZE },
145 { "LPL", 0x2a00, EDID_QUIRK_DETAILED_USE_MAXIMUM_SIZE },
154 { "SNY", 0x2541, EDID_QUIRK_FORCE_12BPC },
160 { "MED", 0x7b8, EDID_QUIRK_PREFER_LARGE_75 },
166 { "SEC", 0xd033, EDID_QUIRK_FORCE_8BPC },
172 { "VLV", 0x91a8, EDID_QUIRK_NON_DESKTOP },
173 { "VLV", 0x91b0, EDID_QUIRK_NON_DESKTOP },
174 { "VLV", 0x91b1, EDID_QUIRK_NON_DESKTOP },
175 { "VLV", 0x91b2, EDID_QUIRK_NON_DESKTOP },
176 { "VLV", 0x91b3, EDID_QUIRK_NON_DESKTOP },
177 { "VLV", 0x91b4, EDID_QUIRK_NON_DESKTOP },
178 { "VLV", 0x91b5, EDID_QUIRK_NON_DESKTOP },
179 { "VLV", 0x91b6, EDID_QUIRK_NON_DESKTOP },
180 { "VLV", 0x91b7, EDID_QUIRK_NON_DESKTOP },
181 { "VLV", 0x91b8, EDID_QUIRK_NON_DESKTOP },
182 { "VLV", 0x91b9, EDID_QUIRK_NON_DESKTOP },
183 { "VLV", 0x91ba, EDID_QUIRK_NON_DESKTOP },
184 { "VLV", 0x91bb, EDID_QUIRK_NON_DESKTOP },
185 { "VLV", 0x91bc, EDID_QUIRK_NON_DESKTOP },
186 { "VLV", 0x91bd, EDID_QUIRK_NON_DESKTOP },
187 { "VLV", 0x91be, EDID_QUIRK_NON_DESKTOP },
188 { "VLV", 0x91bf, EDID_QUIRK_NON_DESKTOP },
191 { "HVR", 0xaa01, EDID_QUIRK_NON_DESKTOP },
192 { "HVR", 0xaa02, EDID_QUIRK_NON_DESKTOP },
195 { "OVR", 0x0001, EDID_QUIRK_NON_DESKTOP },
196 { "OVR", 0x0003, EDID_QUIRK_NON_DESKTOP },
197 { "OVR", 0x0004, EDID_QUIRK_NON_DESKTOP },
198 { "OVR", 0x0012, EDID_QUIRK_NON_DESKTOP },
201 { "ACR", 0x7fce, EDID_QUIRK_NON_DESKTOP },
202 { "HPN", 0x3515, EDID_QUIRK_NON_DESKTOP },
203 { "LEN", 0x0408, EDID_QUIRK_NON_DESKTOP },
204 { "LEN", 0xb800, EDID_QUIRK_NON_DESKTOP },
205 { "FUJ", 0x1970, EDID_QUIRK_NON_DESKTOP },
206 { "DEL", 0x7fce, EDID_QUIRK_NON_DESKTOP },
207 { "SEC", 0x144a, EDID_QUIRK_NON_DESKTOP },
208 { "AUS", 0xc102, EDID_QUIRK_NON_DESKTOP },
211 { "SNY", 0x0704, EDID_QUIRK_NON_DESKTOP },
214 { "SEN", 0x1019, EDID_QUIRK_NON_DESKTOP },
217 { "SVR", 0x1019, EDID_QUIRK_NON_DESKTOP },
225 /* 0x01 - 640x350@85Hz */
227 736, 832, 0, 350, 382, 385, 445, 0,
229 /* 0x02 - 640x400@85Hz */
231 736, 832, 0, 400, 401, 404, 445, 0,
233 /* 0x03 - 720x400@85Hz */
235 828, 936, 0, 400, 401, 404, 446, 0,
237 /* 0x04 - 640x480@60Hz */
239 752, 800, 0, 480, 490, 492, 525, 0,
241 /* 0x05 - 640x480@72Hz */
243 704, 832, 0, 480, 489, 492, 520, 0,
245 /* 0x06 - 640x480@75Hz */
247 720, 840, 0, 480, 481, 484, 500, 0,
249 /* 0x07 - 640x480@85Hz */
251 752, 832, 0, 480, 481, 484, 509, 0,
253 /* 0x08 - 800x600@56Hz */
255 896, 1024, 0, 600, 601, 603, 625, 0,
257 /* 0x09 - 800x600@60Hz */
259 968, 1056, 0, 600, 601, 605, 628, 0,
261 /* 0x0a - 800x600@72Hz */
263 976, 1040, 0, 600, 637, 643, 666, 0,
265 /* 0x0b - 800x600@75Hz */
267 896, 1056, 0, 600, 601, 604, 625, 0,
269 /* 0x0c - 800x600@85Hz */
271 896, 1048, 0, 600, 601, 604, 631, 0,
273 /* 0x0d - 800x600@120Hz RB */
275 880, 960, 0, 600, 603, 607, 636, 0,
277 /* 0x0e - 848x480@60Hz */
279 976, 1088, 0, 480, 486, 494, 517, 0,
281 /* 0x0f - 1024x768@43Hz, interlace */
283 1208, 1264, 0, 768, 768, 776, 817, 0,
286 /* 0x10 - 1024x768@60Hz */
288 1184, 1344, 0, 768, 771, 777, 806, 0,
290 /* 0x11 - 1024x768@70Hz */
292 1184, 1328, 0, 768, 771, 777, 806, 0,
294 /* 0x12 - 1024x768@75Hz */
296 1136, 1312, 0, 768, 769, 772, 800, 0,
298 /* 0x13 - 1024x768@85Hz */
300 1168, 1376, 0, 768, 769, 772, 808, 0,
302 /* 0x14 - 1024x768@120Hz RB */
304 1104, 1184, 0, 768, 771, 775, 813, 0,
306 /* 0x15 - 1152x864@75Hz */
308 1344, 1600, 0, 864, 865, 868, 900, 0,
310 /* 0x55 - 1280x720@60Hz */
311 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390,
312 1430, 1650, 0, 720, 725, 730, 750, 0,
314 /* 0x16 - 1280x768@60Hz RB */
316 1360, 1440, 0, 768, 771, 778, 790, 0,
318 /* 0x17 - 1280x768@60Hz */
320 1472, 1664, 0, 768, 771, 778, 798, 0,
322 /* 0x18 - 1280x768@75Hz */
324 1488, 1696, 0, 768, 771, 778, 805, 0,
326 /* 0x19 - 1280x768@85Hz */
328 1496, 1712, 0, 768, 771, 778, 809, 0,
330 /* 0x1a - 1280x768@120Hz RB */
332 1360, 1440, 0, 768, 771, 778, 813, 0,
334 /* 0x1b - 1280x800@60Hz RB */
336 1360, 1440, 0, 800, 803, 809, 823, 0,
338 /* 0x1c - 1280x800@60Hz */
340 1480, 1680, 0, 800, 803, 809, 831, 0,
342 /* 0x1d - 1280x800@75Hz */
344 1488, 1696, 0, 800, 803, 809, 838, 0,
346 /* 0x1e - 1280x800@85Hz */
348 1496, 1712, 0, 800, 803, 809, 843, 0,
350 /* 0x1f - 1280x800@120Hz RB */
352 1360, 1440, 0, 800, 803, 809, 847, 0,
354 /* 0x20 - 1280x960@60Hz */
356 1488, 1800, 0, 960, 961, 964, 1000, 0,
358 /* 0x21 - 1280x960@85Hz */
360 1504, 1728, 0, 960, 961, 964, 1011, 0,
362 /* 0x22 - 1280x960@120Hz RB */
364 1360, 1440, 0, 960, 963, 967, 1017, 0,
366 /* 0x23 - 1280x1024@60Hz */
368 1440, 1688, 0, 1024, 1025, 1028, 1066, 0,
370 /* 0x24 - 1280x1024@75Hz */
372 1440, 1688, 0, 1024, 1025, 1028, 1066, 0,
374 /* 0x25 - 1280x1024@85Hz */
376 1504, 1728, 0, 1024, 1025, 1028, 1072, 0,
378 /* 0x26 - 1280x1024@120Hz RB */
380 1360, 1440, 0, 1024, 1027, 1034, 1084, 0,
382 /* 0x27 - 1360x768@60Hz */
384 1536, 1792, 0, 768, 771, 777, 795, 0,
386 /* 0x28 - 1360x768@120Hz RB */
388 1440, 1520, 0, 768, 771, 776, 813, 0,
390 /* 0x51 - 1366x768@60Hz */
392 1579, 1792, 0, 768, 771, 774, 798, 0,
394 /* 0x56 - 1366x768@60Hz */
396 1436, 1500, 0, 768, 769, 772, 800, 0,
398 /* 0x29 - 1400x1050@60Hz RB */
400 1480, 1560, 0, 1050, 1053, 1057, 1080, 0,
402 /* 0x2a - 1400x1050@60Hz */
404 1632, 1864, 0, 1050, 1053, 1057, 1089, 0,
406 /* 0x2b - 1400x1050@75Hz */
408 1648, 1896, 0, 1050, 1053, 1057, 1099, 0,
410 /* 0x2c - 1400x1050@85Hz */
412 1656, 1912, 0, 1050, 1053, 1057, 1105, 0,
414 /* 0x2d - 1400x1050@120Hz RB */
416 1480, 1560, 0, 1050, 1053, 1057, 1112, 0,
418 /* 0x2e - 1440x900@60Hz RB */
420 1520, 1600, 0, 900, 903, 909, 926, 0,
422 /* 0x2f - 1440x900@60Hz */
424 1672, 1904, 0, 900, 903, 909, 934, 0,
426 /* 0x30 - 1440x900@75Hz */
428 1688, 1936, 0, 900, 903, 909, 942, 0,
430 /* 0x31 - 1440x900@85Hz */
432 1696, 1952, 0, 900, 903, 909, 948, 0,
434 /* 0x32 - 1440x900@120Hz RB */
436 1520, 1600, 0, 900, 903, 909, 953, 0,
438 /* 0x53 - 1600x900@60Hz */
440 1704, 1800, 0, 900, 901, 904, 1000, 0,
442 /* 0x33 - 1600x1200@60Hz */
444 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
446 /* 0x34 - 1600x1200@65Hz */
448 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
450 /* 0x35 - 1600x1200@70Hz */
452 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
454 /* 0x36 - 1600x1200@75Hz */
456 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
458 /* 0x37 - 1600x1200@85Hz */
460 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
462 /* 0x38 - 1600x1200@120Hz RB */
464 1680, 1760, 0, 1200, 1203, 1207, 1271, 0,
466 /* 0x39 - 1680x1050@60Hz RB */
468 1760, 1840, 0, 1050, 1053, 1059, 1080, 0,
470 /* 0x3a - 1680x1050@60Hz */
472 1960, 2240, 0, 1050, 1053, 1059, 1089, 0,
474 /* 0x3b - 1680x1050@75Hz */
476 1976, 2272, 0, 1050, 1053, 1059, 1099, 0,
478 /* 0x3c - 1680x1050@85Hz */
480 1984, 2288, 0, 1050, 1053, 1059, 1105, 0,
482 /* 0x3d - 1680x1050@120Hz RB */
484 1760, 1840, 0, 1050, 1053, 1059, 1112, 0,
486 /* 0x3e - 1792x1344@60Hz */
488 2120, 2448, 0, 1344, 1345, 1348, 1394, 0,
490 /* 0x3f - 1792x1344@75Hz */
492 2104, 2456, 0, 1344, 1345, 1348, 1417, 0,
494 /* 0x40 - 1792x1344@120Hz RB */
496 1872, 1952, 0, 1344, 1347, 1351, 1423, 0,
498 /* 0x41 - 1856x1392@60Hz */
500 2176, 2528, 0, 1392, 1393, 1396, 1439, 0,
502 /* 0x42 - 1856x1392@75Hz */
504 2208, 2560, 0, 1392, 1393, 1396, 1500, 0,
506 /* 0x43 - 1856x1392@120Hz RB */
508 1936, 2016, 0, 1392, 1395, 1399, 1474, 0,
510 /* 0x52 - 1920x1080@60Hz */
512 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
514 /* 0x44 - 1920x1200@60Hz RB */
516 2000, 2080, 0, 1200, 1203, 1209, 1235, 0,
518 /* 0x45 - 1920x1200@60Hz */
520 2256, 2592, 0, 1200, 1203, 1209, 1245, 0,
522 /* 0x46 - 1920x1200@75Hz */
524 2264, 2608, 0, 1200, 1203, 1209, 1255, 0,
526 /* 0x47 - 1920x1200@85Hz */
528 2272, 2624, 0, 1200, 1203, 1209, 1262, 0,
530 /* 0x48 - 1920x1200@120Hz RB */
532 2000, 2080, 0, 1200, 1203, 1209, 1271, 0,
534 /* 0x49 - 1920x1440@60Hz */
536 2256, 2600, 0, 1440, 1441, 1444, 1500, 0,
538 /* 0x4a - 1920x1440@75Hz */
540 2288, 2640, 0, 1440, 1441, 1444, 1500, 0,
542 /* 0x4b - 1920x1440@120Hz RB */
544 2000, 2080, 0, 1440, 1443, 1447, 1525, 0,
546 /* 0x54 - 2048x1152@60Hz */
548 2154, 2250, 0, 1152, 1153, 1156, 1200, 0,
550 /* 0x4c - 2560x1600@60Hz RB */
552 2640, 2720, 0, 1600, 1603, 1609, 1646, 0,
554 /* 0x4d - 2560x1600@60Hz */
556 3032, 3504, 0, 1600, 1603, 1609, 1658, 0,
558 /* 0x4e - 2560x1600@75Hz */
560 3048, 3536, 0, 1600, 1603, 1609, 1672, 0,
562 /* 0x4f - 2560x1600@85Hz */
564 3048, 3536, 0, 1600, 1603, 1609, 1682, 0,
566 /* 0x50 - 2560x1600@120Hz RB */
568 2640, 2720, 0, 1600, 1603, 1609, 1694, 0,
570 /* 0x57 - 4096x2160@60Hz RB */
572 4136, 4176, 0, 2160, 2208, 2216, 2222, 0,
574 /* 0x58 - 4096x2160@59.94Hz RB */
576 4136, 4176, 0, 2160, 2208, 2216, 2222, 0,
591 968, 1056, 0, 600, 601, 605, 628, 0,
594 896, 1024, 0, 600, 601, 603, 625, 0,
597 720, 840, 0, 480, 481, 484, 500, 0,
600 704, 832, 0, 480, 489, 492, 520, 0,
603 768, 864, 0, 480, 483, 486, 525, 0,
606 752, 800, 0, 480, 490, 492, 525, 0,
609 846, 900, 0, 400, 421, 423, 449, 0,
612 846, 900, 0, 400, 412, 414, 449, 0,
615 1440, 1688, 0, 1024, 1025, 1028, 1066, 0,
618 1136, 1312, 0, 768, 769, 772, 800, 0,
621 1184, 1328, 0, 768, 771, 777, 806, 0,
624 1184, 1344, 0, 768, 771, 777, 806, 0,
627 1208, 1264, 0, 768, 768, 776, 817, 0,
630 928, 1152, 0, 624, 625, 628, 667, 0,
633 896, 1056, 0, 600, 601, 604, 625, 0,
636 976, 1040, 0, 600, 637, 643, 666, 0,
639 1344, 1600, 0, 864, 865, 868, 900, 0,
652 { 640, 350, 85, 0 },
653 { 640, 400, 85, 0 },
654 { 720, 400, 85, 0 },
655 { 640, 480, 85, 0 },
656 { 848, 480, 60, 0 },
657 { 800, 600, 85, 0 },
658 { 1024, 768, 85, 0 },
659 { 1152, 864, 75, 0 },
662 { 1280, 768, 60, 0 },
663 { 1280, 768, 75, 0 },
664 { 1280, 768, 85, 0 },
665 { 1280, 960, 60, 0 },
666 { 1280, 960, 85, 0 },
667 { 1280, 1024, 60, 0 },
668 { 1280, 1024, 85, 0 },
670 { 1360, 768, 60, 0 },
672 { 1440, 900, 60, 0 },
673 { 1440, 900, 75, 0 },
674 { 1440, 900, 85, 0 },
676 { 1400, 1050, 60, 0 },
677 { 1400, 1050, 75, 0 },
679 { 1400, 1050, 85, 0 },
681 { 1680, 1050, 60, 0 },
682 { 1680, 1050, 75, 0 },
683 { 1680, 1050, 85, 0 },
684 { 1600, 1200, 60, 0 },
685 { 1600, 1200, 65, 0 },
686 { 1600, 1200, 70, 0 },
688 { 1600, 1200, 75, 0 },
689 { 1600, 1200, 85, 0 },
690 { 1792, 1344, 60, 0 },
691 { 1792, 1344, 75, 0 },
692 { 1856, 1392, 60, 0 },
693 { 1856, 1392, 75, 0 },
695 { 1920, 1200, 60, 0 },
697 { 1920, 1200, 75, 0 },
698 { 1920, 1200, 85, 0 },
699 { 1920, 1440, 60, 0 },
700 { 1920, 1440, 75, 0 },
704 { 1024, 576, 60, 0 },
705 { 1366, 768, 60, 0 },
706 { 1600, 900, 60, 0 },
707 { 1680, 945, 60, 0 },
708 { 1920, 1080, 60, 0 },
709 { 2048, 1152, 60, 0 },
710 { 2048, 1536, 60, 0 },
721 752, 800, 0, 480, 490, 492, 525, 0,
726 798, 858, 0, 480, 489, 495, 525, 0,
731 798, 858, 0, 480, 489, 495, 525, 0,
734 /* 4 - 1280x720@60Hz 16:9 */
735 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390,
736 1430, 1650, 0, 720, 725, 730, 750, 0,
741 2052, 2200, 0, 1080, 1084, 1094, 1125, 0,
747 801, 858, 0, 480, 488, 494, 525, 0,
753 801, 858, 0, 480, 488, 494, 525, 0,
759 801, 858, 0, 240, 244, 247, 262, 0,
765 801, 858, 0, 240, 244, 247, 262, 0,
771 3204, 3432, 0, 480, 488, 494, 525, 0,
777 3204, 3432, 0, 480, 488, 494, 525, 0,
783 3204, 3432, 0, 240, 244, 247, 262, 0,
788 3204, 3432, 0, 240, 244, 247, 262, 0,
793 1596, 1716, 0, 480, 489, 495, 525, 0,
798 1596, 1716, 0, 480, 489, 495, 525, 0,
803 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
808 796, 864, 0, 576, 581, 586, 625, 0,
813 796, 864, 0, 576, 581, 586, 625, 0,
816 /* 19 - 1280x720@50Hz 16:9 */
817 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720,
818 1760, 1980, 0, 720, 725, 730, 750, 0,
823 2492, 2640, 0, 1080, 1084, 1094, 1125, 0,
829 795, 864, 0, 576, 580, 586, 625, 0,
835 795, 864, 0, 576, 580, 586, 625, 0,
841 795, 864, 0, 288, 290, 293, 312, 0,
847 795, 864, 0, 288, 290, 293, 312, 0,
853 3180, 3456, 0, 576, 580, 586, 625, 0,
859 3180, 3456, 0, 576, 580, 586, 625, 0,
865 3180, 3456, 0, 288, 290, 293, 312, 0,
870 3180, 3456, 0, 288, 290, 293, 312, 0,
875 1592, 1728, 0, 576, 581, 586, 625, 0,
880 1592, 1728, 0, 576, 581, 586, 625, 0,
885 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
890 2602, 2750, 0, 1080, 1084, 1089, 1125, 0,
895 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
900 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
905 3192, 3432, 0, 480, 489, 495, 525, 0,
910 3192, 3432, 0, 480, 489, 495, 525, 0,
915 3184, 3456, 0, 576, 581, 586, 625, 0,
920 3184, 3456, 0, 576, 581, 586, 625, 0,
925 2120, 2304, 0, 1080, 1126, 1136, 1250, 0,
931 2492, 2640, 0, 1080, 1084, 1094, 1125, 0,
935 /* 41 - 1280x720@100Hz 16:9 */
936 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720,
937 1760, 1980, 0, 720, 725, 730, 750, 0,
942 796, 864, 0, 576, 581, 586, 625, 0,
947 796, 864, 0, 576, 581, 586, 625, 0,
952 795, 864, 0, 576, 580, 586, 625, 0,
958 795, 864, 0, 576, 580, 586, 625, 0,
964 2052, 2200, 0, 1080, 1084, 1094, 1125, 0,
968 /* 47 - 1280x720@120Hz 16:9 */
969 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390,
970 1430, 1650, 0, 720, 725, 730, 750, 0,
975 798, 858, 0, 480, 489, 495, 525, 0,
980 798, 858, 0, 480, 489, 495, 525, 0,
985 801, 858, 0, 480, 488, 494, 525, 0,
991 801, 858, 0, 480, 488, 494, 525, 0,
997 796, 864, 0, 576, 581, 586, 625, 0,
1002 796, 864, 0, 576, 581, 586, 625, 0,
1007 795, 864, 0, 576, 580, 586, 625, 0,
1013 795, 864, 0, 576, 580, 586, 625, 0,
1019 798, 858, 0, 480, 489, 495, 525, 0,
1024 798, 858, 0, 480, 489, 495, 525, 0,
1029 801, 858, 0, 480, 488, 494, 525, 0,
1035 801, 858, 0, 480, 488, 494, 525, 0,
1039 /* 60 - 1280x720@24Hz 16:9 */
1040 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040,
1041 3080, 3300, 0, 720, 725, 730, 750, 0,
1044 /* 61 - 1280x720@25Hz 16:9 */
1045 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700,
1046 3740, 3960, 0, 720, 725, 730, 750, 0,
1049 /* 62 - 1280x720@30Hz 16:9 */
1050 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040,
1051 3080, 3300, 0, 720, 725, 730, 750, 0,
1056 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
1061 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
1064 /* 65 - 1280x720@24Hz 64:27 */
1065 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040,
1066 3080, 3300, 0, 720, 725, 730, 750, 0,
1069 /* 66 - 1280x720@25Hz 64:27 */
1070 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700,
1071 3740, 3960, 0, 720, 725, 730, 750, 0,
1074 /* 67 - 1280x720@30Hz 64:27 */
1075 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040,
1076 3080, 3300, 0, 720, 725, 730, 750, 0,
1079 /* 68 - 1280x720@50Hz 64:27 */
1080 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720,
1081 1760, 1980, 0, 720, 725, 730, 750, 0,
1084 /* 69 - 1280x720@60Hz 64:27 */
1085 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390,
1086 1430, 1650, 0, 720, 725, 730, 750, 0,
1089 /* 70 - 1280x720@100Hz 64:27 */
1090 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720,
1091 1760, 1980, 0, 720, 725, 730, 750, 0,
1094 /* 71 - 1280x720@120Hz 64:27 */
1095 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390,
1096 1430, 1650, 0, 720, 725, 730, 750, 0,
1101 2602, 2750, 0, 1080, 1084, 1089, 1125, 0,
1106 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
1111 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
1116 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
1121 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
1126 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
1131 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
1134 /* 79 - 1680x720@24Hz 64:27 */
1135 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 3040,
1136 3080, 3300, 0, 720, 725, 730, 750, 0,
1139 /* 80 - 1680x720@25Hz 64:27 */
1140 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2908,
1141 2948, 3168, 0, 720, 725, 730, 750, 0,
1144 /* 81 - 1680x720@30Hz 64:27 */
1145 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2380,
1146 2420, 2640, 0, 720, 725, 730, 750, 0,
1149 /* 82 - 1680x720@50Hz 64:27 */
1150 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 82500, 1680, 1940,
1151 1980, 2200, 0, 720, 725, 730, 750, 0,
1154 /* 83 - 1680x720@60Hz 64:27 */
1155 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 99000, 1680, 1940,
1156 1980, 2200, 0, 720, 725, 730, 750, 0,
1159 /* 84 - 1680x720@100Hz 64:27 */
1160 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 165000, 1680, 1740,
1161 1780, 2000, 0, 720, 725, 730, 825, 0,
1164 /* 85 - 1680x720@120Hz 64:27 */
1165 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 198000, 1680, 1740,
1166 1780, 2000, 0, 720, 725, 730, 825, 0,
1171 3602, 3750, 0, 1080, 1084, 1089, 1100, 0,
1176 3052, 3200, 0, 1080, 1084, 1089, 1125, 0,
1181 3372, 3520, 0, 1080, 1084, 1089, 1125, 0,
1186 3152, 3300, 0, 1080, 1084, 1089, 1125, 0,
1191 2852, 3000, 0, 1080, 1084, 1089, 1100, 0,
1196 2822, 2970, 0, 1080, 1084, 1089, 1250, 0,
1201 3152, 3300, 0, 1080, 1084, 1089, 1250, 0,
1206 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1211 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1216 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1221 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1226 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1231 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1236 5152, 5280, 0, 2160, 2168, 2178, 2250, 0,
1241 4272, 4400, 0, 2160, 2168, 2178, 2250, 0,
1246 5152, 5280, 0, 2160, 2168, 2178, 2250, 0,
1251 4272, 4400, 0, 2160, 2168, 2178, 2250, 0,
1256 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1261 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1266 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1271 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1276 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1279 /* 108 - 1280x720@48Hz 16:9 */
1280 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 90000, 1280, 2240,
1281 2280, 2500, 0, 720, 725, 730, 750, 0,
1284 /* 109 - 1280x720@48Hz 64:27 */
1285 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 90000, 1280, 2240,
1286 2280, 2500, 0, 720, 725, 730, 750, 0,
1289 /* 110 - 1680x720@48Hz 64:27 */
1290 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 99000, 1680, 2490,
1291 2530, 2750, 0, 720, 725, 730, 750, 0,
1296 2602, 2750, 0, 1080, 1084, 1089, 1125, 0,
1301 2602, 2750, 0, 1080, 1084, 1089, 1125, 0,
1306 3602, 3750, 0, 1080, 1084, 1089, 1100, 0,
1311 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1316 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1321 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1326 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1331 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1336 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1341 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1346 7204, 7500, 0, 2160, 2168, 2178, 2200, 0,
1351 6904, 7200, 0, 2160, 2168, 2178, 2200, 0,
1356 5872, 6000, 0, 2160, 2168, 2178, 2200, 0,
1361 5954, 6250, 0, 2160, 2168, 2178, 2475, 0,
1366 6304, 6600, 0, 2160, 2168, 2178, 2250, 0,
1371 5372, 5500, 0, 2160, 2168, 2178, 2250, 0,
1376 6304, 6600, 0, 2160, 2168, 2178, 2250, 0,
1389 5372, 5500, 0, 2160, 2168, 2178, 2250, 0,
1394 10408, 11000, 0, 4320, 4336, 4356, 4500, 0,
1399 10208, 10800, 0, 4320, 4336, 4356, 4400, 0,
1404 8408, 9000, 0, 4320, 4336, 4356, 4400, 0,
1409 10408, 11000, 0, 4320, 4336, 4356, 4500, 0,
1414 10208, 10800, 0, 4320, 4336, 4356, 4400, 0,
1419 8408, 9000, 0, 4320, 4336, 4356, 4400, 0,
1424 9968, 10560, 0, 4320, 4336, 4356, 4500, 0,
1429 8208, 8800, 0, 4320, 4336, 4356, 4500, 0,
1434 10408, 11000, 0, 4320, 4336, 4356, 4500, 0,
1439 10208, 10800, 0, 4320, 4336, 4356, 4400, 0,
1444 8408, 9000, 0, 4320, 4336, 4356, 4400, 0,
1449 10408, 11000, 0, 4320, 4336, 4356, 4500, 0,
1454 10208, 10800, 0, 4320, 4336, 4356, 4400, 0,
1459 8408, 9000, 0, 4320, 4336, 4356, 4400, 0,
1464 9968, 10560, 0, 4320, 4336, 4356, 4500, 0,
1469 8208, 8800, 0, 4320, 4336, 4356, 4500, 0,
1474 11908, 12500, 0, 4320, 4336, 4356, 4950, 0,
1479 12908, 13500, 0, 4320, 4336, 4356, 4400, 0,
1484 10704, 11000, 0, 4320, 4336, 4356, 4500, 0,
1489 11908, 12500, 0, 4320, 4336, 4356, 4950, 0,
1494 12908, 13500, 0, 4320, 4336, 4356, 4400, 0,
1499 10704, 11000, 0, 4320, 4336, 4356, 4500, 0,
1504 12608, 13200, 0, 4320, 4336, 4356, 4500, 0,
1509 10704, 11000, 0, 4320, 4336, 4356, 4500, 0,
1514 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1519 4272, 4400, 0, 2160, 2168, 2178, 2250, 0,
1528 /* 0 - dummy, VICs start at 1 */
1532 3840, 4016, 4104, 4400, 0,
1533 2160, 2168, 2178, 2250, 0,
1538 3840, 4896, 4984, 5280, 0,
1539 2160, 2168, 2178, 2250, 0,
1544 3840, 5116, 5204, 5500, 0,
1545 2160, 2168, 2178, 2250, 0,
1550 4096, 5116, 5204, 5500, 0,
1551 2160, 2168, 2178, 2250, 0,
1559 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00
1568 * Return: 8 if the header is perfect, down to 0 if it's totally wrong.
1572 int i, score = 0; in drm_edid_header_is_valid()
1574 for (i = 0; i < sizeof(edid_header); i++) in drm_edid_header_is_valid()
1585 "Minimum number of valid EDID header bytes (0-8, default 6)");
1592 u8 csum = 0, crc = 0; in drm_edid_block_checksum()
1594 for (i = 0; i < EDID_LENGTH - 1; i++) in drm_edid_block_checksum()
1597 crc = 0x100 - csum; in drm_edid_block_checksum()
1612 if (memchr_inv(in_edid, 0, length)) in drm_edid_is_zero()
1652 * @block: type of block to validate (0 for base, extension otherwise)
1670 if (edid_fixup > 8 || edid_fixup < 0) in drm_edid_block_valid()
1673 if (block == 0) { in drm_edid_block_valid()
1702 if (raw_edid[0] == CEA_EXT) { in drm_edid_block_valid()
1714 switch (raw_edid[0]) { in drm_edid_block_valid()
1715 case 0: /* base */ in drm_edid_block_valid()
1762 for (i = 0; i <= edid->extensions; i++) in drm_edid_is_valid()
1770 #define DDC_SEGMENT_ADDR 0x30
1780 * Return: 0 on success or -1 on failure.
1802 .flags = 0, in drm_do_probe_ddc_edid()
1807 .flags = 0, in drm_do_probe_ddc_edid()
1831 return ret == xfers ? 0 : -1; in drm_do_probe_ddc_edid()
1841 * 0x7e in the EDID is the number of extension blocks. The EDID in connector_bad_edid()
1843 * of 0x7e in the EDID of the _index_ of the last block in the in connector_bad_edid()
1846 last_block = edid[0x7e]; in connector_bad_edid()
1857 for (i = 0; i < num_blocks; i++) { in connector_bad_edid()
1897 * Return: The number of modes added or 0 if we couldn't find any.
1902 int num_modes = 0; in drm_add_override_edid_modes()
1928 return 0; in cea_db_collection_size()
1933 #define CTA_EXT_DB_HF_EEODB 0x78
1959 return 0; in edid_hfeeodb_extension_block_count()
1963 if (cta[0] != CEA_EXT || cta[1] < 3) in edid_hfeeodb_extension_block_count()
1964 return 0; in edid_hfeeodb_extension_block_count()
1968 return 0; in edid_hfeeodb_extension_block_count()
1976 return 0; in edid_hfeeodb_extension_block_count()
1985 return eeodb ? eeodb + 1 : 0; in edid_hfeeodb_block_count()
2013 int i, j = 0, valid_extensions = 0, num_blocks, invalid_blocks = 0; in drm_do_get_edid()
2026 for (i = 0; i < 4; i++) { in drm_do_get_edid()
2027 if (get_edid_block(data, edid, 0, EDID_LENGTH)) in drm_do_get_edid()
2029 if (drm_edid_block_valid(edid, 0, false, in drm_do_get_edid()
2032 if (i == 0 && drm_edid_is_zero(edid, EDID_LENGTH)) { in drm_do_get_edid()
2041 valid_extensions = edid[0x7e]; in drm_do_get_edid()
2042 if (valid_extensions == 0) in drm_do_get_edid()
2050 num_blocks = edid[0x7e] + 1; in drm_do_get_edid()
2055 for (i = 0; i < 4; i++) { in drm_do_get_edid()
2090 connector_bad_edid(connector, edid, edid[0x7e] + 1); in drm_do_get_edid()
2098 for (i = 0; i <= edid[0x7e]; i++) { in drm_do_get_edid()
2108 new[EDID_LENGTH - 1] += new[0x7e] - valid_extensions; in drm_do_get_edid()
2109 new[0x7e] = valid_extensions; in drm_do_get_edid()
2127 int i, j = 0, valid_extensions = 0; in drm_do_get_edid()
2139 for (i = 0; i < 4; i++) { in drm_do_get_edid()
2140 if (get_edid_block(data, edid, 0, EDID_LENGTH)) in drm_do_get_edid()
2142 if (drm_edid_block_valid(edid, 0, false, in drm_do_get_edid()
2145 if (i == 0 && drm_edid_is_zero(edid, EDID_LENGTH)) { in drm_do_get_edid()
2154 valid_extensions = edid[0x7e]; in drm_do_get_edid()
2155 if (valid_extensions == 0) in drm_do_get_edid()
2163 for (j = 1; j <= edid[0x7e]; j++) { in drm_do_get_edid()
2166 for (i = 0; i < 4; i++) { in drm_do_get_edid()
2177 if (valid_extensions != edid[0x7e]) { in drm_do_get_edid()
2180 connector_bad_edid(connector, edid, edid[0x7e] + 1); in drm_do_get_edid()
2188 for (i = 0; i <= edid[0x7e]; i++) { in drm_do_get_edid()
2198 new[EDID_LENGTH - 1] += new[0x7e] - valid_extensions; in drm_do_get_edid()
2199 new[0x7e] = valid_extensions; in drm_do_get_edid()
2227 return (drm_do_probe_ddc_edid(adapter, &out, 0, 1) == 0); in drm_probe_ddc()
2308 edid_vendor[0] = ((edid->mfg_id[0] & 0x7c) >> 2) + '@'; in edid_vendor()
2309 edid_vendor[1] = (((edid->mfg_id[0] & 0x3) << 3) | in edid_vendor()
2310 ((edid->mfg_id[1] & 0xe0) >> 5)) + '@'; in edid_vendor()
2311 edid_vendor[2] = (edid->mfg_id[1] & 0x1f) + '@'; in edid_vendor()
2327 for (i = 0; i < ARRAY_SIZE(edid_quirk_list); i++) { in edid_get_quirks()
2335 return 0; in edid_get_quirks()
2353 int target_refresh = 0; in edid_fixup_preferred()
2417 for (i = 0; i < ARRAY_SIZE(drm_dmt_modes); i++) { in drm_mode_find_dmt()
2438 return d[0] == 0x00 && d[1] == 0x00 && in is_display_descriptor()
2439 d[2] == 0x00 && d[3] == tag; in is_display_descriptor()
2444 return d[0] != 0x00 || d[1] != 0x00; in is_detailed_timing_descriptor()
2453 u8 d = ext[0x02]; in cea_for_each_detailed_block()
2460 for (i = 0; i < n; i++) in cea_for_each_detailed_block()
2467 unsigned int i, n = min((int)ext[0x02], 6); in vtb_for_each_detailed_block()
2470 if (ext[0x01] != 1) in vtb_for_each_detailed_block()
2473 for (i = 0; i < n; i++) in vtb_for_each_detailed_block()
2486 for (i = 0; i < EDID_DETAILED_TIMINGS; i++) in drm_for_each_detailed_block()
2489 for (i = 1; i <= raw_edid[0x7e]; i++) { in drm_for_each_detailed_block()
2513 if (r[15] & 0x10) in is_rb()
2528 return ((edid->input & DRM_EDID_INPUT_DIGITAL) != 0); in drm_monitor_supports_rb()
2539 if (r[10] == 0x02) in find_gtf2()
2550 return r ? (r[12] * 2) : 0; in drm_gtf2_hbreak()
2559 return r ? r[13] : 0; in drm_gtf2_2c()
2568 return r ? (r[15] << 8) + r[14] : 0; in drm_gtf2_m()
2577 return r ? r[16] : 0; in drm_gtf2_k()
2586 return r ? r[17] : 0; in drm_gtf2_2j()
2607 * 0 is reserved. The spec says 0x01 fill for unused timings. Some old
2608 * monitors fill with ascii space (0x20) instead.
2613 return (a == 0x00 && b == 0x00) || in bad_std_timing()
2614 (a == 0x01 && b == 0x01) || in bad_std_timing()
2615 (a == 0x20 && b == 0x20); in bad_std_timing()
2620 if (mode->htotal <= 0) in drm_mode_hsync()
2621 return 0; in drm_mode_hsync()
2657 if (aspect_ratio == 0) { in drm_mode_std()
2690 mode = drm_cvt_mode(dev, 1366, 768, vrefresh_rate, 0, 0, in drm_mode_std()
2716 mode = drm_gtf_mode(dev, hsize, vsize, vrefresh_rate, 0, 0); in drm_mode_std()
2724 mode = drm_gtf_mode(dev, hsize, vsize, vrefresh_rate, 0, 0); in drm_mode_std()
2730 vrefresh_rate, 0, 0, in drm_mode_std()
2738 mode = drm_cvt_mode(dev, hsize, vsize, vrefresh_rate, 0, 0, in drm_mode_std()
2773 for (i = 0; i < ARRAY_SIZE(cea_interlaced); i++) { in drm_mode_do_interlace_quirk()
2804 unsigned hactive = (pt->hactive_hblank_hi & 0xf0) << 4 | pt->hactive_lo; in drm_mode_detailed()
2805 unsigned vactive = (pt->vactive_vblank_hi & 0xf0) << 4 | pt->vactive_lo; in drm_mode_detailed()
2806 unsigned hblank = (pt->hactive_hblank_hi & 0xf) << 8 | pt->hblank_lo; in drm_mode_detailed()
2807 unsigned vblank = (pt->vactive_vblank_hi & 0xf) << 8 | pt->vblank_lo; in drm_mode_detailed()
2808 unsigned hsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc0) << 2 | pt->hsync_offset_lo; in drm_mode_detailed()
2809 …unsigned hsync_pulse_width = (pt->hsync_vsync_offset_pulse_width_hi & 0x30) << 4 | pt->hsync_pulse… in drm_mode_detailed()
2810 …unsigned vsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc) << 2 | pt->vsync_offset_puls… in drm_mode_detailed()
2811 …se_width = (pt->hsync_vsync_offset_pulse_width_hi & 0x3) << 4 | (pt->vsync_offset_pulse_width_lo &… in drm_mode_detailed()
2877 mode->width_mm = pt->width_mm_lo | (pt->width_height_mm_hi & 0xf0) << 4; in drm_mode_detailed()
2878 mode->height_mm = pt->height_mm_lo | (pt->width_height_mm_hi & 0xf) << 8; in drm_mode_detailed()
2904 hmin += ((t[4] & 0x04) ? 255 : 0); in mode_in_hsync_range()
2907 hmax += ((t[4] & 0x08) ? 255 : 0); in mode_in_hsync_range()
2921 vmin += ((t[4] & 0x01) ? 255 : 0); in mode_in_vsync_range()
2924 vmax += ((t[4] & 0x02) ? 255 : 0); in mode_in_vsync_range()
2934 if (t[9] == 0 || t[9] == 255) in range_pixel_clock()
2935 return 0; in range_pixel_clock()
2938 if (edid->revision >= 4 && t[10] == 0x04) in range_pixel_clock()
2963 if (edid->revision >= 4 && t[10] == 0x04) in mode_in_range()
2964 if (t[13] && mode->hdisplay > 8 * (t[13] + (256 * (t[12]&0x3)))) in mode_in_range()
2995 int i, modes = 0; in drm_dmt_modes_for_range()
2999 for (i = 0; i < ARRAY_SIZE(drm_dmt_modes); i++) { in drm_dmt_modes_for_range()
3030 int i, modes = 0; in drm_gtf_modes_for_range()
3034 for (i = 0; i < ARRAY_SIZE(extra_modes); i++) { in drm_gtf_modes_for_range()
3037 newmode = drm_gtf_mode(dev, m->w, m->h, m->r, 0, 0); in drm_gtf_modes_for_range()
3059 int i, modes = 0; in drm_cvt_modes_for_range()
3064 for (i = 0; i < ARRAY_SIZE(extra_modes); i++) { in drm_cvt_modes_for_range()
3067 newmode = drm_cvt_mode(dev, m->w, m->h, m->r, rb, 0, 0); in drm_cvt_modes_for_range()
3103 case 0x02: /* secondary gtf, XXX could do more */ in do_inferred_modes()
3104 case 0x00: /* default gtf */ in do_inferred_modes()
3109 case 0x04: /* cvt, only in 1.4+ */ in do_inferred_modes()
3117 case 0x01: /* just the ranges, no formula */ in do_inferred_modes()
3131 if (version_greater(edid, 1, 0)) in add_inferred_modes()
3141 int i, j, m, modes = 0; in drm_est3_modes()
3145 for (i = 0; i < 6; i++) { in drm_est3_modes()
3146 for (j = 7; j >= 0; j--) { in drm_est3_modes()
3192 ((edid->established_timings.mfg_rsvd & 0x80) << 9); in add_established_modes()
3193 int i, modes = 0; in add_established_modes()
3199 for (i = 0; i <= EDID_EST_TIMINGS; i++) { in add_established_modes()
3211 if (version_greater(edid, 1, 0)) in add_established_modes()
3230 for (i = 0; i < 6; i++) { in do_standard_modes()
3253 int i, modes = 0; in add_standard_modes()
3259 for (i = 0; i < EDID_STD_TIMINGS; i++) { in add_standard_modes()
3270 if (version_greater(edid, 1, 0)) in add_standard_modes()
3282 int i, j, modes = 0; in drm_cvt_modes()
3287 const u8 empty[3] = { 0, 0, 0 }; in drm_cvt_modes()
3289 for (i = 0; i < 4; i++) { in drm_cvt_modes()
3297 height = (cvt->code[0] + ((cvt->code[1] & 0xf0) << 4) + 1) * 2; in drm_cvt_modes()
3298 switch (cvt->code[1] & 0x0c) { in drm_cvt_modes()
3301 case 0x00: in drm_cvt_modes()
3304 case 0x04: in drm_cvt_modes()
3307 case 0x08: in drm_cvt_modes()
3310 case 0x0c: in drm_cvt_modes()
3318 rates[j], j == 0, in drm_cvt_modes()
3416 #define AUDIO_BLOCK 0x01
3417 #define VIDEO_BLOCK 0x02
3418 #define VENDOR_BLOCK 0x03
3419 #define SPEAKER_BLOCK 0x04
3420 #define HDR_STATIC_METADATA_BLOCK 0x6
3421 #define USE_EXTENDED_TAG 0x07
3422 #define EXT_VIDEO_CAPABILITY_BLOCK 0x00
3423 #define EXT_VIDEO_DATA_BLOCK_420 0x0E
3424 #define EXT_VIDEO_CAP_BLOCK_Y420CMDB 0x0F
3442 if (edid == NULL || edid->extensions == 0) in drm_find_edid_extension()
3454 if (edid_ext[0] == ext_id) in drm_find_edid_extension()
3473 if (edid == NULL || edid->extensions == 0) in drm_find_edid_extension()
3479 if (edid_ext[0] == ext_id) in drm_find_edid_extension()
3527 ext_index = 0; in drm_find_cea_extension()
3533 ext_index = 0; in drm_find_cea_extension()
3583 if (drm_mode_vrefresh(cea_mode) % 6 != 0) in cea_mode_alternate_clock()
3641 return 0; in drm_match_cea_mode_clock_tolerance()
3664 return 0; in drm_match_cea_mode_clock_tolerance()
3671 * Return: The CEA Video ID (VIC) of the mode or 0 if it isn't a CEA-861
3680 return 0; in drm_match_cea_mode()
3703 return 0; in drm_match_cea_mode()
3744 return 0; in drm_match_hdmi_mode_clock_tolerance()
3765 return 0; in drm_match_hdmi_mode_clock_tolerance()
3774 * Returns the HDMI Video ID (VIC) of the mode or 0 if it isn't one.
3782 return 0; in drm_match_hdmi_mode()
3800 return 0; in drm_match_hdmi_mode()
3805 return vic > 0 && vic < ARRAY_SIZE(edid_4k_modes); in drm_valid_hdmi_vic()
3814 int modes = 0; in add_alternate_cea_modes()
3818 return 0; in add_alternate_cea_modes()
3882 /* 0-6 bit vic, 7th bit native mode indicator */ in svd_to_vic()
3926 int modes = 0, i; in do_y420vdb_modes()
3931 for (i = 0; i < svds_len; i++) { in do_y420vdb_modes()
3946 if (modes > 0) in do_y420vdb_modes()
4001 int i, modes = 0; in do_cea_modes()
4004 for (i = 0; i < len; i++) { in do_cea_modes()
4014 * For example, if the bit 0 in bitmap is set, in do_cea_modes()
4064 int modes = 0, i; in add_hdmi_mandatory_stereo_modes()
4069 for (i = 0; i < ARRAY_SIZE(stereo_mandatory_modes); i++) { in add_hdmi_mandatory_stereo_modes()
4100 return 0; in add_hdmi_mode()
4105 return 0; in add_hdmi_mode()
4116 int modes = 0; in add_3d_struct_modes()
4118 if (structure & (1 << 0)) { in add_3d_struct_modes()
4166 int modes = 0, offset = 0, i, multi_present = 0, multi_len; in do_hdmi_vsdb_modes()
4167 u8 vic_len, hdmi_3d_len = 0; in do_hdmi_vsdb_modes()
4197 multi_present = (db[8 + offset] & 0x60) >> 5; in do_hdmi_vsdb_modes()
4202 hdmi_3d_len = db[8 + offset] & 0x1f; in do_hdmi_vsdb_modes()
4204 for (i = 0; i < vic_len && len >= (9 + offset + i); i++) { in do_hdmi_vsdb_modes()
4217 multi_len = 0; in do_hdmi_vsdb_modes()
4233 mask = 0xffff; in do_hdmi_vsdb_modes()
4235 for (i = 0; i < 16; i++) { in do_hdmi_vsdb_modes()
4246 for (i = 0; i < (hdmi_3d_len - multi_len); i++) { in do_hdmi_vsdb_modes()
4249 unsigned int newflag = 0; in do_hdmi_vsdb_modes()
4252 detail_present = ((db[8 + offset + i] & 0x0f) > 7); in do_hdmi_vsdb_modes()
4261 switch (db[8 + offset + i] & 0x0f) { in do_hdmi_vsdb_modes()
4262 case 0: in do_hdmi_vsdb_modes()
4275 if (newflag != 0) { in do_hdmi_vsdb_modes()
4293 if (modes > 0) in do_hdmi_vsdb_modes()
4301 return db[0] & 0x1f; in cea_db_payload_len()
4313 return db[0] >> 5; in cea_db_tag()
4324 * given as an example is 0. in cea_revision()
4349 if (cea[0] == DATA_BLOCK_CTA) { in cea_db_offsets()
4356 } else if (cea[0] == CEA_EXT) { in cea_db_offsets()
4360 if (*end == 0) in cea_db_offsets()
4368 return 0; in cea_db_offsets()
4453 u64 map = 0; in drm_parse_y420cmdb_bitmap()
4455 if (map_len == 0) { in drm_parse_y420cmdb_bitmap()
4464 * from VDB can support YCBCR420 output too. So if bit=0 is in drm_parse_y420cmdb_bitmap()
4477 for (count = 0; count < map_len; count++) in drm_parse_y420cmdb_bitmap()
4493 u8 dbl, hdmi_len, video_len = 0; in add_cea_modes()
4494 int i, count = 0, modes = 0; in add_cea_modes()
4495 int ext_index = 0; in add_cea_modes()
4502 for (i = 0; i < count; i++) { in add_cea_modes()
4510 return 0; in add_cea_modes()
4526 /* Add 4:2:0(only) modes present in EDID */ in add_cea_modes()
4553 u8 dbl, hdmi_len, video_len = 0; in add_cea_modes()
4554 int modes = 0; in add_cea_modes()
4560 return 0; in add_cea_modes()
4576 /* Add 4:2:0(only) modes present in EDID */ in add_cea_modes()
4696 connector->latency_present[0] = db[8] >> 7; in drm_parse_hdmi_vsdb_audio()
4700 connector->video_latency[0] = db[9]; in drm_parse_hdmi_vsdb_audio()
4702 connector->audio_latency[0] = db[10]; in drm_parse_hdmi_vsdb_audio()
4711 connector->latency_present[0], in drm_parse_hdmi_vsdb_audio()
4713 connector->video_latency[0], in drm_parse_hdmi_vsdb_audio()
4715 connector->audio_latency[0], in drm_parse_hdmi_vsdb_audio()
4734 return 0; in get_monitor_name()
4737 for (mnl = 0; edid_name && mnl < 13; mnl++) { in get_monitor_name()
4738 if (edid_name[mnl] == 0x0a) in get_monitor_name()
4759 if (bufsize <= 0) in drm_edid_get_monitor_name()
4764 name[name_length] = '\0'; in drm_edid_get_monitor_name()
4770 memset(connector->eld, 0, sizeof(connector->eld)); in clear_eld()
4772 connector->latency_present[0] = false; in clear_eld()
4774 connector->video_latency[0] = 0; in clear_eld()
4775 connector->audio_latency[0] = 0; in clear_eld()
4776 connector->video_latency[1] = 0; in clear_eld()
4777 connector->audio_latency[1] = 0; in clear_eld()
4793 int total_sad_count = 0; in drm_edid_to_eld()
4816 eld[DRM_ELD_MANUFACTURER_NAME0] = edid->mfg_id[0]; in drm_edid_to_eld()
4818 eld[DRM_ELD_PRODUCT_CODE0] = edid->prod_code[0]; in drm_edid_to_eld()
4826 start = 0; in drm_edid_to_eld()
4827 end = 0; in drm_edid_to_eld()
4886 int count = 0; in drm_edid_to_sad()
4893 return 0; in drm_edid_to_sad()
4898 return 0; in drm_edid_to_sad()
4918 for (j = 0; j < count; j++) { in drm_edid_to_sad()
4921 (*sads)[j].format = (sad[0] & 0x78) >> 3; in drm_edid_to_sad()
4922 (*sads)[j].channels = sad[0] & 0x7; in drm_edid_to_sad()
4923 (*sads)[j].freq = sad[1] & 0x7F; in drm_edid_to_sad()
4948 int count = 0; in drm_edid_to_speaker_allocation()
4955 return 0; in drm_edid_to_speaker_allocation()
4960 return 0; in drm_edid_to_speaker_allocation()
4994 * Return: The HDMI/DP sink's audio-video sync delay in milliseconds or 0 if
5003 if (!connector->latency_present[0]) in drm_av_sync_delay()
5004 return 0; in drm_av_sync_delay()
5006 i = 0; in drm_av_sync_delay()
5015 return 0; in drm_av_sync_delay()
5019 * Treat unknown latency as 0ms. in drm_av_sync_delay()
5026 return max(v - a, 0); in drm_av_sync_delay()
5090 has_audio = (edid_ext[0] == CEA_EXT && in drm_detect_monitor_audio()
5091 (edid_ext[3] & EDID_BASIC_AUDIO) != 0); in drm_detect_monitor_audio()
5106 (edid_ext[i + j] >> 3) & 0xf); in drm_detect_monitor_audio()
5139 DRM_DEBUG_KMS("CEA VCDB 0x%02x\n", db[2]); in drm_parse_vcdb()
5174 case 0: in drm_get_max_frl_rate()
5176 *max_lanes = 0; in drm_get_max_frl_rate()
5177 *max_rate_per_lane = 0; in drm_get_max_frl_rate()
5200 if (hf_vsdb[6] & 0x80) { in drm_parse_hdmi_forum_vsdb()
5202 if (hf_vsdb[6] & 0x40) in drm_parse_hdmi_forum_vsdb()
5230 if ((hf_vsdb[6] & 0x8)) in drm_parse_hdmi_forum_vsdb()
5259 hdmi_dsc->bpc_supported = 0; in drm_parse_hdmi_forum_vsdb()
5296 case 0: in drm_parse_hdmi_forum_vsdb()
5298 hdmi_dsc->max_slices = 0; in drm_parse_hdmi_forum_vsdb()
5299 hdmi_dsc->clk_per_slice = 0; in drm_parse_hdmi_forum_vsdb()
5312 unsigned int dc_bpc = 0; in drm_parse_hdmi_deep_color_info()
5341 if (dc_bpc == 0) { in drm_parse_hdmi_deep_color_info()
5476 info->width_mm = 0; in drm_reset_display_info()
5477 info->height_mm = 0; in drm_reset_display_info()
5479 info->bpc = 0; in drm_reset_display_info()
5480 info->color_formats = 0; in drm_reset_display_info()
5481 info->cea_rev = 0; in drm_reset_display_info()
5482 info->max_tmds_clock = 0; in drm_reset_display_info()
5487 memset(&info->hdmi, 0, sizeof(info->hdmi)); in drm_reset_display_info()
5489 info->non_desktop = 0; in drm_reset_display_info()
5490 memset(&info->monitor_range, 0, sizeof(info->monitor_range)); in drm_reset_display_info()
5526 if (info->bpc == 0 && edid->revision == 3 && in drm_add_display_info()
5558 info->bpc = 0; in drm_add_display_info()
5575 u8 csum = 0; in validate_displayid()
5580 DRM_DEBUG_KMS("base revision 0x%x, length %d, %d %d\n", in validate_displayid()
5588 for (i = 0; i < dispid_length; i++) in validate_displayid()
5595 return 0; in validate_displayid()
5602 unsigned pixel_clock = (timings->pixel_clock[0] | in drm_mode_displayid_detailed()
5605 unsigned hactive = (timings->hactive[0] | timings->hactive[1] << 8) + 1; in drm_mode_displayid_detailed()
5606 unsigned hblank = (timings->hblank[0] | timings->hblank[1] << 8) + 1; in drm_mode_displayid_detailed()
5607 unsigned hsync = (timings->hsync[0] | (timings->hsync[1] & 0x7f) << 8) + 1; in drm_mode_displayid_detailed()
5608 unsigned hsync_width = (timings->hsw[0] | timings->hsw[1] << 8) + 1; in drm_mode_displayid_detailed()
5609 unsigned vactive = (timings->vactive[0] | timings->vactive[1] << 8) + 1; in drm_mode_displayid_detailed()
5610 unsigned vblank = (timings->vblank[0] | timings->vblank[1] << 8) + 1; in drm_mode_displayid_detailed()
5611 unsigned vsync = (timings->vsync[0] | (timings->vsync[1] & 0x7f) << 8) + 1; in drm_mode_displayid_detailed()
5612 unsigned vsync_width = (timings->vsw[0] | timings->vsw[1] << 8) + 1; in drm_mode_displayid_detailed()
5613 bool hsync_positive = (timings->hsync[1] >> 7) & 0x1; in drm_mode_displayid_detailed()
5614 bool vsync_positive = (timings->vsync[1] >> 7) & 0x1; in drm_mode_displayid_detailed()
5631 mode->flags = 0; in drm_mode_displayid_detailed()
5636 if (timings->flags & 0x80) in drm_mode_displayid_detailed()
5650 int num_modes = 0; in add_displayid_detailed_1_modes()
5653 return 0; in add_displayid_detailed_1_modes()
5656 for (i = 0; i < num_timings; i++) { in add_displayid_detailed_1_modes()
5675 int num_modes = 0; in add_displayid_detailed_modes()
5676 int ext_index = 0; in add_displayid_detailed_modes()
5706 * Return: The number of modes added or 0 if we couldn't find any.
5710 int num_modes = 0; in drm_add_edid_modes()
5715 return 0; in drm_add_edid_modes()
5721 return 0; in drm_add_edid_modes()
5785 * Return: The number of modes added or 0 if we couldn't find any.
5790 int i, count, num_modes = 0; in drm_add_modes_noedid()
5795 if (hdisplay < 0) in drm_add_modes_noedid()
5796 hdisplay = 0; in drm_add_modes_noedid()
5797 if (vdisplay < 0) in drm_add_modes_noedid()
5798 vdisplay = 0; in drm_add_modes_noedid()
5800 for (i = 0; i < count; i++) { in drm_add_modes_noedid()
5871 * Return: 0 on success or a negative error code on failure.
5902 if (err < 0) in drm_hdmi_infoframe_set_hdr_metadata()
5928 return 0; in drm_hdmi_infoframe_set_hdr_metadata()
5939 return 0; in drm_mode_hdmi_vic()
5943 return 0; in drm_mode_hdmi_vic()
5960 return 0; in drm_mode_cea_vic()
5970 return 0; in drm_mode_cea_vic()
5982 * Return: 0 on success or a negative error code on failure.
6011 frame->itc = 0; in drm_hdmi_avi_infoframe_from_display_mode()
6049 return 0; in drm_hdmi_avi_infoframe_from_display_mode()
6054 #define FULL_COLORIMETRY_MASK 0x1FF
6055 #define NORMAL_COLORIMETRY_MASK 0x3
6056 #define EXTENDED_COLORIMETRY_MASK 0x7
6057 #define EXTENDED_ACE_COLORIMETRY_MASK 0xF
6059 #define C(x) ((x) << 0)
6063 #define HDMI_COLORIMETRY_NO_DATA 0x0
6064 #define HDMI_COLORIMETRY_SMPTE_170M_YCC (C(1) | EC(0) | ACE(0))
6065 #define HDMI_COLORIMETRY_BT709_YCC (C(2) | EC(0) | ACE(0))
6066 #define HDMI_COLORIMETRY_XVYCC_601 (C(3) | EC(0) | ACE(0))
6067 #define HDMI_COLORIMETRY_XVYCC_709 (C(3) | EC(1) | ACE(0))
6068 #define HDMI_COLORIMETRY_SYCC_601 (C(3) | EC(2) | ACE(0))
6069 #define HDMI_COLORIMETRY_OPYCC_601 (C(3) | EC(3) | ACE(0))
6070 #define HDMI_COLORIMETRY_OPRGB (C(3) | EC(4) | ACE(0))
6071 #define HDMI_COLORIMETRY_BT2020_CYCC (C(3) | EC(5) | ACE(0))
6072 #define HDMI_COLORIMETRY_BT2020_RGB (C(3) | EC(6) | ACE(0))
6073 #define HDMI_COLORIMETRY_BT2020_YCC (C(3) | EC(6) | ACE(0))
6074 #define HDMI_COLORIMETRY_DCI_P3_RGB_D65 (C(3) | EC(7) | ACE(0))
6147 * default RGB quantization range for the mode, even when QS=0. in drm_hdmi_avi_infoframe_quant_range()
6159 * (e.g., when Limited Range RGB, set YQ=0 or when Full Range RGB, in drm_hdmi_avi_infoframe_quant_range()
6233 * Return: 0 on success or a negative error code on failure.
6255 if (err < 0) in drm_hdmi_vendor_infoframe_from_display_mode()
6260 * (ie.vic==0 and s3d_struct==0) we will still send it if we in drm_hdmi_vendor_infoframe_from_display_mode()
6270 return 0; in drm_hdmi_vendor_infoframe_from_display_mode()
6283 w = tile->tile_size[0] | tile->tile_size[1] << 8; in drm_parse_tiled_block()
6286 num_v_tile = (tile->topo[0] & 0xf) | (tile->topo[2] & 0x30); in drm_parse_tiled_block()
6287 num_h_tile = (tile->topo[0] >> 4) | ((tile->topo[2] >> 2) & 0x30); in drm_parse_tiled_block()
6288 tile_v_loc = (tile->topo[1] & 0xf) | ((tile->topo[2] & 0x3) << 4); in drm_parse_tiled_block()
6289 tile_h_loc = (tile->topo[1] >> 4) | (((tile->topo[2] >> 2) & 0x3) << 4); in drm_parse_tiled_block()
6292 if (tile->tile_cap & 0x80) in drm_parse_tiled_block()
6302 DRM_DEBUG_KMS("tile cap 0x%x\n", tile->tile_cap); in drm_parse_tiled_block()
6306 DRM_DEBUG_KMS("vend %c%c%c\n", tile->topology_id[0], tile->topology_id[1], tile->topology_id[2]); in drm_parse_tiled_block()
6333 DRM_DEBUG_KMS("block id 0x%x, rev %d, len %d\n", in drm_displayid_parse_tiled()
6341 DRM_DEBUG_KMS("found DisplayID tag 0x%x, unhandled\n", block->tag); in drm_displayid_parse_tiled()
6351 int ext_index = 0; in drm_update_tile_info()