xref: /aosp_15_r20/external/libkmsxx/kms++/src/modedb_cea.cpp (revision f0687c8a10b3e371dbe09214db6664e37c283cca)
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