1*592ffb21SWarner Losh /* 2*592ffb21SWarner Losh * Copyright (c) 2007-2008 Intel Corporation 3*592ffb21SWarner Losh * Jesse Barnes <jesse.barnes@intel.com> 4*592ffb21SWarner Losh * Copyright 2010 Red Hat, Inc. 5*592ffb21SWarner Losh * 6*592ffb21SWarner Losh * Permission is hereby granted, free of charge, to any person obtaining a 7*592ffb21SWarner Losh * copy of this software and associated documentation files (the "Software"), 8*592ffb21SWarner Losh * to deal in the Software without restriction, including without limitation 9*592ffb21SWarner Losh * the rights to use, copy, modify, merge, publish, distribute, sub license, 10*592ffb21SWarner Losh * and/or sell copies of the Software, and to permit persons to whom the 11*592ffb21SWarner Losh * Software is furnished to do so, subject to the following conditions: 12*592ffb21SWarner Losh * 13*592ffb21SWarner Losh * The above copyright notice and this permission notice (including the 14*592ffb21SWarner Losh * next paragraph) shall be included in all copies or substantial portions 15*592ffb21SWarner Losh * of the Software. 16*592ffb21SWarner Losh * 17*592ffb21SWarner Losh * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18*592ffb21SWarner Losh * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19*592ffb21SWarner Losh * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 20*592ffb21SWarner Losh * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21*592ffb21SWarner Losh * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22*592ffb21SWarner Losh * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23*592ffb21SWarner Losh * DEALINGS IN THE SOFTWARE. 24*592ffb21SWarner Losh */ 25*592ffb21SWarner Losh 26*592ffb21SWarner Losh #include <dev/drm2/drmP.h> 27*592ffb21SWarner Losh #include <dev/drm2/drm_edid.h> 28*592ffb21SWarner Losh 29*592ffb21SWarner Losh /* 30*592ffb21SWarner Losh * Autogenerated from the DMT spec. 31*592ffb21SWarner Losh * This table is copied from xfree86/modes/xf86EdidModes.c. 32*592ffb21SWarner Losh */ 33*592ffb21SWarner Losh static const struct drm_display_mode drm_dmt_modes[] = { 34*592ffb21SWarner Losh /* 640x350@85Hz */ 35*592ffb21SWarner Losh { DRM_MODE("640x350", DRM_MODE_TYPE_DRIVER, 31500, 640, 672, 36*592ffb21SWarner Losh 736, 832, 0, 350, 382, 385, 445, 0, 37*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 38*592ffb21SWarner Losh /* 640x400@85Hz */ 39*592ffb21SWarner Losh { DRM_MODE("640x400", DRM_MODE_TYPE_DRIVER, 31500, 640, 672, 40*592ffb21SWarner Losh 736, 832, 0, 400, 401, 404, 445, 0, 41*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 42*592ffb21SWarner Losh /* 720x400@85Hz */ 43*592ffb21SWarner Losh { DRM_MODE("720x400", DRM_MODE_TYPE_DRIVER, 35500, 720, 756, 44*592ffb21SWarner Losh 828, 936, 0, 400, 401, 404, 446, 0, 45*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 46*592ffb21SWarner Losh /* 640x480@60Hz */ 47*592ffb21SWarner Losh { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 25175, 640, 656, 48*592ffb21SWarner Losh 752, 800, 0, 480, 489, 492, 525, 0, 49*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 50*592ffb21SWarner Losh /* 640x480@72Hz */ 51*592ffb21SWarner Losh { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 31500, 640, 664, 52*592ffb21SWarner Losh 704, 832, 0, 480, 489, 492, 520, 0, 53*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 54*592ffb21SWarner Losh /* 640x480@75Hz */ 55*592ffb21SWarner Losh { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 31500, 640, 656, 56*592ffb21SWarner Losh 720, 840, 0, 480, 481, 484, 500, 0, 57*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 58*592ffb21SWarner Losh /* 640x480@85Hz */ 59*592ffb21SWarner Losh { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 36000, 640, 696, 60*592ffb21SWarner Losh 752, 832, 0, 480, 481, 484, 509, 0, 61*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 62*592ffb21SWarner Losh /* 800x600@56Hz */ 63*592ffb21SWarner Losh { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 36000, 800, 824, 64*592ffb21SWarner Losh 896, 1024, 0, 600, 601, 603, 625, 0, 65*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 66*592ffb21SWarner Losh /* 800x600@60Hz */ 67*592ffb21SWarner Losh { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 40000, 800, 840, 68*592ffb21SWarner Losh 968, 1056, 0, 600, 601, 605, 628, 0, 69*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 70*592ffb21SWarner Losh /* 800x600@72Hz */ 71*592ffb21SWarner Losh { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 50000, 800, 856, 72*592ffb21SWarner Losh 976, 1040, 0, 600, 637, 643, 666, 0, 73*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 74*592ffb21SWarner Losh /* 800x600@75Hz */ 75*592ffb21SWarner Losh { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 49500, 800, 816, 76*592ffb21SWarner Losh 896, 1056, 0, 600, 601, 604, 625, 0, 77*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 78*592ffb21SWarner Losh /* 800x600@85Hz */ 79*592ffb21SWarner Losh { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 56250, 800, 832, 80*592ffb21SWarner Losh 896, 1048, 0, 600, 601, 604, 631, 0, 81*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 82*592ffb21SWarner Losh /* 800x600@120Hz RB */ 83*592ffb21SWarner Losh { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 73250, 800, 848, 84*592ffb21SWarner Losh 880, 960, 0, 600, 603, 607, 636, 0, 85*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 86*592ffb21SWarner Losh /* 848x480@60Hz */ 87*592ffb21SWarner Losh { DRM_MODE("848x480", DRM_MODE_TYPE_DRIVER, 33750, 848, 864, 88*592ffb21SWarner Losh 976, 1088, 0, 480, 486, 494, 517, 0, 89*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 90*592ffb21SWarner Losh /* 1024x768@43Hz, interlace */ 91*592ffb21SWarner Losh { DRM_MODE("1024x768i", DRM_MODE_TYPE_DRIVER, 44900, 1024, 1032, 92*592ffb21SWarner Losh 1208, 1264, 0, 768, 768, 772, 817, 0, 93*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | 94*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE) }, 95*592ffb21SWarner Losh /* 1024x768@60Hz */ 96*592ffb21SWarner Losh { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 65000, 1024, 1048, 97*592ffb21SWarner Losh 1184, 1344, 0, 768, 771, 777, 806, 0, 98*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 99*592ffb21SWarner Losh /* 1024x768@70Hz */ 100*592ffb21SWarner Losh { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 75000, 1024, 1048, 101*592ffb21SWarner Losh 1184, 1328, 0, 768, 771, 777, 806, 0, 102*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 103*592ffb21SWarner Losh /* 1024x768@75Hz */ 104*592ffb21SWarner Losh { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 78750, 1024, 1040, 105*592ffb21SWarner Losh 1136, 1312, 0, 768, 769, 772, 800, 0, 106*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 107*592ffb21SWarner Losh /* 1024x768@85Hz */ 108*592ffb21SWarner Losh { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 94500, 1024, 1072, 109*592ffb21SWarner Losh 1168, 1376, 0, 768, 769, 772, 808, 0, 110*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 111*592ffb21SWarner Losh /* 1024x768@120Hz RB */ 112*592ffb21SWarner Losh { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 115500, 1024, 1072, 113*592ffb21SWarner Losh 1104, 1184, 0, 768, 771, 775, 813, 0, 114*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 115*592ffb21SWarner Losh /* 1152x864@75Hz */ 116*592ffb21SWarner Losh { DRM_MODE("1152x864", DRM_MODE_TYPE_DRIVER, 108000, 1152, 1216, 117*592ffb21SWarner Losh 1344, 1600, 0, 864, 865, 868, 900, 0, 118*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 119*592ffb21SWarner Losh /* 1280x768@60Hz RB */ 120*592ffb21SWarner Losh { DRM_MODE("1280x768", DRM_MODE_TYPE_DRIVER, 68250, 1280, 1328, 121*592ffb21SWarner Losh 1360, 1440, 0, 768, 771, 778, 790, 0, 122*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 123*592ffb21SWarner Losh /* 1280x768@60Hz */ 124*592ffb21SWarner Losh { DRM_MODE("1280x768", DRM_MODE_TYPE_DRIVER, 79500, 1280, 1344, 125*592ffb21SWarner Losh 1472, 1664, 0, 768, 771, 778, 798, 0, 126*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 127*592ffb21SWarner Losh /* 1280x768@75Hz */ 128*592ffb21SWarner Losh { DRM_MODE("1280x768", DRM_MODE_TYPE_DRIVER, 102250, 1280, 1360, 129*592ffb21SWarner Losh 1488, 1696, 0, 768, 771, 778, 805, 0, 130*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 131*592ffb21SWarner Losh /* 1280x768@85Hz */ 132*592ffb21SWarner Losh { DRM_MODE("1280x768", DRM_MODE_TYPE_DRIVER, 117500, 1280, 1360, 133*592ffb21SWarner Losh 1496, 1712, 0, 768, 771, 778, 809, 0, 134*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 135*592ffb21SWarner Losh /* 1280x768@120Hz RB */ 136*592ffb21SWarner Losh { DRM_MODE("1280x768", DRM_MODE_TYPE_DRIVER, 140250, 1280, 1328, 137*592ffb21SWarner Losh 1360, 1440, 0, 768, 771, 778, 813, 0, 138*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 139*592ffb21SWarner Losh /* 1280x800@60Hz RB */ 140*592ffb21SWarner Losh { DRM_MODE("1280x800", DRM_MODE_TYPE_DRIVER, 71000, 1280, 1328, 141*592ffb21SWarner Losh 1360, 1440, 0, 800, 803, 809, 823, 0, 142*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 143*592ffb21SWarner Losh /* 1280x800@60Hz */ 144*592ffb21SWarner Losh { DRM_MODE("1280x800", DRM_MODE_TYPE_DRIVER, 83500, 1280, 1352, 145*592ffb21SWarner Losh 1480, 1680, 0, 800, 803, 809, 831, 0, 146*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 147*592ffb21SWarner Losh /* 1280x800@75Hz */ 148*592ffb21SWarner Losh { DRM_MODE("1280x800", DRM_MODE_TYPE_DRIVER, 106500, 1280, 1360, 149*592ffb21SWarner Losh 1488, 1696, 0, 800, 803, 809, 838, 0, 150*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 151*592ffb21SWarner Losh /* 1280x800@85Hz */ 152*592ffb21SWarner Losh { DRM_MODE("1280x800", DRM_MODE_TYPE_DRIVER, 122500, 1280, 1360, 153*592ffb21SWarner Losh 1496, 1712, 0, 800, 803, 809, 843, 0, 154*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 155*592ffb21SWarner Losh /* 1280x800@120Hz RB */ 156*592ffb21SWarner Losh { DRM_MODE("1280x800", DRM_MODE_TYPE_DRIVER, 146250, 1280, 1328, 157*592ffb21SWarner Losh 1360, 1440, 0, 800, 803, 809, 847, 0, 158*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 159*592ffb21SWarner Losh /* 1280x960@60Hz */ 160*592ffb21SWarner Losh { DRM_MODE("1280x960", DRM_MODE_TYPE_DRIVER, 108000, 1280, 1376, 161*592ffb21SWarner Losh 1488, 1800, 0, 960, 961, 964, 1000, 0, 162*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 163*592ffb21SWarner Losh /* 1280x960@85Hz */ 164*592ffb21SWarner Losh { DRM_MODE("1280x960", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1344, 165*592ffb21SWarner Losh 1504, 1728, 0, 960, 961, 964, 1011, 0, 166*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 167*592ffb21SWarner Losh /* 1280x960@120Hz RB */ 168*592ffb21SWarner Losh { DRM_MODE("1280x960", DRM_MODE_TYPE_DRIVER, 175500, 1280, 1328, 169*592ffb21SWarner Losh 1360, 1440, 0, 960, 963, 967, 1017, 0, 170*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 171*592ffb21SWarner Losh /* 1280x1024@60Hz */ 172*592ffb21SWarner Losh { DRM_MODE("1280x1024", DRM_MODE_TYPE_DRIVER, 108000, 1280, 1328, 173*592ffb21SWarner Losh 1440, 1688, 0, 1024, 1025, 1028, 1066, 0, 174*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 175*592ffb21SWarner Losh /* 1280x1024@75Hz */ 176*592ffb21SWarner Losh { DRM_MODE("1280x1024", DRM_MODE_TYPE_DRIVER, 135000, 1280, 1296, 177*592ffb21SWarner Losh 1440, 1688, 0, 1024, 1025, 1028, 1066, 0, 178*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 179*592ffb21SWarner Losh /* 1280x1024@85Hz */ 180*592ffb21SWarner Losh { DRM_MODE("1280x1024", DRM_MODE_TYPE_DRIVER, 157500, 1280, 1344, 181*592ffb21SWarner Losh 1504, 1728, 0, 1024, 1025, 1028, 1072, 0, 182*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 183*592ffb21SWarner Losh /* 1280x1024@120Hz RB */ 184*592ffb21SWarner Losh { DRM_MODE("1280x1024", DRM_MODE_TYPE_DRIVER, 187250, 1280, 1328, 185*592ffb21SWarner Losh 1360, 1440, 0, 1024, 1027, 1034, 1084, 0, 186*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 187*592ffb21SWarner Losh /* 1360x768@60Hz */ 188*592ffb21SWarner Losh { DRM_MODE("1360x768", DRM_MODE_TYPE_DRIVER, 85500, 1360, 1424, 189*592ffb21SWarner Losh 1536, 1792, 0, 768, 771, 777, 795, 0, 190*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 191*592ffb21SWarner Losh /* 1360x768@120Hz RB */ 192*592ffb21SWarner Losh { DRM_MODE("1360x768", DRM_MODE_TYPE_DRIVER, 148250, 1360, 1408, 193*592ffb21SWarner Losh 1440, 1520, 0, 768, 771, 776, 813, 0, 194*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 195*592ffb21SWarner Losh /* 1400x1050@60Hz RB */ 196*592ffb21SWarner Losh { DRM_MODE("1400x1050", DRM_MODE_TYPE_DRIVER, 101000, 1400, 1448, 197*592ffb21SWarner Losh 1480, 1560, 0, 1050, 1053, 1057, 1080, 0, 198*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 199*592ffb21SWarner Losh /* 1400x1050@60Hz */ 200*592ffb21SWarner Losh { DRM_MODE("1400x1050", DRM_MODE_TYPE_DRIVER, 121750, 1400, 1488, 201*592ffb21SWarner Losh 1632, 1864, 0, 1050, 1053, 1057, 1089, 0, 202*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 203*592ffb21SWarner Losh /* 1400x1050@75Hz */ 204*592ffb21SWarner Losh { DRM_MODE("1400x1050", DRM_MODE_TYPE_DRIVER, 156000, 1400, 1504, 205*592ffb21SWarner Losh 1648, 1896, 0, 1050, 1053, 1057, 1099, 0, 206*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 207*592ffb21SWarner Losh /* 1400x1050@85Hz */ 208*592ffb21SWarner Losh { DRM_MODE("1400x1050", DRM_MODE_TYPE_DRIVER, 179500, 1400, 1504, 209*592ffb21SWarner Losh 1656, 1912, 0, 1050, 1053, 1057, 1105, 0, 210*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 211*592ffb21SWarner Losh /* 1400x1050@120Hz RB */ 212*592ffb21SWarner Losh { DRM_MODE("1400x1050", DRM_MODE_TYPE_DRIVER, 208000, 1400, 1448, 213*592ffb21SWarner Losh 1480, 1560, 0, 1050, 1053, 1057, 1112, 0, 214*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 215*592ffb21SWarner Losh /* 1440x900@60Hz RB */ 216*592ffb21SWarner Losh { DRM_MODE("1440x900", DRM_MODE_TYPE_DRIVER, 88750, 1440, 1488, 217*592ffb21SWarner Losh 1520, 1600, 0, 900, 903, 909, 926, 0, 218*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 219*592ffb21SWarner Losh /* 1440x900@60Hz */ 220*592ffb21SWarner Losh { DRM_MODE("1440x900", DRM_MODE_TYPE_DRIVER, 106500, 1440, 1520, 221*592ffb21SWarner Losh 1672, 1904, 0, 900, 903, 909, 934, 0, 222*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 223*592ffb21SWarner Losh /* 1440x900@75Hz */ 224*592ffb21SWarner Losh { DRM_MODE("1440x900", DRM_MODE_TYPE_DRIVER, 136750, 1440, 1536, 225*592ffb21SWarner Losh 1688, 1936, 0, 900, 903, 909, 942, 0, 226*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 227*592ffb21SWarner Losh /* 1440x900@85Hz */ 228*592ffb21SWarner Losh { DRM_MODE("1440x900", DRM_MODE_TYPE_DRIVER, 157000, 1440, 1544, 229*592ffb21SWarner Losh 1696, 1952, 0, 900, 903, 909, 948, 0, 230*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 231*592ffb21SWarner Losh /* 1440x900@120Hz RB */ 232*592ffb21SWarner Losh { DRM_MODE("1440x900", DRM_MODE_TYPE_DRIVER, 182750, 1440, 1488, 233*592ffb21SWarner Losh 1520, 1600, 0, 900, 903, 909, 953, 0, 234*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 235*592ffb21SWarner Losh /* 1600x1200@60Hz */ 236*592ffb21SWarner Losh { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 162000, 1600, 1664, 237*592ffb21SWarner Losh 1856, 2160, 0, 1200, 1201, 1204, 1250, 0, 238*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 239*592ffb21SWarner Losh /* 1600x1200@65Hz */ 240*592ffb21SWarner Losh { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 175500, 1600, 1664, 241*592ffb21SWarner Losh 1856, 2160, 0, 1200, 1201, 1204, 1250, 0, 242*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 243*592ffb21SWarner Losh /* 1600x1200@70Hz */ 244*592ffb21SWarner Losh { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 189000, 1600, 1664, 245*592ffb21SWarner Losh 1856, 2160, 0, 1200, 1201, 1204, 1250, 0, 246*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 247*592ffb21SWarner Losh /* 1600x1200@75Hz */ 248*592ffb21SWarner Losh { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 202500, 1600, 1664, 249*592ffb21SWarner Losh 1856, 2160, 0, 1200, 1201, 1204, 1250, 0, 250*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 251*592ffb21SWarner Losh /* 1600x1200@85Hz */ 252*592ffb21SWarner Losh { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 229500, 1600, 1664, 253*592ffb21SWarner Losh 1856, 2160, 0, 1200, 1201, 1204, 1250, 0, 254*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 255*592ffb21SWarner Losh /* 1600x1200@120Hz RB */ 256*592ffb21SWarner Losh { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 268250, 1600, 1648, 257*592ffb21SWarner Losh 1680, 1760, 0, 1200, 1203, 1207, 1271, 0, 258*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 259*592ffb21SWarner Losh /* 1680x1050@60Hz RB */ 260*592ffb21SWarner Losh { DRM_MODE("1680x1050", DRM_MODE_TYPE_DRIVER, 119000, 1680, 1728, 261*592ffb21SWarner Losh 1760, 1840, 0, 1050, 1053, 1059, 1080, 0, 262*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 263*592ffb21SWarner Losh /* 1680x1050@60Hz */ 264*592ffb21SWarner Losh { DRM_MODE("1680x1050", DRM_MODE_TYPE_DRIVER, 146250, 1680, 1784, 265*592ffb21SWarner Losh 1960, 2240, 0, 1050, 1053, 1059, 1089, 0, 266*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 267*592ffb21SWarner Losh /* 1680x1050@75Hz */ 268*592ffb21SWarner Losh { DRM_MODE("1680x1050", DRM_MODE_TYPE_DRIVER, 187000, 1680, 1800, 269*592ffb21SWarner Losh 1976, 2272, 0, 1050, 1053, 1059, 1099, 0, 270*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 271*592ffb21SWarner Losh /* 1680x1050@85Hz */ 272*592ffb21SWarner Losh { DRM_MODE("1680x1050", DRM_MODE_TYPE_DRIVER, 214750, 1680, 1808, 273*592ffb21SWarner Losh 1984, 2288, 0, 1050, 1053, 1059, 1105, 0, 274*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 275*592ffb21SWarner Losh /* 1680x1050@120Hz RB */ 276*592ffb21SWarner Losh { DRM_MODE("1680x1050", DRM_MODE_TYPE_DRIVER, 245500, 1680, 1728, 277*592ffb21SWarner Losh 1760, 1840, 0, 1050, 1053, 1059, 1112, 0, 278*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 279*592ffb21SWarner Losh /* 1792x1344@60Hz */ 280*592ffb21SWarner Losh { DRM_MODE("1792x1344", DRM_MODE_TYPE_DRIVER, 204750, 1792, 1920, 281*592ffb21SWarner Losh 2120, 2448, 0, 1344, 1345, 1348, 1394, 0, 282*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 283*592ffb21SWarner Losh /* 1792x1344@75Hz */ 284*592ffb21SWarner Losh { DRM_MODE("1792x1344", DRM_MODE_TYPE_DRIVER, 261000, 1792, 1888, 285*592ffb21SWarner Losh 2104, 2456, 0, 1344, 1345, 1348, 1417, 0, 286*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 287*592ffb21SWarner Losh /* 1792x1344@120Hz RB */ 288*592ffb21SWarner Losh { DRM_MODE("1792x1344", DRM_MODE_TYPE_DRIVER, 333250, 1792, 1840, 289*592ffb21SWarner Losh 1872, 1952, 0, 1344, 1347, 1351, 1423, 0, 290*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 291*592ffb21SWarner Losh /* 1856x1392@60Hz */ 292*592ffb21SWarner Losh { DRM_MODE("1856x1392", DRM_MODE_TYPE_DRIVER, 218250, 1856, 1952, 293*592ffb21SWarner Losh 2176, 2528, 0, 1392, 1393, 1396, 1439, 0, 294*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 295*592ffb21SWarner Losh /* 1856x1392@75Hz */ 296*592ffb21SWarner Losh { DRM_MODE("1856x1392", DRM_MODE_TYPE_DRIVER, 288000, 1856, 1984, 297*592ffb21SWarner Losh 2208, 2560, 0, 1392, 1395, 1399, 1500, 0, 298*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 299*592ffb21SWarner Losh /* 1856x1392@120Hz RB */ 300*592ffb21SWarner Losh { DRM_MODE("1856x1392", DRM_MODE_TYPE_DRIVER, 356500, 1856, 1904, 301*592ffb21SWarner Losh 1936, 2016, 0, 1392, 1395, 1399, 1474, 0, 302*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 303*592ffb21SWarner Losh /* 1920x1200@60Hz RB */ 304*592ffb21SWarner Losh { DRM_MODE("1920x1200", DRM_MODE_TYPE_DRIVER, 154000, 1920, 1968, 305*592ffb21SWarner Losh 2000, 2080, 0, 1200, 1203, 1209, 1235, 0, 306*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 307*592ffb21SWarner Losh /* 1920x1200@60Hz */ 308*592ffb21SWarner Losh { DRM_MODE("1920x1200", DRM_MODE_TYPE_DRIVER, 193250, 1920, 2056, 309*592ffb21SWarner Losh 2256, 2592, 0, 1200, 1203, 1209, 1245, 0, 310*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 311*592ffb21SWarner Losh /* 1920x1200@75Hz */ 312*592ffb21SWarner Losh { DRM_MODE("1920x1200", DRM_MODE_TYPE_DRIVER, 245250, 1920, 2056, 313*592ffb21SWarner Losh 2264, 2608, 0, 1200, 1203, 1209, 1255, 0, 314*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 315*592ffb21SWarner Losh /* 1920x1200@85Hz */ 316*592ffb21SWarner Losh { DRM_MODE("1920x1200", DRM_MODE_TYPE_DRIVER, 281250, 1920, 2064, 317*592ffb21SWarner Losh 2272, 2624, 0, 1200, 1203, 1209, 1262, 0, 318*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 319*592ffb21SWarner Losh /* 1920x1200@120Hz RB */ 320*592ffb21SWarner Losh { DRM_MODE("1920x1200", DRM_MODE_TYPE_DRIVER, 317000, 1920, 1968, 321*592ffb21SWarner Losh 2000, 2080, 0, 1200, 1203, 1209, 1271, 0, 322*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 323*592ffb21SWarner Losh /* 1920x1440@60Hz */ 324*592ffb21SWarner Losh { DRM_MODE("1920x1440", DRM_MODE_TYPE_DRIVER, 234000, 1920, 2048, 325*592ffb21SWarner Losh 2256, 2600, 0, 1440, 1441, 1444, 1500, 0, 326*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 327*592ffb21SWarner Losh /* 1920x1440@75Hz */ 328*592ffb21SWarner Losh { DRM_MODE("1920x1440", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2064, 329*592ffb21SWarner Losh 2288, 2640, 0, 1440, 1441, 1444, 1500, 0, 330*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 331*592ffb21SWarner Losh /* 1920x1440@120Hz RB */ 332*592ffb21SWarner Losh { DRM_MODE("1920x1440", DRM_MODE_TYPE_DRIVER, 380500, 1920, 1968, 333*592ffb21SWarner Losh 2000, 2080, 0, 1440, 1443, 1447, 1525, 0, 334*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 335*592ffb21SWarner Losh /* 2560x1600@60Hz RB */ 336*592ffb21SWarner Losh { DRM_MODE("2560x1600", DRM_MODE_TYPE_DRIVER, 268500, 2560, 2608, 337*592ffb21SWarner Losh 2640, 2720, 0, 1600, 1603, 1609, 1646, 0, 338*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 339*592ffb21SWarner Losh /* 2560x1600@60Hz */ 340*592ffb21SWarner Losh { DRM_MODE("2560x1600", DRM_MODE_TYPE_DRIVER, 348500, 2560, 2752, 341*592ffb21SWarner Losh 3032, 3504, 0, 1600, 1603, 1609, 1658, 0, 342*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 343*592ffb21SWarner Losh /* 2560x1600@75HZ */ 344*592ffb21SWarner Losh { DRM_MODE("2560x1600", DRM_MODE_TYPE_DRIVER, 443250, 2560, 2768, 345*592ffb21SWarner Losh 3048, 3536, 0, 1600, 1603, 1609, 1672, 0, 346*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 347*592ffb21SWarner Losh /* 2560x1600@85HZ */ 348*592ffb21SWarner Losh { DRM_MODE("2560x1600", DRM_MODE_TYPE_DRIVER, 505250, 2560, 2768, 349*592ffb21SWarner Losh 3048, 3536, 0, 1600, 1603, 1609, 1682, 0, 350*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, 351*592ffb21SWarner Losh /* 2560x1600@120Hz RB */ 352*592ffb21SWarner Losh { DRM_MODE("2560x1600", DRM_MODE_TYPE_DRIVER, 552750, 2560, 2608, 353*592ffb21SWarner Losh 2640, 2720, 0, 1600, 1603, 1609, 1694, 0, 354*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, 355*592ffb21SWarner Losh 356*592ffb21SWarner Losh }; 357*592ffb21SWarner Losh static const int drm_num_dmt_modes = 358*592ffb21SWarner Losh sizeof(drm_dmt_modes) / sizeof(struct drm_display_mode); 359*592ffb21SWarner Losh 360*592ffb21SWarner Losh static const struct drm_display_mode edid_est_modes[] = { 361*592ffb21SWarner Losh { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 40000, 800, 840, 362*592ffb21SWarner Losh 968, 1056, 0, 600, 601, 605, 628, 0, 363*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 800x600@60Hz */ 364*592ffb21SWarner Losh { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 36000, 800, 824, 365*592ffb21SWarner Losh 896, 1024, 0, 600, 601, 603, 625, 0, 366*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 800x600@56Hz */ 367*592ffb21SWarner Losh { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 31500, 640, 656, 368*592ffb21SWarner Losh 720, 840, 0, 480, 481, 484, 500, 0, 369*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, /* 640x480@75Hz */ 370*592ffb21SWarner Losh { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 31500, 640, 664, 371*592ffb21SWarner Losh 704, 832, 0, 480, 489, 491, 520, 0, 372*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, /* 640x480@72Hz */ 373*592ffb21SWarner Losh { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 30240, 640, 704, 374*592ffb21SWarner Losh 768, 864, 0, 480, 483, 486, 525, 0, 375*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, /* 640x480@67Hz */ 376*592ffb21SWarner Losh { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 25200, 640, 656, 377*592ffb21SWarner Losh 752, 800, 0, 480, 490, 492, 525, 0, 378*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, /* 640x480@60Hz */ 379*592ffb21SWarner Losh { DRM_MODE("720x400", DRM_MODE_TYPE_DRIVER, 35500, 720, 738, 380*592ffb21SWarner Losh 846, 900, 0, 400, 421, 423, 449, 0, 381*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, /* 720x400@88Hz */ 382*592ffb21SWarner Losh { DRM_MODE("720x400", DRM_MODE_TYPE_DRIVER, 28320, 720, 738, 383*592ffb21SWarner Losh 846, 900, 0, 400, 412, 414, 449, 0, 384*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 720x400@70Hz */ 385*592ffb21SWarner Losh { DRM_MODE("1280x1024", DRM_MODE_TYPE_DRIVER, 135000, 1280, 1296, 386*592ffb21SWarner Losh 1440, 1688, 0, 1024, 1025, 1028, 1066, 0, 387*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 1280x1024@75Hz */ 388*592ffb21SWarner Losh { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 78800, 1024, 1040, 389*592ffb21SWarner Losh 1136, 1312, 0, 768, 769, 772, 800, 0, 390*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 1024x768@75Hz */ 391*592ffb21SWarner Losh { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 75000, 1024, 1048, 392*592ffb21SWarner Losh 1184, 1328, 0, 768, 771, 777, 806, 0, 393*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, /* 1024x768@70Hz */ 394*592ffb21SWarner Losh { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 65000, 1024, 1048, 395*592ffb21SWarner Losh 1184, 1344, 0, 768, 771, 777, 806, 0, 396*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, /* 1024x768@60Hz */ 397*592ffb21SWarner Losh { DRM_MODE("1024x768i", DRM_MODE_TYPE_DRIVER,44900, 1024, 1032, 398*592ffb21SWarner Losh 1208, 1264, 0, 768, 768, 776, 817, 0, 399*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_INTERLACE) }, /* 1024x768@43Hz */ 400*592ffb21SWarner Losh { DRM_MODE("832x624", DRM_MODE_TYPE_DRIVER, 57284, 832, 864, 401*592ffb21SWarner Losh 928, 1152, 0, 624, 625, 628, 667, 0, 402*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, /* 832x624@75Hz */ 403*592ffb21SWarner Losh { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 49500, 800, 816, 404*592ffb21SWarner Losh 896, 1056, 0, 600, 601, 604, 625, 0, 405*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 800x600@75Hz */ 406*592ffb21SWarner Losh { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 50000, 800, 856, 407*592ffb21SWarner Losh 976, 1040, 0, 600, 637, 643, 666, 0, 408*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 800x600@72Hz */ 409*592ffb21SWarner Losh { DRM_MODE("1152x864", DRM_MODE_TYPE_DRIVER, 108000, 1152, 1216, 410*592ffb21SWarner Losh 1344, 1600, 0, 864, 865, 868, 900, 0, 411*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 1152x864@75Hz */ 412*592ffb21SWarner Losh }; 413*592ffb21SWarner Losh 414*592ffb21SWarner Losh struct minimode { 415*592ffb21SWarner Losh short w; 416*592ffb21SWarner Losh short h; 417*592ffb21SWarner Losh short r; 418*592ffb21SWarner Losh short rb; 419*592ffb21SWarner Losh }; 420*592ffb21SWarner Losh 421*592ffb21SWarner Losh static const struct minimode est3_modes[] = { 422*592ffb21SWarner Losh /* byte 6 */ 423*592ffb21SWarner Losh { 640, 350, 85, 0 }, 424*592ffb21SWarner Losh { 640, 400, 85, 0 }, 425*592ffb21SWarner Losh { 720, 400, 85, 0 }, 426*592ffb21SWarner Losh { 640, 480, 85, 0 }, 427*592ffb21SWarner Losh { 848, 480, 60, 0 }, 428*592ffb21SWarner Losh { 800, 600, 85, 0 }, 429*592ffb21SWarner Losh { 1024, 768, 85, 0 }, 430*592ffb21SWarner Losh { 1152, 864, 75, 0 }, 431*592ffb21SWarner Losh /* byte 7 */ 432*592ffb21SWarner Losh { 1280, 768, 60, 1 }, 433*592ffb21SWarner Losh { 1280, 768, 60, 0 }, 434*592ffb21SWarner Losh { 1280, 768, 75, 0 }, 435*592ffb21SWarner Losh { 1280, 768, 85, 0 }, 436*592ffb21SWarner Losh { 1280, 960, 60, 0 }, 437*592ffb21SWarner Losh { 1280, 960, 85, 0 }, 438*592ffb21SWarner Losh { 1280, 1024, 60, 0 }, 439*592ffb21SWarner Losh { 1280, 1024, 85, 0 }, 440*592ffb21SWarner Losh /* byte 8 */ 441*592ffb21SWarner Losh { 1360, 768, 60, 0 }, 442*592ffb21SWarner Losh { 1440, 900, 60, 1 }, 443*592ffb21SWarner Losh { 1440, 900, 60, 0 }, 444*592ffb21SWarner Losh { 1440, 900, 75, 0 }, 445*592ffb21SWarner Losh { 1440, 900, 85, 0 }, 446*592ffb21SWarner Losh { 1400, 1050, 60, 1 }, 447*592ffb21SWarner Losh { 1400, 1050, 60, 0 }, 448*592ffb21SWarner Losh { 1400, 1050, 75, 0 }, 449*592ffb21SWarner Losh /* byte 9 */ 450*592ffb21SWarner Losh { 1400, 1050, 85, 0 }, 451*592ffb21SWarner Losh { 1680, 1050, 60, 1 }, 452*592ffb21SWarner Losh { 1680, 1050, 60, 0 }, 453*592ffb21SWarner Losh { 1680, 1050, 75, 0 }, 454*592ffb21SWarner Losh { 1680, 1050, 85, 0 }, 455*592ffb21SWarner Losh { 1600, 1200, 60, 0 }, 456*592ffb21SWarner Losh { 1600, 1200, 65, 0 }, 457*592ffb21SWarner Losh { 1600, 1200, 70, 0 }, 458*592ffb21SWarner Losh /* byte 10 */ 459*592ffb21SWarner Losh { 1600, 1200, 75, 0 }, 460*592ffb21SWarner Losh { 1600, 1200, 85, 0 }, 461*592ffb21SWarner Losh { 1792, 1344, 60, 0 }, 462*592ffb21SWarner Losh { 1792, 1344, 85, 0 }, 463*592ffb21SWarner Losh { 1856, 1392, 60, 0 }, 464*592ffb21SWarner Losh { 1856, 1392, 75, 0 }, 465*592ffb21SWarner Losh { 1920, 1200, 60, 1 }, 466*592ffb21SWarner Losh { 1920, 1200, 60, 0 }, 467*592ffb21SWarner Losh /* byte 11 */ 468*592ffb21SWarner Losh { 1920, 1200, 75, 0 }, 469*592ffb21SWarner Losh { 1920, 1200, 85, 0 }, 470*592ffb21SWarner Losh { 1920, 1440, 60, 0 }, 471*592ffb21SWarner Losh { 1920, 1440, 75, 0 }, 472*592ffb21SWarner Losh }; 473*592ffb21SWarner Losh static const int num_est3_modes = ARRAY_SIZE(est3_modes); 474*592ffb21SWarner Losh 475*592ffb21SWarner Losh static const struct minimode extra_modes[] = { 476*592ffb21SWarner Losh { 1024, 576, 60, 0 }, 477*592ffb21SWarner Losh { 1366, 768, 60, 0 }, 478*592ffb21SWarner Losh { 1600, 900, 60, 0 }, 479*592ffb21SWarner Losh { 1680, 945, 60, 0 }, 480*592ffb21SWarner Losh { 1920, 1080, 60, 0 }, 481*592ffb21SWarner Losh { 2048, 1152, 60, 0 }, 482*592ffb21SWarner Losh { 2048, 1536, 60, 0 }, 483*592ffb21SWarner Losh }; 484*592ffb21SWarner Losh static const int num_extra_modes = ARRAY_SIZE(extra_modes); 485*592ffb21SWarner Losh 486*592ffb21SWarner Losh /* 487*592ffb21SWarner Losh * Probably taken from CEA-861 spec. 488*592ffb21SWarner Losh * This table is converted from xorg's hw/xfree86/modes/xf86EdidModes.c. 489*592ffb21SWarner Losh */ 490*592ffb21SWarner Losh static const struct drm_display_mode edid_cea_modes[] = { 491*592ffb21SWarner Losh /* 1 - 640x480@60Hz */ 492*592ffb21SWarner Losh { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 25175, 640, 656, 493*592ffb21SWarner Losh 752, 800, 0, 480, 490, 492, 525, 0, 494*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 495*592ffb21SWarner Losh /* 2 - 720x480@60Hz */ 496*592ffb21SWarner Losh { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 27000, 720, 736, 497*592ffb21SWarner Losh 798, 858, 0, 480, 489, 495, 525, 0, 498*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 499*592ffb21SWarner Losh /* 3 - 720x480@60Hz */ 500*592ffb21SWarner Losh { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 27000, 720, 736, 501*592ffb21SWarner Losh 798, 858, 0, 480, 489, 495, 525, 0, 502*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 503*592ffb21SWarner Losh /* 4 - 1280x720@60Hz */ 504*592ffb21SWarner Losh { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390, 505*592ffb21SWarner Losh 1430, 1650, 0, 720, 725, 730, 750, 0, 506*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 507*592ffb21SWarner Losh /* 5 - 1920x1080i@60Hz */ 508*592ffb21SWarner Losh { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008, 509*592ffb21SWarner Losh 2052, 2200, 0, 1080, 1084, 1094, 1125, 0, 510*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | 511*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE) }, 512*592ffb21SWarner Losh /* 6 - 1440x480i@60Hz */ 513*592ffb21SWarner Losh { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478, 514*592ffb21SWarner Losh 1602, 1716, 0, 480, 488, 494, 525, 0, 515*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 516*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, 517*592ffb21SWarner Losh /* 7 - 1440x480i@60Hz */ 518*592ffb21SWarner Losh { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478, 519*592ffb21SWarner Losh 1602, 1716, 0, 480, 488, 494, 525, 0, 520*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 521*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, 522*592ffb21SWarner Losh /* 8 - 1440x240@60Hz */ 523*592ffb21SWarner Losh { DRM_MODE("1440x240", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478, 524*592ffb21SWarner Losh 1602, 1716, 0, 240, 244, 247, 262, 0, 525*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 526*592ffb21SWarner Losh DRM_MODE_FLAG_DBLCLK) }, 527*592ffb21SWarner Losh /* 9 - 1440x240@60Hz */ 528*592ffb21SWarner Losh { DRM_MODE("1440x240", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478, 529*592ffb21SWarner Losh 1602, 1716, 0, 240, 244, 247, 262, 0, 530*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 531*592ffb21SWarner Losh DRM_MODE_FLAG_DBLCLK) }, 532*592ffb21SWarner Losh /* 10 - 2880x480i@60Hz */ 533*592ffb21SWarner Losh { DRM_MODE("2880x480i", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956, 534*592ffb21SWarner Losh 3204, 3432, 0, 480, 488, 494, 525, 0, 535*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 536*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE) }, 537*592ffb21SWarner Losh /* 11 - 2880x480i@60Hz */ 538*592ffb21SWarner Losh { DRM_MODE("2880x480i", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956, 539*592ffb21SWarner Losh 3204, 3432, 0, 480, 488, 494, 525, 0, 540*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 541*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE) }, 542*592ffb21SWarner Losh /* 12 - 2880x240@60Hz */ 543*592ffb21SWarner Losh { DRM_MODE("2880x240", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956, 544*592ffb21SWarner Losh 3204, 3432, 0, 240, 244, 247, 262, 0, 545*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 546*592ffb21SWarner Losh /* 13 - 2880x240@60Hz */ 547*592ffb21SWarner Losh { DRM_MODE("2880x240", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956, 548*592ffb21SWarner Losh 3204, 3432, 0, 240, 244, 247, 262, 0, 549*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 550*592ffb21SWarner Losh /* 14 - 1440x480@60Hz */ 551*592ffb21SWarner Losh { DRM_MODE("1440x480", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1472, 552*592ffb21SWarner Losh 1596, 1716, 0, 480, 489, 495, 525, 0, 553*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 554*592ffb21SWarner Losh /* 15 - 1440x480@60Hz */ 555*592ffb21SWarner Losh { DRM_MODE("1440x480", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1472, 556*592ffb21SWarner Losh 1596, 1716, 0, 480, 489, 495, 525, 0, 557*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 558*592ffb21SWarner Losh /* 16 - 1920x1080@60Hz */ 559*592ffb21SWarner Losh { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008, 560*592ffb21SWarner Losh 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, 561*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 562*592ffb21SWarner Losh /* 17 - 720x576@50Hz */ 563*592ffb21SWarner Losh { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 27000, 720, 732, 564*592ffb21SWarner Losh 796, 864, 0, 576, 581, 586, 625, 0, 565*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 566*592ffb21SWarner Losh /* 18 - 720x576@50Hz */ 567*592ffb21SWarner Losh { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 27000, 720, 732, 568*592ffb21SWarner Losh 796, 864, 0, 576, 581, 586, 625, 0, 569*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 570*592ffb21SWarner Losh /* 19 - 1280x720@50Hz */ 571*592ffb21SWarner Losh { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720, 572*592ffb21SWarner Losh 1760, 1980, 0, 720, 725, 730, 750, 0, 573*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 574*592ffb21SWarner Losh /* 20 - 1920x1080i@50Hz */ 575*592ffb21SWarner Losh { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, 576*592ffb21SWarner Losh 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, 577*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | 578*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE) }, 579*592ffb21SWarner Losh /* 21 - 1440x576i@50Hz */ 580*592ffb21SWarner Losh { DRM_MODE("1440x576i", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464, 581*592ffb21SWarner Losh 1590, 1728, 0, 576, 580, 586, 625, 0, 582*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 583*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, 584*592ffb21SWarner Losh /* 22 - 1440x576i@50Hz */ 585*592ffb21SWarner Losh { DRM_MODE("1440x576i", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464, 586*592ffb21SWarner Losh 1590, 1728, 0, 576, 580, 586, 625, 0, 587*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 588*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, 589*592ffb21SWarner Losh /* 23 - 1440x288@50Hz */ 590*592ffb21SWarner Losh { DRM_MODE("1440x288", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464, 591*592ffb21SWarner Losh 1590, 1728, 0, 288, 290, 293, 312, 0, 592*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 593*592ffb21SWarner Losh DRM_MODE_FLAG_DBLCLK) }, 594*592ffb21SWarner Losh /* 24 - 1440x288@50Hz */ 595*592ffb21SWarner Losh { DRM_MODE("1440x288", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464, 596*592ffb21SWarner Losh 1590, 1728, 0, 288, 290, 293, 312, 0, 597*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 598*592ffb21SWarner Losh DRM_MODE_FLAG_DBLCLK) }, 599*592ffb21SWarner Losh /* 25 - 2880x576i@50Hz */ 600*592ffb21SWarner Losh { DRM_MODE("2880x576i", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928, 601*592ffb21SWarner Losh 3180, 3456, 0, 576, 580, 586, 625, 0, 602*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 603*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE) }, 604*592ffb21SWarner Losh /* 26 - 2880x576i@50Hz */ 605*592ffb21SWarner Losh { DRM_MODE("2880x576i", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928, 606*592ffb21SWarner Losh 3180, 3456, 0, 576, 580, 586, 625, 0, 607*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 608*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE) }, 609*592ffb21SWarner Losh /* 27 - 2880x288@50Hz */ 610*592ffb21SWarner Losh { DRM_MODE("2880x288", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928, 611*592ffb21SWarner Losh 3180, 3456, 0, 288, 290, 293, 312, 0, 612*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 613*592ffb21SWarner Losh /* 28 - 2880x288@50Hz */ 614*592ffb21SWarner Losh { DRM_MODE("2880x288", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928, 615*592ffb21SWarner Losh 3180, 3456, 0, 288, 290, 293, 312, 0, 616*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 617*592ffb21SWarner Losh /* 29 - 1440x576@50Hz */ 618*592ffb21SWarner Losh { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464, 619*592ffb21SWarner Losh 1592, 1728, 0, 576, 581, 586, 625, 0, 620*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 621*592ffb21SWarner Losh /* 30 - 1440x576@50Hz */ 622*592ffb21SWarner Losh { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464, 623*592ffb21SWarner Losh 1592, 1728, 0, 576, 581, 586, 625, 0, 624*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 625*592ffb21SWarner Losh /* 31 - 1920x1080@50Hz */ 626*592ffb21SWarner Losh { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, 627*592ffb21SWarner Losh 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, 628*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 629*592ffb21SWarner Losh /* 32 - 1920x1080@24Hz */ 630*592ffb21SWarner Losh { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2558, 631*592ffb21SWarner Losh 2602, 2750, 0, 1080, 1084, 1089, 1125, 0, 632*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 633*592ffb21SWarner Losh /* 33 - 1920x1080@25Hz */ 634*592ffb21SWarner Losh { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, 635*592ffb21SWarner Losh 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, 636*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 637*592ffb21SWarner Losh /* 34 - 1920x1080@30Hz */ 638*592ffb21SWarner Losh { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008, 639*592ffb21SWarner Losh 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, 640*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 641*592ffb21SWarner Losh /* 35 - 2880x480@60Hz */ 642*592ffb21SWarner Losh { DRM_MODE("2880x480", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2944, 643*592ffb21SWarner Losh 3192, 3432, 0, 480, 489, 495, 525, 0, 644*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 645*592ffb21SWarner Losh /* 36 - 2880x480@60Hz */ 646*592ffb21SWarner Losh { DRM_MODE("2880x480", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2944, 647*592ffb21SWarner Losh 3192, 3432, 0, 480, 489, 495, 525, 0, 648*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 649*592ffb21SWarner Losh /* 37 - 2880x576@50Hz */ 650*592ffb21SWarner Losh { DRM_MODE("2880x576", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2928, 651*592ffb21SWarner Losh 3184, 3456, 0, 576, 581, 586, 625, 0, 652*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 653*592ffb21SWarner Losh /* 38 - 2880x576@50Hz */ 654*592ffb21SWarner Losh { DRM_MODE("2880x576", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2928, 655*592ffb21SWarner Losh 3184, 3456, 0, 576, 581, 586, 625, 0, 656*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 657*592ffb21SWarner Losh /* 39 - 1920x1080i@50Hz */ 658*592ffb21SWarner Losh { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 72000, 1920, 1952, 659*592ffb21SWarner Losh 2120, 2304, 0, 1080, 1126, 1136, 1250, 0, 660*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC | 661*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE) }, 662*592ffb21SWarner Losh /* 40 - 1920x1080i@100Hz */ 663*592ffb21SWarner Losh { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, 664*592ffb21SWarner Losh 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, 665*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | 666*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE) }, 667*592ffb21SWarner Losh /* 41 - 1280x720@100Hz */ 668*592ffb21SWarner Losh { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720, 669*592ffb21SWarner Losh 1760, 1980, 0, 720, 725, 730, 750, 0, 670*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 671*592ffb21SWarner Losh /* 42 - 720x576@100Hz */ 672*592ffb21SWarner Losh { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 54000, 720, 732, 673*592ffb21SWarner Losh 796, 864, 0, 576, 581, 586, 625, 0, 674*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 675*592ffb21SWarner Losh /* 43 - 720x576@100Hz */ 676*592ffb21SWarner Losh { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 54000, 720, 732, 677*592ffb21SWarner Losh 796, 864, 0, 576, 581, 586, 625, 0, 678*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 679*592ffb21SWarner Losh /* 44 - 1440x576i@100Hz */ 680*592ffb21SWarner Losh { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464, 681*592ffb21SWarner Losh 1590, 1728, 0, 576, 580, 586, 625, 0, 682*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 683*592ffb21SWarner Losh DRM_MODE_FLAG_DBLCLK) }, 684*592ffb21SWarner Losh /* 45 - 1440x576i@100Hz */ 685*592ffb21SWarner Losh { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464, 686*592ffb21SWarner Losh 1590, 1728, 0, 576, 580, 586, 625, 0, 687*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 688*592ffb21SWarner Losh DRM_MODE_FLAG_DBLCLK) }, 689*592ffb21SWarner Losh /* 46 - 1920x1080i@120Hz */ 690*592ffb21SWarner Losh { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008, 691*592ffb21SWarner Losh 2052, 2200, 0, 1080, 1084, 1094, 1125, 0, 692*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | 693*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE) }, 694*592ffb21SWarner Losh /* 47 - 1280x720@120Hz */ 695*592ffb21SWarner Losh { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390, 696*592ffb21SWarner Losh 1430, 1650, 0, 720, 725, 730, 750, 0, 697*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 698*592ffb21SWarner Losh /* 48 - 720x480@120Hz */ 699*592ffb21SWarner Losh { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 54000, 720, 736, 700*592ffb21SWarner Losh 798, 858, 0, 480, 489, 495, 525, 0, 701*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 702*592ffb21SWarner Losh /* 49 - 720x480@120Hz */ 703*592ffb21SWarner Losh { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 54000, 720, 736, 704*592ffb21SWarner Losh 798, 858, 0, 480, 489, 495, 525, 0, 705*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 706*592ffb21SWarner Losh /* 50 - 1440x480i@120Hz */ 707*592ffb21SWarner Losh { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1478, 708*592ffb21SWarner Losh 1602, 1716, 0, 480, 488, 494, 525, 0, 709*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 710*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, 711*592ffb21SWarner Losh /* 51 - 1440x480i@120Hz */ 712*592ffb21SWarner Losh { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1478, 713*592ffb21SWarner Losh 1602, 1716, 0, 480, 488, 494, 525, 0, 714*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 715*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, 716*592ffb21SWarner Losh /* 52 - 720x576@200Hz */ 717*592ffb21SWarner Losh { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 108000, 720, 732, 718*592ffb21SWarner Losh 796, 864, 0, 576, 581, 586, 625, 0, 719*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 720*592ffb21SWarner Losh /* 53 - 720x576@200Hz */ 721*592ffb21SWarner Losh { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 108000, 720, 732, 722*592ffb21SWarner Losh 796, 864, 0, 576, 581, 586, 625, 0, 723*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 724*592ffb21SWarner Losh /* 54 - 1440x576i@200Hz */ 725*592ffb21SWarner Losh { DRM_MODE("1440x576i", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1464, 726*592ffb21SWarner Losh 1590, 1728, 0, 576, 580, 586, 625, 0, 727*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 728*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, 729*592ffb21SWarner Losh /* 55 - 1440x576i@200Hz */ 730*592ffb21SWarner Losh { DRM_MODE("1440x576i", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1464, 731*592ffb21SWarner Losh 1590, 1728, 0, 576, 580, 586, 625, 0, 732*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 733*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, 734*592ffb21SWarner Losh /* 56 - 720x480@240Hz */ 735*592ffb21SWarner Losh { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 108000, 720, 736, 736*592ffb21SWarner Losh 798, 858, 0, 480, 489, 495, 525, 0, 737*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 738*592ffb21SWarner Losh /* 57 - 720x480@240Hz */ 739*592ffb21SWarner Losh { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 108000, 720, 736, 740*592ffb21SWarner Losh 798, 858, 0, 480, 489, 495, 525, 0, 741*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, 742*592ffb21SWarner Losh /* 58 - 1440x480i@240 */ 743*592ffb21SWarner Losh { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1478, 744*592ffb21SWarner Losh 1602, 1716, 0, 480, 488, 494, 525, 0, 745*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 746*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, 747*592ffb21SWarner Losh /* 59 - 1440x480i@240 */ 748*592ffb21SWarner Losh { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1478, 749*592ffb21SWarner Losh 1602, 1716, 0, 480, 488, 494, 525, 0, 750*592ffb21SWarner Losh DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 751*592ffb21SWarner Losh DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, 752*592ffb21SWarner Losh /* 60 - 1280x720@24Hz */ 753*592ffb21SWarner Losh { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040, 754*592ffb21SWarner Losh 3080, 3300, 0, 720, 725, 730, 750, 0, 755*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 756*592ffb21SWarner Losh /* 61 - 1280x720@25Hz */ 757*592ffb21SWarner Losh { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700, 758*592ffb21SWarner Losh 3740, 3960, 0, 720, 725, 730, 750, 0, 759*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 760*592ffb21SWarner Losh /* 62 - 1280x720@30Hz */ 761*592ffb21SWarner Losh { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040, 762*592ffb21SWarner Losh 3080, 3300, 0, 720, 725, 730, 750, 0, 763*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 764*592ffb21SWarner Losh /* 63 - 1920x1080@120Hz */ 765*592ffb21SWarner Losh { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2008, 766*592ffb21SWarner Losh 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, 767*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 768*592ffb21SWarner Losh /* 64 - 1920x1080@100Hz */ 769*592ffb21SWarner Losh { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2448, 770*592ffb21SWarner Losh 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, 771*592ffb21SWarner Losh DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 772*592ffb21SWarner Losh }; 773*592ffb21SWarner Losh static const int drm_num_cea_modes = ARRAY_SIZE(edid_cea_modes); 774