Lines Matching +full:0 +full:x720

64 #define EDID_QUIRK_PREFER_LARGE_60		(1 << 0)
98 #define LEVEL_DMT 0
111 { "API", 0x7602, EDID_QUIRK_PREFER_LARGE_60 },
113 /* AEO model 0 reports 8 bpc, but is a 6 bpc panel */
114 { "AEO", 0, EDID_QUIRK_FORCE_6BPC },
117 { "BOE", 0x78b, EDID_QUIRK_FORCE_6BPC },
120 { "CPT", 0x17df, EDID_QUIRK_FORCE_6BPC },
123 { "SDC", 0x3652, EDID_QUIRK_FORCE_6BPC },
125 /* BOE model 0x0771 reports 8 bpc, but is a 6 bpc panel */
126 { "BOE", 0x0771, EDID_QUIRK_FORCE_6BPC },
130 { "MAX", 0x77e, EDID_QUIRK_PREFER_LARGE_60 },
145 { "LPL", 0, EDID_QUIRK_DETAILED_USE_MAXIMUM_SIZE },
146 { "LPL", 0x2a00, EDID_QUIRK_DETAILED_USE_MAXIMUM_SIZE },
155 { "SNY", 0x2541, EDID_QUIRK_FORCE_12BPC },
161 { "MED", 0x7b8, EDID_QUIRK_PREFER_LARGE_75 },
167 { "SEC", 0xd033, EDID_QUIRK_FORCE_8BPC },
173 { "VLV", 0x91a8, EDID_QUIRK_NON_DESKTOP },
174 { "VLV", 0x91b0, EDID_QUIRK_NON_DESKTOP },
175 { "VLV", 0x91b1, EDID_QUIRK_NON_DESKTOP },
176 { "VLV", 0x91b2, EDID_QUIRK_NON_DESKTOP },
177 { "VLV", 0x91b3, EDID_QUIRK_NON_DESKTOP },
178 { "VLV", 0x91b4, EDID_QUIRK_NON_DESKTOP },
179 { "VLV", 0x91b5, EDID_QUIRK_NON_DESKTOP },
180 { "VLV", 0x91b6, EDID_QUIRK_NON_DESKTOP },
181 { "VLV", 0x91b7, EDID_QUIRK_NON_DESKTOP },
182 { "VLV", 0x91b8, EDID_QUIRK_NON_DESKTOP },
183 { "VLV", 0x91b9, EDID_QUIRK_NON_DESKTOP },
184 { "VLV", 0x91ba, EDID_QUIRK_NON_DESKTOP },
185 { "VLV", 0x91bb, EDID_QUIRK_NON_DESKTOP },
186 { "VLV", 0x91bc, EDID_QUIRK_NON_DESKTOP },
187 { "VLV", 0x91bd, EDID_QUIRK_NON_DESKTOP },
188 { "VLV", 0x91be, EDID_QUIRK_NON_DESKTOP },
189 { "VLV", 0x91bf, EDID_QUIRK_NON_DESKTOP },
192 { "HVR", 0xaa01, EDID_QUIRK_NON_DESKTOP },
193 { "HVR", 0xaa02, EDID_QUIRK_NON_DESKTOP },
196 { "OVR", 0x0001, EDID_QUIRK_NON_DESKTOP },
197 { "OVR", 0x0003, EDID_QUIRK_NON_DESKTOP },
198 { "OVR", 0x0004, EDID_QUIRK_NON_DESKTOP },
199 { "OVR", 0x0012, EDID_QUIRK_NON_DESKTOP },
202 { "ACR", 0x7fce, EDID_QUIRK_NON_DESKTOP },
203 { "HPN", 0x3515, EDID_QUIRK_NON_DESKTOP },
204 { "LEN", 0x0408, EDID_QUIRK_NON_DESKTOP },
205 { "LEN", 0xb800, EDID_QUIRK_NON_DESKTOP },
206 { "FUJ", 0x1970, EDID_QUIRK_NON_DESKTOP },
207 { "DEL", 0x7fce, EDID_QUIRK_NON_DESKTOP },
208 { "SEC", 0x144a, EDID_QUIRK_NON_DESKTOP },
209 { "AUS", 0xc102, EDID_QUIRK_NON_DESKTOP },
212 { "SNY", 0x0704, EDID_QUIRK_NON_DESKTOP },
215 { "SEN", 0x1019, EDID_QUIRK_NON_DESKTOP },
218 { "SVR", 0x1019, EDID_QUIRK_NON_DESKTOP },
226 /* 0x01 - 640x350@85Hz */
228 736, 832, 0, 350, 382, 385, 445, 0,
230 /* 0x02 - 640x400@85Hz */
232 736, 832, 0, 400, 401, 404, 445, 0,
234 /* 0x03 - 720x400@85Hz */
236 828, 936, 0, 400, 401, 404, 446, 0,
238 /* 0x04 - 640x480@60Hz */
240 752, 800, 0, 480, 490, 492, 525, 0,
242 /* 0x05 - 640x480@72Hz */
244 704, 832, 0, 480, 489, 492, 520, 0,
246 /* 0x06 - 640x480@75Hz */
248 720, 840, 0, 480, 481, 484, 500, 0,
250 /* 0x07 - 640x480@85Hz */
252 752, 832, 0, 480, 481, 484, 509, 0,
254 /* 0x08 - 800x600@56Hz */
256 896, 1024, 0, 600, 601, 603, 625, 0,
258 /* 0x09 - 800x600@60Hz */
260 968, 1056, 0, 600, 601, 605, 628, 0,
262 /* 0x0a - 800x600@72Hz */
264 976, 1040, 0, 600, 637, 643, 666, 0,
266 /* 0x0b - 800x600@75Hz */
268 896, 1056, 0, 600, 601, 604, 625, 0,
270 /* 0x0c - 800x600@85Hz */
272 896, 1048, 0, 600, 601, 604, 631, 0,
274 /* 0x0d - 800x600@120Hz RB */
276 880, 960, 0, 600, 603, 607, 636, 0,
278 /* 0x0e - 848x480@60Hz */
280 976, 1088, 0, 480, 486, 494, 517, 0,
282 /* 0x0f - 1024x768@43Hz, interlace */
284 1208, 1264, 0, 768, 768, 776, 817, 0,
287 /* 0x10 - 1024x768@60Hz */
289 1184, 1344, 0, 768, 771, 777, 806, 0,
291 /* 0x11 - 1024x768@70Hz */
293 1184, 1328, 0, 768, 771, 777, 806, 0,
295 /* 0x12 - 1024x768@75Hz */
297 1136, 1312, 0, 768, 769, 772, 800, 0,
299 /* 0x13 - 1024x768@85Hz */
301 1168, 1376, 0, 768, 769, 772, 808, 0,
303 /* 0x14 - 1024x768@120Hz RB */
305 1104, 1184, 0, 768, 771, 775, 813, 0,
307 /* 0x15 - 1152x864@75Hz */
309 1344, 1600, 0, 864, 865, 868, 900, 0,
311 /* 0x55 - 1280x720@60Hz */
312 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390,
313 1430, 1650, 0, 720, 725, 730, 750, 0,
315 /* 0x16 - 1280x768@60Hz RB */
317 1360, 1440, 0, 768, 771, 778, 790, 0,
319 /* 0x17 - 1280x768@60Hz */
321 1472, 1664, 0, 768, 771, 778, 798, 0,
323 /* 0x18 - 1280x768@75Hz */
325 1488, 1696, 0, 768, 771, 778, 805, 0,
327 /* 0x19 - 1280x768@85Hz */
329 1496, 1712, 0, 768, 771, 778, 809, 0,
331 /* 0x1a - 1280x768@120Hz RB */
333 1360, 1440, 0, 768, 771, 778, 813, 0,
335 /* 0x1b - 1280x800@60Hz RB */
337 1360, 1440, 0, 800, 803, 809, 823, 0,
339 /* 0x1c - 1280x800@60Hz */
341 1480, 1680, 0, 800, 803, 809, 831, 0,
343 /* 0x1d - 1280x800@75Hz */
345 1488, 1696, 0, 800, 803, 809, 838, 0,
347 /* 0x1e - 1280x800@85Hz */
349 1496, 1712, 0, 800, 803, 809, 843, 0,
351 /* 0x1f - 1280x800@120Hz RB */
353 1360, 1440, 0, 800, 803, 809, 847, 0,
355 /* 0x20 - 1280x960@60Hz */
357 1488, 1800, 0, 960, 961, 964, 1000, 0,
359 /* 0x21 - 1280x960@85Hz */
361 1504, 1728, 0, 960, 961, 964, 1011, 0,
363 /* 0x22 - 1280x960@120Hz RB */
365 1360, 1440, 0, 960, 963, 967, 1017, 0,
367 /* 0x23 - 1280x1024@60Hz */
369 1440, 1688, 0, 1024, 1025, 1028, 1066, 0,
371 /* 0x24 - 1280x1024@75Hz */
373 1440, 1688, 0, 1024, 1025, 1028, 1066, 0,
375 /* 0x25 - 1280x1024@85Hz */
377 1504, 1728, 0, 1024, 1025, 1028, 1072, 0,
379 /* 0x26 - 1280x1024@120Hz RB */
381 1360, 1440, 0, 1024, 1027, 1034, 1084, 0,
383 /* 0x27 - 1360x768@60Hz */
385 1536, 1792, 0, 768, 771, 777, 795, 0,
387 /* 0x28 - 1360x768@120Hz RB */
389 1440, 1520, 0, 768, 771, 776, 813, 0,
391 /* 0x51 - 1366x768@60Hz */
393 1579, 1792, 0, 768, 771, 774, 798, 0,
395 /* 0x56 - 1366x768@60Hz */
397 1436, 1500, 0, 768, 769, 772, 800, 0,
399 /* 0x29 - 1400x1050@60Hz RB */
401 1480, 1560, 0, 1050, 1053, 1057, 1080, 0,
403 /* 0x2a - 1400x1050@60Hz */
405 1632, 1864, 0, 1050, 1053, 1057, 1089, 0,
407 /* 0x2b - 1400x1050@75Hz */
409 1648, 1896, 0, 1050, 1053, 1057, 1099, 0,
411 /* 0x2c - 1400x1050@85Hz */
413 1656, 1912, 0, 1050, 1053, 1057, 1105, 0,
415 /* 0x2d - 1400x1050@120Hz RB */
417 1480, 1560, 0, 1050, 1053, 1057, 1112, 0,
419 /* 0x2e - 1440x900@60Hz RB */
421 1520, 1600, 0, 900, 903, 909, 926, 0,
423 /* 0x2f - 1440x900@60Hz */
425 1672, 1904, 0, 900, 903, 909, 934, 0,
427 /* 0x30 - 1440x900@75Hz */
429 1688, 1936, 0, 900, 903, 909, 942, 0,
431 /* 0x31 - 1440x900@85Hz */
433 1696, 1952, 0, 900, 903, 909, 948, 0,
435 /* 0x32 - 1440x900@120Hz RB */
437 1520, 1600, 0, 900, 903, 909, 953, 0,
439 /* 0x53 - 1600x900@60Hz */
441 1704, 1800, 0, 900, 901, 904, 1000, 0,
443 /* 0x33 - 1600x1200@60Hz */
445 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
447 /* 0x34 - 1600x1200@65Hz */
449 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
451 /* 0x35 - 1600x1200@70Hz */
453 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
455 /* 0x36 - 1600x1200@75Hz */
457 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
459 /* 0x37 - 1600x1200@85Hz */
461 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
463 /* 0x38 - 1600x1200@120Hz RB */
465 1680, 1760, 0, 1200, 1203, 1207, 1271, 0,
467 /* 0x39 - 1680x1050@60Hz RB */
469 1760, 1840, 0, 1050, 1053, 1059, 1080, 0,
471 /* 0x3a - 1680x1050@60Hz */
473 1960, 2240, 0, 1050, 1053, 1059, 1089, 0,
475 /* 0x3b - 1680x1050@75Hz */
477 1976, 2272, 0, 1050, 1053, 1059, 1099, 0,
479 /* 0x3c - 1680x1050@85Hz */
481 1984, 2288, 0, 1050, 1053, 1059, 1105, 0,
483 /* 0x3d - 1680x1050@120Hz RB */
485 1760, 1840, 0, 1050, 1053, 1059, 1112, 0,
487 /* 0x3e - 1792x1344@60Hz */
489 2120, 2448, 0, 1344, 1345, 1348, 1394, 0,
491 /* 0x3f - 1792x1344@75Hz */
493 2104, 2456, 0, 1344, 1345, 1348, 1417, 0,
495 /* 0x40 - 1792x1344@120Hz RB */
497 1872, 1952, 0, 1344, 1347, 1351, 1423, 0,
499 /* 0x41 - 1856x1392@60Hz */
501 2176, 2528, 0, 1392, 1393, 1396, 1439, 0,
503 /* 0x42 - 1856x1392@75Hz */
505 2208, 2560, 0, 1392, 1393, 1396, 1500, 0,
507 /* 0x43 - 1856x1392@120Hz RB */
509 1936, 2016, 0, 1392, 1395, 1399, 1474, 0,
511 /* 0x52 - 1920x1080@60Hz */
513 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
515 /* 0x44 - 1920x1200@60Hz RB */
517 2000, 2080, 0, 1200, 1203, 1209, 1235, 0,
519 /* 0x45 - 1920x1200@60Hz */
521 2256, 2592, 0, 1200, 1203, 1209, 1245, 0,
523 /* 0x46 - 1920x1200@75Hz */
525 2264, 2608, 0, 1200, 1203, 1209, 1255, 0,
527 /* 0x47 - 1920x1200@85Hz */
529 2272, 2624, 0, 1200, 1203, 1209, 1262, 0,
531 /* 0x48 - 1920x1200@120Hz RB */
533 2000, 2080, 0, 1200, 1203, 1209, 1271, 0,
535 /* 0x49 - 1920x1440@60Hz */
537 2256, 2600, 0, 1440, 1441, 1444, 1500, 0,
539 /* 0x4a - 1920x1440@75Hz */
541 2288, 2640, 0, 1440, 1441, 1444, 1500, 0,
543 /* 0x4b - 1920x1440@120Hz RB */
545 2000, 2080, 0, 1440, 1443, 1447, 1525, 0,
547 /* 0x54 - 2048x1152@60Hz */
549 2154, 2250, 0, 1152, 1153, 1156, 1200, 0,
551 /* 0x4c - 2560x1600@60Hz RB */
553 2640, 2720, 0, 1600, 1603, 1609, 1646, 0,
555 /* 0x4d - 2560x1600@60Hz */
557 3032, 3504, 0, 1600, 1603, 1609, 1658, 0,
559 /* 0x4e - 2560x1600@75Hz */
561 3048, 3536, 0, 1600, 1603, 1609, 1672, 0,
563 /* 0x4f - 2560x1600@85Hz */
565 3048, 3536, 0, 1600, 1603, 1609, 1682, 0,
567 /* 0x50 - 2560x1600@120Hz RB */
569 2640, 2720, 0, 1600, 1603, 1609, 1694, 0,
571 /* 0x57 - 4096x2160@60Hz RB */
573 4136, 4176, 0, 2160, 2208, 2216, 2222, 0,
575 /* 0x58 - 4096x2160@59.94Hz RB */
577 4136, 4176, 0, 2160, 2208, 2216, 2222, 0,
592 968, 1056, 0, 600, 601, 605, 628, 0,
595 896, 1024, 0, 600, 601, 603, 625, 0,
598 720, 840, 0, 480, 481, 484, 500, 0,
601 704, 832, 0, 480, 489, 492, 520, 0,
604 768, 864, 0, 480, 483, 486, 525, 0,
607 752, 800, 0, 480, 490, 492, 525, 0,
610 846, 900, 0, 400, 421, 423, 449, 0,
613 846, 900, 0, 400, 412, 414, 449, 0,
616 1440, 1688, 0, 1024, 1025, 1028, 1066, 0,
619 1136, 1312, 0, 768, 769, 772, 800, 0,
622 1184, 1328, 0, 768, 771, 777, 806, 0,
625 1184, 1344, 0, 768, 771, 777, 806, 0,
628 1208, 1264, 0, 768, 768, 776, 817, 0,
631 928, 1152, 0, 624, 625, 628, 667, 0,
634 896, 1056, 0, 600, 601, 604, 625, 0,
637 976, 1040, 0, 600, 637, 643, 666, 0,
640 1344, 1600, 0, 864, 865, 868, 900, 0,
653 { 640, 350, 85, 0 },
654 { 640, 400, 85, 0 },
655 { 720, 400, 85, 0 },
656 { 640, 480, 85, 0 },
657 { 848, 480, 60, 0 },
658 { 800, 600, 85, 0 },
659 { 1024, 768, 85, 0 },
660 { 1152, 864, 75, 0 },
663 { 1280, 768, 60, 0 },
664 { 1280, 768, 75, 0 },
665 { 1280, 768, 85, 0 },
666 { 1280, 960, 60, 0 },
667 { 1280, 960, 85, 0 },
668 { 1280, 1024, 60, 0 },
669 { 1280, 1024, 85, 0 },
671 { 1360, 768, 60, 0 },
673 { 1440, 900, 60, 0 },
674 { 1440, 900, 75, 0 },
675 { 1440, 900, 85, 0 },
677 { 1400, 1050, 60, 0 },
678 { 1400, 1050, 75, 0 },
680 { 1400, 1050, 85, 0 },
682 { 1680, 1050, 60, 0 },
683 { 1680, 1050, 75, 0 },
684 { 1680, 1050, 85, 0 },
685 { 1600, 1200, 60, 0 },
686 { 1600, 1200, 65, 0 },
687 { 1600, 1200, 70, 0 },
689 { 1600, 1200, 75, 0 },
690 { 1600, 1200, 85, 0 },
691 { 1792, 1344, 60, 0 },
692 { 1792, 1344, 75, 0 },
693 { 1856, 1392, 60, 0 },
694 { 1856, 1392, 75, 0 },
696 { 1920, 1200, 60, 0 },
698 { 1920, 1200, 75, 0 },
699 { 1920, 1200, 85, 0 },
700 { 1920, 1440, 60, 0 },
701 { 1920, 1440, 75, 0 },
705 { 1024, 576, 60, 0 },
706 { 1366, 768, 60, 0 },
707 { 1600, 900, 60, 0 },
708 { 1680, 945, 60, 0 },
709 { 1920, 1080, 60, 0 },
710 { 2048, 1152, 60, 0 },
711 { 2048, 1536, 60, 0 },
722 752, 800, 0, 480, 490, 492, 525, 0,
727 798, 858, 0, 480, 489, 495, 525, 0,
732 798, 858, 0, 480, 489, 495, 525, 0,
735 /* 4 - 1280x720@60Hz 16:9 */
736 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390,
737 1430, 1650, 0, 720, 725, 730, 750, 0,
742 2052, 2200, 0, 1080, 1084, 1094, 1125, 0,
748 801, 858, 0, 480, 488, 494, 525, 0,
754 801, 858, 0, 480, 488, 494, 525, 0,
760 801, 858, 0, 240, 244, 247, 262, 0,
766 801, 858, 0, 240, 244, 247, 262, 0,
772 3204, 3432, 0, 480, 488, 494, 525, 0,
778 3204, 3432, 0, 480, 488, 494, 525, 0,
784 3204, 3432, 0, 240, 244, 247, 262, 0,
789 3204, 3432, 0, 240, 244, 247, 262, 0,
794 1596, 1716, 0, 480, 489, 495, 525, 0,
799 1596, 1716, 0, 480, 489, 495, 525, 0,
804 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
809 796, 864, 0, 576, 581, 586, 625, 0,
814 796, 864, 0, 576, 581, 586, 625, 0,
817 /* 19 - 1280x720@50Hz 16:9 */
818 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720,
819 1760, 1980, 0, 720, 725, 730, 750, 0,
824 2492, 2640, 0, 1080, 1084, 1094, 1125, 0,
830 795, 864, 0, 576, 580, 586, 625, 0,
836 795, 864, 0, 576, 580, 586, 625, 0,
842 795, 864, 0, 288, 290, 293, 312, 0,
848 795, 864, 0, 288, 290, 293, 312, 0,
854 3180, 3456, 0, 576, 580, 586, 625, 0,
860 3180, 3456, 0, 576, 580, 586, 625, 0,
866 3180, 3456, 0, 288, 290, 293, 312, 0,
871 3180, 3456, 0, 288, 290, 293, 312, 0,
876 1592, 1728, 0, 576, 581, 586, 625, 0,
881 1592, 1728, 0, 576, 581, 586, 625, 0,
886 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
891 2602, 2750, 0, 1080, 1084, 1089, 1125, 0,
896 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
901 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
906 3192, 3432, 0, 480, 489, 495, 525, 0,
911 3192, 3432, 0, 480, 489, 495, 525, 0,
916 3184, 3456, 0, 576, 581, 586, 625, 0,
921 3184, 3456, 0, 576, 581, 586, 625, 0,
926 2120, 2304, 0, 1080, 1126, 1136, 1250, 0,
932 2492, 2640, 0, 1080, 1084, 1094, 1125, 0,
936 /* 41 - 1280x720@100Hz 16:9 */
937 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720,
938 1760, 1980, 0, 720, 725, 730, 750, 0,
943 796, 864, 0, 576, 581, 586, 625, 0,
948 796, 864, 0, 576, 581, 586, 625, 0,
953 795, 864, 0, 576, 580, 586, 625, 0,
959 795, 864, 0, 576, 580, 586, 625, 0,
965 2052, 2200, 0, 1080, 1084, 1094, 1125, 0,
969 /* 47 - 1280x720@120Hz 16:9 */
970 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390,
971 1430, 1650, 0, 720, 725, 730, 750, 0,
976 798, 858, 0, 480, 489, 495, 525, 0,
981 798, 858, 0, 480, 489, 495, 525, 0,
986 801, 858, 0, 480, 488, 494, 525, 0,
992 801, 858, 0, 480, 488, 494, 525, 0,
998 796, 864, 0, 576, 581, 586, 625, 0,
1003 796, 864, 0, 576, 581, 586, 625, 0,
1008 795, 864, 0, 576, 580, 586, 625, 0,
1014 795, 864, 0, 576, 580, 586, 625, 0,
1020 798, 858, 0, 480, 489, 495, 525, 0,
1025 798, 858, 0, 480, 489, 495, 525, 0,
1030 801, 858, 0, 480, 488, 494, 525, 0,
1036 801, 858, 0, 480, 488, 494, 525, 0,
1040 /* 60 - 1280x720@24Hz 16:9 */
1041 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040,
1042 3080, 3300, 0, 720, 725, 730, 750, 0,
1045 /* 61 - 1280x720@25Hz 16:9 */
1046 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700,
1047 3740, 3960, 0, 720, 725, 730, 750, 0,
1050 /* 62 - 1280x720@30Hz 16:9 */
1051 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040,
1052 3080, 3300, 0, 720, 725, 730, 750, 0,
1057 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
1062 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
1065 /* 65 - 1280x720@24Hz 64:27 */
1066 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040,
1067 3080, 3300, 0, 720, 725, 730, 750, 0,
1070 /* 66 - 1280x720@25Hz 64:27 */
1071 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700,
1072 3740, 3960, 0, 720, 725, 730, 750, 0,
1075 /* 67 - 1280x720@30Hz 64:27 */
1076 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040,
1077 3080, 3300, 0, 720, 725, 730, 750, 0,
1080 /* 68 - 1280x720@50Hz 64:27 */
1081 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720,
1082 1760, 1980, 0, 720, 725, 730, 750, 0,
1085 /* 69 - 1280x720@60Hz 64:27 */
1086 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390,
1087 1430, 1650, 0, 720, 725, 730, 750, 0,
1090 /* 70 - 1280x720@100Hz 64:27 */
1091 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720,
1092 1760, 1980, 0, 720, 725, 730, 750, 0,
1095 /* 71 - 1280x720@120Hz 64:27 */
1096 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390,
1097 1430, 1650, 0, 720, 725, 730, 750, 0,
1102 2602, 2750, 0, 1080, 1084, 1089, 1125, 0,
1107 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
1112 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
1117 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
1122 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
1127 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
1132 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
1135 /* 79 - 1680x720@24Hz 64:27 */
1136 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 3040,
1137 3080, 3300, 0, 720, 725, 730, 750, 0,
1140 /* 80 - 1680x720@25Hz 64:27 */
1141 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2908,
1142 2948, 3168, 0, 720, 725, 730, 750, 0,
1145 /* 81 - 1680x720@30Hz 64:27 */
1146 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2380,
1147 2420, 2640, 0, 720, 725, 730, 750, 0,
1150 /* 82 - 1680x720@50Hz 64:27 */
1151 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 82500, 1680, 1940,
1152 1980, 2200, 0, 720, 725, 730, 750, 0,
1155 /* 83 - 1680x720@60Hz 64:27 */
1156 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 99000, 1680, 1940,
1157 1980, 2200, 0, 720, 725, 730, 750, 0,
1160 /* 84 - 1680x720@100Hz 64:27 */
1161 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 165000, 1680, 1740,
1162 1780, 2000, 0, 720, 725, 730, 825, 0,
1165 /* 85 - 1680x720@120Hz 64:27 */
1166 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 198000, 1680, 1740,
1167 1780, 2000, 0, 720, 725, 730, 825, 0,
1172 3602, 3750, 0, 1080, 1084, 1089, 1100, 0,
1177 3052, 3200, 0, 1080, 1084, 1089, 1125, 0,
1182 3372, 3520, 0, 1080, 1084, 1089, 1125, 0,
1187 3152, 3300, 0, 1080, 1084, 1089, 1125, 0,
1192 2852, 3000, 0, 1080, 1084, 1089, 1100, 0,
1197 2822, 2970, 0, 1080, 1084, 1089, 1250, 0,
1202 3152, 3300, 0, 1080, 1084, 1089, 1250, 0,
1207 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1212 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1217 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1222 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1227 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1232 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1237 5152, 5280, 0, 2160, 2168, 2178, 2250, 0,
1242 4272, 4400, 0, 2160, 2168, 2178, 2250, 0,
1247 5152, 5280, 0, 2160, 2168, 2178, 2250, 0,
1252 4272, 4400, 0, 2160, 2168, 2178, 2250, 0,
1257 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1262 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1267 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1272 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1277 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1280 /* 108 - 1280x720@48Hz 16:9 */
1281 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 90000, 1280, 2240,
1282 2280, 2500, 0, 720, 725, 730, 750, 0,
1285 /* 109 - 1280x720@48Hz 64:27 */
1286 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 90000, 1280, 2240,
1287 2280, 2500, 0, 720, 725, 730, 750, 0,
1290 /* 110 - 1680x720@48Hz 64:27 */
1291 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 99000, 1680, 2490,
1292 2530, 2750, 0, 720, 725, 730, 750, 0,
1297 2602, 2750, 0, 1080, 1084, 1089, 1125, 0,
1302 2602, 2750, 0, 1080, 1084, 1089, 1125, 0,
1307 3602, 3750, 0, 1080, 1084, 1089, 1100, 0,
1312 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1317 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1322 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1327 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1332 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1337 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1342 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1347 7204, 7500, 0, 2160, 2168, 2178, 2200, 0,
1352 6904, 7200, 0, 2160, 2168, 2178, 2200, 0,
1357 5872, 6000, 0, 2160, 2168, 2178, 2200, 0,
1362 5954, 6250, 0, 2160, 2168, 2178, 2475, 0,
1367 6304, 6600, 0, 2160, 2168, 2178, 2250, 0,
1372 5372, 5500, 0, 2160, 2168, 2178, 2250, 0,
1377 6304, 6600, 0, 2160, 2168, 2178, 2250, 0,
1390 5372, 5500, 0, 2160, 2168, 2178, 2250, 0,
1395 10408, 11000, 0, 4320, 4336, 4356, 4500, 0,
1400 10208, 10800, 0, 4320, 4336, 4356, 4400, 0,
1405 8408, 9000, 0, 4320, 4336, 4356, 4400, 0,
1410 10408, 11000, 0, 4320, 4336, 4356, 4500, 0,
1415 10208, 10800, 0, 4320, 4336, 4356, 4400, 0,
1420 8408, 9000, 0, 4320, 4336, 4356, 4400, 0,
1425 9968, 10560, 0, 4320, 4336, 4356, 4500, 0,
1430 8208, 8800, 0, 4320, 4336, 4356, 4500, 0,
1435 10408, 11000, 0, 4320, 4336, 4356, 4500, 0,
1440 10208, 10800, 0, 4320, 4336, 4356, 4400, 0,
1445 8408, 9000, 0, 4320, 4336, 4356, 4400, 0,
1450 10408, 11000, 0, 4320, 4336, 4356, 4500, 0,
1455 10208, 10800, 0, 4320, 4336, 4356, 4400, 0,
1460 8408, 9000, 0, 4320, 4336, 4356, 4400, 0,
1465 9968, 10560, 0, 4320, 4336, 4356, 4500, 0,
1470 8208, 8800, 0, 4320, 4336, 4356, 4500, 0,
1475 11908, 12500, 0, 4320, 4336, 4356, 4950, 0,
1480 12908, 13500, 0, 4320, 4336, 4356, 4400, 0,
1485 10704, 11000, 0, 4320, 4336, 4356, 4500, 0,
1490 11908, 12500, 0, 4320, 4336, 4356, 4950, 0,
1495 12908, 13500, 0, 4320, 4336, 4356, 4400, 0,
1500 10704, 11000, 0, 4320, 4336, 4356, 4500, 0,
1505 12608, 13200, 0, 4320, 4336, 4356, 4500, 0,
1510 10704, 11000, 0, 4320, 4336, 4356, 4500, 0,
1515 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1520 4272, 4400, 0, 2160, 2168, 2178, 2250, 0,
1529 /* 0 - dummy, VICs start at 1 */
1533 3840, 4016, 4104, 4400, 0,
1534 2160, 2168, 2178, 2250, 0,
1539 3840, 4896, 4984, 5280, 0,
1540 2160, 2168, 2178, 2250, 0,
1545 3840, 5116, 5204, 5500, 0,
1546 2160, 2168, 2178, 2250, 0,
1551 4096, 5116, 5204, 5500, 0,
1552 2160, 2168, 2178, 2250, 0,
1560 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00
1569 * Return: 8 if the header is perfect, down to 0 if it's totally wrong.
1573 int i, score = 0; in drm_edid_header_is_valid()
1575 for (i = 0; i < sizeof(edid_header); i++) in drm_edid_header_is_valid()
1586 "Minimum number of valid EDID header bytes (0-8, default 6)");
1591 u8 csum = 0, crc = 0; in drm_edid_block_checksum()
1593 for (i = 0; i < EDID_LENGTH - 1; i++) in drm_edid_block_checksum()
1596 crc = 0x100 - csum; in drm_edid_block_checksum()
1611 if (memchr_inv(in_edid, 0, length)) in drm_edid_is_zero()
1651 * @block: type of block to validate (0 for base, extension otherwise)
1669 if (edid_fixup > 8 || edid_fixup < 0) in drm_edid_block_valid()
1672 if (block == 0) { in drm_edid_block_valid()
1701 if (raw_edid[0] == CEA_EXT) { in drm_edid_block_valid()
1713 switch (raw_edid[0]) { in drm_edid_block_valid()
1714 case 0: /* base */ in drm_edid_block_valid()
1761 for (i = 0; i <= edid->extensions; i++) in drm_edid_is_valid()
1769 #define DDC_SEGMENT_ADDR 0x30
1779 * Return: 0 on success or -1 on failure.
1801 .flags = 0, in drm_do_probe_ddc_edid()
1806 .flags = 0, in drm_do_probe_ddc_edid()
1830 return ret == xfers ? 0 : -1; in drm_do_probe_ddc_edid()
1840 * 0x7e in the EDID is the number of extension blocks. The EDID in connector_bad_edid()
1842 * of 0x7e in the EDID of the _index_ of the last block in the in connector_bad_edid()
1845 last_block = edid[0x7e]; in connector_bad_edid()
1856 for (i = 0; i < num_blocks; i++) { in connector_bad_edid()
1896 * Return: The number of modes added or 0 if we couldn't find any.
1901 int num_modes = 0; in drm_add_override_edid_modes()
1942 int i, j = 0, valid_extensions = 0; in drm_do_get_edid()
1954 for (i = 0; i < 4; i++) { in drm_do_get_edid()
1955 if (get_edid_block(data, edid, 0, EDID_LENGTH)) in drm_do_get_edid()
1957 if (drm_edid_block_valid(edid, 0, false, in drm_do_get_edid()
1960 if (i == 0 && drm_edid_is_zero(edid, EDID_LENGTH)) { in drm_do_get_edid()
1969 valid_extensions = edid[0x7e]; in drm_do_get_edid()
1970 if (valid_extensions == 0) in drm_do_get_edid()
1978 for (j = 1; j <= edid[0x7e]; j++) { in drm_do_get_edid()
1981 for (i = 0; i < 4; i++) { in drm_do_get_edid()
1992 if (valid_extensions != edid[0x7e]) { in drm_do_get_edid()
1995 connector_bad_edid(connector, edid, edid[0x7e] + 1); in drm_do_get_edid()
1997 edid[EDID_LENGTH-1] += edid[0x7e] - valid_extensions; in drm_do_get_edid()
1998 edid[0x7e] = valid_extensions; in drm_do_get_edid()
2006 for (i = 0; i <= edid[0x7e]; i++) { in drm_do_get_edid()
2041 return (drm_do_probe_ddc_edid(adapter, &out, 0, 1) == 0); in drm_probe_ddc()
2126 edid_vendor[0] = ((edid->mfg_id[0] & 0x7c) >> 2) + '@'; in edid_vendor()
2127 edid_vendor[1] = (((edid->mfg_id[0] & 0x3) << 3) | in edid_vendor()
2128 ((edid->mfg_id[1] & 0xe0) >> 5)) + '@'; in edid_vendor()
2129 edid_vendor[2] = (edid->mfg_id[1] & 0x1f) + '@'; in edid_vendor()
2145 for (i = 0; i < ARRAY_SIZE(edid_quirk_list); i++) { in edid_get_quirks()
2153 return 0; in edid_get_quirks()
2171 int target_refresh = 0; in edid_fixup_preferred()
2235 for (i = 0; i < ARRAY_SIZE(drm_dmt_modes); i++) { in drm_mode_find_dmt()
2256 return d[0] == 0x00 && d[1] == 0x00 && in is_display_descriptor()
2257 d[2] == 0x00 && d[3] == tag; in is_display_descriptor()
2262 return d[0] != 0x00 || d[1] != 0x00; in is_detailed_timing_descriptor()
2271 u8 d = ext[0x02]; in cea_for_each_detailed_block()
2278 for (i = 0; i < n; i++) in cea_for_each_detailed_block()
2285 unsigned int i, n = min((int)ext[0x02], 6); in vtb_for_each_detailed_block()
2288 if (ext[0x01] != 1) in vtb_for_each_detailed_block()
2291 for (i = 0; i < n; i++) in vtb_for_each_detailed_block()
2304 for (i = 0; i < EDID_DETAILED_TIMINGS; i++) in drm_for_each_detailed_block()
2307 for (i = 1; i <= raw_edid[0x7e]; i++) { in drm_for_each_detailed_block()
2331 if (r[15] & 0x10) in is_rb()
2346 return ((edid->input & DRM_EDID_INPUT_DIGITAL) != 0); in drm_monitor_supports_rb()
2357 if (r[10] == 0x02) in find_gtf2()
2368 return r ? (r[12] * 2) : 0; in drm_gtf2_hbreak()
2377 return r ? r[13] : 0; in drm_gtf2_2c()
2386 return r ? (r[15] << 8) + r[14] : 0; in drm_gtf2_m()
2395 return r ? r[16] : 0; in drm_gtf2_k()
2404 return r ? r[17] : 0; in drm_gtf2_2j()
2425 * 0 is reserved. The spec says 0x01 fill for unused timings. Some old
2426 * monitors fill with ascii space (0x20) instead.
2431 return (a == 0x00 && b == 0x00) || in bad_std_timing()
2432 (a == 0x01 && b == 0x01) || in bad_std_timing()
2433 (a == 0x20 && b == 0x20); in bad_std_timing()
2438 if (mode->htotal <= 0) in drm_mode_hsync()
2439 return 0; in drm_mode_hsync()
2475 if (aspect_ratio == 0) { in drm_mode_std()
2508 mode = drm_cvt_mode(dev, 1366, 768, vrefresh_rate, 0, 0, in drm_mode_std()
2534 mode = drm_gtf_mode(dev, hsize, vsize, vrefresh_rate, 0, 0); in drm_mode_std()
2542 mode = drm_gtf_mode(dev, hsize, vsize, vrefresh_rate, 0, 0); in drm_mode_std()
2548 vrefresh_rate, 0, 0, in drm_mode_std()
2556 mode = drm_cvt_mode(dev, hsize, vsize, vrefresh_rate, 0, 0, in drm_mode_std()
2591 for (i = 0; i < ARRAY_SIZE(cea_interlaced); i++) { in drm_mode_do_interlace_quirk()
2622 unsigned hactive = (pt->hactive_hblank_hi & 0xf0) << 4 | pt->hactive_lo; in drm_mode_detailed()
2623 unsigned vactive = (pt->vactive_vblank_hi & 0xf0) << 4 | pt->vactive_lo; in drm_mode_detailed()
2624 unsigned hblank = (pt->hactive_hblank_hi & 0xf) << 8 | pt->hblank_lo; in drm_mode_detailed()
2625 unsigned vblank = (pt->vactive_vblank_hi & 0xf) << 8 | pt->vblank_lo; in drm_mode_detailed()
2626 unsigned hsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc0) << 2 | pt->hsync_offset_lo; in drm_mode_detailed()
2627 …unsigned hsync_pulse_width = (pt->hsync_vsync_offset_pulse_width_hi & 0x30) << 4 | pt->hsync_pulse… in drm_mode_detailed()
2628 …unsigned vsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc) << 2 | pt->vsync_offset_puls… in drm_mode_detailed()
2629 …se_width = (pt->hsync_vsync_offset_pulse_width_hi & 0x3) << 4 | (pt->vsync_offset_pulse_width_lo &… in drm_mode_detailed()
2695 mode->width_mm = pt->width_mm_lo | (pt->width_height_mm_hi & 0xf0) << 4; in drm_mode_detailed()
2696 mode->height_mm = pt->height_mm_lo | (pt->width_height_mm_hi & 0xf) << 8; in drm_mode_detailed()
2722 hmin += ((t[4] & 0x04) ? 255 : 0); in mode_in_hsync_range()
2725 hmax += ((t[4] & 0x08) ? 255 : 0); in mode_in_hsync_range()
2739 vmin += ((t[4] & 0x01) ? 255 : 0); in mode_in_vsync_range()
2742 vmax += ((t[4] & 0x02) ? 255 : 0); in mode_in_vsync_range()
2752 if (t[9] == 0 || t[9] == 255) in range_pixel_clock()
2753 return 0; in range_pixel_clock()
2756 if (edid->revision >= 4 && t[10] == 0x04) in range_pixel_clock()
2781 if (edid->revision >= 4 && t[10] == 0x04) in mode_in_range()
2782 if (t[13] && mode->hdisplay > 8 * (t[13] + (256 * (t[12]&0x3)))) in mode_in_range()
2813 int i, modes = 0; in drm_dmt_modes_for_range()
2817 for (i = 0; i < ARRAY_SIZE(drm_dmt_modes); i++) { in drm_dmt_modes_for_range()
2848 int i, modes = 0; in drm_gtf_modes_for_range()
2852 for (i = 0; i < ARRAY_SIZE(extra_modes); i++) { in drm_gtf_modes_for_range()
2855 newmode = drm_gtf_mode(dev, m->w, m->h, m->r, 0, 0); in drm_gtf_modes_for_range()
2877 int i, modes = 0; in drm_cvt_modes_for_range()
2882 for (i = 0; i < ARRAY_SIZE(extra_modes); i++) { in drm_cvt_modes_for_range()
2885 newmode = drm_cvt_mode(dev, m->w, m->h, m->r, rb, 0, 0); in drm_cvt_modes_for_range()
2921 case 0x02: /* secondary gtf, XXX could do more */ in do_inferred_modes()
2922 case 0x00: /* default gtf */ in do_inferred_modes()
2927 case 0x04: /* cvt, only in 1.4+ */ in do_inferred_modes()
2935 case 0x01: /* just the ranges, no formula */ in do_inferred_modes()
2949 if (version_greater(edid, 1, 0)) in add_inferred_modes()
2959 int i, j, m, modes = 0; in drm_est3_modes()
2963 for (i = 0; i < 6; i++) { in drm_est3_modes()
2964 for (j = 7; j >= 0; j--) { in drm_est3_modes()
3010 ((edid->established_timings.mfg_rsvd & 0x80) << 9); in add_established_modes()
3011 int i, modes = 0; in add_established_modes()
3017 for (i = 0; i <= EDID_EST_TIMINGS; i++) { in add_established_modes()
3029 if (version_greater(edid, 1, 0)) in add_established_modes()
3048 for (i = 0; i < 6; i++) { in do_standard_modes()
3071 int i, modes = 0; in add_standard_modes()
3077 for (i = 0; i < EDID_STD_TIMINGS; i++) { in add_standard_modes()
3088 if (version_greater(edid, 1, 0)) in add_standard_modes()
3100 int i, j, modes = 0; in drm_cvt_modes()
3105 const u8 empty[3] = { 0, 0, 0 }; in drm_cvt_modes()
3107 for (i = 0; i < 4; i++) { in drm_cvt_modes()
3115 height = (cvt->code[0] + ((cvt->code[1] & 0xf0) << 4) + 1) * 2; in drm_cvt_modes()
3116 switch (cvt->code[1] & 0x0c) { in drm_cvt_modes()
3119 case 0x00: in drm_cvt_modes()
3122 case 0x04: in drm_cvt_modes()
3125 case 0x08: in drm_cvt_modes()
3128 case 0x0c: in drm_cvt_modes()
3136 rates[j], j == 0, in drm_cvt_modes()
3234 #define AUDIO_BLOCK 0x01
3235 #define VIDEO_BLOCK 0x02
3236 #define VENDOR_BLOCK 0x03
3237 #define SPEAKER_BLOCK 0x04
3238 #define HDR_STATIC_METADATA_BLOCK 0x6
3239 #define USE_EXTENDED_TAG 0x07
3240 #define EXT_VIDEO_CAPABILITY_BLOCK 0x00
3241 #define EXT_VIDEO_DATA_BLOCK_420 0x0E
3242 #define EXT_VIDEO_CAP_BLOCK_Y420CMDB 0x0F
3258 if (edid == NULL || edid->extensions == 0) in drm_find_edid_extension()
3264 if (edid_ext[0] == ext_id) in drm_find_edid_extension()
3281 int ext_index = 0; in drm_find_cea_extension()
3335 if (drm_mode_vrefresh(cea_mode) % 6 != 0) in cea_mode_alternate_clock()
3393 return 0; in drm_match_cea_mode_clock_tolerance()
3416 return 0; in drm_match_cea_mode_clock_tolerance()
3423 * Return: The CEA Video ID (VIC) of the mode or 0 if it isn't a CEA-861
3432 return 0; in drm_match_cea_mode()
3455 return 0; in drm_match_cea_mode()
3496 return 0; in drm_match_hdmi_mode_clock_tolerance()
3517 return 0; in drm_match_hdmi_mode_clock_tolerance()
3526 * Returns the HDMI Video ID (VIC) of the mode or 0 if it isn't one.
3534 return 0; in drm_match_hdmi_mode()
3552 return 0; in drm_match_hdmi_mode()
3557 return vic > 0 && vic < ARRAY_SIZE(edid_4k_modes); in drm_valid_hdmi_vic()
3566 int modes = 0; in add_alternate_cea_modes()
3570 return 0; in add_alternate_cea_modes()
3634 /* 0-6 bit vic, 7th bit native mode indicator */ in svd_to_vic()
3678 int modes = 0, i; in do_y420vdb_modes()
3683 for (i = 0; i < svds_len; i++) { in do_y420vdb_modes()
3698 if (modes > 0) in do_y420vdb_modes()
3753 int i, modes = 0; in do_cea_modes()
3756 for (i = 0; i < len; i++) { in do_cea_modes()
3766 * For example, if the bit 0 in bitmap is set, in do_cea_modes()
3816 int modes = 0, i; in add_hdmi_mandatory_stereo_modes()
3821 for (i = 0; i < ARRAY_SIZE(stereo_mandatory_modes); i++) { in add_hdmi_mandatory_stereo_modes()
3852 return 0; in add_hdmi_mode()
3857 return 0; in add_hdmi_mode()
3868 int modes = 0; in add_3d_struct_modes()
3870 if (structure & (1 << 0)) { in add_3d_struct_modes()
3918 int modes = 0, offset = 0, i, multi_present = 0, multi_len; in do_hdmi_vsdb_modes()
3919 u8 vic_len, hdmi_3d_len = 0; in do_hdmi_vsdb_modes()
3949 multi_present = (db[8 + offset] & 0x60) >> 5; in do_hdmi_vsdb_modes()
3954 hdmi_3d_len = db[8 + offset] & 0x1f; in do_hdmi_vsdb_modes()
3956 for (i = 0; i < vic_len && len >= (9 + offset + i); i++) { in do_hdmi_vsdb_modes()
3969 multi_len = 0; in do_hdmi_vsdb_modes()
3985 mask = 0xffff; in do_hdmi_vsdb_modes()
3987 for (i = 0; i < 16; i++) { in do_hdmi_vsdb_modes()
3998 for (i = 0; i < (hdmi_3d_len - multi_len); i++) { in do_hdmi_vsdb_modes()
4001 unsigned int newflag = 0; in do_hdmi_vsdb_modes()
4004 detail_present = ((db[8 + offset + i] & 0x0f) > 7); in do_hdmi_vsdb_modes()
4013 switch (db[8 + offset + i] & 0x0f) { in do_hdmi_vsdb_modes()
4014 case 0: in do_hdmi_vsdb_modes()
4027 if (newflag != 0) { in do_hdmi_vsdb_modes()
4045 if (modes > 0) in do_hdmi_vsdb_modes()
4053 return db[0] & 0x1f; in cea_db_payload_len()
4065 return db[0] >> 5; in cea_db_tag()
4076 * given as an example is 0. in cea_revision()
4101 if (cea[0] == DATA_BLOCK_CTA) { in cea_db_offsets()
4108 } else if (cea[0] == CEA_EXT) { in cea_db_offsets()
4112 if (*end == 0) in cea_db_offsets()
4120 return 0; in cea_db_offsets()
4205 u64 map = 0; in drm_parse_y420cmdb_bitmap()
4207 if (map_len == 0) { in drm_parse_y420cmdb_bitmap()
4216 * from VDB can support YCBCR420 output too. So if bit=0 is in drm_parse_y420cmdb_bitmap()
4229 for (count = 0; count < map_len; count++) in drm_parse_y420cmdb_bitmap()
4243 u8 dbl, hdmi_len, video_len = 0; in add_cea_modes()
4244 int modes = 0; in add_cea_modes()
4250 return 0; in add_cea_modes()
4266 /* Add 4:2:0(only) modes present in EDID */ in add_cea_modes()
4385 connector->latency_present[0] = db[8] >> 7; in drm_parse_hdmi_vsdb_audio()
4389 connector->video_latency[0] = db[9]; in drm_parse_hdmi_vsdb_audio()
4391 connector->audio_latency[0] = db[10]; in drm_parse_hdmi_vsdb_audio()
4400 connector->latency_present[0], in drm_parse_hdmi_vsdb_audio()
4402 connector->video_latency[0], in drm_parse_hdmi_vsdb_audio()
4404 connector->audio_latency[0], in drm_parse_hdmi_vsdb_audio()
4423 return 0; in get_monitor_name()
4426 for (mnl = 0; edid_name && mnl < 13; mnl++) { in get_monitor_name()
4427 if (edid_name[mnl] == 0x0a) in get_monitor_name()
4448 if (bufsize <= 0) in drm_edid_get_monitor_name()
4453 name[name_length] = '\0'; in drm_edid_get_monitor_name()
4459 memset(connector->eld, 0, sizeof(connector->eld)); in clear_eld()
4461 connector->latency_present[0] = false; in clear_eld()
4463 connector->video_latency[0] = 0; in clear_eld()
4464 connector->audio_latency[0] = 0; in clear_eld()
4465 connector->video_latency[1] = 0; in clear_eld()
4466 connector->audio_latency[1] = 0; in clear_eld()
4482 int total_sad_count = 0; in drm_edid_to_eld()
4505 eld[DRM_ELD_MANUFACTURER_NAME0] = edid->mfg_id[0]; in drm_edid_to_eld()
4507 eld[DRM_ELD_PRODUCT_CODE0] = edid->prod_code[0]; in drm_edid_to_eld()
4515 start = 0; in drm_edid_to_eld()
4516 end = 0; in drm_edid_to_eld()
4575 int count = 0; in drm_edid_to_sad()
4582 return 0; in drm_edid_to_sad()
4587 return 0; in drm_edid_to_sad()
4607 for (j = 0; j < count; j++) { in drm_edid_to_sad()
4610 (*sads)[j].format = (sad[0] & 0x78) >> 3; in drm_edid_to_sad()
4611 (*sads)[j].channels = sad[0] & 0x7; in drm_edid_to_sad()
4612 (*sads)[j].freq = sad[1] & 0x7F; in drm_edid_to_sad()
4637 int count = 0; in drm_edid_to_speaker_allocation()
4644 return 0; in drm_edid_to_speaker_allocation()
4649 return 0; in drm_edid_to_speaker_allocation()
4683 * Return: The HDMI/DP sink's audio-video sync delay in milliseconds or 0 if
4692 if (!connector->latency_present[0]) in drm_av_sync_delay()
4693 return 0; in drm_av_sync_delay()
4695 i = 0; in drm_av_sync_delay()
4704 return 0; in drm_av_sync_delay()
4708 * Treat unknown latency as 0ms. in drm_av_sync_delay()
4715 return max(v - a, 0); in drm_av_sync_delay()
4779 has_audio = ((edid_ext[3] & EDID_BASIC_AUDIO) != 0); in drm_detect_monitor_audio()
4794 (edid_ext[i + j] >> 3) & 0xf); in drm_detect_monitor_audio()
4827 DRM_DEBUG_KMS("CEA VCDB 0x%02x\n", db[2]); in drm_parse_vcdb()
4861 case 0: in drm_get_max_frl_rate()
4863 *max_lanes = 0; in drm_get_max_frl_rate()
4864 *max_rate_per_lane = 0; in drm_get_max_frl_rate()
4886 if (hf_vsdb[6] & 0x80) { in drm_parse_hdmi_forum_vsdb()
4888 if (hf_vsdb[6] & 0x40) in drm_parse_hdmi_forum_vsdb()
4916 if ((hf_vsdb[6] & 0x8)) in drm_parse_hdmi_forum_vsdb()
4944 hdmi_dsc->bpc_supported = 0; in drm_parse_hdmi_forum_vsdb()
4981 case 0: in drm_parse_hdmi_forum_vsdb()
4983 hdmi_dsc->max_slices = 0; in drm_parse_hdmi_forum_vsdb()
4984 hdmi_dsc->clk_per_slice = 0; in drm_parse_hdmi_forum_vsdb()
4996 unsigned int dc_bpc = 0; in drm_parse_hdmi_deep_color_info()
5025 if (dc_bpc == 0) { in drm_parse_hdmi_deep_color_info()
5168 info->width_mm = 0; in drm_reset_display_info()
5169 info->height_mm = 0; in drm_reset_display_info()
5171 info->bpc = 0; in drm_reset_display_info()
5172 info->color_formats = 0; in drm_reset_display_info()
5173 info->cea_rev = 0; in drm_reset_display_info()
5174 info->max_tmds_clock = 0; in drm_reset_display_info()
5179 memset(&info->hdmi, 0, sizeof(info->hdmi)); in drm_reset_display_info()
5181 info->non_desktop = 0; in drm_reset_display_info()
5182 memset(&info->monitor_range, 0, sizeof(info->monitor_range)); in drm_reset_display_info()
5217 if (info->bpc == 0 && edid->revision == 3 && in drm_add_display_info()
5249 info->bpc = 0; in drm_add_display_info()
5268 unsigned pixel_clock = (timings->pixel_clock[0] | in drm_mode_displayid_detailed()
5271 unsigned hactive = (timings->hactive[0] | timings->hactive[1] << 8) + 1; in drm_mode_displayid_detailed()
5272 unsigned hblank = (timings->hblank[0] | timings->hblank[1] << 8) + 1; in drm_mode_displayid_detailed()
5273 unsigned hsync = (timings->hsync[0] | (timings->hsync[1] & 0x7f) << 8) + 1; in drm_mode_displayid_detailed()
5274 unsigned hsync_width = (timings->hsw[0] | timings->hsw[1] << 8) + 1; in drm_mode_displayid_detailed()
5275 unsigned vactive = (timings->vactive[0] | timings->vactive[1] << 8) + 1; in drm_mode_displayid_detailed()
5276 unsigned vblank = (timings->vblank[0] | timings->vblank[1] << 8) + 1; in drm_mode_displayid_detailed()
5277 unsigned vsync = (timings->vsync[0] | (timings->vsync[1] & 0x7f) << 8) + 1; in drm_mode_displayid_detailed()
5278 unsigned vsync_width = (timings->vsw[0] | timings->vsw[1] << 8) + 1; in drm_mode_displayid_detailed()
5279 bool hsync_positive = (timings->hsync[1] >> 7) & 0x1; in drm_mode_displayid_detailed()
5280 bool vsync_positive = (timings->vsync[1] >> 7) & 0x1; in drm_mode_displayid_detailed()
5297 mode->flags = 0; in drm_mode_displayid_detailed()
5302 if (timings->flags & 0x80) in drm_mode_displayid_detailed()
5316 int num_modes = 0; in add_displayid_detailed_1_modes()
5319 return 0; in add_displayid_detailed_1_modes()
5322 for (i = 0; i < num_timings; i++) { in add_displayid_detailed_1_modes()
5340 int num_modes = 0; in add_displayid_detailed_modes()
5361 * Return: The number of modes added or 0 if we couldn't find any.
5365 int num_modes = 0; in drm_add_edid_modes()
5370 return 0; in drm_add_edid_modes()
5376 return 0; in drm_add_edid_modes()
5440 * Return: The number of modes added or 0 if we couldn't find any.
5445 int i, count, num_modes = 0; in drm_add_modes_noedid()
5450 if (hdisplay < 0) in drm_add_modes_noedid()
5451 hdisplay = 0; in drm_add_modes_noedid()
5452 if (vdisplay < 0) in drm_add_modes_noedid()
5453 vdisplay = 0; in drm_add_modes_noedid()
5455 for (i = 0; i < count; i++) { in drm_add_modes_noedid()
5526 * Return: 0 on success or a negative error code on failure.
5557 if (err < 0) in drm_hdmi_infoframe_set_hdr_metadata()
5583 return 0; in drm_hdmi_infoframe_set_hdr_metadata()
5594 return 0; in drm_mode_hdmi_vic()
5598 return 0; in drm_mode_hdmi_vic()
5615 return 0; in drm_mode_cea_vic()
5625 return 0; in drm_mode_cea_vic()
5637 * Return: 0 on success or a negative error code on failure.
5666 frame->itc = 0; in drm_hdmi_avi_infoframe_from_display_mode()
5704 return 0; in drm_hdmi_avi_infoframe_from_display_mode()
5709 #define FULL_COLORIMETRY_MASK 0x1FF
5710 #define NORMAL_COLORIMETRY_MASK 0x3
5711 #define EXTENDED_COLORIMETRY_MASK 0x7
5712 #define EXTENDED_ACE_COLORIMETRY_MASK 0xF
5714 #define C(x) ((x) << 0)
5718 #define HDMI_COLORIMETRY_NO_DATA 0x0
5719 #define HDMI_COLORIMETRY_SMPTE_170M_YCC (C(1) | EC(0) | ACE(0))
5720 #define HDMI_COLORIMETRY_BT709_YCC (C(2) | EC(0) | ACE(0))
5721 #define HDMI_COLORIMETRY_XVYCC_601 (C(3) | EC(0) | ACE(0))
5722 #define HDMI_COLORIMETRY_XVYCC_709 (C(3) | EC(1) | ACE(0))
5723 #define HDMI_COLORIMETRY_SYCC_601 (C(3) | EC(2) | ACE(0))
5724 #define HDMI_COLORIMETRY_OPYCC_601 (C(3) | EC(3) | ACE(0))
5725 #define HDMI_COLORIMETRY_OPRGB (C(3) | EC(4) | ACE(0))
5726 #define HDMI_COLORIMETRY_BT2020_CYCC (C(3) | EC(5) | ACE(0))
5727 #define HDMI_COLORIMETRY_BT2020_RGB (C(3) | EC(6) | ACE(0))
5728 #define HDMI_COLORIMETRY_BT2020_YCC (C(3) | EC(6) | ACE(0))
5729 #define HDMI_COLORIMETRY_DCI_P3_RGB_D65 (C(3) | EC(7) | ACE(0))
5802 * default RGB quantization range for the mode, even when QS=0. in drm_hdmi_avi_infoframe_quant_range()
5814 * (e.g., when Limited Range RGB, set YQ=0 or when Full Range RGB, in drm_hdmi_avi_infoframe_quant_range()
5888 * Return: 0 on success or a negative error code on failure.
5910 if (err < 0) in drm_hdmi_vendor_infoframe_from_display_mode()
5915 * (ie.vic==0 and s3d_struct==0) we will still send it if we in drm_hdmi_vendor_infoframe_from_display_mode()
5925 return 0; in drm_hdmi_vendor_infoframe_from_display_mode()
5938 w = tile->tile_size[0] | tile->tile_size[1] << 8; in drm_parse_tiled_block()
5941 num_v_tile = (tile->topo[0] & 0xf) | (tile->topo[2] & 0x30); in drm_parse_tiled_block()
5942 num_h_tile = (tile->topo[0] >> 4) | ((tile->topo[2] >> 2) & 0x30); in drm_parse_tiled_block()
5943 tile_v_loc = (tile->topo[1] & 0xf) | ((tile->topo[2] & 0x3) << 4); in drm_parse_tiled_block()
5944 tile_h_loc = (tile->topo[1] >> 4) | (((tile->topo[2] >> 2) & 0x3) << 4); in drm_parse_tiled_block()
5947 if (tile->tile_cap & 0x80) in drm_parse_tiled_block()
5957 DRM_DEBUG_KMS("tile cap 0x%x\n", tile->tile_cap); in drm_parse_tiled_block()
5961 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()