1*f0687c8aSRaman Tenneti /* From Linux kernel: drm_edid.c */ 2*f0687c8aSRaman Tenneti /* 3*f0687c8aSRaman Tenneti * Copyright (c) 2006 Luc Verhaegen (quirks list) 4*f0687c8aSRaman Tenneti * Copyright (c) 2007-2008 Intel Corporation 5*f0687c8aSRaman Tenneti * Jesse Barnes <[email protected]> 6*f0687c8aSRaman Tenneti * Copyright 2010 Red Hat, Inc. 7*f0687c8aSRaman Tenneti * 8*f0687c8aSRaman Tenneti * DDC probing routines (drm_ddc_read & drm_do_probe_ddc_edid) originally from 9*f0687c8aSRaman Tenneti * FB layer. 10*f0687c8aSRaman Tenneti * Copyright (C) 2006 Dennis Munsie <[email protected]> 11*f0687c8aSRaman Tenneti * 12*f0687c8aSRaman Tenneti * Permission is hereby granted, free of charge, to any person obtaining a 13*f0687c8aSRaman Tenneti * copy of this software and associated documentation files (the "Software"), 14*f0687c8aSRaman Tenneti * to deal in the Software without restriction, including without limitation 15*f0687c8aSRaman Tenneti * the rights to use, copy, modify, merge, publish, distribute, sub license, 16*f0687c8aSRaman Tenneti * and/or sell copies of the Software, and to permit persons to whom the 17*f0687c8aSRaman Tenneti * Software is furnished to do so, subject to the following conditions: 18*f0687c8aSRaman Tenneti * 19*f0687c8aSRaman Tenneti * The above copyright notice and this permission notice (including the 20*f0687c8aSRaman Tenneti * next paragraph) shall be included in all copies or substantial portions 21*f0687c8aSRaman Tenneti * of the Software. 22*f0687c8aSRaman Tenneti * 23*f0687c8aSRaman Tenneti * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 24*f0687c8aSRaman Tenneti * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 25*f0687c8aSRaman Tenneti * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 26*f0687c8aSRaman Tenneti * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 27*f0687c8aSRaman Tenneti * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 28*f0687c8aSRaman Tenneti * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 29*f0687c8aSRaman Tenneti * DEALINGS IN THE SOFTWARE. 30*f0687c8aSRaman Tenneti */ 31*f0687c8aSRaman Tenneti 32*f0687c8aSRaman Tenneti #include <kms++/modedb.h> 33*f0687c8aSRaman Tenneti 34*f0687c8aSRaman Tenneti #include <xf86drm.h> 35*f0687c8aSRaman Tenneti 36*f0687c8aSRaman Tenneti namespace kms 37*f0687c8aSRaman Tenneti { 38*f0687c8aSRaman Tenneti #define DIV_ROUND(n, d) (((n) + (d) / 2) / (d)) 39*f0687c8aSRaman Tenneti 40*f0687c8aSRaman Tenneti #define DRM_MODE(nm, c, hd, hss, hse, ht, hsk, vd, vss, vse, vt, vs, f) \ 41*f0687c8aSRaman Tenneti .name = nm, .clock = (c), \ 42*f0687c8aSRaman Tenneti .hdisplay = (hd), .hsync_start = (hss), .hsync_end = (hse), .htotal = (ht), .hskew = (hsk), \ 43*f0687c8aSRaman Tenneti .vdisplay = (vd), .vsync_start = (vss), .vsync_end = (vse), .vtotal = (vt), .vscan = (vs), \ 44*f0687c8aSRaman Tenneti .vrefresh = DIV_ROUND(c * 1000, ht * vt) * (((f)&DRM_MODE_FLAG_INTERLACE) ? 2 : 1), \ 45*f0687c8aSRaman Tenneti .flags = (f), .type = 0 46*f0687c8aSRaman Tenneti 47*f0687c8aSRaman Tenneti /* 48*f0687c8aSRaman Tenneti * Probably taken from CEA-861 spec. 49*f0687c8aSRaman Tenneti * This table is converted from xorg's hw/xfree86/modes/xf86EdidModes.c. 50*f0687c8aSRaman Tenneti */ 51*f0687c8aSRaman Tenneti const Videomode cea_modes[] = { 52*f0687c8aSRaman Tenneti /* 1 - 640x480@60Hz */ 53*f0687c8aSRaman Tenneti { 54*f0687c8aSRaman Tenneti DRM_MODE("640x480", 25175, 640, 656, 55*f0687c8aSRaman Tenneti 752, 800, 0, 480, 490, 492, 525, 0, 56*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 57*f0687c8aSRaman Tenneti }, 58*f0687c8aSRaman Tenneti /* 2 - 720x480@60Hz */ 59*f0687c8aSRaman Tenneti { 60*f0687c8aSRaman Tenneti DRM_MODE("720x480", 27000, 720, 736, 61*f0687c8aSRaman Tenneti 798, 858, 0, 480, 489, 495, 525, 0, 62*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 63*f0687c8aSRaman Tenneti }, 64*f0687c8aSRaman Tenneti /* 3 - 720x480@60Hz */ 65*f0687c8aSRaman Tenneti { 66*f0687c8aSRaman Tenneti DRM_MODE("720x480", 27000, 720, 736, 67*f0687c8aSRaman Tenneti 798, 858, 0, 480, 489, 495, 525, 0, 68*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 69*f0687c8aSRaman Tenneti }, 70*f0687c8aSRaman Tenneti /* 4 - 1280x720@60Hz */ 71*f0687c8aSRaman Tenneti { 72*f0687c8aSRaman Tenneti DRM_MODE("1280x720", 74250, 1280, 1390, 73*f0687c8aSRaman Tenneti 1430, 1650, 0, 720, 725, 730, 750, 0, 74*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), 75*f0687c8aSRaman Tenneti }, 76*f0687c8aSRaman Tenneti /* 5 - 1920x1080i@60Hz */ 77*f0687c8aSRaman Tenneti { 78*f0687c8aSRaman Tenneti DRM_MODE("1920x1080i", 74250, 1920, 2008, 79*f0687c8aSRaman Tenneti 2052, 2200, 0, 1080, 1084, 1094, 1125, 0, 80*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | 81*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE), 82*f0687c8aSRaman Tenneti }, 83*f0687c8aSRaman Tenneti /* 6 - 720(1440)x480i@60Hz */ 84*f0687c8aSRaman Tenneti { 85*f0687c8aSRaman Tenneti DRM_MODE("720x480i", 13500, 720, 739, 86*f0687c8aSRaman Tenneti 801, 858, 0, 480, 488, 494, 525, 0, 87*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 88*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), 89*f0687c8aSRaman Tenneti }, 90*f0687c8aSRaman Tenneti /* 7 - 720(1440)x480i@60Hz */ 91*f0687c8aSRaman Tenneti { 92*f0687c8aSRaman Tenneti DRM_MODE("720x480i", 13500, 720, 739, 93*f0687c8aSRaman Tenneti 801, 858, 0, 480, 488, 494, 525, 0, 94*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 95*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), 96*f0687c8aSRaman Tenneti }, 97*f0687c8aSRaman Tenneti /* 8 - 720(1440)x240@60Hz */ 98*f0687c8aSRaman Tenneti { 99*f0687c8aSRaman Tenneti DRM_MODE("720x240", 13500, 720, 739, 100*f0687c8aSRaman Tenneti 801, 858, 0, 240, 244, 247, 262, 0, 101*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 102*f0687c8aSRaman Tenneti DRM_MODE_FLAG_DBLCLK), 103*f0687c8aSRaman Tenneti }, 104*f0687c8aSRaman Tenneti /* 9 - 720(1440)x240@60Hz */ 105*f0687c8aSRaman Tenneti { 106*f0687c8aSRaman Tenneti DRM_MODE("720x240", 13500, 720, 739, 107*f0687c8aSRaman Tenneti 801, 858, 0, 240, 244, 247, 262, 0, 108*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 109*f0687c8aSRaman Tenneti DRM_MODE_FLAG_DBLCLK), 110*f0687c8aSRaman Tenneti }, 111*f0687c8aSRaman Tenneti /* 10 - 2880x480i@60Hz */ 112*f0687c8aSRaman Tenneti { 113*f0687c8aSRaman Tenneti DRM_MODE("2880x480i", 54000, 2880, 2956, 114*f0687c8aSRaman Tenneti 3204, 3432, 0, 480, 488, 494, 525, 0, 115*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 116*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE), 117*f0687c8aSRaman Tenneti }, 118*f0687c8aSRaman Tenneti /* 11 - 2880x480i@60Hz */ 119*f0687c8aSRaman Tenneti { 120*f0687c8aSRaman Tenneti DRM_MODE("2880x480i", 54000, 2880, 2956, 121*f0687c8aSRaman Tenneti 3204, 3432, 0, 480, 488, 494, 525, 0, 122*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 123*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE), 124*f0687c8aSRaman Tenneti }, 125*f0687c8aSRaman Tenneti /* 12 - 2880x240@60Hz */ 126*f0687c8aSRaman Tenneti { 127*f0687c8aSRaman Tenneti DRM_MODE("2880x240", 54000, 2880, 2956, 128*f0687c8aSRaman Tenneti 3204, 3432, 0, 240, 244, 247, 262, 0, 129*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 130*f0687c8aSRaman Tenneti }, 131*f0687c8aSRaman Tenneti /* 13 - 2880x240@60Hz */ 132*f0687c8aSRaman Tenneti { 133*f0687c8aSRaman Tenneti DRM_MODE("2880x240", 54000, 2880, 2956, 134*f0687c8aSRaman Tenneti 3204, 3432, 0, 240, 244, 247, 262, 0, 135*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 136*f0687c8aSRaman Tenneti }, 137*f0687c8aSRaman Tenneti /* 14 - 1440x480@60Hz */ 138*f0687c8aSRaman Tenneti { 139*f0687c8aSRaman Tenneti DRM_MODE("1440x480", 54000, 1440, 1472, 140*f0687c8aSRaman Tenneti 1596, 1716, 0, 480, 489, 495, 525, 0, 141*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 142*f0687c8aSRaman Tenneti }, 143*f0687c8aSRaman Tenneti /* 15 - 1440x480@60Hz */ 144*f0687c8aSRaman Tenneti { 145*f0687c8aSRaman Tenneti DRM_MODE("1440x480", 54000, 1440, 1472, 146*f0687c8aSRaman Tenneti 1596, 1716, 0, 480, 489, 495, 525, 0, 147*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 148*f0687c8aSRaman Tenneti }, 149*f0687c8aSRaman Tenneti /* 16 - 1920x1080@60Hz */ 150*f0687c8aSRaman Tenneti { 151*f0687c8aSRaman Tenneti DRM_MODE("1920x1080", 148500, 1920, 2008, 152*f0687c8aSRaman Tenneti 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, 153*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), 154*f0687c8aSRaman Tenneti }, 155*f0687c8aSRaman Tenneti /* 17 - 720x576@50Hz */ 156*f0687c8aSRaman Tenneti { 157*f0687c8aSRaman Tenneti DRM_MODE("720x576", 27000, 720, 732, 158*f0687c8aSRaman Tenneti 796, 864, 0, 576, 581, 586, 625, 0, 159*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 160*f0687c8aSRaman Tenneti }, 161*f0687c8aSRaman Tenneti /* 18 - 720x576@50Hz */ 162*f0687c8aSRaman Tenneti { 163*f0687c8aSRaman Tenneti DRM_MODE("720x576", 27000, 720, 732, 164*f0687c8aSRaman Tenneti 796, 864, 0, 576, 581, 586, 625, 0, 165*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 166*f0687c8aSRaman Tenneti }, 167*f0687c8aSRaman Tenneti /* 19 - 1280x720@50Hz */ 168*f0687c8aSRaman Tenneti { 169*f0687c8aSRaman Tenneti DRM_MODE("1280x720", 74250, 1280, 1720, 170*f0687c8aSRaman Tenneti 1760, 1980, 0, 720, 725, 730, 750, 0, 171*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), 172*f0687c8aSRaman Tenneti }, 173*f0687c8aSRaman Tenneti /* 20 - 1920x1080i@50Hz */ 174*f0687c8aSRaman Tenneti { 175*f0687c8aSRaman Tenneti DRM_MODE("1920x1080i", 74250, 1920, 2448, 176*f0687c8aSRaman Tenneti 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, 177*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | 178*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE), 179*f0687c8aSRaman Tenneti }, 180*f0687c8aSRaman Tenneti /* 21 - 720(1440)x576i@50Hz */ 181*f0687c8aSRaman Tenneti { 182*f0687c8aSRaman Tenneti DRM_MODE("720x576i", 13500, 720, 732, 183*f0687c8aSRaman Tenneti 795, 864, 0, 576, 580, 586, 625, 0, 184*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 185*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), 186*f0687c8aSRaman Tenneti }, 187*f0687c8aSRaman Tenneti /* 22 - 720(1440)x576i@50Hz */ 188*f0687c8aSRaman Tenneti { 189*f0687c8aSRaman Tenneti DRM_MODE("720x576i", 13500, 720, 732, 190*f0687c8aSRaman Tenneti 795, 864, 0, 576, 580, 586, 625, 0, 191*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 192*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), 193*f0687c8aSRaman Tenneti }, 194*f0687c8aSRaman Tenneti /* 23 - 720(1440)x288@50Hz */ 195*f0687c8aSRaman Tenneti { 196*f0687c8aSRaman Tenneti DRM_MODE("720x288", 13500, 720, 732, 197*f0687c8aSRaman Tenneti 795, 864, 0, 288, 290, 293, 312, 0, 198*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 199*f0687c8aSRaman Tenneti DRM_MODE_FLAG_DBLCLK), 200*f0687c8aSRaman Tenneti }, 201*f0687c8aSRaman Tenneti /* 24 - 720(1440)x288@50Hz */ 202*f0687c8aSRaman Tenneti { 203*f0687c8aSRaman Tenneti DRM_MODE("720x288", 13500, 720, 732, 204*f0687c8aSRaman Tenneti 795, 864, 0, 288, 290, 293, 312, 0, 205*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 206*f0687c8aSRaman Tenneti DRM_MODE_FLAG_DBLCLK), 207*f0687c8aSRaman Tenneti }, 208*f0687c8aSRaman Tenneti /* 25 - 2880x576i@50Hz */ 209*f0687c8aSRaman Tenneti { 210*f0687c8aSRaman Tenneti DRM_MODE("2880x576i", 54000, 2880, 2928, 211*f0687c8aSRaman Tenneti 3180, 3456, 0, 576, 580, 586, 625, 0, 212*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 213*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE), 214*f0687c8aSRaman Tenneti }, 215*f0687c8aSRaman Tenneti /* 26 - 2880x576i@50Hz */ 216*f0687c8aSRaman Tenneti { 217*f0687c8aSRaman Tenneti DRM_MODE("2880x576i", 54000, 2880, 2928, 218*f0687c8aSRaman Tenneti 3180, 3456, 0, 576, 580, 586, 625, 0, 219*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 220*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE), 221*f0687c8aSRaman Tenneti }, 222*f0687c8aSRaman Tenneti /* 27 - 2880x288@50Hz */ 223*f0687c8aSRaman Tenneti { 224*f0687c8aSRaman Tenneti DRM_MODE("2880x288", 54000, 2880, 2928, 225*f0687c8aSRaman Tenneti 3180, 3456, 0, 288, 290, 293, 312, 0, 226*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 227*f0687c8aSRaman Tenneti }, 228*f0687c8aSRaman Tenneti /* 28 - 2880x288@50Hz */ 229*f0687c8aSRaman Tenneti { 230*f0687c8aSRaman Tenneti DRM_MODE("2880x288", 54000, 2880, 2928, 231*f0687c8aSRaman Tenneti 3180, 3456, 0, 288, 290, 293, 312, 0, 232*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 233*f0687c8aSRaman Tenneti }, 234*f0687c8aSRaman Tenneti /* 29 - 1440x576@50Hz */ 235*f0687c8aSRaman Tenneti { 236*f0687c8aSRaman Tenneti DRM_MODE("1440x576", 54000, 1440, 1464, 237*f0687c8aSRaman Tenneti 1592, 1728, 0, 576, 581, 586, 625, 0, 238*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 239*f0687c8aSRaman Tenneti }, 240*f0687c8aSRaman Tenneti /* 30 - 1440x576@50Hz */ 241*f0687c8aSRaman Tenneti { 242*f0687c8aSRaman Tenneti DRM_MODE("1440x576", 54000, 1440, 1464, 243*f0687c8aSRaman Tenneti 1592, 1728, 0, 576, 581, 586, 625, 0, 244*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 245*f0687c8aSRaman Tenneti }, 246*f0687c8aSRaman Tenneti /* 31 - 1920x1080@50Hz */ 247*f0687c8aSRaman Tenneti { 248*f0687c8aSRaman Tenneti DRM_MODE("1920x1080", 148500, 1920, 2448, 249*f0687c8aSRaman Tenneti 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, 250*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), 251*f0687c8aSRaman Tenneti }, 252*f0687c8aSRaman Tenneti /* 32 - 1920x1080@24Hz */ 253*f0687c8aSRaman Tenneti { 254*f0687c8aSRaman Tenneti DRM_MODE("1920x1080", 74250, 1920, 2558, 255*f0687c8aSRaman Tenneti 2602, 2750, 0, 1080, 1084, 1089, 1125, 0, 256*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), 257*f0687c8aSRaman Tenneti }, 258*f0687c8aSRaman Tenneti /* 33 - 1920x1080@25Hz */ 259*f0687c8aSRaman Tenneti { 260*f0687c8aSRaman Tenneti DRM_MODE("1920x1080", 74250, 1920, 2448, 261*f0687c8aSRaman Tenneti 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, 262*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), 263*f0687c8aSRaman Tenneti }, 264*f0687c8aSRaman Tenneti /* 34 - 1920x1080@30Hz */ 265*f0687c8aSRaman Tenneti { 266*f0687c8aSRaman Tenneti DRM_MODE("1920x1080", 74250, 1920, 2008, 267*f0687c8aSRaman Tenneti 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, 268*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), 269*f0687c8aSRaman Tenneti }, 270*f0687c8aSRaman Tenneti /* 35 - 2880x480@60Hz */ 271*f0687c8aSRaman Tenneti { 272*f0687c8aSRaman Tenneti DRM_MODE("2880x480", 108000, 2880, 2944, 273*f0687c8aSRaman Tenneti 3192, 3432, 0, 480, 489, 495, 525, 0, 274*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 275*f0687c8aSRaman Tenneti }, 276*f0687c8aSRaman Tenneti /* 36 - 2880x480@60Hz */ 277*f0687c8aSRaman Tenneti { 278*f0687c8aSRaman Tenneti DRM_MODE("2880x480", 108000, 2880, 2944, 279*f0687c8aSRaman Tenneti 3192, 3432, 0, 480, 489, 495, 525, 0, 280*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 281*f0687c8aSRaman Tenneti }, 282*f0687c8aSRaman Tenneti /* 37 - 2880x576@50Hz */ 283*f0687c8aSRaman Tenneti { 284*f0687c8aSRaman Tenneti DRM_MODE("2880x576", 108000, 2880, 2928, 285*f0687c8aSRaman Tenneti 3184, 3456, 0, 576, 581, 586, 625, 0, 286*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 287*f0687c8aSRaman Tenneti }, 288*f0687c8aSRaman Tenneti /* 38 - 2880x576@50Hz */ 289*f0687c8aSRaman Tenneti { 290*f0687c8aSRaman Tenneti DRM_MODE("2880x576", 108000, 2880, 2928, 291*f0687c8aSRaman Tenneti 3184, 3456, 0, 576, 581, 586, 625, 0, 292*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 293*f0687c8aSRaman Tenneti }, 294*f0687c8aSRaman Tenneti /* 39 - 1920x1080i@50Hz */ 295*f0687c8aSRaman Tenneti { 296*f0687c8aSRaman Tenneti DRM_MODE("1920x1080i", 72000, 1920, 1952, 297*f0687c8aSRaman Tenneti 2120, 2304, 0, 1080, 1126, 1136, 1250, 0, 298*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC | 299*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE), 300*f0687c8aSRaman Tenneti }, 301*f0687c8aSRaman Tenneti /* 40 - 1920x1080i@100Hz */ 302*f0687c8aSRaman Tenneti { 303*f0687c8aSRaman Tenneti DRM_MODE("1920x1080i", 148500, 1920, 2448, 304*f0687c8aSRaman Tenneti 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, 305*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | 306*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE), 307*f0687c8aSRaman Tenneti }, 308*f0687c8aSRaman Tenneti /* 41 - 1280x720@100Hz */ 309*f0687c8aSRaman Tenneti { 310*f0687c8aSRaman Tenneti DRM_MODE("1280x720", 148500, 1280, 1720, 311*f0687c8aSRaman Tenneti 1760, 1980, 0, 720, 725, 730, 750, 0, 312*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), 313*f0687c8aSRaman Tenneti }, 314*f0687c8aSRaman Tenneti /* 42 - 720x576@100Hz */ 315*f0687c8aSRaman Tenneti { 316*f0687c8aSRaman Tenneti DRM_MODE("720x576", 54000, 720, 732, 317*f0687c8aSRaman Tenneti 796, 864, 0, 576, 581, 586, 625, 0, 318*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 319*f0687c8aSRaman Tenneti }, 320*f0687c8aSRaman Tenneti /* 43 - 720x576@100Hz */ 321*f0687c8aSRaman Tenneti { 322*f0687c8aSRaman Tenneti DRM_MODE("720x576", 54000, 720, 732, 323*f0687c8aSRaman Tenneti 796, 864, 0, 576, 581, 586, 625, 0, 324*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 325*f0687c8aSRaman Tenneti }, 326*f0687c8aSRaman Tenneti /* 44 - 720(1440)x576i@100Hz */ 327*f0687c8aSRaman Tenneti { 328*f0687c8aSRaman Tenneti DRM_MODE("720x576i", 27000, 720, 732, 329*f0687c8aSRaman Tenneti 795, 864, 0, 576, 580, 586, 625, 0, 330*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 331*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), 332*f0687c8aSRaman Tenneti }, 333*f0687c8aSRaman Tenneti /* 45 - 720(1440)x576i@100Hz */ 334*f0687c8aSRaman Tenneti { 335*f0687c8aSRaman Tenneti DRM_MODE("720x576i", 27000, 720, 732, 336*f0687c8aSRaman Tenneti 795, 864, 0, 576, 580, 586, 625, 0, 337*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 338*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), 339*f0687c8aSRaman Tenneti }, 340*f0687c8aSRaman Tenneti /* 46 - 1920x1080i@120Hz */ 341*f0687c8aSRaman Tenneti { 342*f0687c8aSRaman Tenneti DRM_MODE("1920x1080i", 148500, 1920, 2008, 343*f0687c8aSRaman Tenneti 2052, 2200, 0, 1080, 1084, 1094, 1125, 0, 344*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | 345*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE), 346*f0687c8aSRaman Tenneti }, 347*f0687c8aSRaman Tenneti /* 47 - 1280x720@120Hz */ 348*f0687c8aSRaman Tenneti { 349*f0687c8aSRaman Tenneti DRM_MODE("1280x720", 148500, 1280, 1390, 350*f0687c8aSRaman Tenneti 1430, 1650, 0, 720, 725, 730, 750, 0, 351*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), 352*f0687c8aSRaman Tenneti }, 353*f0687c8aSRaman Tenneti /* 48 - 720x480@120Hz */ 354*f0687c8aSRaman Tenneti { 355*f0687c8aSRaman Tenneti DRM_MODE("720x480", 54000, 720, 736, 356*f0687c8aSRaman Tenneti 798, 858, 0, 480, 489, 495, 525, 0, 357*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 358*f0687c8aSRaman Tenneti }, 359*f0687c8aSRaman Tenneti /* 49 - 720x480@120Hz */ 360*f0687c8aSRaman Tenneti { 361*f0687c8aSRaman Tenneti DRM_MODE("720x480", 54000, 720, 736, 362*f0687c8aSRaman Tenneti 798, 858, 0, 480, 489, 495, 525, 0, 363*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 364*f0687c8aSRaman Tenneti }, 365*f0687c8aSRaman Tenneti /* 50 - 720(1440)x480i@120Hz */ 366*f0687c8aSRaman Tenneti { 367*f0687c8aSRaman Tenneti DRM_MODE("720x480i", 27000, 720, 739, 368*f0687c8aSRaman Tenneti 801, 858, 0, 480, 488, 494, 525, 0, 369*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 370*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), 371*f0687c8aSRaman Tenneti }, 372*f0687c8aSRaman Tenneti /* 51 - 720(1440)x480i@120Hz */ 373*f0687c8aSRaman Tenneti { 374*f0687c8aSRaman Tenneti DRM_MODE("720x480i", 27000, 720, 739, 375*f0687c8aSRaman Tenneti 801, 858, 0, 480, 488, 494, 525, 0, 376*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 377*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), 378*f0687c8aSRaman Tenneti }, 379*f0687c8aSRaman Tenneti /* 52 - 720x576@200Hz */ 380*f0687c8aSRaman Tenneti { 381*f0687c8aSRaman Tenneti DRM_MODE("720x576", 108000, 720, 732, 382*f0687c8aSRaman Tenneti 796, 864, 0, 576, 581, 586, 625, 0, 383*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 384*f0687c8aSRaman Tenneti }, 385*f0687c8aSRaman Tenneti /* 53 - 720x576@200Hz */ 386*f0687c8aSRaman Tenneti { 387*f0687c8aSRaman Tenneti DRM_MODE("720x576", 108000, 720, 732, 388*f0687c8aSRaman Tenneti 796, 864, 0, 576, 581, 586, 625, 0, 389*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 390*f0687c8aSRaman Tenneti }, 391*f0687c8aSRaman Tenneti /* 54 - 720(1440)x576i@200Hz */ 392*f0687c8aSRaman Tenneti { 393*f0687c8aSRaman Tenneti DRM_MODE("720x576i", 54000, 720, 732, 394*f0687c8aSRaman Tenneti 795, 864, 0, 576, 580, 586, 625, 0, 395*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 396*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), 397*f0687c8aSRaman Tenneti }, 398*f0687c8aSRaman Tenneti /* 55 - 720(1440)x576i@200Hz */ 399*f0687c8aSRaman Tenneti { 400*f0687c8aSRaman Tenneti DRM_MODE("720x576i", 54000, 720, 732, 401*f0687c8aSRaman Tenneti 795, 864, 0, 576, 580, 586, 625, 0, 402*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 403*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), 404*f0687c8aSRaman Tenneti }, 405*f0687c8aSRaman Tenneti /* 56 - 720x480@240Hz */ 406*f0687c8aSRaman Tenneti { 407*f0687c8aSRaman Tenneti DRM_MODE("720x480", 108000, 720, 736, 408*f0687c8aSRaman Tenneti 798, 858, 0, 480, 489, 495, 525, 0, 409*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 410*f0687c8aSRaman Tenneti }, 411*f0687c8aSRaman Tenneti /* 57 - 720x480@240Hz */ 412*f0687c8aSRaman Tenneti { 413*f0687c8aSRaman Tenneti DRM_MODE("720x480", 108000, 720, 736, 414*f0687c8aSRaman Tenneti 798, 858, 0, 480, 489, 495, 525, 0, 415*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), 416*f0687c8aSRaman Tenneti }, 417*f0687c8aSRaman Tenneti /* 58 - 720(1440)x480i@240 */ 418*f0687c8aSRaman Tenneti { 419*f0687c8aSRaman Tenneti DRM_MODE("720x480i", 54000, 720, 739, 420*f0687c8aSRaman Tenneti 801, 858, 0, 480, 488, 494, 525, 0, 421*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 422*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), 423*f0687c8aSRaman Tenneti }, 424*f0687c8aSRaman Tenneti /* 59 - 720(1440)x480i@240 */ 425*f0687c8aSRaman Tenneti { 426*f0687c8aSRaman Tenneti DRM_MODE("720x480i", 54000, 720, 739, 427*f0687c8aSRaman Tenneti 801, 858, 0, 480, 488, 494, 525, 0, 428*f0687c8aSRaman Tenneti DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | 429*f0687c8aSRaman Tenneti DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), 430*f0687c8aSRaman Tenneti }, 431*f0687c8aSRaman Tenneti /* 60 - 1280x720@24Hz */ 432*f0687c8aSRaman Tenneti { 433*f0687c8aSRaman Tenneti DRM_MODE("1280x720", 59400, 1280, 3040, 434*f0687c8aSRaman Tenneti 3080, 3300, 0, 720, 725, 730, 750, 0, 435*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), 436*f0687c8aSRaman Tenneti }, 437*f0687c8aSRaman Tenneti /* 61 - 1280x720@25Hz */ 438*f0687c8aSRaman Tenneti { 439*f0687c8aSRaman Tenneti DRM_MODE("1280x720", 74250, 1280, 3700, 440*f0687c8aSRaman Tenneti 3740, 3960, 0, 720, 725, 730, 750, 0, 441*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), 442*f0687c8aSRaman Tenneti }, 443*f0687c8aSRaman Tenneti /* 62 - 1280x720@30Hz */ 444*f0687c8aSRaman Tenneti { 445*f0687c8aSRaman Tenneti DRM_MODE("1280x720", 74250, 1280, 3040, 446*f0687c8aSRaman Tenneti 3080, 3300, 0, 720, 725, 730, 750, 0, 447*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), 448*f0687c8aSRaman Tenneti }, 449*f0687c8aSRaman Tenneti /* 63 - 1920x1080@120Hz */ 450*f0687c8aSRaman Tenneti { 451*f0687c8aSRaman Tenneti DRM_MODE("1920x1080", 297000, 1920, 2008, 452*f0687c8aSRaman Tenneti 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, 453*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), 454*f0687c8aSRaman Tenneti }, 455*f0687c8aSRaman Tenneti /* 64 - 1920x1080@100Hz */ 456*f0687c8aSRaman Tenneti { 457*f0687c8aSRaman Tenneti DRM_MODE("1920x1080", 297000, 1920, 2448, 458*f0687c8aSRaman Tenneti 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, 459*f0687c8aSRaman Tenneti DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), 460*f0687c8aSRaman Tenneti }, 461*f0687c8aSRaman Tenneti /* TERMINATOR */ 462*f0687c8aSRaman Tenneti {}, 463*f0687c8aSRaman Tenneti }; 464*f0687c8aSRaman Tenneti 465*f0687c8aSRaman Tenneti } // namespace kms 466