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()
1943 int i, j = 0, valid_extensions = 0; in drm_do_get_edid()
1955 for (i = 0; i < 4; i++) { in drm_do_get_edid()
1956 if (get_edid_block(data, edid, 0, EDID_LENGTH)) in drm_do_get_edid()
1958 if (drm_edid_block_valid(edid, 0, false, in drm_do_get_edid()
1961 if (i == 0 && drm_edid_is_zero(edid, EDID_LENGTH)) { in drm_do_get_edid()
1970 valid_extensions = edid[0x7e]; in drm_do_get_edid()
1971 if (valid_extensions == 0) in drm_do_get_edid()
1979 for (j = 1; j <= edid[0x7e]; j++) { in drm_do_get_edid()
1982 for (i = 0; i < 4; i++) { in drm_do_get_edid()
1993 if (valid_extensions != edid[0x7e]) { in drm_do_get_edid()
1996 connector_bad_edid(connector, edid, edid[0x7e] + 1); in drm_do_get_edid()
2004 for (i = 0; i <= edid[0x7e]; i++) { in drm_do_get_edid()
2014 new[EDID_LENGTH - 1] += new[0x7e] - valid_extensions; in drm_do_get_edid()
2015 new[0x7e] = valid_extensions; in drm_do_get_edid()
2042 return (drm_do_probe_ddc_edid(adapter, &out, 0, 1) == 0); in drm_probe_ddc()
2123 edid_vendor[0] = ((edid->mfg_id[0] & 0x7c) >> 2) + '@'; in edid_vendor()
2124 edid_vendor[1] = (((edid->mfg_id[0] & 0x3) << 3) | in edid_vendor()
2125 ((edid->mfg_id[1] & 0xe0) >> 5)) + '@'; in edid_vendor()
2126 edid_vendor[2] = (edid->mfg_id[1] & 0x1f) + '@'; in edid_vendor()
2142 for (i = 0; i < ARRAY_SIZE(edid_quirk_list); i++) { in edid_get_quirks()
2150 return 0; in edid_get_quirks()
2168 int target_refresh = 0; in edid_fixup_preferred()
2232 for (i = 0; i < ARRAY_SIZE(drm_dmt_modes); i++) { in drm_mode_find_dmt()
2253 return d[0] == 0x00 && d[1] == 0x00 && in is_display_descriptor()
2254 d[2] == 0x00 && d[3] == tag; in is_display_descriptor()
2259 return d[0] != 0x00 || d[1] != 0x00; in is_detailed_timing_descriptor()
2268 u8 d = ext[0x02]; in cea_for_each_detailed_block()
2275 for (i = 0; i < n; i++) in cea_for_each_detailed_block()
2282 unsigned int i, n = min((int)ext[0x02], 6); in vtb_for_each_detailed_block()
2285 if (ext[0x01] != 1) in vtb_for_each_detailed_block()
2288 for (i = 0; i < n; i++) in vtb_for_each_detailed_block()
2301 for (i = 0; i < EDID_DETAILED_TIMINGS; i++) in drm_for_each_detailed_block()
2304 for (i = 1; i <= raw_edid[0x7e]; i++) { in drm_for_each_detailed_block()
2328 if (r[15] & 0x10) in is_rb()
2343 return ((edid->input & DRM_EDID_INPUT_DIGITAL) != 0); in drm_monitor_supports_rb()
2354 if (r[10] == 0x02) in find_gtf2()
2365 return r ? (r[12] * 2) : 0; in drm_gtf2_hbreak()
2374 return r ? r[13] : 0; in drm_gtf2_2c()
2383 return r ? (r[15] << 8) + r[14] : 0; in drm_gtf2_m()
2392 return r ? r[16] : 0; in drm_gtf2_k()
2401 return r ? r[17] : 0; in drm_gtf2_2j()
2422 * 0 is reserved. The spec says 0x01 fill for unused timings. Some old
2423 * monitors fill with ascii space (0x20) instead.
2428 return (a == 0x00 && b == 0x00) || in bad_std_timing()
2429 (a == 0x01 && b == 0x01) || in bad_std_timing()
2430 (a == 0x20 && b == 0x20); in bad_std_timing()
2435 if (mode->htotal <= 0) in drm_mode_hsync()
2436 return 0; in drm_mode_hsync()
2472 if (aspect_ratio == 0) { in drm_mode_std()
2505 mode = drm_cvt_mode(dev, 1366, 768, vrefresh_rate, 0, 0, in drm_mode_std()
2531 mode = drm_gtf_mode(dev, hsize, vsize, vrefresh_rate, 0, 0); in drm_mode_std()
2539 mode = drm_gtf_mode(dev, hsize, vsize, vrefresh_rate, 0, 0); in drm_mode_std()
2545 vrefresh_rate, 0, 0, in drm_mode_std()
2553 mode = drm_cvt_mode(dev, hsize, vsize, vrefresh_rate, 0, 0, in drm_mode_std()
2588 for (i = 0; i < ARRAY_SIZE(cea_interlaced); i++) { in drm_mode_do_interlace_quirk()
2619 unsigned hactive = (pt->hactive_hblank_hi & 0xf0) << 4 | pt->hactive_lo; in drm_mode_detailed()
2620 unsigned vactive = (pt->vactive_vblank_hi & 0xf0) << 4 | pt->vactive_lo; in drm_mode_detailed()
2621 unsigned hblank = (pt->hactive_hblank_hi & 0xf) << 8 | pt->hblank_lo; in drm_mode_detailed()
2622 unsigned vblank = (pt->vactive_vblank_hi & 0xf) << 8 | pt->vblank_lo; in drm_mode_detailed()
2623 unsigned hsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc0) << 2 | pt->hsync_offset_lo; in drm_mode_detailed()
2624 …unsigned hsync_pulse_width = (pt->hsync_vsync_offset_pulse_width_hi & 0x30) << 4 | pt->hsync_pulse… in drm_mode_detailed()
2625 …unsigned vsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc) << 2 | pt->vsync_offset_puls… in drm_mode_detailed()
2626 …se_width = (pt->hsync_vsync_offset_pulse_width_hi & 0x3) << 4 | (pt->vsync_offset_pulse_width_lo &… in drm_mode_detailed()
2692 mode->width_mm = pt->width_mm_lo | (pt->width_height_mm_hi & 0xf0) << 4; in drm_mode_detailed()
2693 mode->height_mm = pt->height_mm_lo | (pt->width_height_mm_hi & 0xf) << 8; in drm_mode_detailed()
2719 hmin += ((t[4] & 0x04) ? 255 : 0); in mode_in_hsync_range()
2722 hmax += ((t[4] & 0x08) ? 255 : 0); in mode_in_hsync_range()
2736 vmin += ((t[4] & 0x01) ? 255 : 0); in mode_in_vsync_range()
2739 vmax += ((t[4] & 0x02) ? 255 : 0); in mode_in_vsync_range()
2749 if (t[9] == 0 || t[9] == 255) in range_pixel_clock()
2750 return 0; in range_pixel_clock()
2753 if (edid->revision >= 4 && t[10] == 0x04) in range_pixel_clock()
2778 if (edid->revision >= 4 && t[10] == 0x04) in mode_in_range()
2779 if (t[13] && mode->hdisplay > 8 * (t[13] + (256 * (t[12]&0x3)))) in mode_in_range()
2810 int i, modes = 0; in drm_dmt_modes_for_range()
2814 for (i = 0; i < ARRAY_SIZE(drm_dmt_modes); i++) { in drm_dmt_modes_for_range()
2845 int i, modes = 0; in drm_gtf_modes_for_range()
2849 for (i = 0; i < ARRAY_SIZE(extra_modes); i++) { in drm_gtf_modes_for_range()
2852 newmode = drm_gtf_mode(dev, m->w, m->h, m->r, 0, 0); in drm_gtf_modes_for_range()
2874 int i, modes = 0; in drm_cvt_modes_for_range()
2879 for (i = 0; i < ARRAY_SIZE(extra_modes); i++) { in drm_cvt_modes_for_range()
2882 newmode = drm_cvt_mode(dev, m->w, m->h, m->r, rb, 0, 0); in drm_cvt_modes_for_range()
2918 case 0x02: /* secondary gtf, XXX could do more */ in do_inferred_modes()
2919 case 0x00: /* default gtf */ in do_inferred_modes()
2924 case 0x04: /* cvt, only in 1.4+ */ in do_inferred_modes()
2932 case 0x01: /* just the ranges, no formula */ in do_inferred_modes()
2946 if (version_greater(edid, 1, 0)) in add_inferred_modes()
2956 int i, j, m, modes = 0; in drm_est3_modes()
2960 for (i = 0; i < 6; i++) { in drm_est3_modes()
2961 for (j = 7; j >= 0; j--) { in drm_est3_modes()
3007 ((edid->established_timings.mfg_rsvd & 0x80) << 9); in add_established_modes()
3008 int i, modes = 0; in add_established_modes()
3014 for (i = 0; i <= EDID_EST_TIMINGS; i++) { in add_established_modes()
3026 if (version_greater(edid, 1, 0)) in add_established_modes()
3045 for (i = 0; i < 6; i++) { in do_standard_modes()
3068 int i, modes = 0; in add_standard_modes()
3074 for (i = 0; i < EDID_STD_TIMINGS; i++) { in add_standard_modes()
3085 if (version_greater(edid, 1, 0)) in add_standard_modes()
3097 int i, j, modes = 0; in drm_cvt_modes()
3102 const u8 empty[3] = { 0, 0, 0 }; in drm_cvt_modes()
3104 for (i = 0; i < 4; i++) { in drm_cvt_modes()
3112 height = (cvt->code[0] + ((cvt->code[1] & 0xf0) << 4) + 1) * 2; in drm_cvt_modes()
3113 switch (cvt->code[1] & 0x0c) { in drm_cvt_modes()
3116 case 0x00: in drm_cvt_modes()
3119 case 0x04: in drm_cvt_modes()
3122 case 0x08: in drm_cvt_modes()
3125 case 0x0c: in drm_cvt_modes()
3133 rates[j], j == 0, in drm_cvt_modes()
3231 #define AUDIO_BLOCK 0x01
3232 #define VIDEO_BLOCK 0x02
3233 #define VENDOR_BLOCK 0x03
3234 #define SPEAKER_BLOCK 0x04
3235 #define HDR_STATIC_METADATA_BLOCK 0x6
3236 #define USE_EXTENDED_TAG 0x07
3237 #define EXT_VIDEO_CAPABILITY_BLOCK 0x00
3238 #define EXT_VIDEO_DATA_BLOCK_420 0x0E
3239 #define EXT_VIDEO_CAP_BLOCK_Y420CMDB 0x0F
3255 if (edid == NULL || edid->extensions == 0) in drm_find_edid_extension()
3261 if (edid_ext[0] == ext_id) in drm_find_edid_extension()
3309 ext_index = 0; in drm_find_cea_extension()
3315 ext_index = 0; in drm_find_cea_extension()
3365 if (drm_mode_vrefresh(cea_mode) % 6 != 0) in cea_mode_alternate_clock()
3423 return 0; in drm_match_cea_mode_clock_tolerance()
3446 return 0; in drm_match_cea_mode_clock_tolerance()
3453 * Return: The CEA Video ID (VIC) of the mode or 0 if it isn't a CEA-861
3462 return 0; in drm_match_cea_mode()
3485 return 0; in drm_match_cea_mode()
3526 return 0; in drm_match_hdmi_mode_clock_tolerance()
3547 return 0; in drm_match_hdmi_mode_clock_tolerance()
3556 * Returns the HDMI Video ID (VIC) of the mode or 0 if it isn't one.
3564 return 0; in drm_match_hdmi_mode()
3582 return 0; in drm_match_hdmi_mode()
3587 return vic > 0 && vic < ARRAY_SIZE(edid_4k_modes); in drm_valid_hdmi_vic()
3596 int modes = 0; in add_alternate_cea_modes()
3600 return 0; in add_alternate_cea_modes()
3664 /* 0-6 bit vic, 7th bit native mode indicator */ in svd_to_vic()
3708 int modes = 0, i; in do_y420vdb_modes()
3713 for (i = 0; i < svds_len; i++) { in do_y420vdb_modes()
3728 if (modes > 0) in do_y420vdb_modes()
3783 int i, modes = 0; in do_cea_modes()
3786 for (i = 0; i < len; i++) { in do_cea_modes()
3796 * For example, if the bit 0 in bitmap is set, in do_cea_modes()
3846 int modes = 0, i; in add_hdmi_mandatory_stereo_modes()
3851 for (i = 0; i < ARRAY_SIZE(stereo_mandatory_modes); i++) { in add_hdmi_mandatory_stereo_modes()
3882 return 0; in add_hdmi_mode()
3887 return 0; in add_hdmi_mode()
3898 int modes = 0; in add_3d_struct_modes()
3900 if (structure & (1 << 0)) { in add_3d_struct_modes()
3948 int modes = 0, offset = 0, i, multi_present = 0, multi_len; in do_hdmi_vsdb_modes()
3949 u8 vic_len, hdmi_3d_len = 0; in do_hdmi_vsdb_modes()
3979 multi_present = (db[8 + offset] & 0x60) >> 5; in do_hdmi_vsdb_modes()
3984 hdmi_3d_len = db[8 + offset] & 0x1f; in do_hdmi_vsdb_modes()
3986 for (i = 0; i < vic_len && len >= (9 + offset + i); i++) { in do_hdmi_vsdb_modes()
3999 multi_len = 0; in do_hdmi_vsdb_modes()
4015 mask = 0xffff; in do_hdmi_vsdb_modes()
4017 for (i = 0; i < 16; i++) { in do_hdmi_vsdb_modes()
4028 for (i = 0; i < (hdmi_3d_len - multi_len); i++) { in do_hdmi_vsdb_modes()
4031 unsigned int newflag = 0; in do_hdmi_vsdb_modes()
4034 detail_present = ((db[8 + offset + i] & 0x0f) > 7); in do_hdmi_vsdb_modes()
4043 switch (db[8 + offset + i] & 0x0f) { in do_hdmi_vsdb_modes()
4044 case 0: in do_hdmi_vsdb_modes()
4057 if (newflag != 0) { in do_hdmi_vsdb_modes()
4075 if (modes > 0) in do_hdmi_vsdb_modes()
4083 return db[0] & 0x1f; in cea_db_payload_len()
4095 return db[0] >> 5; in cea_db_tag()
4106 * given as an example is 0. in cea_revision()
4131 if (cea[0] == DATA_BLOCK_CTA) { in cea_db_offsets()
4138 } else if (cea[0] == CEA_EXT) { in cea_db_offsets()
4142 if (*end == 0) in cea_db_offsets()
4150 return 0; in cea_db_offsets()
4235 u64 map = 0; in drm_parse_y420cmdb_bitmap()
4237 if (map_len == 0) { in drm_parse_y420cmdb_bitmap()
4246 * from VDB can support YCBCR420 output too. So if bit=0 is in drm_parse_y420cmdb_bitmap()
4259 for (count = 0; count < map_len; count++) in drm_parse_y420cmdb_bitmap()
4273 u8 dbl, hdmi_len, video_len = 0; in add_cea_modes()
4274 int modes = 0; in add_cea_modes()
4280 return 0; in add_cea_modes()
4296 /* Add 4:2:0(only) modes present in EDID */ in add_cea_modes()
4415 connector->latency_present[0] = db[8] >> 7; in drm_parse_hdmi_vsdb_audio()
4419 connector->video_latency[0] = db[9]; in drm_parse_hdmi_vsdb_audio()
4421 connector->audio_latency[0] = db[10]; in drm_parse_hdmi_vsdb_audio()
4430 connector->latency_present[0], in drm_parse_hdmi_vsdb_audio()
4432 connector->video_latency[0], in drm_parse_hdmi_vsdb_audio()
4434 connector->audio_latency[0], in drm_parse_hdmi_vsdb_audio()
4453 return 0; in get_monitor_name()
4456 for (mnl = 0; edid_name && mnl < 13; mnl++) { in get_monitor_name()
4457 if (edid_name[mnl] == 0x0a) in get_monitor_name()
4478 if (bufsize <= 0) in drm_edid_get_monitor_name()
4483 name[name_length] = '\0'; in drm_edid_get_monitor_name()
4489 memset(connector->eld, 0, sizeof(connector->eld)); in clear_eld()
4491 connector->latency_present[0] = false; in clear_eld()
4493 connector->video_latency[0] = 0; in clear_eld()
4494 connector->audio_latency[0] = 0; in clear_eld()
4495 connector->video_latency[1] = 0; in clear_eld()
4496 connector->audio_latency[1] = 0; in clear_eld()
4512 int total_sad_count = 0; in drm_edid_to_eld()
4535 eld[DRM_ELD_MANUFACTURER_NAME0] = edid->mfg_id[0]; in drm_edid_to_eld()
4537 eld[DRM_ELD_PRODUCT_CODE0] = edid->prod_code[0]; in drm_edid_to_eld()
4545 start = 0; in drm_edid_to_eld()
4546 end = 0; in drm_edid_to_eld()
4605 int count = 0; in drm_edid_to_sad()
4612 return 0; in drm_edid_to_sad()
4617 return 0; in drm_edid_to_sad()
4637 for (j = 0; j < count; j++) { in drm_edid_to_sad()
4640 (*sads)[j].format = (sad[0] & 0x78) >> 3; in drm_edid_to_sad()
4641 (*sads)[j].channels = sad[0] & 0x7; in drm_edid_to_sad()
4642 (*sads)[j].freq = sad[1] & 0x7F; in drm_edid_to_sad()
4667 int count = 0; in drm_edid_to_speaker_allocation()
4674 return 0; in drm_edid_to_speaker_allocation()
4679 return 0; in drm_edid_to_speaker_allocation()
4713 * Return: The HDMI/DP sink's audio-video sync delay in milliseconds or 0 if
4722 if (!connector->latency_present[0]) in drm_av_sync_delay()
4723 return 0; in drm_av_sync_delay()
4725 i = 0; in drm_av_sync_delay()
4734 return 0; in drm_av_sync_delay()
4738 * Treat unknown latency as 0ms. in drm_av_sync_delay()
4745 return max(v - a, 0); in drm_av_sync_delay()
4809 has_audio = (edid_ext[0] == CEA_EXT && in drm_detect_monitor_audio()
4810 (edid_ext[3] & EDID_BASIC_AUDIO) != 0); in drm_detect_monitor_audio()
4825 (edid_ext[i + j] >> 3) & 0xf); in drm_detect_monitor_audio()
4858 DRM_DEBUG_KMS("CEA VCDB 0x%02x\n", db[2]); in drm_parse_vcdb()
4882 if (hf_vsdb[6] & 0x80) { in drm_parse_hdmi_forum_vsdb()
4884 if (hf_vsdb[6] & 0x40) in drm_parse_hdmi_forum_vsdb()
4912 if ((hf_vsdb[6] & 0x8)) in drm_parse_hdmi_forum_vsdb()
4924 unsigned int dc_bpc = 0; in drm_parse_hdmi_deep_color_info()
4953 if (dc_bpc == 0) { in drm_parse_hdmi_deep_color_info()
5088 info->width_mm = 0; in drm_reset_display_info()
5089 info->height_mm = 0; in drm_reset_display_info()
5091 info->bpc = 0; in drm_reset_display_info()
5092 info->color_formats = 0; in drm_reset_display_info()
5093 info->cea_rev = 0; in drm_reset_display_info()
5094 info->max_tmds_clock = 0; in drm_reset_display_info()
5099 memset(&info->hdmi, 0, sizeof(info->hdmi)); in drm_reset_display_info()
5101 info->non_desktop = 0; in drm_reset_display_info()
5102 memset(&info->monitor_range, 0, sizeof(info->monitor_range)); in drm_reset_display_info()
5138 if (info->bpc == 0 && edid->revision == 3 && in drm_add_display_info()
5170 info->bpc = 0; in drm_add_display_info()
5187 u8 csum = 0; in validate_displayid()
5192 DRM_DEBUG_KMS("base revision 0x%x, length %d, %d %d\n", in validate_displayid()
5200 for (i = 0; i < dispid_length; i++) in validate_displayid()
5207 return 0; in validate_displayid()
5214 unsigned pixel_clock = (timings->pixel_clock[0] | in drm_mode_displayid_detailed()
5217 unsigned hactive = (timings->hactive[0] | timings->hactive[1] << 8) + 1; in drm_mode_displayid_detailed()
5218 unsigned hblank = (timings->hblank[0] | timings->hblank[1] << 8) + 1; in drm_mode_displayid_detailed()
5219 unsigned hsync = (timings->hsync[0] | (timings->hsync[1] & 0x7f) << 8) + 1; in drm_mode_displayid_detailed()
5220 unsigned hsync_width = (timings->hsw[0] | timings->hsw[1] << 8) + 1; in drm_mode_displayid_detailed()
5221 unsigned vactive = (timings->vactive[0] | timings->vactive[1] << 8) + 1; in drm_mode_displayid_detailed()
5222 unsigned vblank = (timings->vblank[0] | timings->vblank[1] << 8) + 1; in drm_mode_displayid_detailed()
5223 unsigned vsync = (timings->vsync[0] | (timings->vsync[1] & 0x7f) << 8) + 1; in drm_mode_displayid_detailed()
5224 unsigned vsync_width = (timings->vsw[0] | timings->vsw[1] << 8) + 1; in drm_mode_displayid_detailed()
5225 bool hsync_positive = (timings->hsync[1] >> 7) & 0x1; in drm_mode_displayid_detailed()
5226 bool vsync_positive = (timings->vsync[1] >> 7) & 0x1; in drm_mode_displayid_detailed()
5243 mode->flags = 0; in drm_mode_displayid_detailed()
5248 if (timings->flags & 0x80) in drm_mode_displayid_detailed()
5262 int num_modes = 0; in add_displayid_detailed_1_modes()
5265 return 0; in add_displayid_detailed_1_modes()
5268 for (i = 0; i < num_timings; i++) { in add_displayid_detailed_1_modes()
5287 int num_modes = 0; in add_displayid_detailed_modes()
5288 int ext_index = 0; in add_displayid_detailed_modes()
5318 * Return: The number of modes added or 0 if we couldn't find any.
5322 int num_modes = 0; in drm_add_edid_modes()
5327 return 0; in drm_add_edid_modes()
5333 return 0; in drm_add_edid_modes()
5397 * Return: The number of modes added or 0 if we couldn't find any.
5402 int i, count, num_modes = 0; in drm_add_modes_noedid()
5407 if (hdisplay < 0) in drm_add_modes_noedid()
5408 hdisplay = 0; in drm_add_modes_noedid()
5409 if (vdisplay < 0) in drm_add_modes_noedid()
5410 vdisplay = 0; in drm_add_modes_noedid()
5412 for (i = 0; i < count; i++) { in drm_add_modes_noedid()
5483 * Return: 0 on success or a negative error code on failure.
5514 if (err < 0) in drm_hdmi_infoframe_set_hdr_metadata()
5540 return 0; in drm_hdmi_infoframe_set_hdr_metadata()
5551 return 0; in drm_mode_hdmi_vic()
5555 return 0; in drm_mode_hdmi_vic()
5570 return 0; in drm_mode_cea_vic()
5585 return 0; in vic_for_avi_infoframe()
5597 * Return: 0 on success or a negative error code on failure.
5626 frame->itc = 0; in drm_hdmi_avi_infoframe_from_display_mode()
5664 return 0; in drm_hdmi_avi_infoframe_from_display_mode()
5669 #define FULL_COLORIMETRY_MASK 0x1FF
5670 #define NORMAL_COLORIMETRY_MASK 0x3
5671 #define EXTENDED_COLORIMETRY_MASK 0x7
5672 #define EXTENDED_ACE_COLORIMETRY_MASK 0xF
5674 #define C(x) ((x) << 0)
5678 #define HDMI_COLORIMETRY_NO_DATA 0x0
5679 #define HDMI_COLORIMETRY_SMPTE_170M_YCC (C(1) | EC(0) | ACE(0))
5680 #define HDMI_COLORIMETRY_BT709_YCC (C(2) | EC(0) | ACE(0))
5681 #define HDMI_COLORIMETRY_XVYCC_601 (C(3) | EC(0) | ACE(0))
5682 #define HDMI_COLORIMETRY_XVYCC_709 (C(3) | EC(1) | ACE(0))
5683 #define HDMI_COLORIMETRY_SYCC_601 (C(3) | EC(2) | ACE(0))
5684 #define HDMI_COLORIMETRY_OPYCC_601 (C(3) | EC(3) | ACE(0))
5685 #define HDMI_COLORIMETRY_OPRGB (C(3) | EC(4) | ACE(0))
5686 #define HDMI_COLORIMETRY_BT2020_CYCC (C(3) | EC(5) | ACE(0))
5687 #define HDMI_COLORIMETRY_BT2020_RGB (C(3) | EC(6) | ACE(0))
5688 #define HDMI_COLORIMETRY_BT2020_YCC (C(3) | EC(6) | ACE(0))
5689 #define HDMI_COLORIMETRY_DCI_P3_RGB_D65 (C(3) | EC(7) | ACE(0))
5762 * default RGB quantization range for the mode, even when QS=0. in drm_hdmi_avi_infoframe_quant_range()
5774 * (e.g., when Limited Range RGB, set YQ=0 or when Full Range RGB, in drm_hdmi_avi_infoframe_quant_range()
5848 * Return: 0 on success or a negative error code on failure.
5870 if (err < 0) in drm_hdmi_vendor_infoframe_from_display_mode()
5875 * (ie.vic==0 and s3d_struct==0) we will still send it if we in drm_hdmi_vendor_infoframe_from_display_mode()
5885 return 0; in drm_hdmi_vendor_infoframe_from_display_mode()
5898 w = tile->tile_size[0] | tile->tile_size[1] << 8; in drm_parse_tiled_block()
5901 num_v_tile = (tile->topo[0] & 0xf) | (tile->topo[2] & 0x30); in drm_parse_tiled_block()
5902 num_h_tile = (tile->topo[0] >> 4) | ((tile->topo[2] >> 2) & 0x30); in drm_parse_tiled_block()
5903 tile_v_loc = (tile->topo[1] & 0xf) | ((tile->topo[2] & 0x3) << 4); in drm_parse_tiled_block()
5904 tile_h_loc = (tile->topo[1] >> 4) | (((tile->topo[2] >> 2) & 0x3) << 4); in drm_parse_tiled_block()
5907 if (tile->tile_cap & 0x80) in drm_parse_tiled_block()
5917 DRM_DEBUG_KMS("tile cap 0x%x\n", tile->tile_cap); in drm_parse_tiled_block()
5921 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()
5948 DRM_DEBUG_KMS("block id 0x%x, rev %d, len %d\n", in drm_displayid_parse_tiled()
5956 DRM_DEBUG_KMS("found DisplayID tag 0x%x, unhandled\n", block->tag); in drm_displayid_parse_tiled()
5966 int ext_index = 0; in drm_update_tile_info()