Lines Matching +full:0 +full:x720
65 #define EDID_QUIRK_PREFER_LARGE_60 (1 << 0)
93 #define MICROSOFT_IEEE_OUI 0xca125c
102 #define LEVEL_DMT 0
121 EDID_QUIRK('A', 'P', 'I', 0x7602, EDID_QUIRK_PREFER_LARGE_60),
123 /* AEO model 0 reports 8 bpc, but is a 6 bpc panel */
124 EDID_QUIRK('A', 'E', 'O', 0, EDID_QUIRK_FORCE_6BPC),
127 EDID_QUIRK('B', 'N', 'Q', 0x78d6, EDID_QUIRK_FORCE_8BPC),
130 EDID_QUIRK('B', 'O', 'E', 0x78b, EDID_QUIRK_FORCE_6BPC),
133 EDID_QUIRK('C', 'P', 'T', 0x17df, EDID_QUIRK_FORCE_6BPC),
136 EDID_QUIRK('S', 'D', 'C', 0x3652, EDID_QUIRK_FORCE_6BPC),
138 /* BOE model 0x0771 reports 8 bpc, but is a 6 bpc panel */
139 EDID_QUIRK('B', 'O', 'E', 0x0771, EDID_QUIRK_FORCE_6BPC),
143 EDID_QUIRK('M', 'A', 'X', 0x77e, EDID_QUIRK_PREFER_LARGE_60),
155 EDID_QUIRK('G', 'S', 'M', 0x5bbf, EDID_QUIRK_CAP_DSC_15BPP),
158 EDID_QUIRK('G', 'S', 'M', 0x5b9a, EDID_QUIRK_CAP_DSC_15BPP),
164 EDID_QUIRK('L', 'P', 'L', 0, EDID_QUIRK_DETAILED_USE_MAXIMUM_SIZE),
165 EDID_QUIRK('L', 'P', 'L', 0x2a00, EDID_QUIRK_DETAILED_USE_MAXIMUM_SIZE),
174 EDID_QUIRK('S', 'N', 'Y', 0x2541, EDID_QUIRK_FORCE_12BPC),
180 EDID_QUIRK('M', 'E', 'D', 0x7b8, EDID_QUIRK_PREFER_LARGE_75),
186 EDID_QUIRK('S', 'E', 'C', 0xd033, EDID_QUIRK_FORCE_8BPC),
192 EDID_QUIRK('V', 'L', 'V', 0x91a8, EDID_QUIRK_NON_DESKTOP),
193 EDID_QUIRK('V', 'L', 'V', 0x91b0, EDID_QUIRK_NON_DESKTOP),
194 EDID_QUIRK('V', 'L', 'V', 0x91b1, EDID_QUIRK_NON_DESKTOP),
195 EDID_QUIRK('V', 'L', 'V', 0x91b2, EDID_QUIRK_NON_DESKTOP),
196 EDID_QUIRK('V', 'L', 'V', 0x91b3, EDID_QUIRK_NON_DESKTOP),
197 EDID_QUIRK('V', 'L', 'V', 0x91b4, EDID_QUIRK_NON_DESKTOP),
198 EDID_QUIRK('V', 'L', 'V', 0x91b5, EDID_QUIRK_NON_DESKTOP),
199 EDID_QUIRK('V', 'L', 'V', 0x91b6, EDID_QUIRK_NON_DESKTOP),
200 EDID_QUIRK('V', 'L', 'V', 0x91b7, EDID_QUIRK_NON_DESKTOP),
201 EDID_QUIRK('V', 'L', 'V', 0x91b8, EDID_QUIRK_NON_DESKTOP),
202 EDID_QUIRK('V', 'L', 'V', 0x91b9, EDID_QUIRK_NON_DESKTOP),
203 EDID_QUIRK('V', 'L', 'V', 0x91ba, EDID_QUIRK_NON_DESKTOP),
204 EDID_QUIRK('V', 'L', 'V', 0x91bb, EDID_QUIRK_NON_DESKTOP),
205 EDID_QUIRK('V', 'L', 'V', 0x91bc, EDID_QUIRK_NON_DESKTOP),
206 EDID_QUIRK('V', 'L', 'V', 0x91bd, EDID_QUIRK_NON_DESKTOP),
207 EDID_QUIRK('V', 'L', 'V', 0x91be, EDID_QUIRK_NON_DESKTOP),
208 EDID_QUIRK('V', 'L', 'V', 0x91bf, EDID_QUIRK_NON_DESKTOP),
211 EDID_QUIRK('H', 'V', 'R', 0xaa01, EDID_QUIRK_NON_DESKTOP),
212 EDID_QUIRK('H', 'V', 'R', 0xaa02, EDID_QUIRK_NON_DESKTOP),
215 EDID_QUIRK('O', 'V', 'R', 0x0001, EDID_QUIRK_NON_DESKTOP),
216 EDID_QUIRK('O', 'V', 'R', 0x0003, EDID_QUIRK_NON_DESKTOP),
217 EDID_QUIRK('O', 'V', 'R', 0x0004, EDID_QUIRK_NON_DESKTOP),
218 EDID_QUIRK('O', 'V', 'R', 0x0012, EDID_QUIRK_NON_DESKTOP),
221 EDID_QUIRK('A', 'C', 'R', 0x7fce, EDID_QUIRK_NON_DESKTOP),
222 EDID_QUIRK('L', 'E', 'N', 0x0408, EDID_QUIRK_NON_DESKTOP),
223 EDID_QUIRK('F', 'U', 'J', 0x1970, EDID_QUIRK_NON_DESKTOP),
224 EDID_QUIRK('D', 'E', 'L', 0x7fce, EDID_QUIRK_NON_DESKTOP),
225 EDID_QUIRK('S', 'E', 'C', 0x144a, EDID_QUIRK_NON_DESKTOP),
226 EDID_QUIRK('A', 'U', 'S', 0xc102, EDID_QUIRK_NON_DESKTOP),
229 EDID_QUIRK('S', 'N', 'Y', 0x0704, EDID_QUIRK_NON_DESKTOP),
232 EDID_QUIRK('S', 'E', 'N', 0x1019, EDID_QUIRK_NON_DESKTOP),
235 EDID_QUIRK('S', 'V', 'R', 0x1019, EDID_QUIRK_NON_DESKTOP),
236 EDID_QUIRK('A', 'U', 'O', 0x1111, EDID_QUIRK_NON_DESKTOP),
244 /* 0x01 - 640x350@85Hz */
246 736, 832, 0, 350, 382, 385, 445, 0,
248 /* 0x02 - 640x400@85Hz */
250 736, 832, 0, 400, 401, 404, 445, 0,
252 /* 0x03 - 720x400@85Hz */
254 828, 936, 0, 400, 401, 404, 446, 0,
256 /* 0x04 - 640x480@60Hz */
258 752, 800, 0, 480, 490, 492, 525, 0,
260 /* 0x05 - 640x480@72Hz */
262 704, 832, 0, 480, 489, 492, 520, 0,
264 /* 0x06 - 640x480@75Hz */
266 720, 840, 0, 480, 481, 484, 500, 0,
268 /* 0x07 - 640x480@85Hz */
270 752, 832, 0, 480, 481, 484, 509, 0,
272 /* 0x08 - 800x600@56Hz */
274 896, 1024, 0, 600, 601, 603, 625, 0,
276 /* 0x09 - 800x600@60Hz */
278 968, 1056, 0, 600, 601, 605, 628, 0,
280 /* 0x0a - 800x600@72Hz */
282 976, 1040, 0, 600, 637, 643, 666, 0,
284 /* 0x0b - 800x600@75Hz */
286 896, 1056, 0, 600, 601, 604, 625, 0,
288 /* 0x0c - 800x600@85Hz */
290 896, 1048, 0, 600, 601, 604, 631, 0,
292 /* 0x0d - 800x600@120Hz RB */
294 880, 960, 0, 600, 603, 607, 636, 0,
296 /* 0x0e - 848x480@60Hz */
298 976, 1088, 0, 480, 486, 494, 517, 0,
300 /* 0x0f - 1024x768@43Hz, interlace */
302 1208, 1264, 0, 768, 768, 776, 817, 0,
305 /* 0x10 - 1024x768@60Hz */
307 1184, 1344, 0, 768, 771, 777, 806, 0,
309 /* 0x11 - 1024x768@70Hz */
311 1184, 1328, 0, 768, 771, 777, 806, 0,
313 /* 0x12 - 1024x768@75Hz */
315 1136, 1312, 0, 768, 769, 772, 800, 0,
317 /* 0x13 - 1024x768@85Hz */
319 1168, 1376, 0, 768, 769, 772, 808, 0,
321 /* 0x14 - 1024x768@120Hz RB */
323 1104, 1184, 0, 768, 771, 775, 813, 0,
325 /* 0x15 - 1152x864@75Hz */
327 1344, 1600, 0, 864, 865, 868, 900, 0,
329 /* 0x55 - 1280x720@60Hz */
330 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390,
331 1430, 1650, 0, 720, 725, 730, 750, 0,
333 /* 0x16 - 1280x768@60Hz RB */
335 1360, 1440, 0, 768, 771, 778, 790, 0,
337 /* 0x17 - 1280x768@60Hz */
339 1472, 1664, 0, 768, 771, 778, 798, 0,
341 /* 0x18 - 1280x768@75Hz */
343 1488, 1696, 0, 768, 771, 778, 805, 0,
345 /* 0x19 - 1280x768@85Hz */
347 1496, 1712, 0, 768, 771, 778, 809, 0,
349 /* 0x1a - 1280x768@120Hz RB */
351 1360, 1440, 0, 768, 771, 778, 813, 0,
353 /* 0x1b - 1280x800@60Hz RB */
355 1360, 1440, 0, 800, 803, 809, 823, 0,
357 /* 0x1c - 1280x800@60Hz */
359 1480, 1680, 0, 800, 803, 809, 831, 0,
361 /* 0x1d - 1280x800@75Hz */
363 1488, 1696, 0, 800, 803, 809, 838, 0,
365 /* 0x1e - 1280x800@85Hz */
367 1496, 1712, 0, 800, 803, 809, 843, 0,
369 /* 0x1f - 1280x800@120Hz RB */
371 1360, 1440, 0, 800, 803, 809, 847, 0,
373 /* 0x20 - 1280x960@60Hz */
375 1488, 1800, 0, 960, 961, 964, 1000, 0,
377 /* 0x21 - 1280x960@85Hz */
379 1504, 1728, 0, 960, 961, 964, 1011, 0,
381 /* 0x22 - 1280x960@120Hz RB */
383 1360, 1440, 0, 960, 963, 967, 1017, 0,
385 /* 0x23 - 1280x1024@60Hz */
387 1440, 1688, 0, 1024, 1025, 1028, 1066, 0,
389 /* 0x24 - 1280x1024@75Hz */
391 1440, 1688, 0, 1024, 1025, 1028, 1066, 0,
393 /* 0x25 - 1280x1024@85Hz */
395 1504, 1728, 0, 1024, 1025, 1028, 1072, 0,
397 /* 0x26 - 1280x1024@120Hz RB */
399 1360, 1440, 0, 1024, 1027, 1034, 1084, 0,
401 /* 0x27 - 1360x768@60Hz */
403 1536, 1792, 0, 768, 771, 777, 795, 0,
405 /* 0x28 - 1360x768@120Hz RB */
407 1440, 1520, 0, 768, 771, 776, 813, 0,
409 /* 0x51 - 1366x768@60Hz */
411 1579, 1792, 0, 768, 771, 774, 798, 0,
413 /* 0x56 - 1366x768@60Hz */
415 1436, 1500, 0, 768, 769, 772, 800, 0,
417 /* 0x29 - 1400x1050@60Hz RB */
419 1480, 1560, 0, 1050, 1053, 1057, 1080, 0,
421 /* 0x2a - 1400x1050@60Hz */
423 1632, 1864, 0, 1050, 1053, 1057, 1089, 0,
425 /* 0x2b - 1400x1050@75Hz */
427 1648, 1896, 0, 1050, 1053, 1057, 1099, 0,
429 /* 0x2c - 1400x1050@85Hz */
431 1656, 1912, 0, 1050, 1053, 1057, 1105, 0,
433 /* 0x2d - 1400x1050@120Hz RB */
435 1480, 1560, 0, 1050, 1053, 1057, 1112, 0,
437 /* 0x2e - 1440x900@60Hz RB */
439 1520, 1600, 0, 900, 903, 909, 926, 0,
441 /* 0x2f - 1440x900@60Hz */
443 1672, 1904, 0, 900, 903, 909, 934, 0,
445 /* 0x30 - 1440x900@75Hz */
447 1688, 1936, 0, 900, 903, 909, 942, 0,
449 /* 0x31 - 1440x900@85Hz */
451 1696, 1952, 0, 900, 903, 909, 948, 0,
453 /* 0x32 - 1440x900@120Hz RB */
455 1520, 1600, 0, 900, 903, 909, 953, 0,
457 /* 0x53 - 1600x900@60Hz */
459 1704, 1800, 0, 900, 901, 904, 1000, 0,
461 /* 0x33 - 1600x1200@60Hz */
463 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
465 /* 0x34 - 1600x1200@65Hz */
467 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
469 /* 0x35 - 1600x1200@70Hz */
471 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
473 /* 0x36 - 1600x1200@75Hz */
475 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
477 /* 0x37 - 1600x1200@85Hz */
479 1856, 2160, 0, 1200, 1201, 1204, 1250, 0,
481 /* 0x38 - 1600x1200@120Hz RB */
483 1680, 1760, 0, 1200, 1203, 1207, 1271, 0,
485 /* 0x39 - 1680x1050@60Hz RB */
487 1760, 1840, 0, 1050, 1053, 1059, 1080, 0,
489 /* 0x3a - 1680x1050@60Hz */
491 1960, 2240, 0, 1050, 1053, 1059, 1089, 0,
493 /* 0x3b - 1680x1050@75Hz */
495 1976, 2272, 0, 1050, 1053, 1059, 1099, 0,
497 /* 0x3c - 1680x1050@85Hz */
499 1984, 2288, 0, 1050, 1053, 1059, 1105, 0,
501 /* 0x3d - 1680x1050@120Hz RB */
503 1760, 1840, 0, 1050, 1053, 1059, 1112, 0,
505 /* 0x3e - 1792x1344@60Hz */
507 2120, 2448, 0, 1344, 1345, 1348, 1394, 0,
509 /* 0x3f - 1792x1344@75Hz */
511 2104, 2456, 0, 1344, 1345, 1348, 1417, 0,
513 /* 0x40 - 1792x1344@120Hz RB */
515 1872, 1952, 0, 1344, 1347, 1351, 1423, 0,
517 /* 0x41 - 1856x1392@60Hz */
519 2176, 2528, 0, 1392, 1393, 1396, 1439, 0,
521 /* 0x42 - 1856x1392@75Hz */
523 2208, 2560, 0, 1392, 1393, 1396, 1500, 0,
525 /* 0x43 - 1856x1392@120Hz RB */
527 1936, 2016, 0, 1392, 1395, 1399, 1474, 0,
529 /* 0x52 - 1920x1080@60Hz */
531 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
533 /* 0x44 - 1920x1200@60Hz RB */
535 2000, 2080, 0, 1200, 1203, 1209, 1235, 0,
537 /* 0x45 - 1920x1200@60Hz */
539 2256, 2592, 0, 1200, 1203, 1209, 1245, 0,
541 /* 0x46 - 1920x1200@75Hz */
543 2264, 2608, 0, 1200, 1203, 1209, 1255, 0,
545 /* 0x47 - 1920x1200@85Hz */
547 2272, 2624, 0, 1200, 1203, 1209, 1262, 0,
549 /* 0x48 - 1920x1200@120Hz RB */
551 2000, 2080, 0, 1200, 1203, 1209, 1271, 0,
553 /* 0x49 - 1920x1440@60Hz */
555 2256, 2600, 0, 1440, 1441, 1444, 1500, 0,
557 /* 0x4a - 1920x1440@75Hz */
559 2288, 2640, 0, 1440, 1441, 1444, 1500, 0,
561 /* 0x4b - 1920x1440@120Hz RB */
563 2000, 2080, 0, 1440, 1443, 1447, 1525, 0,
565 /* 0x54 - 2048x1152@60Hz */
567 2154, 2250, 0, 1152, 1153, 1156, 1200, 0,
569 /* 0x4c - 2560x1600@60Hz RB */
571 2640, 2720, 0, 1600, 1603, 1609, 1646, 0,
573 /* 0x4d - 2560x1600@60Hz */
575 3032, 3504, 0, 1600, 1603, 1609, 1658, 0,
577 /* 0x4e - 2560x1600@75Hz */
579 3048, 3536, 0, 1600, 1603, 1609, 1672, 0,
581 /* 0x4f - 2560x1600@85Hz */
583 3048, 3536, 0, 1600, 1603, 1609, 1682, 0,
585 /* 0x50 - 2560x1600@120Hz RB */
587 2640, 2720, 0, 1600, 1603, 1609, 1694, 0,
589 /* 0x57 - 4096x2160@60Hz RB */
591 4136, 4176, 0, 2160, 2208, 2216, 2222, 0,
593 /* 0x58 - 4096x2160@59.94Hz RB */
595 4136, 4176, 0, 2160, 2208, 2216, 2222, 0,
610 968, 1056, 0, 600, 601, 605, 628, 0,
613 896, 1024, 0, 600, 601, 603, 625, 0,
616 720, 840, 0, 480, 481, 484, 500, 0,
619 704, 832, 0, 480, 489, 492, 520, 0,
622 768, 864, 0, 480, 483, 486, 525, 0,
625 752, 800, 0, 480, 490, 492, 525, 0,
628 846, 900, 0, 400, 421, 423, 449, 0,
631 846, 900, 0, 400, 412, 414, 449, 0,
634 1440, 1688, 0, 1024, 1025, 1028, 1066, 0,
637 1136, 1312, 0, 768, 769, 772, 800, 0,
640 1184, 1328, 0, 768, 771, 777, 806, 0,
643 1184, 1344, 0, 768, 771, 777, 806, 0,
646 1208, 1264, 0, 768, 768, 776, 817, 0,
649 928, 1152, 0, 624, 625, 628, 667, 0,
652 896, 1056, 0, 600, 601, 604, 625, 0,
655 976, 1040, 0, 600, 637, 643, 666, 0,
658 1344, 1600, 0, 864, 865, 868, 900, 0,
671 { 640, 350, 85, 0 },
672 { 640, 400, 85, 0 },
673 { 720, 400, 85, 0 },
674 { 640, 480, 85, 0 },
675 { 848, 480, 60, 0 },
676 { 800, 600, 85, 0 },
677 { 1024, 768, 85, 0 },
678 { 1152, 864, 75, 0 },
681 { 1280, 768, 60, 0 },
682 { 1280, 768, 75, 0 },
683 { 1280, 768, 85, 0 },
684 { 1280, 960, 60, 0 },
685 { 1280, 960, 85, 0 },
686 { 1280, 1024, 60, 0 },
687 { 1280, 1024, 85, 0 },
689 { 1360, 768, 60, 0 },
691 { 1440, 900, 60, 0 },
692 { 1440, 900, 75, 0 },
693 { 1440, 900, 85, 0 },
695 { 1400, 1050, 60, 0 },
696 { 1400, 1050, 75, 0 },
698 { 1400, 1050, 85, 0 },
700 { 1680, 1050, 60, 0 },
701 { 1680, 1050, 75, 0 },
702 { 1680, 1050, 85, 0 },
703 { 1600, 1200, 60, 0 },
704 { 1600, 1200, 65, 0 },
705 { 1600, 1200, 70, 0 },
707 { 1600, 1200, 75, 0 },
708 { 1600, 1200, 85, 0 },
709 { 1792, 1344, 60, 0 },
710 { 1792, 1344, 75, 0 },
711 { 1856, 1392, 60, 0 },
712 { 1856, 1392, 75, 0 },
714 { 1920, 1200, 60, 0 },
716 { 1920, 1200, 75, 0 },
717 { 1920, 1200, 85, 0 },
718 { 1920, 1440, 60, 0 },
719 { 1920, 1440, 75, 0 },
723 { 1024, 576, 60, 0 },
724 { 1366, 768, 60, 0 },
725 { 1600, 900, 60, 0 },
726 { 1680, 945, 60, 0 },
727 { 1920, 1080, 60, 0 },
728 { 2048, 1152, 60, 0 },
729 { 2048, 1536, 60, 0 },
740 752, 800, 0, 480, 490, 492, 525, 0,
745 798, 858, 0, 480, 489, 495, 525, 0,
750 798, 858, 0, 480, 489, 495, 525, 0,
753 /* 4 - 1280x720@60Hz 16:9 */
754 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390,
755 1430, 1650, 0, 720, 725, 730, 750, 0,
760 2052, 2200, 0, 1080, 1084, 1094, 1125, 0,
766 801, 858, 0, 480, 488, 494, 525, 0,
772 801, 858, 0, 480, 488, 494, 525, 0,
778 801, 858, 0, 240, 244, 247, 262, 0,
784 801, 858, 0, 240, 244, 247, 262, 0,
790 3204, 3432, 0, 480, 488, 494, 525, 0,
796 3204, 3432, 0, 480, 488, 494, 525, 0,
802 3204, 3432, 0, 240, 244, 247, 262, 0,
807 3204, 3432, 0, 240, 244, 247, 262, 0,
812 1596, 1716, 0, 480, 489, 495, 525, 0,
817 1596, 1716, 0, 480, 489, 495, 525, 0,
822 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
827 796, 864, 0, 576, 581, 586, 625, 0,
832 796, 864, 0, 576, 581, 586, 625, 0,
835 /* 19 - 1280x720@50Hz 16:9 */
836 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720,
837 1760, 1980, 0, 720, 725, 730, 750, 0,
842 2492, 2640, 0, 1080, 1084, 1094, 1125, 0,
848 795, 864, 0, 576, 580, 586, 625, 0,
854 795, 864, 0, 576, 580, 586, 625, 0,
860 795, 864, 0, 288, 290, 293, 312, 0,
866 795, 864, 0, 288, 290, 293, 312, 0,
872 3180, 3456, 0, 576, 580, 586, 625, 0,
878 3180, 3456, 0, 576, 580, 586, 625, 0,
884 3180, 3456, 0, 288, 290, 293, 312, 0,
889 3180, 3456, 0, 288, 290, 293, 312, 0,
894 1592, 1728, 0, 576, 581, 586, 625, 0,
899 1592, 1728, 0, 576, 581, 586, 625, 0,
904 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
909 2602, 2750, 0, 1080, 1084, 1089, 1125, 0,
914 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
919 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
924 3192, 3432, 0, 480, 489, 495, 525, 0,
929 3192, 3432, 0, 480, 489, 495, 525, 0,
934 3184, 3456, 0, 576, 581, 586, 625, 0,
939 3184, 3456, 0, 576, 581, 586, 625, 0,
944 2120, 2304, 0, 1080, 1126, 1136, 1250, 0,
950 2492, 2640, 0, 1080, 1084, 1094, 1125, 0,
954 /* 41 - 1280x720@100Hz 16:9 */
955 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720,
956 1760, 1980, 0, 720, 725, 730, 750, 0,
961 796, 864, 0, 576, 581, 586, 625, 0,
966 796, 864, 0, 576, 581, 586, 625, 0,
971 795, 864, 0, 576, 580, 586, 625, 0,
977 795, 864, 0, 576, 580, 586, 625, 0,
983 2052, 2200, 0, 1080, 1084, 1094, 1125, 0,
987 /* 47 - 1280x720@120Hz 16:9 */
988 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390,
989 1430, 1650, 0, 720, 725, 730, 750, 0,
994 798, 858, 0, 480, 489, 495, 525, 0,
999 798, 858, 0, 480, 489, 495, 525, 0,
1004 801, 858, 0, 480, 488, 494, 525, 0,
1010 801, 858, 0, 480, 488, 494, 525, 0,
1016 796, 864, 0, 576, 581, 586, 625, 0,
1021 796, 864, 0, 576, 581, 586, 625, 0,
1026 795, 864, 0, 576, 580, 586, 625, 0,
1032 795, 864, 0, 576, 580, 586, 625, 0,
1038 798, 858, 0, 480, 489, 495, 525, 0,
1043 798, 858, 0, 480, 489, 495, 525, 0,
1048 801, 858, 0, 480, 488, 494, 525, 0,
1054 801, 858, 0, 480, 488, 494, 525, 0,
1058 /* 60 - 1280x720@24Hz 16:9 */
1059 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040,
1060 3080, 3300, 0, 720, 725, 730, 750, 0,
1063 /* 61 - 1280x720@25Hz 16:9 */
1064 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700,
1065 3740, 3960, 0, 720, 725, 730, 750, 0,
1068 /* 62 - 1280x720@30Hz 16:9 */
1069 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040,
1070 3080, 3300, 0, 720, 725, 730, 750, 0,
1075 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
1080 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
1083 /* 65 - 1280x720@24Hz 64:27 */
1084 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040,
1085 3080, 3300, 0, 720, 725, 730, 750, 0,
1088 /* 66 - 1280x720@25Hz 64:27 */
1089 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700,
1090 3740, 3960, 0, 720, 725, 730, 750, 0,
1093 /* 67 - 1280x720@30Hz 64:27 */
1094 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040,
1095 3080, 3300, 0, 720, 725, 730, 750, 0,
1098 /* 68 - 1280x720@50Hz 64:27 */
1099 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720,
1100 1760, 1980, 0, 720, 725, 730, 750, 0,
1103 /* 69 - 1280x720@60Hz 64:27 */
1104 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390,
1105 1430, 1650, 0, 720, 725, 730, 750, 0,
1108 /* 70 - 1280x720@100Hz 64:27 */
1109 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720,
1110 1760, 1980, 0, 720, 725, 730, 750, 0,
1113 /* 71 - 1280x720@120Hz 64:27 */
1114 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390,
1115 1430, 1650, 0, 720, 725, 730, 750, 0,
1120 2602, 2750, 0, 1080, 1084, 1089, 1125, 0,
1125 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
1130 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
1135 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
1140 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
1145 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
1150 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
1153 /* 79 - 1680x720@24Hz 64:27 */
1154 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 3040,
1155 3080, 3300, 0, 720, 725, 730, 750, 0,
1158 /* 80 - 1680x720@25Hz 64:27 */
1159 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2908,
1160 2948, 3168, 0, 720, 725, 730, 750, 0,
1163 /* 81 - 1680x720@30Hz 64:27 */
1164 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2380,
1165 2420, 2640, 0, 720, 725, 730, 750, 0,
1168 /* 82 - 1680x720@50Hz 64:27 */
1169 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 82500, 1680, 1940,
1170 1980, 2200, 0, 720, 725, 730, 750, 0,
1173 /* 83 - 1680x720@60Hz 64:27 */
1174 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 99000, 1680, 1940,
1175 1980, 2200, 0, 720, 725, 730, 750, 0,
1178 /* 84 - 1680x720@100Hz 64:27 */
1179 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 165000, 1680, 1740,
1180 1780, 2000, 0, 720, 725, 730, 825, 0,
1183 /* 85 - 1680x720@120Hz 64:27 */
1184 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 198000, 1680, 1740,
1185 1780, 2000, 0, 720, 725, 730, 825, 0,
1190 3602, 3750, 0, 1080, 1084, 1089, 1100, 0,
1195 3052, 3200, 0, 1080, 1084, 1089, 1125, 0,
1200 3372, 3520, 0, 1080, 1084, 1089, 1125, 0,
1205 3152, 3300, 0, 1080, 1084, 1089, 1125, 0,
1210 2852, 3000, 0, 1080, 1084, 1089, 1100, 0,
1215 2822, 2970, 0, 1080, 1084, 1089, 1250, 0,
1220 3152, 3300, 0, 1080, 1084, 1089, 1250, 0,
1225 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1230 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1235 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1240 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1245 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1250 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1255 5152, 5280, 0, 2160, 2168, 2178, 2250, 0,
1260 4272, 4400, 0, 2160, 2168, 2178, 2250, 0,
1265 5152, 5280, 0, 2160, 2168, 2178, 2250, 0,
1270 4272, 4400, 0, 2160, 2168, 2178, 2250, 0,
1275 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1280 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1285 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1290 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1295 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1298 /* 108 - 1280x720@48Hz 16:9 */
1299 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 90000, 1280, 2240,
1300 2280, 2500, 0, 720, 725, 730, 750, 0,
1303 /* 109 - 1280x720@48Hz 64:27 */
1304 { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 90000, 1280, 2240,
1305 2280, 2500, 0, 720, 725, 730, 750, 0,
1308 /* 110 - 1680x720@48Hz 64:27 */
1309 { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 99000, 1680, 2490,
1310 2530, 2750, 0, 720, 725, 730, 750, 0,
1315 2602, 2750, 0, 1080, 1084, 1089, 1125, 0,
1320 2602, 2750, 0, 1080, 1084, 1089, 1125, 0,
1325 3602, 3750, 0, 1080, 1084, 1089, 1100, 0,
1330 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1335 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1340 5204, 5500, 0, 2160, 2168, 2178, 2250, 0,
1345 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1350 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1355 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1360 4104, 4400, 0, 2160, 2168, 2178, 2250, 0,
1365 7204, 7500, 0, 2160, 2168, 2178, 2200, 0,
1370 6904, 7200, 0, 2160, 2168, 2178, 2200, 0,
1375 5872, 6000, 0, 2160, 2168, 2178, 2200, 0,
1380 5954, 6250, 0, 2160, 2168, 2178, 2475, 0,
1385 6304, 6600, 0, 2160, 2168, 2178, 2250, 0,
1390 5372, 5500, 0, 2160, 2168, 2178, 2250, 0,
1395 6304, 6600, 0, 2160, 2168, 2178, 2250, 0,
1408 5372, 5500, 0, 2160, 2168, 2178, 2250, 0,
1413 10408, 11000, 0, 4320, 4336, 4356, 4500, 0,
1418 10208, 10800, 0, 4320, 4336, 4356, 4400, 0,
1423 8408, 9000, 0, 4320, 4336, 4356, 4400, 0,
1428 10408, 11000, 0, 4320, 4336, 4356, 4500, 0,
1433 10208, 10800, 0, 4320, 4336, 4356, 4400, 0,
1438 8408, 9000, 0, 4320, 4336, 4356, 4400, 0,
1443 9968, 10560, 0, 4320, 4336, 4356, 4500, 0,
1448 8208, 8800, 0, 4320, 4336, 4356, 4500, 0,
1453 10408, 11000, 0, 4320, 4336, 4356, 4500, 0,
1458 10208, 10800, 0, 4320, 4336, 4356, 4400, 0,
1463 8408, 9000, 0, 4320, 4336, 4356, 4400, 0,
1468 10408, 11000, 0, 4320, 4336, 4356, 4500, 0,
1473 10208, 10800, 0, 4320, 4336, 4356, 4400, 0,
1478 8408, 9000, 0, 4320, 4336, 4356, 4400, 0,
1483 9968, 10560, 0, 4320, 4336, 4356, 4500, 0,
1488 8208, 8800, 0, 4320, 4336, 4356, 4500, 0,
1493 11908, 12500, 0, 4320, 4336, 4356, 4950, 0,
1498 12908, 13500, 0, 4320, 4336, 4356, 4400, 0,
1503 10704, 11000, 0, 4320, 4336, 4356, 4500, 0,
1508 11908, 12500, 0, 4320, 4336, 4356, 4950, 0,
1513 12908, 13500, 0, 4320, 4336, 4356, 4400, 0,
1518 10704, 11000, 0, 4320, 4336, 4356, 4500, 0,
1523 12608, 13200, 0, 4320, 4336, 4356, 4500, 0,
1528 10704, 11000, 0, 4320, 4336, 4356, 4500, 0,
1533 4984, 5280, 0, 2160, 2168, 2178, 2250, 0,
1538 4272, 4400, 0, 2160, 2168, 2178, 2250, 0,
1547 /* 0 - dummy, VICs start at 1 */
1551 3840, 4016, 4104, 4400, 0,
1552 2160, 2168, 2178, 2250, 0,
1557 3840, 4896, 4984, 5280, 0,
1558 2160, 2168, 2178, 2250, 0,
1563 3840, 5116, 5204, 5500, 0,
1564 2160, 2168, 2178, 2250, 0,
1569 4096, 5116, 5204, 5500, 0,
1570 2160, 2168, 2178, 2250, 0,
1592 return eeodb ? eeodb + 1 : 0; in edid_hfeeodb_block_count()
1686 memset(drm_edid, 0, sizeof(*drm_edid)); in drm_edid_legacy_init()
1716 memset(iter, 0, sizeof(*iter)); in drm_edid_iter_begin()
1739 memset(iter, 0, sizeof(*iter)); in drm_edid_iter_end()
1743 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00
1757 * Return: 8 if the header is perfect, down to 0 if it's totally wrong.
1762 int i, score = 0; in drm_edid_header_is_valid()
1764 for (i = 0; i < sizeof(edid_header); i++) { in drm_edid_header_is_valid()
1776 "Minimum number of valid EDID header bytes (0-8, default 6)");
1782 u8 csum = 0, crc = 0; in edid_block_compute_checksum()
1784 for (i = 0; i < EDID_LENGTH - 1; i++) in edid_block_compute_checksum()
1787 crc = 0x100 - csum; in edid_block_compute_checksum()
1803 return block[0]; in edid_block_tag()
1808 return !memchr_inv(edid, 0, EDID_LENGTH); in edid_block_is_zero()
1843 EDID_BLOCK_OK = 0,
1865 if (score < clamp(edid_fixup, 0, 8)) { in edid_block_check()
1931 pr_debug("EDID block %d (tag 0x%02x) checksum is invalid, remainder is %d, ignoring\n", in edid_block_status_print()
1935 pr_notice("EDID block %d (tag 0x%02x) checksum is invalid, remainder is %d\n", in edid_block_status_print()
1956 status = edid_block_check(block, block_num == 0); in edid_block_dump()
1971 * @block_num: type of block to validate (0 for base, extension otherwise)
1985 bool is_base_block = block_num == 0; in drm_edid_block_valid()
2043 for (i = 0; i < edid_block_count(edid); i++) { in drm_edid_is_valid()
2073 for (i = 0; i < drm_edid_block_count(drm_edid); i++) { in drm_edid_valid()
2076 if (!edid_block_valid(block, i == 0)) in drm_edid_valid()
2088 int i, valid_blocks = 0; in edid_filter_invalid_blocks()
2095 for (i = 0; i < edid_block_count(edid); i++) { in edid_filter_invalid_blocks()
2098 if (edid_block_valid(src_block, i == 0)) { in edid_filter_invalid_blocks()
2124 #define DDC_SEGMENT_ADDR 0x30
2134 * Return: 0 on success or -1 on failure.
2156 .flags = 0, in drm_do_probe_ddc_edid()
2161 .flags = 0, in drm_do_probe_ddc_edid()
2185 return ret == xfers ? 0 : -1; in drm_do_probe_ddc_edid()
2195 * 0x7e in the EDID is the number of extension blocks. The EDID in connector_bad_edid()
2197 * of 0x7e in the EDID of the _index_ of the last block in the in connector_bad_edid()
2212 for (i = 0; i < num_blocks; i++) in connector_bad_edid()
2247 return 0; in drm_edid_override_show()
2274 return 0; in drm_edid_override_set()
2290 return 0; in drm_edid_override_reset()
2302 * Return: The number of modes added or 0 if we couldn't find any.
2307 int num_modes = 0; in drm_edid_override_connector_update()
2311 if (drm_edid_connector_update(connector, override) == 0) in drm_edid_override_connector_update()
2332 bool is_base_block = block_num == 0; in edid_block_read()
2335 for (try = 0; try < 4; try++) { in edid_block_read()
2353 if (try == 0 && is_base_block && status == EDID_BLOCK_ZERO) in edid_block_read()
2365 int i, num_blocks, invalid_blocks = 0; in _drm_do_get_edid()
2384 status = edid_block_read(edid, 0, read_block, context); in _drm_do_get_edid()
2386 edid_block_status_print(status, edid, 0); in _drm_do_get_edid()
2612 return (drm_do_probe_ddc_edid(adapter, &out, 0, 1) == 0); in drm_probe_ddc()
2672 size_t size = 0; in drm_edid_read_custom()
2764 return (u32)edid->mfg_id[0] << 24 | in edid_extract_panel_id()
2797 u32 panel_id = 0; in drm_edid_get_panel_id()
2800 * There are no manufacturer IDs of 0, so if there is a problem reading in drm_edid_get_panel_id()
2801 * the EDID then we'll just return 0. in drm_edid_get_panel_id()
2806 return 0; in drm_edid_get_panel_id()
2808 status = edid_block_read(base_block, 0, drm_do_probe_ddc_edid, adapter); in drm_edid_get_panel_id()
2810 edid_block_status_print(status, base_block, 0); in drm_edid_get_panel_id()
2815 edid_block_dump(KERN_NOTICE, base_block, 0); in drm_edid_get_panel_id()
2910 for (i = 0; i < ARRAY_SIZE(edid_quirk_list); i++) { in edid_get_quirks()
2916 return 0; in edid_get_quirks()
2930 int target_refresh = 0; in edid_fixup_preferred()
2994 for (i = 0; i < ARRAY_SIZE(drm_dmt_modes); i++) { in drm_mode_find_dmt()
3015 BUILD_BUG_ON(offsetof(typeof(*descriptor), pixel_clock) != 0); in is_display_descriptor()
3019 return descriptor->pixel_clock == 0 && in is_display_descriptor()
3020 descriptor->data.other_data.pad1 == 0 && in is_display_descriptor()
3026 BUILD_BUG_ON(offsetof(typeof(*descriptor), pixel_clock) != 0); in is_detailed_timing_descriptor()
3028 return descriptor->pixel_clock != 0; in is_detailed_timing_descriptor()
3037 u8 d = ext[0x02]; in cea_for_each_detailed_block()
3044 for (i = 0; i < n; i++) in cea_for_each_detailed_block()
3051 unsigned int i, n = min((int)ext[0x02], 6); in vtb_for_each_detailed_block()
3054 if (ext[0x01] != 1) in vtb_for_each_detailed_block()
3057 for (i = 0; i < n; i++) in vtb_for_each_detailed_block()
3071 for (i = 0; i < EDID_DETAILED_TIMINGS; i++) in drm_for_each_detailed_block()
3117 return ((drm_edid->edid->input & DRM_EDID_INPUT_DIGITAL) != 0); in drm_monitor_supports_rb()
3144 return descriptor ? descriptor->data.other_data.data.range.formula.gtf2.hfreq_start_khz * 2 : 0; in drm_gtf2_hbreak()
3156 return descriptor ? descriptor->data.other_data.data.range.formula.gtf2.c : 0; in drm_gtf2_2c()
3168 return descriptor ? le16_to_cpu(descriptor->data.other_data.data.range.formula.gtf2.m) : 0; in drm_gtf2_m()
3180 return descriptor ? descriptor->data.other_data.data.range.formula.gtf2.k : 0; in drm_gtf2_k()
3192 return descriptor ? descriptor->data.other_data.data.range.formula.gtf2.j : 0; in drm_gtf2_2j()
3245 * 0 is reserved. The spec says 0x01 fill for unused timings. Some old
3246 * monitors fill with ascii space (0x20) instead.
3251 return (a == 0x00 && b == 0x00) || in bad_std_timing()
3252 (a == 0x01 && b == 0x01) || in bad_std_timing()
3253 (a == 0x20 && b == 0x20); in bad_std_timing()
3258 if (mode->htotal <= 0) in drm_mode_hsync()
3259 return 0; in drm_mode_hsync()
3276 mode = drm_gtf_mode(dev, hsize, vsize, vrefresh_rate, 0, 0); in drm_gtf2_mode()
3283 vrefresh_rate, 0, 0, in drm_gtf2_mode()
3319 if (aspect_ratio == 0) { in drm_mode_std()
3352 mode = drm_cvt_mode(dev, 1366, 768, vrefresh_rate, 0, 0, in drm_mode_std()
3378 mode = drm_gtf_mode(dev, hsize, vsize, vrefresh_rate, 0, 0); in drm_mode_std()
3384 mode = drm_cvt_mode(dev, hsize, vsize, vrefresh_rate, 0, 0, in drm_mode_std()
3419 for (i = 0; i < ARRAY_SIZE(cea_interlaced); i++) { in drm_mode_do_interlace_quirk()
3446 unsigned hactive = (pt->hactive_hblank_hi & 0xf0) << 4 | pt->hactive_lo; in drm_mode_detailed()
3447 unsigned vactive = (pt->vactive_vblank_hi & 0xf0) << 4 | pt->vactive_lo; in drm_mode_detailed()
3448 unsigned hblank = (pt->hactive_hblank_hi & 0xf) << 8 | pt->hblank_lo; in drm_mode_detailed()
3449 unsigned vblank = (pt->vactive_vblank_hi & 0xf) << 8 | pt->vblank_lo; in drm_mode_detailed()
3450 unsigned hsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc0) << 2 | pt->hsync_offset_lo; in drm_mode_detailed()
3451 …unsigned hsync_pulse_width = (pt->hsync_vsync_offset_pulse_width_hi & 0x30) << 4 | pt->hsync_pulse… in drm_mode_detailed()
3452 …unsigned vsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc) << 2 | pt->vsync_offset_puls… in drm_mode_detailed()
3453 …se_width = (pt->hsync_vsync_offset_pulse_width_hi & 0x3) << 4 | (pt->vsync_offset_pulse_width_lo &… in drm_mode_detailed()
3529 mode->width_mm = pt->width_mm_lo | (pt->width_height_mm_hi & 0xf0) << 4; in drm_mode_detailed()
3530 mode->height_mm = pt->height_mm_lo | (pt->width_height_mm_hi & 0xf) << 8; in drm_mode_detailed()
3556 hmin += ((t[4] & 0x04) ? 255 : 0); in mode_in_hsync_range()
3559 hmax += ((t[4] & 0x08) ? 255 : 0); in mode_in_hsync_range()
3573 vmin += ((t[4] & 0x01) ? 255 : 0); in mode_in_vsync_range()
3576 vmax += ((t[4] & 0x02) ? 255 : 0); in mode_in_vsync_range()
3586 if (t[9] == 0 || t[9] == 255) in range_pixel_clock()
3587 return 0; in range_pixel_clock()
3617 if (t[13] && mode->hdisplay > 8 * (t[13] + (256 * (t[12]&0x3)))) in mode_in_range()
3648 int i, modes = 0; in drm_dmt_modes_for_range()
3652 for (i = 0; i < ARRAY_SIZE(drm_dmt_modes); i++) { in drm_dmt_modes_for_range()
3683 int i, modes = 0; in drm_gtf_modes_for_range()
3687 for (i = 0; i < ARRAY_SIZE(extra_modes); i++) { in drm_gtf_modes_for_range()
3690 newmode = drm_gtf_mode(dev, m->w, m->h, m->r, 0, 0); in drm_gtf_modes_for_range()
3712 int i, modes = 0; in drm_gtf2_modes_for_range()
3716 for (i = 0; i < ARRAY_SIZE(extra_modes); i++) { in drm_gtf2_modes_for_range()
3741 int i, modes = 0; in drm_cvt_modes_for_range()
3746 for (i = 0; i < ARRAY_SIZE(extra_modes); i++) { in drm_cvt_modes_for_range()
3749 newmode = drm_cvt_mode(dev, m->w, m->h, m->r, rb, 0, 0); in drm_cvt_modes_for_range()
3826 int i, j, m, modes = 0; in drm_est3_modes()
3830 for (i = 0; i < 6; i++) { in drm_est3_modes()
3831 for (j = 7; j >= 0; j--) { in drm_est3_modes()
3875 ((edid->established_timings.mfg_rsvd & 0x80) << 9); in add_established_modes()
3876 int i, modes = 0; in add_established_modes()
3882 for (i = 0; i <= EDID_EST_TIMINGS; i++) { in add_established_modes()
3912 for (i = 0; i < 6; i++) { in do_standard_modes()
3932 int i, modes = 0; in add_standard_modes()
3938 for (i = 0; i < EDID_STD_TIMINGS; i++) { in add_standard_modes()
3961 int i, j, modes = 0; in drm_cvt_modes()
3966 const u8 empty[3] = { 0, 0, 0 }; in drm_cvt_modes()
3968 for (i = 0; i < 4; i++) { in drm_cvt_modes()
3976 height = (cvt->code[0] + ((cvt->code[1] & 0xf0) << 4) + 1) * 2; in drm_cvt_modes()
3977 switch (cvt->code[1] & 0x0c) { in drm_cvt_modes()
3980 case 0x00: in drm_cvt_modes()
3983 case 0x04: in drm_cvt_modes()
3986 case 0x08: in drm_cvt_modes()
3989 case 0x0c: in drm_cvt_modes()
3997 rates[j], j == 0, in drm_cvt_modes()
4101 #define CTA_EXT_DB_VIDEO_CAP 0
4106 #define CTA_EXT_DB_HF_EEODB 0x78
4107 #define CTA_EXT_DB_HF_SCDB 0x79
4149 int ext_index = 0; in drm_edid_has_cta_extension()
4202 if (drm_mode_vrefresh(cea_mode) % 6 != 0) in cea_mode_alternate_clock()
4260 return 0; in drm_match_cea_mode_clock_tolerance()
4285 return 0; in drm_match_cea_mode_clock_tolerance()
4292 * Return: The CEA Video ID (VIC) of the mode or 0 if it isn't a CEA-861
4301 return 0; in drm_match_cea_mode()
4326 return 0; in drm_match_cea_mode()
4367 return 0; in drm_match_hdmi_mode_clock_tolerance()
4388 return 0; in drm_match_hdmi_mode_clock_tolerance()
4397 * Returns the HDMI Video ID (VIC) of the mode or 0 if it isn't one.
4405 return 0; in drm_match_hdmi_mode()
4423 return 0; in drm_match_hdmi_mode()
4428 return vic > 0 && vic < ARRAY_SIZE(edid_4k_modes); in drm_valid_hdmi_vic()
4437 int modes = 0; in add_alternate_cea_modes()
4441 return 0; in add_alternate_cea_modes()
4505 /* 0-6 bit vic, 7th bit native mode indicator */ in svd_to_vic()
4513 * Return a display mode for the 0-based vic_index'th VIC across all CTA VDBs in
4542 int modes = 0, i; in do_y420vdb_modes()
4544 for (i = 0; i < svds_len; i++) { in do_y420vdb_modes()
4593 int i, modes = 0; in add_cta_vdb_modes()
4596 return 0; in add_cta_vdb_modes()
4598 for (i = 0; i < info->vics_len; i++) { in add_cta_vdb_modes()
4646 int modes = 0, i; in add_hdmi_mandatory_stereo_modes()
4651 for (i = 0; i < ARRAY_SIZE(stereo_mandatory_modes); i++) { in add_hdmi_mandatory_stereo_modes()
4683 return 0; in add_hdmi_mode()
4688 return 0; in add_hdmi_mode()
4699 int modes = 0; in add_3d_struct_modes()
4701 if (structure & (1 << 0)) { in add_3d_struct_modes()
4746 return 0; in hdmi_vsdb_latency_length()
4761 int modes = 0, offset = 0, i, multi_present = 0, multi_len; in do_hdmi_vsdb_modes()
4762 u8 vic_len, hdmi_3d_len = 0; in do_hdmi_vsdb_modes()
4786 multi_present = (db[8 + offset] & 0x60) >> 5; in do_hdmi_vsdb_modes()
4791 hdmi_3d_len = db[8 + offset] & 0x1f; in do_hdmi_vsdb_modes()
4793 for (i = 0; i < vic_len && len >= (9 + offset + i); i++) { in do_hdmi_vsdb_modes()
4806 multi_len = 0; in do_hdmi_vsdb_modes()
4822 mask = 0xffff; in do_hdmi_vsdb_modes()
4824 for (i = 0; i < 16; i++) { in do_hdmi_vsdb_modes()
4833 for (i = 0; i < (hdmi_3d_len - multi_len); i++) { in do_hdmi_vsdb_modes()
4836 unsigned int newflag = 0; in do_hdmi_vsdb_modes()
4839 detail_present = ((db[8 + offset + i] & 0x0f) > 7); in do_hdmi_vsdb_modes()
4848 switch (db[8 + offset + i] & 0x0f) { in do_hdmi_vsdb_modes()
4849 case 0: in do_hdmi_vsdb_modes()
4862 if (newflag != 0) { in do_hdmi_vsdb_modes()
4889 * given as an example is 0. in cea_revision()
4939 return db->tag_length & 0x1f; in cea_db_payload_len()
4951 db->data[0] == tag; in cea_db_is_extended_tag()
4960 oui(data[2], data[1], data[0]) == vendor_oui; in cea_db_is_vendor()
4966 memset(iter, 0, sizeof(*iter)); in cea_db_iter_edid_begin()
4998 return 0; in cea_db_collection_size()
5016 if (ext[0] != CEA_EXT || cea_revision(ext) < 3) in __cea_db_iter_edid_next()
5035 * - DisplayID v2.0 section 4.10 CTA DisplayID Data Block
5111 memset(iter, 0, sizeof(*iter)); in cea_db_iter_end()
5170 * blocks (base block and one extension block) if EDID extension count is > 0.
5185 return 0; in edid_hfeeodb_extension_block_count()
5188 cta = edid_extension_block_data(edid, 0); in edid_hfeeodb_extension_block_count()
5190 return 0; in edid_hfeeodb_extension_block_count()
5194 return 0; in edid_hfeeodb_extension_block_count()
5202 return 0; in edid_hfeeodb_extension_block_count()
5208 * CTA-861 YCbCr 4:2:0 Capability Map Data Block (CTA Y420CMDB)
5212 * etc). For example, if the bit 0 in bitmap is set, first mode in VDB can
5221 u64 map = 0; in parse_cta_y420cmdb()
5223 if (map_len == 0) { in parse_cta_y420cmdb()
5231 * from VDB can support YCBCR420 output too. So if bit=0 is in parse_cta_y420cmdb()
5244 for (i = 0; i < map_len; i++) in parse_cta_y420cmdb()
5272 /* Add 4:2:0(only) modes present in EDID */ in add_cea_modes()
5357 * (0...32).each {|cv| puts (50*2**(cv/32.0)).round} in drm_calculate_luminance_range()
5422 connector->latency_present[0] = true; in drm_parse_hdmi_vsdb_audio()
5423 connector->video_latency[0] = db[9]; in drm_parse_hdmi_vsdb_audio()
5424 connector->audio_latency[0] = db[10]; in drm_parse_hdmi_vsdb_audio()
5436 connector->latency_present[0], connector->latency_present[1], in drm_parse_hdmi_vsdb_audio()
5437 connector->video_latency[0], connector->video_latency[1], in drm_parse_hdmi_vsdb_audio()
5438 connector->audio_latency[0], connector->audio_latency[1]); in drm_parse_hdmi_vsdb_audio()
5458 return 0; in get_monitor_name()
5461 for (mnl = 0; edid_name && mnl < 13; mnl++) { in get_monitor_name()
5462 if (edid_name[mnl] == 0x0a) in get_monitor_name()
5480 int name_length = 0; in drm_edid_get_monitor_name()
5482 if (bufsize <= 0) in drm_edid_get_monitor_name()
5496 name[name_length] = '\0'; in drm_edid_get_monitor_name()
5503 memset(connector->eld, 0, sizeof(connector->eld)); in clear_eld()
5506 connector->latency_present[0] = false; in clear_eld()
5508 connector->video_latency[0] = 0; in clear_eld()
5509 connector->audio_latency[0] = 0; in clear_eld()
5510 connector->video_latency[1] = 0; in clear_eld()
5511 connector->audio_latency[1] = 0; in clear_eld()
5529 int total_sad_count = 0; in drm_edid_to_eld()
5547 eld[DRM_ELD_MANUFACTURER_NAME0] = drm_edid->edid->mfg_id[0]; in drm_edid_to_eld()
5549 eld[DRM_ELD_PRODUCT_CODE0] = drm_edid->edid->prod_code[0]; in drm_edid_to_eld()
5570 eld[DRM_ELD_SPEAKER] = data[0]; in drm_edid_to_eld()
5606 int count = 0; in _drm_edid_to_sad()
5617 for (j = 0; j < count; j++) { in _drm_edid_to_sad()
5620 (*sads)[j].format = (sad[0] & 0x78) >> 3; in _drm_edid_to_sad()
5621 (*sads)[j].channels = sad[0] & 0x7; in _drm_edid_to_sad()
5622 (*sads)[j].freq = sad[1] & 0x7F; in _drm_edid_to_sad()
5659 int count = 0; in _drm_edid_to_speaker_allocation()
5706 * Return: The HDMI/DP sink's audio-video sync delay in milliseconds or 0 if
5715 if (!connector->latency_present[0]) in drm_av_sync_delay()
5716 return 0; in drm_av_sync_delay()
5718 i = 0; in drm_av_sync_delay()
5727 return 0; in drm_av_sync_delay()
5731 * Treat unknown latency as 0ms. in drm_av_sync_delay()
5738 return max(v - a, 0); in drm_av_sync_delay()
5793 if (edid_ext[0] == CEA_EXT) { in _drm_detect_monitor_audio()
5812 for (i = 0; i < cea_db_payload_len(db); i += 3) in _drm_detect_monitor_audio()
5814 (data[i] >> 3) & 0xf); in _drm_detect_monitor_audio()
5885 for (i = 0; i < len; i++) { in parse_cta_vdb()
5889 vic = 0; in parse_cta_vdb()
5907 for (i = 0; i < len; i++) { in update_cta_y420cmdb()
5923 for (i = 0; i < info->vics_len; i++) { in cta_vdb_has_vic()
5931 /* CTA-861-H YCbCr 4:2:0 Video Data Block (CTA Y420VDB) */
5940 for (i = 0; i < cea_db_payload_len(db) - 1; i++) { in parse_cta_y420vdb()
5955 drm_dbg_kms(connector->dev, "[CONNECTOR:%d:%s] CEA VCDB 0x%02x\n", in drm_parse_vcdb()
5990 case 0: in drm_get_max_frl_rate()
5992 *max_lanes = 0; in drm_get_max_frl_rate()
5993 *max_rate_per_lane = 0; in drm_get_max_frl_rate()
6067 case 0: in drm_parse_dsc_info()
6069 hdmi_dsc->max_slices = 0; in drm_parse_dsc_info()
6070 hdmi_dsc->clk_per_slice = 0; in drm_parse_dsc_info()
6085 int max_tmds_clock = 0; in drm_parse_hdmi_forum_scds()
6086 u8 max_frl_rate = 0; in drm_parse_hdmi_forum_scds()
6091 if (hf_scds[6] & 0x80) { in drm_parse_hdmi_forum_scds()
6093 if (hf_scds[6] & 0x40) in drm_parse_hdmi_forum_scds()
6120 if ((hf_scds[6] & 0x8)) in drm_parse_hdmi_forum_scds()
6148 unsigned int dc_bpc = 0; in drm_parse_hdmi_deep_color_info()
6177 if (dc_bpc == 0) { in drm_parse_hdmi_deep_color_info()
6250 "[CONNECTOR:%d:%s] HMD or specialized display VSDB version %u: 0x%02x\n", in drm_parse_microsoft_vsdb()
6262 u64 y420cmdb_map = 0; in drm_parse_cea_ext()
6266 if (edid_ext[0] != CEA_EXT) in drm_parse_cea_ext()
6394 if (oui(vesa->oui[0], vesa->oui[1], vesa->oui[2]) != VESA_IEEE_OUI) in drm_parse_vesa_mso_data()
6409 case 0: in drm_parse_vesa_mso_data()
6410 info->mso_stream_count = 0; in drm_parse_vesa_mso_data()
6421 info->mso_pixel_overlap = 0; in drm_parse_vesa_mso_data()
6461 info->width_mm = 0; in drm_reset_display_info()
6462 info->height_mm = 0; in drm_reset_display_info()
6464 info->bpc = 0; in drm_reset_display_info()
6465 info->color_formats = 0; in drm_reset_display_info()
6466 info->cea_rev = 0; in drm_reset_display_info()
6467 info->max_tmds_clock = 0; in drm_reset_display_info()
6473 memset(&info->hdmi, 0, sizeof(info->hdmi)); in drm_reset_display_info()
6474 memset(&connector->hdr_sink_metadata, 0, sizeof(connector->hdr_sink_metadata)); in drm_reset_display_info()
6476 info->edid_hdmi_rgb444_dc_modes = 0; in drm_reset_display_info()
6477 info->edid_hdmi_ycbcr444_dc_modes = 0; in drm_reset_display_info()
6479 info->non_desktop = 0; in drm_reset_display_info()
6480 memset(&info->monitor_range, 0, sizeof(info->monitor_range)); in drm_reset_display_info()
6481 memset(&info->luminance_range, 0, sizeof(info->luminance_range)); in drm_reset_display_info()
6483 info->mso_stream_count = 0; in drm_reset_display_info()
6484 info->mso_pixel_overlap = 0; in drm_reset_display_info()
6485 info->max_dsc_bpp = 0; in drm_reset_display_info()
6489 info->vics_len = 0; in drm_reset_display_info()
6491 info->quirks = 0; in drm_reset_display_info()
6556 if (info->bpc == 0 && edid->revision == 3 && in update_display_info()
6589 info->bpc = 0; in update_display_info()
6636 unsigned pixel_clock = (timings->pixel_clock[0] | in drm_mode_displayid_detailed()
6639 unsigned hactive = (timings->hactive[0] | timings->hactive[1] << 8) + 1; in drm_mode_displayid_detailed()
6640 unsigned hblank = (timings->hblank[0] | timings->hblank[1] << 8) + 1; in drm_mode_displayid_detailed()
6641 unsigned hsync = (timings->hsync[0] | (timings->hsync[1] & 0x7f) << 8) + 1; in drm_mode_displayid_detailed()
6642 unsigned hsync_width = (timings->hsw[0] | timings->hsw[1] << 8) + 1; in drm_mode_displayid_detailed()
6643 unsigned vactive = (timings->vactive[0] | timings->vactive[1] << 8) + 1; in drm_mode_displayid_detailed()
6644 unsigned vblank = (timings->vblank[0] | timings->vblank[1] << 8) + 1; in drm_mode_displayid_detailed()
6645 unsigned vsync = (timings->vsync[0] | (timings->vsync[1] & 0x7f) << 8) + 1; in drm_mode_displayid_detailed()
6646 unsigned vsync_width = (timings->vsw[0] | timings->vsw[1] << 8) + 1; in drm_mode_displayid_detailed()
6647 bool hsync_positive = (timings->hsync[1] >> 7) & 0x1; in drm_mode_displayid_detailed()
6648 bool vsync_positive = (timings->vsync[1] >> 7) & 0x1; in drm_mode_displayid_detailed()
6666 mode->flags = 0; in drm_mode_displayid_detailed()
6671 if (timings->flags & 0x80) in drm_mode_displayid_detailed()
6685 int num_modes = 0; in add_displayid_detailed_1_modes()
6689 return 0; in add_displayid_detailed_1_modes()
6692 for (i = 0; i < num_timings; i++) { in add_displayid_detailed_1_modes()
6710 int num_modes = 0; in add_displayid_detailed_modes()
6727 int num_modes = 0; in _drm_edid_connector_add_modes()
6730 return 0; in _drm_edid_connector_add_modes()
6786 drm_edid ? drm_edid->size : 0, in _drm_edid_connector_property_update()
6828 * Return: 0 on success, negative error on errors.
6851 * Return: The number of modes added, or 0 if we couldn't find any.
6906 * Return: The number of modes added or 0 if we couldn't find any.
6936 * Return: The number of modes added or 0 if we couldn't find any.
6941 int i, count, num_modes = 0; in drm_add_modes_noedid()
6946 if (hdisplay < 0) in drm_add_modes_noedid()
6947 hdisplay = 0; in drm_add_modes_noedid()
6948 if (vdisplay < 0) in drm_add_modes_noedid()
6949 vdisplay = 0; in drm_add_modes_noedid()
6951 for (i = 0; i < count; i++) { in drm_add_modes_noedid()
7018 return 0; in drm_mode_hdmi_vic()
7022 return 0; in drm_mode_hdmi_vic()
7037 return 0; in drm_mode_cea_vic()
7056 return 0; in vic_for_avi_infoframe()
7068 * Return: 0 on success or a negative error code on failure.
7097 frame->itc = 0; in drm_hdmi_avi_infoframe_from_display_mode()
7135 return 0; in drm_hdmi_avi_infoframe_from_display_mode()
7163 * default RGB quantization range for the mode, even when QS=0. in drm_hdmi_avi_infoframe_quant_range()
7175 * (e.g., when Limited Range RGB, set YQ=0 or when Full Range RGB, in drm_hdmi_avi_infoframe_quant_range()
7232 * Return: 0 on success or a negative error code on failure.
7254 if (err < 0) in drm_hdmi_vendor_infoframe_from_display_mode()
7259 * (ie.vic==0 and s3d_struct==0) we will still send it if we in drm_hdmi_vendor_infoframe_from_display_mode()
7269 return 0; in drm_hdmi_vendor_infoframe_from_display_mode()
7282 w = tile->tile_size[0] | tile->tile_size[1] << 8; in drm_parse_tiled_block()
7285 num_v_tile = (tile->topo[0] & 0xf) | (tile->topo[2] & 0x30); in drm_parse_tiled_block()
7286 num_h_tile = (tile->topo[0] >> 4) | ((tile->topo[2] >> 2) & 0x30); in drm_parse_tiled_block()
7287 tile_v_loc = (tile->topo[1] & 0xf) | ((tile->topo[2] & 0x3) << 4); in drm_parse_tiled_block()
7288 tile_h_loc = (tile->topo[1] >> 4) | (((tile->topo[2] >> 2) & 0x3) << 4); in drm_parse_tiled_block()
7291 if (tile->tile_cap & 0x80) in drm_parse_tiled_block()
7302 "[CONNECTOR:%d:%s] tile cap 0x%x, size %dx%d, num tiles %dx%d, location %dx%d, vend %c%c%c", in drm_parse_tiled_block()
7308 tile->topology_id[0], tile->topology_id[1], tile->topology_id[2]); in drm_parse_tiled_block()