• Home
  • Raw
  • Download

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()
5502 memset(connector->eld, 0, sizeof(connector->eld)); in clear_eld()
5504 connector->latency_present[0] = false; in clear_eld()
5506 connector->video_latency[0] = 0; in clear_eld()
5507 connector->audio_latency[0] = 0; in clear_eld()
5508 connector->video_latency[1] = 0; in clear_eld()
5509 connector->audio_latency[1] = 0; in clear_eld()
5527 int total_sad_count = 0; in drm_edid_to_eld()
5543 eld[DRM_ELD_MANUFACTURER_NAME0] = drm_edid->edid->mfg_id[0]; in drm_edid_to_eld()
5545 eld[DRM_ELD_PRODUCT_CODE0] = drm_edid->edid->prod_code[0]; in drm_edid_to_eld()
5566 eld[DRM_ELD_SPEAKER] = data[0]; in drm_edid_to_eld()
5600 int count = 0; in _drm_edid_to_sad()
5611 for (j = 0; j < count; j++) { in _drm_edid_to_sad()
5614 (*sads)[j].format = (sad[0] & 0x78) >> 3; in _drm_edid_to_sad()
5615 (*sads)[j].channels = sad[0] & 0x7; in _drm_edid_to_sad()
5616 (*sads)[j].freq = sad[1] & 0x7F; in _drm_edid_to_sad()
5653 int count = 0; in _drm_edid_to_speaker_allocation()
5700 * Return: The HDMI/DP sink's audio-video sync delay in milliseconds or 0 if
5709 if (!connector->latency_present[0]) in drm_av_sync_delay()
5710 return 0; in drm_av_sync_delay()
5712 i = 0; in drm_av_sync_delay()
5721 return 0; in drm_av_sync_delay()
5725 * Treat unknown latency as 0ms. in drm_av_sync_delay()
5732 return max(v - a, 0); in drm_av_sync_delay()
5787 if (edid_ext[0] == CEA_EXT) { in _drm_detect_monitor_audio()
5806 for (i = 0; i < cea_db_payload_len(db); i += 3) in _drm_detect_monitor_audio()
5808 (data[i] >> 3) & 0xf); in _drm_detect_monitor_audio()
5879 for (i = 0; i < len; i++) { in parse_cta_vdb()
5883 vic = 0; in parse_cta_vdb()
5901 for (i = 0; i < len; i++) { in update_cta_y420cmdb()
5917 for (i = 0; i < info->vics_len; i++) { in cta_vdb_has_vic()
5925 /* CTA-861-H YCbCr 4:2:0 Video Data Block (CTA Y420VDB) */
5934 for (i = 0; i < cea_db_payload_len(db) - 1; i++) { in parse_cta_y420vdb()
5949 drm_dbg_kms(connector->dev, "[CONNECTOR:%d:%s] CEA VCDB 0x%02x\n", in drm_parse_vcdb()
5984 case 0: in drm_get_max_frl_rate()
5986 *max_lanes = 0; in drm_get_max_frl_rate()
5987 *max_rate_per_lane = 0; in drm_get_max_frl_rate()
6061 case 0: in drm_parse_dsc_info()
6063 hdmi_dsc->max_slices = 0; in drm_parse_dsc_info()
6064 hdmi_dsc->clk_per_slice = 0; in drm_parse_dsc_info()
6079 int max_tmds_clock = 0; in drm_parse_hdmi_forum_scds()
6080 u8 max_frl_rate = 0; in drm_parse_hdmi_forum_scds()
6085 if (hf_scds[6] & 0x80) { in drm_parse_hdmi_forum_scds()
6087 if (hf_scds[6] & 0x40) in drm_parse_hdmi_forum_scds()
6114 if ((hf_scds[6] & 0x8)) in drm_parse_hdmi_forum_scds()
6142 unsigned int dc_bpc = 0; in drm_parse_hdmi_deep_color_info()
6171 if (dc_bpc == 0) { in drm_parse_hdmi_deep_color_info()
6244 "[CONNECTOR:%d:%s] HMD or specialized display VSDB version %u: 0x%02x\n", in drm_parse_microsoft_vsdb()
6256 u64 y420cmdb_map = 0; in drm_parse_cea_ext()
6260 if (edid_ext[0] != CEA_EXT) in drm_parse_cea_ext()
6388 if (oui(vesa->oui[0], vesa->oui[1], vesa->oui[2]) != VESA_IEEE_OUI) in drm_parse_vesa_mso_data()
6403 case 0: in drm_parse_vesa_mso_data()
6404 info->mso_stream_count = 0; in drm_parse_vesa_mso_data()
6415 info->mso_pixel_overlap = 0; in drm_parse_vesa_mso_data()
6455 info->width_mm = 0; in drm_reset_display_info()
6456 info->height_mm = 0; in drm_reset_display_info()
6458 info->bpc = 0; in drm_reset_display_info()
6459 info->color_formats = 0; in drm_reset_display_info()
6460 info->cea_rev = 0; in drm_reset_display_info()
6461 info->max_tmds_clock = 0; in drm_reset_display_info()
6467 memset(&info->hdmi, 0, sizeof(info->hdmi)); in drm_reset_display_info()
6469 info->edid_hdmi_rgb444_dc_modes = 0; in drm_reset_display_info()
6470 info->edid_hdmi_ycbcr444_dc_modes = 0; in drm_reset_display_info()
6472 info->non_desktop = 0; in drm_reset_display_info()
6473 memset(&info->monitor_range, 0, sizeof(info->monitor_range)); in drm_reset_display_info()
6474 memset(&info->luminance_range, 0, sizeof(info->luminance_range)); in drm_reset_display_info()
6476 info->mso_stream_count = 0; in drm_reset_display_info()
6477 info->mso_pixel_overlap = 0; in drm_reset_display_info()
6478 info->max_dsc_bpp = 0; in drm_reset_display_info()
6482 info->vics_len = 0; in drm_reset_display_info()
6484 info->quirks = 0; in drm_reset_display_info()
6549 if (info->bpc == 0 && edid->revision == 3 && in update_display_info()
6582 info->bpc = 0; in update_display_info()
6629 unsigned pixel_clock = (timings->pixel_clock[0] | in drm_mode_displayid_detailed()
6632 unsigned hactive = (timings->hactive[0] | timings->hactive[1] << 8) + 1; in drm_mode_displayid_detailed()
6633 unsigned hblank = (timings->hblank[0] | timings->hblank[1] << 8) + 1; in drm_mode_displayid_detailed()
6634 unsigned hsync = (timings->hsync[0] | (timings->hsync[1] & 0x7f) << 8) + 1; in drm_mode_displayid_detailed()
6635 unsigned hsync_width = (timings->hsw[0] | timings->hsw[1] << 8) + 1; in drm_mode_displayid_detailed()
6636 unsigned vactive = (timings->vactive[0] | timings->vactive[1] << 8) + 1; in drm_mode_displayid_detailed()
6637 unsigned vblank = (timings->vblank[0] | timings->vblank[1] << 8) + 1; in drm_mode_displayid_detailed()
6638 unsigned vsync = (timings->vsync[0] | (timings->vsync[1] & 0x7f) << 8) + 1; in drm_mode_displayid_detailed()
6639 unsigned vsync_width = (timings->vsw[0] | timings->vsw[1] << 8) + 1; in drm_mode_displayid_detailed()
6640 bool hsync_positive = (timings->hsync[1] >> 7) & 0x1; in drm_mode_displayid_detailed()
6641 bool vsync_positive = (timings->vsync[1] >> 7) & 0x1; in drm_mode_displayid_detailed()
6659 mode->flags = 0; in drm_mode_displayid_detailed()
6664 if (timings->flags & 0x80) in drm_mode_displayid_detailed()
6678 int num_modes = 0; in add_displayid_detailed_1_modes()
6682 return 0; in add_displayid_detailed_1_modes()
6685 for (i = 0; i < num_timings; i++) { in add_displayid_detailed_1_modes()
6703 int num_modes = 0; in add_displayid_detailed_modes()
6720 int num_modes = 0; in _drm_edid_connector_add_modes()
6723 return 0; in _drm_edid_connector_add_modes()
6779 drm_edid ? drm_edid->size : 0, in _drm_edid_connector_property_update()
6821 * Return: 0 on success, negative error on errors.
6844 * Return: The number of modes added, or 0 if we couldn't find any.
6899 * Return: The number of modes added or 0 if we couldn't find any.
6929 * Return: The number of modes added or 0 if we couldn't find any.
6934 int i, count, num_modes = 0; in drm_add_modes_noedid()
6939 if (hdisplay < 0) in drm_add_modes_noedid()
6940 hdisplay = 0; in drm_add_modes_noedid()
6941 if (vdisplay < 0) in drm_add_modes_noedid()
6942 vdisplay = 0; in drm_add_modes_noedid()
6944 for (i = 0; i < count; i++) { in drm_add_modes_noedid()
7011 return 0; in drm_mode_hdmi_vic()
7015 return 0; in drm_mode_hdmi_vic()
7030 return 0; in drm_mode_cea_vic()
7049 return 0; in vic_for_avi_infoframe()
7061 * Return: 0 on success or a negative error code on failure.
7090 frame->itc = 0; in drm_hdmi_avi_infoframe_from_display_mode()
7128 return 0; in drm_hdmi_avi_infoframe_from_display_mode()
7156 * default RGB quantization range for the mode, even when QS=0. in drm_hdmi_avi_infoframe_quant_range()
7168 * (e.g., when Limited Range RGB, set YQ=0 or when Full Range RGB, in drm_hdmi_avi_infoframe_quant_range()
7225 * Return: 0 on success or a negative error code on failure.
7247 if (err < 0) in drm_hdmi_vendor_infoframe_from_display_mode()
7252 * (ie.vic==0 and s3d_struct==0) we will still send it if we in drm_hdmi_vendor_infoframe_from_display_mode()
7262 return 0; in drm_hdmi_vendor_infoframe_from_display_mode()
7275 w = tile->tile_size[0] | tile->tile_size[1] << 8; in drm_parse_tiled_block()
7278 num_v_tile = (tile->topo[0] & 0xf) | (tile->topo[2] & 0x30); in drm_parse_tiled_block()
7279 num_h_tile = (tile->topo[0] >> 4) | ((tile->topo[2] >> 2) & 0x30); in drm_parse_tiled_block()
7280 tile_v_loc = (tile->topo[1] & 0xf) | ((tile->topo[2] & 0x3) << 4); in drm_parse_tiled_block()
7281 tile_h_loc = (tile->topo[1] >> 4) | (((tile->topo[2] >> 2) & 0x3) << 4); in drm_parse_tiled_block()
7284 if (tile->tile_cap & 0x80) in drm_parse_tiled_block()
7295 "[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()
7301 tile->topology_id[0], tile->topology_id[1], tile->topology_id[2]); in drm_parse_tiled_block()