xref: /freebsd-src/sys/dev/drm2/drm_edid_modes.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
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