1// Copyright 2018 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "lib/edid/timings.h"
6
7namespace edid {
8namespace internal {
9
10#define TIMING_PARAMS(pf, ha, hf, hs, hb, va, vf, vs, vb, hp, vp, i, avb, dclk, vr) \
11    { \
12        .pixel_freq_10khz = pf, \
13        .horizontal_addressable = ha, \
14        .horizontal_front_porch = hf, \
15        .horizontal_sync_pulse = hs, \
16        .horizontal_blanking = hb, \
17        .vertical_addressable = va, \
18        .vertical_front_porch = vf, \
19        .vertical_sync_pulse = vs, \
20        .vertical_blanking = vb, \
21        .flags = (hp ? timing_params::kPositiveHsync : 0) \
22                | (vp ? timing_params::kPositiveVsync : 0) \
23                | (i ? timing_params::kInterlaced : 0) \
24                | (avb ? timing_params::kAlternatingVblank : 0) \
25                | (dclk ? timing_params::kDoubleClocked : 0), \
26        .vertical_refresh_e2 = vr, \
27    }
28
29// Timings taken from DMT v1.11
30// TODO: Handle reduced blanking
31const timing_params_t dmt_timings_arr[] = {
32    TIMING_PARAMS(3150, 640, 32, 64, 192, 350, 32, 3, 95, 1, 0, 0, 0, 0, 8508), /* 01h */
33    TIMING_PARAMS(3150, 640, 32, 64, 192, 400, 1, 3, 45, 0, 1, 0, 0, 0, 8508), /* 02h */
34    TIMING_PARAMS(3550, 720, 36, 72, 216, 400, 1, 3, 46, 0, 1, 0, 0, 0, 8504), /* 03h */
35    TIMING_PARAMS(3550, 720, 36, 72, 216, 400, 1, 3, 46, 0, 1, 0, 0, 0, 8504), /* 03h */
36    TIMING_PARAMS(2518, 640, 8, 96, 144, 480, 2, 2, 29, 0, 0, 0, 0, 0, 5994), /* 04h */
37    TIMING_PARAMS(2518, 640, 8, 96, 144, 480, 2, 2, 29, 0, 0, 0, 0, 0, 5994), /* 04h */
38    TIMING_PARAMS(3150, 640, 16, 40, 176, 480, 1, 3, 24, 0, 0, 0, 0, 0, 7281), /* 05h */
39    TIMING_PARAMS(3150, 640, 16, 40, 176, 480, 1, 3, 24, 0, 0, 0, 0, 0, 7281), /* 05h */
40    TIMING_PARAMS(3150, 640, 16, 64, 200, 480, 1, 3, 20, 0, 0, 0, 0, 0, 7500), /* 06h */
41    TIMING_PARAMS(3150, 640, 16, 64, 200, 480, 1, 3, 20, 0, 0, 0, 0, 0, 7500), /* 06h */
42    TIMING_PARAMS(3600, 640, 56, 56, 192, 480, 1, 3, 29, 0, 0, 0, 0, 0, 8501), /* 07h */
43    TIMING_PARAMS(3600, 640, 56, 56, 192, 480, 1, 3, 29, 0, 0, 0, 0, 0, 8501), /* 07h */
44    TIMING_PARAMS(3600, 800, 24, 72, 224, 600, 1, 2, 25, 1, 1, 0, 0, 0, 5625), /* 08h */
45    TIMING_PARAMS(3600, 800, 24, 72, 224, 600, 1, 2, 25, 1, 1, 0, 0, 0, 5625), /* 08h */
46    TIMING_PARAMS(4000, 800, 40, 128, 256, 600, 1, 4, 28, 1, 1, 0, 0, 0, 6032), /* 09h */
47    TIMING_PARAMS(4000, 800, 40, 128, 256, 600, 1, 4, 28, 1, 1, 0, 0, 0, 6032), /* 09h */
48    TIMING_PARAMS(5000, 800, 56, 120, 240, 600, 37, 6, 66, 1, 1, 0, 0, 0, 7219), /* 0Ah */
49    TIMING_PARAMS(5000, 800, 56, 120, 240, 600, 37, 6, 66, 1, 1, 0, 0, 0, 7219), /* 0Ah */
50    TIMING_PARAMS(4950, 800, 16, 80, 256, 600, 1, 3, 25, 1, 1, 0, 0, 0, 7500), /* 0Bh */
51    TIMING_PARAMS(4950, 800, 16, 80, 256, 600, 1, 3, 25, 1, 1, 0, 0, 0, 7500), /* 0Bh */
52    TIMING_PARAMS(5625, 800, 32, 64, 248, 600, 1, 3, 31, 1, 1, 0, 0, 0, 8506), /* 0Ch */
53    TIMING_PARAMS(5625, 800, 32, 64, 248, 600, 1, 3, 31, 1, 1, 0, 0, 0, 8506), /* 0Ch */
54    TIMING_PARAMS(7325, 800, 48, 32, 160, 600, 3, 4, 36, 1, 0, 0, 0, 0, 11997), /* 0Dh */
55    TIMING_PARAMS(7325, 800, 48, 32, 160, 600, 3, 4, 36, 1, 0, 0, 0, 0, 11997), /* 0Dh */
56    TIMING_PARAMS(3375, 848, 16, 112, 240, 480, 6, 8, 37, 1, 1, 0, 0, 0, 6000), /* 0Eh */
57    TIMING_PARAMS(3375, 848, 16, 112, 240, 480, 6, 8, 37, 1, 1, 0, 0, 0, 6000), /* 0Eh */
58    TIMING_PARAMS(4490, 1024, 8, 176, 240, 768, 0, 4, 24, 1, 1, 1, 0, 0, 8696), /* 0Fh */
59    TIMING_PARAMS(4490, 1024, 8, 176, 240, 768, 0, 4, 24, 1, 1, 1, 0, 0, 8696), /* 0Fh */
60    TIMING_PARAMS(6500, 1024, 24, 136, 320, 768, 3, 6, 38, 0, 0, 0, 0, 0, 6000), /* 10h */
61    TIMING_PARAMS(6500, 1024, 24, 136, 320, 768, 3, 6, 38, 0, 0, 0, 0, 0, 6000), /* 10h */
62    TIMING_PARAMS(7500, 1024, 24, 136, 304, 768, 3, 6, 38, 0, 0, 0, 0, 0, 7006), /* 11h */
63    TIMING_PARAMS(7500, 1024, 24, 136, 304, 768, 3, 6, 38, 0, 0, 0, 0, 0, 7006), /* 11h */
64    TIMING_PARAMS(7875, 1024, 16, 96, 288, 768, 1, 3, 32, 1, 1, 0, 0, 0, 7503), /* 12h */
65    TIMING_PARAMS(7875, 1024, 16, 96, 288, 768, 1, 3, 32, 1, 1, 0, 0, 0, 7503), /* 12h */
66    TIMING_PARAMS(9450, 1024, 48, 96, 352, 768, 1, 3, 40, 1, 1, 0, 0, 0, 8500), /* 13h */
67    TIMING_PARAMS(9450, 1024, 48, 96, 352, 768, 1, 3, 40, 1, 1, 0, 0, 0, 8500), /* 13h */
68    TIMING_PARAMS(11550, 1024, 48, 32, 160, 768, 3, 4, 45, 1, 0, 0, 0, 0, 11999), /* 14h */
69    TIMING_PARAMS(11550, 1024, 48, 32, 160, 768, 3, 4, 45, 1, 0, 0, 0, 0, 11999), /* 14h */
70    TIMING_PARAMS(10800, 1152, 64, 128, 448, 864, 1, 3, 36, 1, 1, 0, 0, 0, 7500), /* 15h */
71    TIMING_PARAMS(10800, 1152, 64, 128, 448, 864, 1, 3, 36, 1, 1, 0, 0, 0, 7500), /* 15h */
72    TIMING_PARAMS(6825, 1280, 48, 32, 160, 768, 3, 7, 22, 1, 0, 0, 0, 0, 5999), /* 16h */
73    TIMING_PARAMS(6825, 1280, 48, 32, 160, 768, 3, 7, 22, 1, 0, 0, 0, 0, 5999), /* 16h */
74    TIMING_PARAMS(7950, 1280, 64, 128, 384, 768, 3, 7, 30, 0, 1, 0, 0, 0, 5987), /* 17h */
75    TIMING_PARAMS(7950, 1280, 64, 128, 384, 768, 3, 7, 30, 0, 1, 0, 0, 0, 5987), /* 17h */
76    TIMING_PARAMS(10225, 1280, 80, 128, 416, 768, 3, 7, 37, 0, 1, 0, 0, 0, 7489), /* 18h */
77    TIMING_PARAMS(10225, 1280, 80, 128, 416, 768, 3, 7, 37, 0, 1, 0, 0, 0, 7489), /* 18h */
78    TIMING_PARAMS(11750, 1280, 80, 136, 432, 768, 3, 7, 41, 0, 1, 0, 0, 0, 8484), /* 19h */
79    TIMING_PARAMS(11750, 1280, 80, 136, 432, 768, 3, 7, 41, 0, 1, 0, 0, 0, 8484), /* 19h */
80    TIMING_PARAMS(14025, 1280, 48, 32, 160, 768, 3, 7, 45, 1, 0, 0, 0, 0, 11980), /* 1Ah */
81    TIMING_PARAMS(14025, 1280, 48, 32, 160, 768, 3, 7, 45, 1, 0, 0, 0, 0, 11980), /* 1Ah */
82    TIMING_PARAMS(7100, 1280, 48, 32, 160, 800, 3, 6, 23, 1, 0, 0, 0, 0, 5991), /* 1Bh */
83    TIMING_PARAMS(7100, 1280, 48, 32, 160, 800, 3, 6, 23, 1, 0, 0, 0, 0, 5991), /* 1Bh */
84    TIMING_PARAMS(8350, 1280, 72, 128, 400, 800, 3, 6, 31, 0, 1, 0, 0, 0, 5981), /* 1Ch */
85    TIMING_PARAMS(8350, 1280, 72, 128, 400, 800, 3, 6, 31, 0, 1, 0, 0, 0, 5981), /* 1Ch */
86    TIMING_PARAMS(10650, 1280, 80, 128, 416, 800, 3, 6, 38, 0, 1, 0, 0, 0, 7493), /* 1Dh */
87    TIMING_PARAMS(10650, 1280, 80, 128, 416, 800, 3, 6, 38, 0, 1, 0, 0, 0, 7493), /* 1Dh */
88    TIMING_PARAMS(12250, 1280, 80, 136, 432, 800, 3, 6, 43, 0, 1, 0, 0, 0, 8488), /* 1Eh */
89    TIMING_PARAMS(12250, 1280, 80, 136, 432, 800, 3, 6, 43, 0, 1, 0, 0, 0, 8488), /* 1Eh */
90    TIMING_PARAMS(14625, 1280, 48, 32, 160, 800, 3, 6, 47, 1, 0, 0, 0, 0, 11991), /* 1Fh */
91    TIMING_PARAMS(14625, 1280, 48, 32, 160, 800, 3, 6, 47, 1, 0, 0, 0, 0, 11991), /* 1Fh */
92    TIMING_PARAMS(10800, 1280, 96, 112, 520, 960, 1, 3, 40, 1, 1, 0, 0, 0, 6000), /* 20h */
93    TIMING_PARAMS(10800, 1280, 96, 112, 520, 960, 1, 3, 40, 1, 1, 0, 0, 0, 6000), /* 20h */
94    TIMING_PARAMS(14850, 1280, 64, 160, 448, 960, 1, 3, 51, 1, 1, 0, 0, 0, 8500), /* 21h */
95    TIMING_PARAMS(14850, 1280, 64, 160, 448, 960, 1, 3, 51, 1, 1, 0, 0, 0, 8500), /* 21h */
96    TIMING_PARAMS(17550, 1280, 48, 32, 160, 960, 3, 4, 57, 1, 0, 0, 0, 0, 11984), /* 22h */
97    TIMING_PARAMS(17550, 1280, 48, 32, 160, 960, 3, 4, 57, 1, 0, 0, 0, 0, 11984), /* 22h */
98    TIMING_PARAMS(10800, 1280, 48, 112, 408, 1024, 1, 3, 42, 1, 1, 0, 0, 0, 6002), /* 23h */
99    TIMING_PARAMS(10800, 1280, 48, 112, 408, 1024, 1, 3, 42, 1, 1, 0, 0, 0, 6002), /* 23h */
100    TIMING_PARAMS(13500, 1280, 16, 144, 408, 1024, 1, 3, 42, 1, 1, 0, 0, 0, 7503), /* 24h */
101    TIMING_PARAMS(13500, 1280, 16, 144, 408, 1024, 1, 3, 42, 1, 1, 0, 0, 0, 7503), /* 24h */
102    TIMING_PARAMS(15750, 1280, 64, 160, 448, 1024, 1, 3, 48, 1, 1, 0, 0, 0, 8502), /* 25h */
103    TIMING_PARAMS(15750, 1280, 64, 160, 448, 1024, 1, 3, 48, 1, 1, 0, 0, 0, 8502), /* 25h */
104    TIMING_PARAMS(18725, 1280, 48, 32, 160, 1024, 3, 7, 60, 1, 0, 0, 0, 0, 11996), /* 26h */
105    TIMING_PARAMS(18725, 1280, 48, 32, 160, 1024, 3, 7, 60, 1, 0, 0, 0, 0, 11996), /* 26h */
106    TIMING_PARAMS(8550, 1360, 64, 112, 432, 768, 3, 6, 27, 1, 1, 0, 0, 0, 6002), /* 27h */
107    TIMING_PARAMS(8550, 1360, 64, 112, 432, 768, 3, 6, 27, 1, 1, 0, 0, 0, 6002), /* 27h */
108    TIMING_PARAMS(14825, 1360, 48, 32, 160, 768, 3, 5, 45, 1, 0, 0, 0, 0, 11997), /* 28h */
109    TIMING_PARAMS(14825, 1360, 48, 32, 160, 768, 3, 5, 45, 1, 0, 0, 0, 0, 11997), /* 28h */
110    TIMING_PARAMS(10100, 1400, 48, 32, 160, 1050, 3, 4, 30, 1, 0, 0, 0, 0, 5995), /* 29h */
111    TIMING_PARAMS(10100, 1400, 48, 32, 160, 1050, 3, 4, 30, 1, 0, 0, 0, 0, 5995), /* 29h */
112    TIMING_PARAMS(12175, 1400, 88, 144, 464, 1050, 3, 4, 39, 0, 1, 0, 0, 0, 5998), /* 2Ah */
113    TIMING_PARAMS(12175, 1400, 88, 144, 464, 1050, 3, 4, 39, 0, 1, 0, 0, 0, 5998), /* 2Ah */
114    TIMING_PARAMS(15600, 1400, 104, 144, 496, 1050, 3, 4, 49, 0, 1, 0, 0, 0, 7487), /* 2Bh */
115    TIMING_PARAMS(15600, 1400, 104, 144, 496, 1050, 3, 4, 49, 0, 1, 0, 0, 0, 7487), /* 2Bh */
116    TIMING_PARAMS(17950, 1400, 104, 152, 512, 1050, 3, 4, 55, 0, 1, 0, 0, 0, 8496), /* 2Ch */
117    TIMING_PARAMS(17950, 1400, 104, 152, 512, 1050, 3, 4, 55, 0, 1, 0, 0, 0, 8496), /* 2Ch */
118    TIMING_PARAMS(20800, 1400, 48, 32, 160, 1050, 3, 4, 62, 1, 0, 0, 0, 0, 11990), /* 2Dh */
119    TIMING_PARAMS(20800, 1400, 48, 32, 160, 1050, 3, 4, 62, 1, 0, 0, 0, 0, 11990), /* 2Dh */
120    TIMING_PARAMS(8875, 1440, 48, 32, 160, 900, 3, 6, 26, 1, 0, 0, 0, 0, 5990), /* 2Eh */
121    TIMING_PARAMS(8875, 1440, 48, 32, 160, 900, 3, 6, 26, 1, 0, 0, 0, 0, 5990), /* 2Eh */
122    TIMING_PARAMS(10650, 1440, 80, 152, 464, 900, 3, 6, 34, 0, 1, 0, 0, 0, 5989), /* 2Fh */
123    TIMING_PARAMS(10650, 1440, 80, 152, 464, 900, 3, 6, 34, 0, 1, 0, 0, 0, 5989), /* 2Fh */
124    TIMING_PARAMS(13675, 1440, 96, 152, 496, 900, 3, 6, 42, 0, 1, 0, 0, 0, 7498), /* 30h */
125    TIMING_PARAMS(13675, 1440, 96, 152, 496, 900, 3, 6, 42, 0, 1, 0, 0, 0, 7498), /* 30h */
126    TIMING_PARAMS(15700, 1440, 104, 152, 512, 900, 3, 6, 48, 0, 1, 0, 0, 0, 8484), /* 31h */
127    TIMING_PARAMS(15700, 1440, 104, 152, 512, 900, 3, 6, 48, 0, 1, 0, 0, 0, 8484), /* 31h */
128    TIMING_PARAMS(18275, 1440, 48, 32, 160, 900, 3, 6, 53, 1, 0, 0, 0, 0, 11985), /* 32h */
129    TIMING_PARAMS(18275, 1440, 48, 32, 160, 900, 3, 6, 53, 1, 0, 0, 0, 0, 11985), /* 32h */
130    TIMING_PARAMS(16200, 1600, 64, 192, 560, 1200, 1, 3, 50, 1, 1, 0, 0, 0, 6000), /* 33h */
131    TIMING_PARAMS(16200, 1600, 64, 192, 560, 1200, 1, 3, 50, 1, 1, 0, 0, 0, 6000), /* 33h */
132    TIMING_PARAMS(17550, 1600, 64, 192, 560, 1200, 1, 3, 50, 1, 1, 0, 0, 0, 6500), /* 34h */
133    TIMING_PARAMS(17550, 1600, 64, 192, 560, 1200, 1, 3, 50, 1, 1, 0, 0, 0, 6500), /* 34h */
134    TIMING_PARAMS(18900, 1600, 64, 192, 560, 1200, 1, 3, 50, 1, 1, 0, 0, 0, 7000), /* 35h */
135    TIMING_PARAMS(18900, 1600, 64, 192, 560, 1200, 1, 3, 50, 1, 1, 0, 0, 0, 7000), /* 35h */
136    TIMING_PARAMS(20250, 1600, 64, 192, 560, 1200, 1, 3, 50, 1, 1, 0, 0, 0, 7500), /* 36h */
137    TIMING_PARAMS(20250, 1600, 64, 192, 560, 1200, 1, 3, 50, 1, 1, 0, 0, 0, 7500), /* 36h */
138    TIMING_PARAMS(22950, 1600, 64, 192, 560, 1200, 1, 3, 50, 1, 1, 0, 0, 0, 8500), /* 37h */
139    TIMING_PARAMS(22950, 1600, 64, 192, 560, 1200, 1, 3, 50, 1, 1, 0, 0, 0, 8500), /* 37h */
140    TIMING_PARAMS(26825, 1600, 48, 32, 160, 1200, 3, 4, 71, 1, 0, 0, 0, 0, 11992), /* 38h */
141    TIMING_PARAMS(26825, 1600, 48, 32, 160, 1200, 3, 4, 71, 1, 0, 0, 0, 0, 11992), /* 38h */
142    TIMING_PARAMS(11900, 1680, 48, 32, 160, 1050, 3, 6, 30, 1, 0, 0, 0, 0, 5988), /* 39h */
143    TIMING_PARAMS(11900, 1680, 48, 32, 160, 1050, 3, 6, 30, 1, 0, 0, 0, 0, 5988), /* 39h */
144    TIMING_PARAMS(14625, 1680, 104, 176, 560, 1050, 3, 6, 39, 0, 1, 0, 0, 0, 5995), /* 3Ah */
145    TIMING_PARAMS(14625, 1680, 104, 176, 560, 1050, 3, 6, 39, 0, 1, 0, 0, 0, 5995), /* 3Ah */
146    TIMING_PARAMS(18700, 1680, 120, 176, 592, 1050, 3, 6, 49, 0, 1, 0, 0, 0, 7489), /* 3Bh */
147    TIMING_PARAMS(18700, 1680, 120, 176, 592, 1050, 3, 6, 49, 0, 1, 0, 0, 0, 7489), /* 3Bh */
148    TIMING_PARAMS(21475, 1680, 128, 176, 608, 1050, 3, 6, 55, 0, 1, 0, 0, 0, 8494), /* 3Ch */
149    TIMING_PARAMS(21475, 1680, 128, 176, 608, 1050, 3, 6, 55, 0, 1, 0, 0, 0, 8494), /* 3Ch */
150    TIMING_PARAMS(24550, 1680, 48, 32, 160, 1050, 3, 6, 62, 1, 0, 0, 0, 0, 11999), /* 3Dh */
151    TIMING_PARAMS(24550, 1680, 48, 32, 160, 1050, 3, 6, 62, 1, 0, 0, 0, 0, 11999), /* 3Dh */
152    TIMING_PARAMS(20475, 1792, 128, 200, 656, 1344, 1, 3, 50, 0, 1, 0, 0, 0, 6000), /* 3Eh */
153    TIMING_PARAMS(20475, 1792, 128, 200, 656, 1344, 1, 3, 50, 0, 1, 0, 0, 0, 6000), /* 3Eh */
154    TIMING_PARAMS(26100, 1792, 96, 216, 664, 1344, 1, 3, 73, 0, 1, 0, 0, 0, 7500), /* 3Fh */
155    TIMING_PARAMS(26100, 1792, 96, 216, 664, 1344, 1, 3, 73, 0, 1, 0, 0, 0, 7500), /* 3Fh */
156    TIMING_PARAMS(33325, 1792, 48, 32, 160, 1344, 3, 4, 79, 1, 0, 0, 0, 0, 11997), /* 40h */
157    TIMING_PARAMS(33325, 1792, 48, 32, 160, 1344, 3, 4, 79, 1, 0, 0, 0, 0, 11997), /* 40h */
158    TIMING_PARAMS(21825, 1856, 96, 224, 672, 1392, 1, 3, 47, 0, 1, 0, 0, 0, 5999), /* 41h */
159    TIMING_PARAMS(21825, 1856, 96, 224, 672, 1392, 1, 3, 47, 0, 1, 0, 0, 0, 5999), /* 41h */
160    TIMING_PARAMS(28800, 1856, 128, 224, 704, 1392, 1, 3, 108, 0, 1, 0, 0, 0, 7500), /* 42h */
161    TIMING_PARAMS(28800, 1856, 128, 224, 704, 1392, 1, 3, 108, 0, 1, 0, 0, 0, 7500), /* 42h */
162    TIMING_PARAMS(35650, 1856, 48, 32, 160, 1392, 3, 4, 82, 1, 0, 0, 0, 0, 11997), /* 43h */
163    TIMING_PARAMS(35650, 1856, 48, 32, 160, 1392, 3, 4, 82, 1, 0, 0, 0, 0, 11997), /* 43h */
164    TIMING_PARAMS(15400, 1920, 48, 32, 160, 1200, 3, 6, 35, 1, 0, 0, 0, 0, 5995), /* 44h */
165    TIMING_PARAMS(15400, 1920, 48, 32, 160, 1200, 3, 6, 35, 1, 0, 0, 0, 0, 5995), /* 44h */
166    TIMING_PARAMS(19325, 1920, 136, 200, 672, 1200, 3, 6, 45, 0, 1, 0, 0, 0, 5988), /* 45h */
167    TIMING_PARAMS(19325, 1920, 136, 200, 672, 1200, 3, 6, 45, 0, 1, 0, 0, 0, 5988), /* 45h */
168    TIMING_PARAMS(24525, 1920, 136, 208, 688, 1200, 3, 6, 55, 0, 1, 0, 0, 0, 7493), /* 46h */
169    TIMING_PARAMS(24525, 1920, 136, 208, 688, 1200, 3, 6, 55, 0, 1, 0, 0, 0, 7493), /* 46h */
170    TIMING_PARAMS(28125, 1920, 144, 208, 704, 1200, 3, 6, 62, 0, 1, 0, 0, 0, 8493), /* 47h */
171    TIMING_PARAMS(28125, 1920, 144, 208, 704, 1200, 3, 6, 62, 0, 1, 0, 0, 0, 8493), /* 47h */
172    TIMING_PARAMS(31700, 1920, 48, 32, 160, 1200, 3, 6, 71, 1, 0, 0, 0, 0, 11991), /* 48h */
173    TIMING_PARAMS(31700, 1920, 48, 32, 160, 1200, 3, 6, 71, 1, 0, 0, 0, 0, 11991), /* 48h */
174    TIMING_PARAMS(23400, 1920, 128, 208, 680, 1440, 1, 3, 60, 0, 1, 0, 0, 0, 6000), /* 49h */
175    TIMING_PARAMS(23400, 1920, 128, 208, 680, 1440, 1, 3, 60, 0, 1, 0, 0, 0, 6000), /* 49h */
176    TIMING_PARAMS(29700, 1920, 144, 224, 720, 1440, 1, 3, 60, 0, 1, 0, 0, 0, 7500), /* 4Ah */
177    TIMING_PARAMS(29700, 1920, 144, 224, 720, 1440, 1, 3, 60, 0, 1, 0, 0, 0, 7500), /* 4Ah */
178    TIMING_PARAMS(38050, 1920, 48, 32, 160, 1440, 3, 4, 85, 1, 0, 0, 0, 0, 11996), /* 4Bh */
179    TIMING_PARAMS(38050, 1920, 48, 32, 160, 1440, 3, 4, 85, 1, 0, 0, 0, 0, 11996), /* 4Bh */
180    TIMING_PARAMS(26850, 2560, 48, 32, 160, 1600, 3, 6, 46, 1, 0, 0, 0, 0, 5997), /* 4Ch */
181    TIMING_PARAMS(26850, 2560, 48, 32, 160, 1600, 3, 6, 46, 1, 0, 0, 0, 0, 5997), /* 4Ch */
182    TIMING_PARAMS(34850, 2560, 192, 280, 944, 1600, 3, 6, 58, 0, 1, 0, 0, 0, 5999), /* 4Dh */
183    TIMING_PARAMS(34850, 2560, 192, 280, 944, 1600, 3, 6, 58, 0, 1, 0, 0, 0, 5999), /* 4Dh */
184    TIMING_PARAMS(44325, 2560, 208, 280, 976, 1600, 3, 6, 72, 0, 1, 0, 0, 0, 7497), /* 4Eh */
185    TIMING_PARAMS(44325, 2560, 208, 280, 976, 1600, 3, 6, 72, 0, 1, 0, 0, 0, 7497), /* 4Eh */
186    TIMING_PARAMS(50525, 2560, 208, 280, 976, 1600, 3, 6, 82, 0, 1, 0, 0, 0, 8495), /* 4Fh */
187    TIMING_PARAMS(50525, 2560, 208, 280, 976, 1600, 3, 6, 82, 0, 1, 0, 0, 0, 8495), /* 4Fh */
188    TIMING_PARAMS(55275, 2560, 48, 32, 160, 1600, 3, 6, 94, 1, 0, 0, 0, 0, 11996), /* 50h */
189    TIMING_PARAMS(55275, 2560, 48, 32, 160, 1600, 3, 6, 94, 1, 0, 0, 0, 0, 11996), /* 50h */
190};
191
192const timing_params_t* dmt_timings = dmt_timings_arr;
193const uint32_t dmt_timings_count = sizeof(dmt_timings_arr) / sizeof(dmt_timings_arr[0]);
194
195// Timings taken from ANSI/CTA-861-F
196const timing_params_t cea_timings_arr[] = {
197    TIMING_PARAMS(2518, 640, 16, 96, 160, 480, 10, 2, 45, 0, 0, 0, 0, 0, 5994), /* 1 */
198    TIMING_PARAMS(2700, 720, 16, 62, 138, 480, 9, 6, 45, 0, 0, 0, 0, 0, 5994), /* 2 */
199    TIMING_PARAMS(2700, 720, 16, 62, 138, 480, 9, 6, 45, 0, 0, 0, 0, 0, 5994), /* 3 */
200    TIMING_PARAMS(7425, 1280, 110, 40, 370, 720, 5, 5, 30, 1, 1, 0, 0, 0, 6000), /* 4 */
201    TIMING_PARAMS(7425, 1920, 88, 44, 280, 1080, 2, 5, 22, 1, 1, 1, 1, 0, 6000), /* 5 */
202    TIMING_PARAMS(2700, 1440, 38, 124, 276, 480, 4, 3, 22, 0, 0, 1, 1, 1, 5994), /* 6 */
203    TIMING_PARAMS(2700, 1440, 38, 124, 276, 480, 4, 3, 22, 0, 0, 1, 1, 1, 5994), /* 7 */
204    TIMING_PARAMS(2700, 1440, 38, 124, 276, 240, 4, 3, 22, 0, 0, 0, 0, 1, 6005), /* 8 */
205    TIMING_PARAMS(2700, 1440, 38, 124, 276, 240, 4, 3, 22, 0, 0, 0, 0, 1, 6005), /* 9 */
206    TIMING_PARAMS(5400, 2880, 76, 248, 552, 480, 4, 3, 22, 0, 0, 1, 1, 1, 5994), /* 10 */
207    TIMING_PARAMS(5400, 2880, 76, 248, 552, 480, 4, 3, 22, 0, 0, 1, 1, 1, 5994), /* 11 */
208    TIMING_PARAMS(5400, 2880, 76, 248, 552, 240, 4, 3, 22, 0, 0, 0, 0, 1, 6005), /* 12 */
209    TIMING_PARAMS(5400, 2880, 76, 248, 552, 240, 4, 3, 22, 0, 0, 0, 0, 1, 6005), /* 13 */
210    TIMING_PARAMS(5400, 1440, 32, 124, 276, 480, 9, 6, 45, 0, 0, 0, 0, 1, 5994), /* 14 */
211    TIMING_PARAMS(5400, 1440, 32, 124, 276, 480, 9, 6, 45, 0, 0, 0, 0, 1, 5994), /* 15 */
212    TIMING_PARAMS(14850, 1920, 88, 44, 280, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 6000), /* 16 */
213    TIMING_PARAMS(2700, 720, 12, 64, 144, 576, 5, 5, 49, 0, 0, 0, 0, 0, 5000), /* 17 */
214    TIMING_PARAMS(2700, 720, 12, 64, 144, 576, 5, 5, 49, 0, 0, 0, 0, 0, 5000), /* 18 */
215    TIMING_PARAMS(7425, 1280, 440, 40, 700, 720, 5, 5, 30, 1, 1, 0, 0, 0, 5000), /* 19 */
216    TIMING_PARAMS(7425, 1920, 528, 44, 720, 1080, 2, 5, 22, 1, 1, 1, 1, 0, 5000), /* 20 */
217    TIMING_PARAMS(2700, 1440, 24, 126, 288, 576, 2, 3, 24, 0, 0, 1, 1, 1, 5000), /* 21 */
218    TIMING_PARAMS(2700, 1440, 24, 126, 288, 576, 2, 3, 24, 0, 0, 1, 1, 1, 5000), /* 22 */
219    TIMING_PARAMS(2700, 1440, 24, 126, 288, 288, 2, 3, 24, 0, 0, 0, 0, 1, 5008), /* 23 */
220    TIMING_PARAMS(2700, 1440, 24, 126, 288, 288, 2, 3, 24, 0, 0, 0, 0, 1, 5008), /* 24 */
221    TIMING_PARAMS(5400, 2880, 48, 252, 576, 576, 2, 3, 24, 0, 0, 1, 1, 1, 5000), /* 25 */
222    TIMING_PARAMS(5400, 2880, 48, 252, 576, 576, 2, 3, 24, 0, 0, 1, 1, 1, 5000), /* 26 */
223    TIMING_PARAMS(5400, 2880, 48, 252, 576, 288, 2, 3, 24, 0, 0, 0, 0, 1, 5008), /* 27 */
224    TIMING_PARAMS(5400, 2880, 48, 252, 576, 288, 2, 3, 24, 0, 0, 0, 0, 1, 5008), /* 28 */
225    TIMING_PARAMS(5400, 1440, 24, 128, 288, 576, 5, 5, 49, 0, 0, 0, 0, 1, 5000), /* 29 */
226    TIMING_PARAMS(5400, 1440, 24, 128, 288, 576, 5, 5, 49, 0, 0, 0, 0, 1, 5000), /* 30 */
227    TIMING_PARAMS(14850, 1920, 528, 44, 720, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 5000), /* 31 */
228    TIMING_PARAMS(7425, 1920, 638, 44, 830, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 2400), /* 32 */
229    TIMING_PARAMS(7425, 1920, 528, 44, 720, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 2500), /* 33 */
230    TIMING_PARAMS(7425, 1920, 88, 44, 280, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 3000), /* 34 */
231    TIMING_PARAMS(10800, 2880, 64, 248, 552, 480, 9, 6, 45, 0, 0, 0, 0, 1, 5994), /* 35 */
232    TIMING_PARAMS(10800, 2880, 64, 248, 552, 480, 9, 6, 45, 0, 0, 0, 0, 1, 5994), /* 36 */
233    TIMING_PARAMS(10800, 2880, 48, 256, 576, 576, 5, 5, 49, 0, 0, 0, 0, 1, 5000), /* 37 */
234    TIMING_PARAMS(10800, 2880, 48, 256, 576, 576, 5, 5, 49, 0, 0, 0, 0, 1, 5000), /* 38 */
235    TIMING_PARAMS(7200, 1920, 32, 168, 384, 1080, 23, 5, 85, 1, 0, 1, 0, 0, 5000), /* 39 */
236    TIMING_PARAMS(14850, 1920, 528, 44, 720, 1080, 2, 5, 22, 1, 1, 1, 1, 0, 10000), /* 40 */
237    TIMING_PARAMS(14850, 1280, 440, 40, 700, 720, 5, 5, 30, 1, 1, 0, 0, 0, 10000), /* 41 */
238    TIMING_PARAMS(5400, 720, 12, 64, 144, 576, 5, 5, 49, 0, 0, 0, 0, 0, 10000), /* 42 */
239    TIMING_PARAMS(5400, 720, 12, 64, 144, 576, 5, 5, 49, 0, 0, 0, 0, 0, 10000), /* 43 */
240    TIMING_PARAMS(5400, 1440, 24, 126, 288, 576, 2, 3, 24, 0, 0, 1, 1, 1, 10000), /* 44 */
241    TIMING_PARAMS(5400, 1440, 24, 126, 288, 576, 2, 3, 24, 0, 0, 1, 1, 1, 10000), /* 45 */
242    TIMING_PARAMS(14850, 1920, 88, 44, 280, 1080, 2, 5, 22, 1, 1, 1, 1, 0, 12000), /* 46 */
243    TIMING_PARAMS(14850, 1280, 110, 40, 370, 720, 5, 5, 30, 1, 1, 0, 0, 0, 12000), /* 47 */
244    TIMING_PARAMS(5400, 720, 16, 62, 138, 480, 9, 6, 45, 0, 0, 0, 0, 0, 11988), /* 48 */
245    TIMING_PARAMS(5400, 720, 16, 62, 138, 480, 9, 6, 45, 0, 0, 0, 0, 0, 11988), /* 49 */
246    TIMING_PARAMS(5400, 1440, 38, 124, 276, 480, 4, 3, 22, 0, 0, 1, 1, 1, 11988), /* 50 */
247    TIMING_PARAMS(5400, 1440, 38, 124, 276, 480, 4, 3, 22, 0, 0, 1, 1, 1, 11988), /* 51 */
248    TIMING_PARAMS(10800, 720, 12, 64, 144, 576, 5, 5, 49, 0, 0, 0, 0, 0, 20000), /* 52 */
249    TIMING_PARAMS(10800, 720, 12, 64, 144, 576, 5, 5, 49, 0, 0, 0, 0, 0, 20000), /* 53 */
250    TIMING_PARAMS(10800, 1440, 24, 126, 288, 576, 2, 3, 24, 0, 0, 1, 1, 1, 20000), /* 54 */
251    TIMING_PARAMS(10800, 1440, 24, 126, 288, 576, 2, 3, 24, 0, 0, 1, 1, 1, 20000), /* 55 */
252    TIMING_PARAMS(10800, 720, 16, 62, 138, 480, 9, 6, 45, 0, 0, 0, 0, 0, 23976), /* 56 */
253    TIMING_PARAMS(10800, 720, 16, 62, 138, 480, 9, 6, 45, 0, 0, 0, 0, 0, 23976), /* 57 */
254    TIMING_PARAMS(10800, 1440, 38, 124, 276, 480, 4, 3, 22, 0, 0, 1, 1, 1, 23976), /* 58 */
255    TIMING_PARAMS(10800, 1440, 38, 124, 276, 480, 4, 3, 22, 0, 0, 1, 1, 1, 23976), /* 59 */
256    TIMING_PARAMS(5940, 1280, 1760, 40, 2020, 720, 5, 5, 30, 1, 1, 0, 0, 0, 2400), /* 60 */
257    TIMING_PARAMS(7425, 1280, 2420, 40, 2680, 720, 5, 5, 30, 1, 1, 0, 0, 0, 2500), /* 61 */
258    TIMING_PARAMS(7425, 1280, 1760, 40, 2020, 720, 5, 5, 30, 1, 1, 0, 0, 0, 3000), /* 62 */
259    TIMING_PARAMS(29700, 1920, 88, 44, 280, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 12000), /* 63 */
260    TIMING_PARAMS(29700, 1920, 528, 44, 720, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 10000), /* 64 */
261    TIMING_PARAMS(5940, 1280, 1760, 40, 2020, 720, 5, 5, 30, 1, 1, 0, 0, 0, 2400), /* 65 */
262    TIMING_PARAMS(7425, 1280, 2420, 40, 2680, 720, 5, 5, 30, 1, 1, 0, 0, 0, 2500), /* 66 */
263    TIMING_PARAMS(7425, 1280, 1760, 40, 2020, 720, 5, 5, 30, 1, 1, 0, 0, 0, 3000), /* 67 */
264    TIMING_PARAMS(7425, 1280, 440, 40, 700, 720, 5, 5, 30, 1, 1, 0, 0, 0, 5000), /* 68 */
265    TIMING_PARAMS(7425, 1280, 110, 40, 370, 720, 5, 5, 30, 1, 1, 0, 0, 0, 6000), /* 69 */
266    TIMING_PARAMS(14850, 1280, 440, 40, 700, 720, 5, 5, 30, 1, 1, 0, 0, 0, 10000), /* 70 */
267    TIMING_PARAMS(14850, 1280, 110, 40, 370, 720, 5, 5, 30, 1, 1, 0, 0, 0, 12000), /* 71 */
268    TIMING_PARAMS(7425, 1920, 638, 44, 830, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 2400), /* 72 */
269    TIMING_PARAMS(7425, 1920, 528, 44, 720, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 2500), /* 73 */
270    TIMING_PARAMS(7425, 1920, 88, 44, 280, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 3000), /* 74 */
271    TIMING_PARAMS(14850, 1920, 528, 44, 720, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 5000), /* 75 */
272    TIMING_PARAMS(14850, 1920, 88, 44, 280, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 6000), /* 76 */
273    TIMING_PARAMS(29700, 1920, 528, 44, 720, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 10000), /* 77 */
274    TIMING_PARAMS(29700, 1920, 88, 44, 280, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 12000), /* 78 */
275    TIMING_PARAMS(5940, 1680, 1360, 40, 1620, 720, 5, 5, 30, 1, 1, 0, 0, 0, 2400), /* 79 */
276    TIMING_PARAMS(5940, 1680, 1228, 40, 1488, 720, 5, 5, 30, 1, 1, 0, 0, 0, 2500), /* 80 */
277    TIMING_PARAMS(5940, 1680, 700, 40, 960, 720, 5, 5, 30, 1, 1, 0, 0, 0, 3000), /* 81 */
278    TIMING_PARAMS(8250, 1680, 260, 40, 520, 720, 5, 5, 30, 1, 1, 0, 0, 0, 5000), /* 82 */
279    TIMING_PARAMS(9900, 1680, 260, 40, 520, 720, 5, 5, 30, 1, 1, 0, 0, 0, 6000), /* 83 */
280    TIMING_PARAMS(16500, 1680, 60, 40, 320, 720, 5, 5, 105, 1, 1, 0, 0, 0, 10000), /* 84 */
281    TIMING_PARAMS(19800, 1680, 60, 40, 320, 720, 5, 5, 105, 1, 1, 0, 0, 0, 12000), /* 85 */
282    TIMING_PARAMS(9900, 2560, 998, 44, 1190, 1080, 4, 5, 20, 1, 1, 0, 0, 0, 2400), /* 86 */
283    TIMING_PARAMS(9000, 2560, 448, 44, 640, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 2500), /* 87 */
284    TIMING_PARAMS(11880, 2560, 768, 44, 960, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 3000), /* 88 */
285    TIMING_PARAMS(18563, 2560, 548, 44, 740, 1080, 4, 5, 45, 1, 1, 0, 0, 0, 5000), /* 89 */
286    TIMING_PARAMS(19800, 2560, 248, 44, 440, 1080, 4, 5, 20, 1, 1, 0, 0, 0, 6000), /* 90 */
287    TIMING_PARAMS(37125, 2560, 218, 44, 410, 1080, 4, 5, 170, 1, 1, 0, 0, 0, 10000), /* 91 */
288    TIMING_PARAMS(49500, 2560, 548, 44, 740, 1080, 4, 5, 170, 1, 1, 0, 0, 0, 12000), /* 92 */
289    TIMING_PARAMS(29700, 3840, 1276, 88, 1660, 2160, 8, 10, 90, 1, 1, 0, 0, 0, 2400), /* 93 */
290    TIMING_PARAMS(29700, 3840, 1056, 88, 1440, 2160, 8, 10, 90, 1, 1, 0, 0, 0, 2500), /* 94 */
291    TIMING_PARAMS(29700, 3840, 176, 88, 560, 2160, 8, 10, 90, 1, 1, 0, 0, 0, 3000), /* 95 */
292    TIMING_PARAMS(59400, 3840, 1056, 88, 1440, 2160, 8, 10, 90, 1, 1, 0, 0, 0, 5000), /* 96 */
293    TIMING_PARAMS(59400, 3840, 176, 88, 560, 2160, 8, 10, 90, 1, 1, 0, 0, 0, 6000), /* 97 */
294    TIMING_PARAMS(29700, 4096, 1020, 88, 1404, 2160, 8, 10, 90, 1, 1, 0, 0, 0, 2400), /* 98 */
295    TIMING_PARAMS(29700, 4096, 968, 88, 1184, 2160, 8, 10, 90, 1, 1, 0, 0, 0, 2500), /* 99 */
296    TIMING_PARAMS(29700, 4096, 88, 88, 304, 2160, 8, 10, 90, 1, 1, 0, 0, 0, 3000), /* 100 */
297    TIMING_PARAMS(59400, 4096, 968, 88, 1184, 2160, 8, 10, 90, 1, 1, 0, 0, 0, 5000), /* 101 */
298    TIMING_PARAMS(59400, 4096, 88, 88, 304, 2160, 8, 10, 90, 1, 1, 0, 0, 0, 6000), /* 102 */
299    TIMING_PARAMS(29700, 3840, 1276, 88, 1660, 2160, 8, 10, 90, 1, 1, 0, 0, 0, 2400), /* 103 */
300    TIMING_PARAMS(29700, 3840, 1056, 88, 1440, 2160, 8, 10, 90, 1, 1, 0, 0, 0, 2500), /* 104 */
301    TIMING_PARAMS(29700, 3840, 176, 88, 560, 2160, 8, 10, 90, 1, 1, 0, 0, 0, 3000), /* 105 */
302    TIMING_PARAMS(59400, 3840, 1056, 88, 1440, 2160, 8, 10, 90, 1, 1, 0, 0, 0, 5000), /* 106 */
303    TIMING_PARAMS(59400, 3840, 176, 88, 560, 2160, 8, 10, 90, 1, 1, 0, 0, 0, 6000), /* 107 */
304};
305
306const timing_params_t* cea_timings = cea_timings_arr;
307const uint32_t cea_timings_count = sizeof(cea_timings_arr) / sizeof(cea_timings_arr[0]);
308
309} // namespace internal
310} // namespace edid
311