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()
1838 u8 num_of_ext = edid[0x7e]; in connector_bad_edid()
1848 for (i = 0; i < num_blocks; i++) { in connector_bad_edid()
1888 * Return: The number of modes added or 0 if we couldn't find any.
1893 int num_modes = 0; in drm_add_override_edid_modes()
1934 int i, j = 0, valid_extensions = 0; in drm_do_get_edid()
1946 for (i = 0; i < 4; i++) { in drm_do_get_edid()
1947 if (get_edid_block(data, edid, 0, EDID_LENGTH)) in drm_do_get_edid()
1949 if (drm_edid_block_valid(edid, 0, false, in drm_do_get_edid()
1952 if (i == 0 && drm_edid_is_zero(edid, EDID_LENGTH)) { in drm_do_get_edid()
1961 valid_extensions = edid[0x7e]; in drm_do_get_edid()
1962 if (valid_extensions == 0) in drm_do_get_edid()
1970 for (j = 1; j <= edid[0x7e]; j++) { in drm_do_get_edid()
1973 for (i = 0; i < 4; i++) { in drm_do_get_edid()
1984 if (valid_extensions != edid[0x7e]) { in drm_do_get_edid()
1987 connector_bad_edid(connector, edid, edid[0x7e] + 1); in drm_do_get_edid()
1989 edid[EDID_LENGTH-1] += edid[0x7e] - valid_extensions; in drm_do_get_edid()
1990 edid[0x7e] = valid_extensions; in drm_do_get_edid()
1998 for (i = 0; i <= edid[0x7e]; i++) { in drm_do_get_edid()
2033 return (drm_do_probe_ddc_edid(adapter, &out, 0, 1) == 0); in drm_probe_ddc()
2114 edid_vendor[0] = ((edid->mfg_id[0] & 0x7c) >> 2) + '@'; in edid_vendor()
2115 edid_vendor[1] = (((edid->mfg_id[0] & 0x3) << 3) | in edid_vendor()
2116 ((edid->mfg_id[1] & 0xe0) >> 5)) + '@'; in edid_vendor()
2117 edid_vendor[2] = (edid->mfg_id[1] & 0x1f) + '@'; in edid_vendor()
2133 for (i = 0; i < ARRAY_SIZE(edid_quirk_list); i++) { in edid_get_quirks()
2141 return 0; in edid_get_quirks()
2159 int target_refresh = 0; in edid_fixup_preferred()
2223 for (i = 0; i < ARRAY_SIZE(drm_dmt_modes); i++) { in drm_mode_find_dmt()
2244 return d[0] == 0x00 && d[1] == 0x00 && in is_display_descriptor()
2245 d[2] == 0x00 && d[3] == tag; in is_display_descriptor()
2250 return d[0] != 0x00 || d[1] != 0x00; in is_detailed_timing_descriptor()
2259 u8 d = ext[0x02]; in cea_for_each_detailed_block()
2266 for (i = 0; i < n; i++) in cea_for_each_detailed_block()
2273 unsigned int i, n = min((int)ext[0x02], 6); in vtb_for_each_detailed_block()
2276 if (ext[0x01] != 1) in vtb_for_each_detailed_block()
2279 for (i = 0; i < n; i++) in vtb_for_each_detailed_block()
2292 for (i = 0; i < EDID_DETAILED_TIMINGS; i++) in drm_for_each_detailed_block()
2295 for (i = 1; i <= raw_edid[0x7e]; i++) { in drm_for_each_detailed_block()
2319 if (r[15] & 0x10) in is_rb()
2334 return ((edid->input & DRM_EDID_INPUT_DIGITAL) != 0); in drm_monitor_supports_rb()
2345 if (r[10] == 0x02) in find_gtf2()
2356 return r ? (r[12] * 2) : 0; in drm_gtf2_hbreak()
2365 return r ? r[13] : 0; in drm_gtf2_2c()
2374 return r ? (r[15] << 8) + r[14] : 0; in drm_gtf2_m()
2383 return r ? r[16] : 0; in drm_gtf2_k()
2392 return r ? r[17] : 0; in drm_gtf2_2j()
2413 * 0 is reserved. The spec says 0x01 fill for unused timings. Some old
2414 * monitors fill with ascii space (0x20) instead.
2419 return (a == 0x00 && b == 0x00) || in bad_std_timing()
2420 (a == 0x01 && b == 0x01) || in bad_std_timing()
2421 (a == 0x20 && b == 0x20); in bad_std_timing()
2426 if (mode->htotal <= 0) in drm_mode_hsync()
2427 return 0; in drm_mode_hsync()
2463 if (aspect_ratio == 0) { in drm_mode_std()
2496 mode = drm_cvt_mode(dev, 1366, 768, vrefresh_rate, 0, 0, in drm_mode_std()
2522 mode = drm_gtf_mode(dev, hsize, vsize, vrefresh_rate, 0, 0); in drm_mode_std()
2530 mode = drm_gtf_mode(dev, hsize, vsize, vrefresh_rate, 0, 0); in drm_mode_std()
2536 vrefresh_rate, 0, 0, in drm_mode_std()
2544 mode = drm_cvt_mode(dev, hsize, vsize, vrefresh_rate, 0, 0, in drm_mode_std()
2579 for (i = 0; i < ARRAY_SIZE(cea_interlaced); i++) { in drm_mode_do_interlace_quirk()
2610 unsigned hactive = (pt->hactive_hblank_hi & 0xf0) << 4 | pt->hactive_lo; in drm_mode_detailed()
2611 unsigned vactive = (pt->vactive_vblank_hi & 0xf0) << 4 | pt->vactive_lo; in drm_mode_detailed()
2612 unsigned hblank = (pt->hactive_hblank_hi & 0xf) << 8 | pt->hblank_lo; in drm_mode_detailed()
2613 unsigned vblank = (pt->vactive_vblank_hi & 0xf) << 8 | pt->vblank_lo; in drm_mode_detailed()
2614 unsigned hsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc0) << 2 | pt->hsync_offset_lo; in drm_mode_detailed()
2615 …unsigned hsync_pulse_width = (pt->hsync_vsync_offset_pulse_width_hi & 0x30) << 4 | pt->hsync_pulse… in drm_mode_detailed()
2616 …unsigned vsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc) << 2 | pt->vsync_offset_puls… in drm_mode_detailed()
2617 …se_width = (pt->hsync_vsync_offset_pulse_width_hi & 0x3) << 4 | (pt->vsync_offset_pulse_width_lo &… in drm_mode_detailed()
2683 mode->width_mm = pt->width_mm_lo | (pt->width_height_mm_hi & 0xf0) << 4; in drm_mode_detailed()
2684 mode->height_mm = pt->height_mm_lo | (pt->width_height_mm_hi & 0xf) << 8; in drm_mode_detailed()
2710 hmin += ((t[4] & 0x04) ? 255 : 0); in mode_in_hsync_range()
2713 hmax += ((t[4] & 0x08) ? 255 : 0); in mode_in_hsync_range()
2727 vmin += ((t[4] & 0x01) ? 255 : 0); in mode_in_vsync_range()
2730 vmax += ((t[4] & 0x02) ? 255 : 0); in mode_in_vsync_range()
2740 if (t[9] == 0 || t[9] == 255) in range_pixel_clock()
2741 return 0; in range_pixel_clock()
2744 if (edid->revision >= 4 && t[10] == 0x04) in range_pixel_clock()
2769 if (edid->revision >= 4 && t[10] == 0x04) in mode_in_range()
2770 if (t[13] && mode->hdisplay > 8 * (t[13] + (256 * (t[12]&0x3)))) in mode_in_range()
2801 int i, modes = 0; in drm_dmt_modes_for_range()
2805 for (i = 0; i < ARRAY_SIZE(drm_dmt_modes); i++) { in drm_dmt_modes_for_range()
2836 int i, modes = 0; in drm_gtf_modes_for_range()
2840 for (i = 0; i < ARRAY_SIZE(extra_modes); i++) { in drm_gtf_modes_for_range()
2843 newmode = drm_gtf_mode(dev, m->w, m->h, m->r, 0, 0); in drm_gtf_modes_for_range()
2865 int i, modes = 0; in drm_cvt_modes_for_range()
2870 for (i = 0; i < ARRAY_SIZE(extra_modes); i++) { in drm_cvt_modes_for_range()
2873 newmode = drm_cvt_mode(dev, m->w, m->h, m->r, rb, 0, 0); in drm_cvt_modes_for_range()
2909 case 0x02: /* secondary gtf, XXX could do more */ in do_inferred_modes()
2910 case 0x00: /* default gtf */ in do_inferred_modes()
2915 case 0x04: /* cvt, only in 1.4+ */ in do_inferred_modes()
2923 case 0x01: /* just the ranges, no formula */ in do_inferred_modes()
2937 if (version_greater(edid, 1, 0)) in add_inferred_modes()
2947 int i, j, m, modes = 0; in drm_est3_modes()
2951 for (i = 0; i < 6; i++) { in drm_est3_modes()
2952 for (j = 7; j >= 0; j--) { in drm_est3_modes()
2998 ((edid->established_timings.mfg_rsvd & 0x80) << 9); in add_established_modes()
2999 int i, modes = 0; in add_established_modes()
3005 for (i = 0; i <= EDID_EST_TIMINGS; i++) { in add_established_modes()
3017 if (version_greater(edid, 1, 0)) in add_established_modes()
3036 for (i = 0; i < 6; i++) { in do_standard_modes()
3059 int i, modes = 0; in add_standard_modes()
3065 for (i = 0; i < EDID_STD_TIMINGS; i++) { in add_standard_modes()
3076 if (version_greater(edid, 1, 0)) in add_standard_modes()
3088 int i, j, modes = 0; in drm_cvt_modes()
3093 const u8 empty[3] = { 0, 0, 0 }; in drm_cvt_modes()
3095 for (i = 0; i < 4; i++) { in drm_cvt_modes()
3103 height = (cvt->code[0] + ((cvt->code[1] & 0xf0) << 4) + 1) * 2; in drm_cvt_modes()
3104 switch (cvt->code[1] & 0x0c) { in drm_cvt_modes()
3105 case 0x00: in drm_cvt_modes()
3108 case 0x04: in drm_cvt_modes()
3111 case 0x08: in drm_cvt_modes()
3114 case 0x0c: in drm_cvt_modes()
3122 rates[j], j == 0, in drm_cvt_modes()
3220 #define AUDIO_BLOCK 0x01
3221 #define VIDEO_BLOCK 0x02
3222 #define VENDOR_BLOCK 0x03
3223 #define SPEAKER_BLOCK 0x04
3224 #define HDR_STATIC_METADATA_BLOCK 0x6
3225 #define USE_EXTENDED_TAG 0x07
3226 #define EXT_VIDEO_CAPABILITY_BLOCK 0x00
3227 #define EXT_VIDEO_DATA_BLOCK_420 0x0E
3228 #define EXT_VIDEO_CAP_BLOCK_Y420CMDB 0x0F
3244 if (edid == NULL || edid->extensions == 0) in drm_find_edid_extension()
3250 if (edid_ext[0] == ext_id) in drm_find_edid_extension()
3298 ext_index = 0; in drm_find_cea_extension()
3304 ext_index = 0; in drm_find_cea_extension()
3354 if (drm_mode_vrefresh(cea_mode) % 6 != 0) in cea_mode_alternate_clock()
3412 return 0; in drm_match_cea_mode_clock_tolerance()
3435 return 0; in drm_match_cea_mode_clock_tolerance()
3442 * Return: The CEA Video ID (VIC) of the mode or 0 if it isn't a CEA-861
3451 return 0; in drm_match_cea_mode()
3474 return 0; in drm_match_cea_mode()
3515 return 0; in drm_match_hdmi_mode_clock_tolerance()
3536 return 0; in drm_match_hdmi_mode_clock_tolerance()
3545 * Returns the HDMI Video ID (VIC) of the mode or 0 if it isn't one.
3553 return 0; in drm_match_hdmi_mode()
3571 return 0; in drm_match_hdmi_mode()
3576 return vic > 0 && vic < ARRAY_SIZE(edid_4k_modes); in drm_valid_hdmi_vic()
3585 int modes = 0; in add_alternate_cea_modes()
3589 return 0; in add_alternate_cea_modes()
3653 /* 0-6 bit vic, 7th bit native mode indicator */ in svd_to_vic()
3697 int modes = 0, i; in do_y420vdb_modes()
3702 for (i = 0; i < svds_len; i++) { in do_y420vdb_modes()
3717 if (modes > 0) in do_y420vdb_modes()
3772 int i, modes = 0; in do_cea_modes()
3775 for (i = 0; i < len; i++) { in do_cea_modes()
3785 * For example, if the bit 0 in bitmap is set, in do_cea_modes()
3835 int modes = 0, i; in add_hdmi_mandatory_stereo_modes()
3840 for (i = 0; i < ARRAY_SIZE(stereo_mandatory_modes); i++) { in add_hdmi_mandatory_stereo_modes()
3871 return 0; in add_hdmi_mode()
3876 return 0; in add_hdmi_mode()
3887 int modes = 0; in add_3d_struct_modes()
3889 if (structure & (1 << 0)) { in add_3d_struct_modes()
3937 int modes = 0, offset = 0, i, multi_present = 0, multi_len; in do_hdmi_vsdb_modes()
3938 u8 vic_len, hdmi_3d_len = 0; in do_hdmi_vsdb_modes()
3968 multi_present = (db[8 + offset] & 0x60) >> 5; in do_hdmi_vsdb_modes()
3973 hdmi_3d_len = db[8 + offset] & 0x1f; in do_hdmi_vsdb_modes()
3975 for (i = 0; i < vic_len && len >= (9 + offset + i); i++) { in do_hdmi_vsdb_modes()
3988 multi_len = 0; in do_hdmi_vsdb_modes()
4004 mask = 0xffff; in do_hdmi_vsdb_modes()
4006 for (i = 0; i < 16; i++) { in do_hdmi_vsdb_modes()
4017 for (i = 0; i < (hdmi_3d_len - multi_len); i++) { in do_hdmi_vsdb_modes()
4020 unsigned int newflag = 0; in do_hdmi_vsdb_modes()
4023 detail_present = ((db[8 + offset + i] & 0x0f) > 7); in do_hdmi_vsdb_modes()
4032 switch (db[8 + offset + i] & 0x0f) { in do_hdmi_vsdb_modes()
4033 case 0: in do_hdmi_vsdb_modes()
4046 if (newflag != 0) { in do_hdmi_vsdb_modes()
4064 if (modes > 0) in do_hdmi_vsdb_modes()
4072 return db[0] & 0x1f; in cea_db_payload_len()
4084 return db[0] >> 5; in cea_db_tag()
4095 * given as an example is 0. in cea_revision()
4120 if (cea[0] == DATA_BLOCK_CTA) { in cea_db_offsets()
4127 } else if (cea[0] == CEA_EXT) { in cea_db_offsets()
4131 if (*end == 0) in cea_db_offsets()
4139 return 0; in cea_db_offsets()
4224 u64 map = 0; in drm_parse_y420cmdb_bitmap()
4226 if (map_len == 0) { in drm_parse_y420cmdb_bitmap()
4235 * from VDB can support YCBCR420 output too. So if bit=0 is in drm_parse_y420cmdb_bitmap()
4248 for (count = 0; count < map_len; count++) in drm_parse_y420cmdb_bitmap()
4262 u8 dbl, hdmi_len, video_len = 0; in add_cea_modes()
4263 int modes = 0; in add_cea_modes()
4269 return 0; in add_cea_modes()
4285 /* Add 4:2:0(only) modes present in EDID */ in add_cea_modes()
4404 connector->latency_present[0] = db[8] >> 7; in drm_parse_hdmi_vsdb_audio()
4408 connector->video_latency[0] = db[9]; in drm_parse_hdmi_vsdb_audio()
4410 connector->audio_latency[0] = db[10]; in drm_parse_hdmi_vsdb_audio()
4419 connector->latency_present[0], in drm_parse_hdmi_vsdb_audio()
4421 connector->video_latency[0], in drm_parse_hdmi_vsdb_audio()
4423 connector->audio_latency[0], in drm_parse_hdmi_vsdb_audio()
4442 return 0; in get_monitor_name()
4445 for (mnl = 0; edid_name && mnl < 13; mnl++) { in get_monitor_name()
4446 if (edid_name[mnl] == 0x0a) in get_monitor_name()
4467 if (bufsize <= 0) in drm_edid_get_monitor_name()
4472 name[name_length] = '\0'; in drm_edid_get_monitor_name()
4478 memset(connector->eld, 0, sizeof(connector->eld)); in clear_eld()
4480 connector->latency_present[0] = false; in clear_eld()
4482 connector->video_latency[0] = 0; in clear_eld()
4483 connector->audio_latency[0] = 0; in clear_eld()
4484 connector->video_latency[1] = 0; in clear_eld()
4485 connector->audio_latency[1] = 0; in clear_eld()
4501 int total_sad_count = 0; in drm_edid_to_eld()
4524 eld[DRM_ELD_MANUFACTURER_NAME0] = edid->mfg_id[0]; in drm_edid_to_eld()
4526 eld[DRM_ELD_PRODUCT_CODE0] = edid->prod_code[0]; in drm_edid_to_eld()
4534 start = 0; in drm_edid_to_eld()
4535 end = 0; in drm_edid_to_eld()
4594 int count = 0; in drm_edid_to_sad()
4601 return 0; in drm_edid_to_sad()
4606 return 0; in drm_edid_to_sad()
4626 for (j = 0; j < count; j++) { in drm_edid_to_sad()
4629 (*sads)[j].format = (sad[0] & 0x78) >> 3; in drm_edid_to_sad()
4630 (*sads)[j].channels = sad[0] & 0x7; in drm_edid_to_sad()
4631 (*sads)[j].freq = sad[1] & 0x7F; in drm_edid_to_sad()
4656 int count = 0; in drm_edid_to_speaker_allocation()
4663 return 0; in drm_edid_to_speaker_allocation()
4668 return 0; in drm_edid_to_speaker_allocation()
4702 * Return: The HDMI/DP sink's audio-video sync delay in milliseconds or 0 if
4711 if (!connector->latency_present[0]) in drm_av_sync_delay()
4712 return 0; in drm_av_sync_delay()
4714 i = 0; in drm_av_sync_delay()
4723 return 0; in drm_av_sync_delay()
4727 * Treat unknown latency as 0ms. in drm_av_sync_delay()
4734 return max(v - a, 0); in drm_av_sync_delay()
4798 has_audio = ((edid_ext[3] & EDID_BASIC_AUDIO) != 0); in drm_detect_monitor_audio()
4813 (edid_ext[i + j] >> 3) & 0xf); in drm_detect_monitor_audio()
4846 DRM_DEBUG_KMS("CEA VCDB 0x%02x\n", db[2]); in drm_parse_vcdb()
4870 if (hf_vsdb[6] & 0x80) { in drm_parse_hdmi_forum_vsdb()
4872 if (hf_vsdb[6] & 0x40) in drm_parse_hdmi_forum_vsdb()
4900 if ((hf_vsdb[6] & 0x8)) in drm_parse_hdmi_forum_vsdb()
4912 unsigned int dc_bpc = 0; in drm_parse_hdmi_deep_color_info()
4941 if (dc_bpc == 0) { in drm_parse_hdmi_deep_color_info()
5084 info->width_mm = 0; in drm_reset_display_info()
5085 info->height_mm = 0; in drm_reset_display_info()
5087 info->bpc = 0; in drm_reset_display_info()
5088 info->color_formats = 0; in drm_reset_display_info()
5089 info->cea_rev = 0; in drm_reset_display_info()
5090 info->max_tmds_clock = 0; in drm_reset_display_info()
5095 memset(&info->hdmi, 0, sizeof(info->hdmi)); in drm_reset_display_info()
5097 info->non_desktop = 0; in drm_reset_display_info()
5098 memset(&info->monitor_range, 0, sizeof(info->monitor_range)); in drm_reset_display_info()
5133 if (info->bpc == 0 && edid->revision == 3 && in drm_add_display_info()
5165 info->bpc = 0; in drm_add_display_info()
5183 u8 csum = 0; in validate_displayid()
5188 DRM_DEBUG_KMS("base revision 0x%x, length %d, %d %d\n", in validate_displayid()
5196 for (i = 0; i < dispid_length; i++) in validate_displayid()
5203 return 0; in validate_displayid()
5210 unsigned pixel_clock = (timings->pixel_clock[0] | in drm_mode_displayid_detailed()
5213 unsigned hactive = (timings->hactive[0] | timings->hactive[1] << 8) + 1; in drm_mode_displayid_detailed()
5214 unsigned hblank = (timings->hblank[0] | timings->hblank[1] << 8) + 1; in drm_mode_displayid_detailed()
5215 unsigned hsync = (timings->hsync[0] | (timings->hsync[1] & 0x7f) << 8) + 1; in drm_mode_displayid_detailed()
5216 unsigned hsync_width = (timings->hsw[0] | timings->hsw[1] << 8) + 1; in drm_mode_displayid_detailed()
5217 unsigned vactive = (timings->vactive[0] | timings->vactive[1] << 8) + 1; in drm_mode_displayid_detailed()
5218 unsigned vblank = (timings->vblank[0] | timings->vblank[1] << 8) + 1; in drm_mode_displayid_detailed()
5219 unsigned vsync = (timings->vsync[0] | (timings->vsync[1] & 0x7f) << 8) + 1; in drm_mode_displayid_detailed()
5220 unsigned vsync_width = (timings->vsw[0] | timings->vsw[1] << 8) + 1; in drm_mode_displayid_detailed()
5221 bool hsync_positive = (timings->hsync[1] >> 7) & 0x1; in drm_mode_displayid_detailed()
5222 bool vsync_positive = (timings->vsync[1] >> 7) & 0x1; in drm_mode_displayid_detailed()
5239 mode->flags = 0; in drm_mode_displayid_detailed()
5244 if (timings->flags & 0x80) in drm_mode_displayid_detailed()
5258 int num_modes = 0; in add_displayid_detailed_1_modes()
5261 return 0; in add_displayid_detailed_1_modes()
5264 for (i = 0; i < num_timings; i++) { in add_displayid_detailed_1_modes()
5283 int num_modes = 0; in add_displayid_detailed_modes()
5284 int ext_index = 0; in add_displayid_detailed_modes()
5314 * Return: The number of modes added or 0 if we couldn't find any.
5318 int num_modes = 0; in drm_add_edid_modes()
5323 return 0; in drm_add_edid_modes()
5329 return 0; in drm_add_edid_modes()
5393 * Return: The number of modes added or 0 if we couldn't find any.
5398 int i, count, num_modes = 0; in drm_add_modes_noedid()
5403 if (hdisplay < 0) in drm_add_modes_noedid()
5404 hdisplay = 0; in drm_add_modes_noedid()
5405 if (vdisplay < 0) in drm_add_modes_noedid()
5406 vdisplay = 0; in drm_add_modes_noedid()
5408 for (i = 0; i < count; i++) { in drm_add_modes_noedid()
5479 * Return: 0 on success or a negative error code on failure.
5510 if (err < 0) in drm_hdmi_infoframe_set_hdr_metadata()
5536 return 0; in drm_hdmi_infoframe_set_hdr_metadata()
5547 return 0; in drm_mode_hdmi_vic()
5551 return 0; in drm_mode_hdmi_vic()
5568 return 0; in drm_mode_cea_vic()
5578 return 0; in drm_mode_cea_vic()
5590 * Return: 0 on success or a negative error code on failure.
5619 frame->itc = 0; in drm_hdmi_avi_infoframe_from_display_mode()
5657 return 0; in drm_hdmi_avi_infoframe_from_display_mode()
5662 #define FULL_COLORIMETRY_MASK 0x1FF
5663 #define NORMAL_COLORIMETRY_MASK 0x3
5664 #define EXTENDED_COLORIMETRY_MASK 0x7
5665 #define EXTENDED_ACE_COLORIMETRY_MASK 0xF
5667 #define C(x) ((x) << 0)
5671 #define HDMI_COLORIMETRY_NO_DATA 0x0
5672 #define HDMI_COLORIMETRY_SMPTE_170M_YCC (C(1) | EC(0) | ACE(0))
5673 #define HDMI_COLORIMETRY_BT709_YCC (C(2) | EC(0) | ACE(0))
5674 #define HDMI_COLORIMETRY_XVYCC_601 (C(3) | EC(0) | ACE(0))
5675 #define HDMI_COLORIMETRY_XVYCC_709 (C(3) | EC(1) | ACE(0))
5676 #define HDMI_COLORIMETRY_SYCC_601 (C(3) | EC(2) | ACE(0))
5677 #define HDMI_COLORIMETRY_OPYCC_601 (C(3) | EC(3) | ACE(0))
5678 #define HDMI_COLORIMETRY_OPRGB (C(3) | EC(4) | ACE(0))
5679 #define HDMI_COLORIMETRY_BT2020_CYCC (C(3) | EC(5) | ACE(0))
5680 #define HDMI_COLORIMETRY_BT2020_RGB (C(3) | EC(6) | ACE(0))
5681 #define HDMI_COLORIMETRY_BT2020_YCC (C(3) | EC(6) | ACE(0))
5682 #define HDMI_COLORIMETRY_DCI_P3_RGB_D65 (C(3) | EC(7) | ACE(0))
5755 * default RGB quantization range for the mode, even when QS=0. in drm_hdmi_avi_infoframe_quant_range()
5767 * (e.g., when Limited Range RGB, set YQ=0 or when Full Range RGB, in drm_hdmi_avi_infoframe_quant_range()
5841 * Return: 0 on success or a negative error code on failure.
5863 if (err < 0) in drm_hdmi_vendor_infoframe_from_display_mode()
5868 * (ie.vic==0 and s3d_struct==0) we will still send it if we in drm_hdmi_vendor_infoframe_from_display_mode()
5878 return 0; in drm_hdmi_vendor_infoframe_from_display_mode()
5891 w = tile->tile_size[0] | tile->tile_size[1] << 8; in drm_parse_tiled_block()
5894 num_v_tile = (tile->topo[0] & 0xf) | (tile->topo[2] & 0x30); in drm_parse_tiled_block()
5895 num_h_tile = (tile->topo[0] >> 4) | ((tile->topo[2] >> 2) & 0x30); in drm_parse_tiled_block()
5896 tile_v_loc = (tile->topo[1] & 0xf) | ((tile->topo[2] & 0x3) << 4); in drm_parse_tiled_block()
5897 tile_h_loc = (tile->topo[1] >> 4) | (((tile->topo[2] >> 2) & 0x3) << 4); in drm_parse_tiled_block()
5900 if (tile->tile_cap & 0x80) in drm_parse_tiled_block()
5910 DRM_DEBUG_KMS("tile cap 0x%x\n", tile->tile_cap); in drm_parse_tiled_block()
5914 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()
5941 DRM_DEBUG_KMS("block id 0x%x, rev %d, len %d\n", in drm_displayid_parse_tiled()
5949 DRM_DEBUG_KMS("found DisplayID tag 0x%x, unhandled\n", block->tag); in drm_displayid_parse_tiled()
5959 int ext_index = 0; in drm_update_tile_info()