Rev 3192 | Rev 3746 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3192 | Rev 3480 | ||
---|---|---|---|
Line 27... | Line 27... | ||
27 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
27 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
28 | * DEALINGS IN THE SOFTWARE. |
28 | * DEALINGS IN THE SOFTWARE. |
29 | */ |
29 | */ |
30 | #include |
30 | #include |
31 | #include |
31 | #include |
- | 32 | #include |
|
32 | #include |
33 | #include |
33 | #include |
34 | #include |
34 | #include |
35 | #include |
35 | #include |
36 | #include |
36 | #include "drm_edid_modes.h" |
- | |
Line 37... | Line 37... | ||
37 | 37 | ||
38 | #define version_greater(edid, maj, min) \ |
38 | #define version_greater(edid, maj, min) \ |
39 | (((edid)->version > (maj)) || \ |
39 | (((edid)->version > (maj)) || \ |
Line 85... | Line 85... | ||
85 | static struct edid_quirk { |
85 | static struct edid_quirk { |
86 | char vendor[4]; |
86 | char vendor[4]; |
87 | int product_id; |
87 | int product_id; |
88 | u32 quirks; |
88 | u32 quirks; |
89 | } edid_quirk_list[] = { |
89 | } edid_quirk_list[] = { |
90 | /* ASUS VW222S */ |
- | |
91 | { "ACI", 0x22a2, EDID_QUIRK_FORCE_REDUCED_BLANKING }, |
- | |
92 | - | ||
93 | /* Acer AL1706 */ |
90 | /* Acer AL1706 */ |
94 | { "ACR", 44358, EDID_QUIRK_PREFER_LARGE_60 }, |
91 | { "ACR", 44358, EDID_QUIRK_PREFER_LARGE_60 }, |
95 | /* Acer F51 */ |
92 | /* Acer F51 */ |
96 | { "API", 0x7602, EDID_QUIRK_PREFER_LARGE_60 }, |
93 | { "API", 0x7602, EDID_QUIRK_PREFER_LARGE_60 }, |
97 | /* Unknown Acer */ |
94 | /* Unknown Acer */ |
Line 128... | Line 125... | ||
128 | 125 | ||
129 | /* ViewSonic VA2026w */ |
126 | /* ViewSonic VA2026w */ |
130 | { "VSC", 5020, EDID_QUIRK_FORCE_REDUCED_BLANKING }, |
127 | { "VSC", 5020, EDID_QUIRK_FORCE_REDUCED_BLANKING }, |
Line -... | Line 128... | ||
- | 128 | }; |
|
- | 129 | ||
- | 130 | /* |
|
- | 131 | * Autogenerated from the DMT spec. |
|
- | 132 | * This table is copied from xfree86/modes/xf86EdidModes.c. |
|
- | 133 | */ |
|
- | 134 | static const struct drm_display_mode drm_dmt_modes[] = { |
|
- | 135 | /* 640x350@85Hz */ |
|
- | 136 | { DRM_MODE("640x350", DRM_MODE_TYPE_DRIVER, 31500, 640, 672, |
|
- | 137 | 736, 832, 0, 350, 382, 385, 445, 0, |
|
- | 138 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 139 | /* 640x400@85Hz */ |
|
- | 140 | { DRM_MODE("640x400", DRM_MODE_TYPE_DRIVER, 31500, 640, 672, |
|
- | 141 | 736, 832, 0, 400, 401, 404, 445, 0, |
|
- | 142 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 143 | /* 720x400@85Hz */ |
|
- | 144 | { DRM_MODE("720x400", DRM_MODE_TYPE_DRIVER, 35500, 720, 756, |
|
- | 145 | 828, 936, 0, 400, 401, 404, 446, 0, |
|
- | 146 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 147 | /* 640x480@60Hz */ |
|
- | 148 | { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 25175, 640, 656, |
|
- | 149 | 752, 800, 0, 480, 489, 492, 525, 0, |
|
- | 150 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 151 | /* 640x480@72Hz */ |
|
- | 152 | { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 31500, 640, 664, |
|
- | 153 | 704, 832, 0, 480, 489, 492, 520, 0, |
|
- | 154 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 155 | /* 640x480@75Hz */ |
|
- | 156 | { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 31500, 640, 656, |
|
- | 157 | 720, 840, 0, 480, 481, 484, 500, 0, |
|
- | 158 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 159 | /* 640x480@85Hz */ |
|
- | 160 | { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 36000, 640, 696, |
|
- | 161 | 752, 832, 0, 480, 481, 484, 509, 0, |
|
- | 162 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 163 | /* 800x600@56Hz */ |
|
- | 164 | { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 36000, 800, 824, |
|
- | 165 | 896, 1024, 0, 600, 601, 603, 625, 0, |
|
- | 166 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 167 | /* 800x600@60Hz */ |
|
- | 168 | { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 40000, 800, 840, |
|
- | 169 | 968, 1056, 0, 600, 601, 605, 628, 0, |
|
- | 170 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 171 | /* 800x600@72Hz */ |
|
- | 172 | { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 50000, 800, 856, |
|
- | 173 | 976, 1040, 0, 600, 637, 643, 666, 0, |
|
- | 174 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 175 | /* 800x600@75Hz */ |
|
- | 176 | { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 49500, 800, 816, |
|
- | 177 | 896, 1056, 0, 600, 601, 604, 625, 0, |
|
- | 178 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 179 | /* 800x600@85Hz */ |
|
- | 180 | { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 56250, 800, 832, |
|
- | 181 | 896, 1048, 0, 600, 601, 604, 631, 0, |
|
- | 182 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 183 | /* 800x600@120Hz RB */ |
|
- | 184 | { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 73250, 800, 848, |
|
- | 185 | 880, 960, 0, 600, 603, 607, 636, 0, |
|
- | 186 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 187 | /* 848x480@60Hz */ |
|
- | 188 | { DRM_MODE("848x480", DRM_MODE_TYPE_DRIVER, 33750, 848, 864, |
|
- | 189 | 976, 1088, 0, 480, 486, 494, 517, 0, |
|
- | 190 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 191 | /* 1024x768@43Hz, interlace */ |
|
- | 192 | { DRM_MODE("1024x768i", DRM_MODE_TYPE_DRIVER, 44900, 1024, 1032, |
|
- | 193 | 1208, 1264, 0, 768, 768, 772, 817, 0, |
|
- | 194 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | |
|
- | 195 | DRM_MODE_FLAG_INTERLACE) }, |
|
- | 196 | /* 1024x768@60Hz */ |
|
- | 197 | { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 65000, 1024, 1048, |
|
- | 198 | 1184, 1344, 0, 768, 771, 777, 806, 0, |
|
- | 199 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 200 | /* 1024x768@70Hz */ |
|
- | 201 | { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 75000, 1024, 1048, |
|
- | 202 | 1184, 1328, 0, 768, 771, 777, 806, 0, |
|
- | 203 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 204 | /* 1024x768@75Hz */ |
|
- | 205 | { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 78750, 1024, 1040, |
|
- | 206 | 1136, 1312, 0, 768, 769, 772, 800, 0, |
|
- | 207 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 208 | /* 1024x768@85Hz */ |
|
- | 209 | { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 94500, 1024, 1072, |
|
- | 210 | 1168, 1376, 0, 768, 769, 772, 808, 0, |
|
- | 211 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 212 | /* 1024x768@120Hz RB */ |
|
- | 213 | { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 115500, 1024, 1072, |
|
- | 214 | 1104, 1184, 0, 768, 771, 775, 813, 0, |
|
- | 215 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 216 | /* 1152x864@75Hz */ |
|
- | 217 | { DRM_MODE("1152x864", DRM_MODE_TYPE_DRIVER, 108000, 1152, 1216, |
|
- | 218 | 1344, 1600, 0, 864, 865, 868, 900, 0, |
|
- | 219 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 220 | /* 1280x768@60Hz RB */ |
|
- | 221 | { DRM_MODE("1280x768", DRM_MODE_TYPE_DRIVER, 68250, 1280, 1328, |
|
- | 222 | 1360, 1440, 0, 768, 771, 778, 790, 0, |
|
- | 223 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 224 | /* 1280x768@60Hz */ |
|
- | 225 | { DRM_MODE("1280x768", DRM_MODE_TYPE_DRIVER, 79500, 1280, 1344, |
|
- | 226 | 1472, 1664, 0, 768, 771, 778, 798, 0, |
|
- | 227 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 228 | /* 1280x768@75Hz */ |
|
- | 229 | { DRM_MODE("1280x768", DRM_MODE_TYPE_DRIVER, 102250, 1280, 1360, |
|
- | 230 | 1488, 1696, 0, 768, 771, 778, 805, 0, |
|
- | 231 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 232 | /* 1280x768@85Hz */ |
|
- | 233 | { DRM_MODE("1280x768", DRM_MODE_TYPE_DRIVER, 117500, 1280, 1360, |
|
- | 234 | 1496, 1712, 0, 768, 771, 778, 809, 0, |
|
- | 235 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 236 | /* 1280x768@120Hz RB */ |
|
- | 237 | { DRM_MODE("1280x768", DRM_MODE_TYPE_DRIVER, 140250, 1280, 1328, |
|
- | 238 | 1360, 1440, 0, 768, 771, 778, 813, 0, |
|
- | 239 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 240 | /* 1280x800@60Hz RB */ |
|
- | 241 | { DRM_MODE("1280x800", DRM_MODE_TYPE_DRIVER, 71000, 1280, 1328, |
|
- | 242 | 1360, 1440, 0, 800, 803, 809, 823, 0, |
|
- | 243 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 244 | /* 1280x800@60Hz */ |
|
- | 245 | { DRM_MODE("1280x800", DRM_MODE_TYPE_DRIVER, 83500, 1280, 1352, |
|
- | 246 | 1480, 1680, 0, 800, 803, 809, 831, 0, |
|
- | 247 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 248 | /* 1280x800@75Hz */ |
|
- | 249 | { DRM_MODE("1280x800", DRM_MODE_TYPE_DRIVER, 106500, 1280, 1360, |
|
- | 250 | 1488, 1696, 0, 800, 803, 809, 838, 0, |
|
- | 251 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 252 | /* 1280x800@85Hz */ |
|
- | 253 | { DRM_MODE("1280x800", DRM_MODE_TYPE_DRIVER, 122500, 1280, 1360, |
|
- | 254 | 1496, 1712, 0, 800, 803, 809, 843, 0, |
|
- | 255 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 256 | /* 1280x800@120Hz RB */ |
|
- | 257 | { DRM_MODE("1280x800", DRM_MODE_TYPE_DRIVER, 146250, 1280, 1328, |
|
- | 258 | 1360, 1440, 0, 800, 803, 809, 847, 0, |
|
- | 259 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 260 | /* 1280x960@60Hz */ |
|
- | 261 | { DRM_MODE("1280x960", DRM_MODE_TYPE_DRIVER, 108000, 1280, 1376, |
|
- | 262 | 1488, 1800, 0, 960, 961, 964, 1000, 0, |
|
- | 263 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 264 | /* 1280x960@85Hz */ |
|
- | 265 | { DRM_MODE("1280x960", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1344, |
|
- | 266 | 1504, 1728, 0, 960, 961, 964, 1011, 0, |
|
- | 267 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 268 | /* 1280x960@120Hz RB */ |
|
- | 269 | { DRM_MODE("1280x960", DRM_MODE_TYPE_DRIVER, 175500, 1280, 1328, |
|
- | 270 | 1360, 1440, 0, 960, 963, 967, 1017, 0, |
|
- | 271 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 272 | /* 1280x1024@60Hz */ |
|
- | 273 | { DRM_MODE("1280x1024", DRM_MODE_TYPE_DRIVER, 108000, 1280, 1328, |
|
- | 274 | 1440, 1688, 0, 1024, 1025, 1028, 1066, 0, |
|
- | 275 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 276 | /* 1280x1024@75Hz */ |
|
- | 277 | { DRM_MODE("1280x1024", DRM_MODE_TYPE_DRIVER, 135000, 1280, 1296, |
|
- | 278 | 1440, 1688, 0, 1024, 1025, 1028, 1066, 0, |
|
- | 279 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 280 | /* 1280x1024@85Hz */ |
|
- | 281 | { DRM_MODE("1280x1024", DRM_MODE_TYPE_DRIVER, 157500, 1280, 1344, |
|
- | 282 | 1504, 1728, 0, 1024, 1025, 1028, 1072, 0, |
|
- | 283 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 284 | /* 1280x1024@120Hz RB */ |
|
- | 285 | { DRM_MODE("1280x1024", DRM_MODE_TYPE_DRIVER, 187250, 1280, 1328, |
|
- | 286 | 1360, 1440, 0, 1024, 1027, 1034, 1084, 0, |
|
- | 287 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 288 | /* 1360x768@60Hz */ |
|
- | 289 | { DRM_MODE("1360x768", DRM_MODE_TYPE_DRIVER, 85500, 1360, 1424, |
|
- | 290 | 1536, 1792, 0, 768, 771, 777, 795, 0, |
|
- | 291 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 292 | /* 1360x768@120Hz RB */ |
|
- | 293 | { DRM_MODE("1360x768", DRM_MODE_TYPE_DRIVER, 148250, 1360, 1408, |
|
- | 294 | 1440, 1520, 0, 768, 771, 776, 813, 0, |
|
- | 295 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 296 | /* 1400x1050@60Hz RB */ |
|
- | 297 | { DRM_MODE("1400x1050", DRM_MODE_TYPE_DRIVER, 101000, 1400, 1448, |
|
- | 298 | 1480, 1560, 0, 1050, 1053, 1057, 1080, 0, |
|
- | 299 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 300 | /* 1400x1050@60Hz */ |
|
- | 301 | { DRM_MODE("1400x1050", DRM_MODE_TYPE_DRIVER, 121750, 1400, 1488, |
|
- | 302 | 1632, 1864, 0, 1050, 1053, 1057, 1089, 0, |
|
- | 303 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 304 | /* 1400x1050@75Hz */ |
|
- | 305 | { DRM_MODE("1400x1050", DRM_MODE_TYPE_DRIVER, 156000, 1400, 1504, |
|
- | 306 | 1648, 1896, 0, 1050, 1053, 1057, 1099, 0, |
|
- | 307 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 308 | /* 1400x1050@85Hz */ |
|
- | 309 | { DRM_MODE("1400x1050", DRM_MODE_TYPE_DRIVER, 179500, 1400, 1504, |
|
- | 310 | 1656, 1912, 0, 1050, 1053, 1057, 1105, 0, |
|
- | 311 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 312 | /* 1400x1050@120Hz RB */ |
|
- | 313 | { DRM_MODE("1400x1050", DRM_MODE_TYPE_DRIVER, 208000, 1400, 1448, |
|
- | 314 | 1480, 1560, 0, 1050, 1053, 1057, 1112, 0, |
|
- | 315 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 316 | /* 1440x900@60Hz RB */ |
|
- | 317 | { DRM_MODE("1440x900", DRM_MODE_TYPE_DRIVER, 88750, 1440, 1488, |
|
- | 318 | 1520, 1600, 0, 900, 903, 909, 926, 0, |
|
- | 319 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 320 | /* 1440x900@60Hz */ |
|
- | 321 | { DRM_MODE("1440x900", DRM_MODE_TYPE_DRIVER, 106500, 1440, 1520, |
|
- | 322 | 1672, 1904, 0, 900, 903, 909, 934, 0, |
|
- | 323 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 324 | /* 1440x900@75Hz */ |
|
- | 325 | { DRM_MODE("1440x900", DRM_MODE_TYPE_DRIVER, 136750, 1440, 1536, |
|
- | 326 | 1688, 1936, 0, 900, 903, 909, 942, 0, |
|
- | 327 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 328 | /* 1440x900@85Hz */ |
|
- | 329 | { DRM_MODE("1440x900", DRM_MODE_TYPE_DRIVER, 157000, 1440, 1544, |
|
- | 330 | 1696, 1952, 0, 900, 903, 909, 948, 0, |
|
- | 331 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 332 | /* 1440x900@120Hz RB */ |
|
- | 333 | { DRM_MODE("1440x900", DRM_MODE_TYPE_DRIVER, 182750, 1440, 1488, |
|
- | 334 | 1520, 1600, 0, 900, 903, 909, 953, 0, |
|
- | 335 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 336 | /* 1600x1200@60Hz */ |
|
- | 337 | { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 162000, 1600, 1664, |
|
- | 338 | 1856, 2160, 0, 1200, 1201, 1204, 1250, 0, |
|
- | 339 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 340 | /* 1600x1200@65Hz */ |
|
- | 341 | { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 175500, 1600, 1664, |
|
- | 342 | 1856, 2160, 0, 1200, 1201, 1204, 1250, 0, |
|
- | 343 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 344 | /* 1600x1200@70Hz */ |
|
- | 345 | { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 189000, 1600, 1664, |
|
- | 346 | 1856, 2160, 0, 1200, 1201, 1204, 1250, 0, |
|
- | 347 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 348 | /* 1600x1200@75Hz */ |
|
- | 349 | { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 202500, 1600, 1664, |
|
- | 350 | 1856, 2160, 0, 1200, 1201, 1204, 1250, 0, |
|
- | 351 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 352 | /* 1600x1200@85Hz */ |
|
- | 353 | { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 229500, 1600, 1664, |
|
- | 354 | 1856, 2160, 0, 1200, 1201, 1204, 1250, 0, |
|
- | 355 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 356 | /* 1600x1200@120Hz RB */ |
|
- | 357 | { DRM_MODE("1600x1200", DRM_MODE_TYPE_DRIVER, 268250, 1600, 1648, |
|
- | 358 | 1680, 1760, 0, 1200, 1203, 1207, 1271, 0, |
|
- | 359 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 360 | /* 1680x1050@60Hz RB */ |
|
- | 361 | { DRM_MODE("1680x1050", DRM_MODE_TYPE_DRIVER, 119000, 1680, 1728, |
|
- | 362 | 1760, 1840, 0, 1050, 1053, 1059, 1080, 0, |
|
- | 363 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 364 | /* 1680x1050@60Hz */ |
|
- | 365 | { DRM_MODE("1680x1050", DRM_MODE_TYPE_DRIVER, 146250, 1680, 1784, |
|
- | 366 | 1960, 2240, 0, 1050, 1053, 1059, 1089, 0, |
|
- | 367 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 368 | /* 1680x1050@75Hz */ |
|
- | 369 | { DRM_MODE("1680x1050", DRM_MODE_TYPE_DRIVER, 187000, 1680, 1800, |
|
- | 370 | 1976, 2272, 0, 1050, 1053, 1059, 1099, 0, |
|
- | 371 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 372 | /* 1680x1050@85Hz */ |
|
- | 373 | { DRM_MODE("1680x1050", DRM_MODE_TYPE_DRIVER, 214750, 1680, 1808, |
|
- | 374 | 1984, 2288, 0, 1050, 1053, 1059, 1105, 0, |
|
- | 375 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 376 | /* 1680x1050@120Hz RB */ |
|
- | 377 | { DRM_MODE("1680x1050", DRM_MODE_TYPE_DRIVER, 245500, 1680, 1728, |
|
- | 378 | 1760, 1840, 0, 1050, 1053, 1059, 1112, 0, |
|
- | 379 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 380 | /* 1792x1344@60Hz */ |
|
- | 381 | { DRM_MODE("1792x1344", DRM_MODE_TYPE_DRIVER, 204750, 1792, 1920, |
|
- | 382 | 2120, 2448, 0, 1344, 1345, 1348, 1394, 0, |
|
- | 383 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 384 | /* 1792x1344@75Hz */ |
|
- | 385 | { DRM_MODE("1792x1344", DRM_MODE_TYPE_DRIVER, 261000, 1792, 1888, |
|
- | 386 | 2104, 2456, 0, 1344, 1345, 1348, 1417, 0, |
|
- | 387 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 388 | /* 1792x1344@120Hz RB */ |
|
- | 389 | { DRM_MODE("1792x1344", DRM_MODE_TYPE_DRIVER, 333250, 1792, 1840, |
|
- | 390 | 1872, 1952, 0, 1344, 1347, 1351, 1423, 0, |
|
- | 391 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 392 | /* 1856x1392@60Hz */ |
|
- | 393 | { DRM_MODE("1856x1392", DRM_MODE_TYPE_DRIVER, 218250, 1856, 1952, |
|
- | 394 | 2176, 2528, 0, 1392, 1393, 1396, 1439, 0, |
|
- | 395 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 396 | /* 1856x1392@75Hz */ |
|
- | 397 | { DRM_MODE("1856x1392", DRM_MODE_TYPE_DRIVER, 288000, 1856, 1984, |
|
- | 398 | 2208, 2560, 0, 1392, 1395, 1399, 1500, 0, |
|
- | 399 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 400 | /* 1856x1392@120Hz RB */ |
|
- | 401 | { DRM_MODE("1856x1392", DRM_MODE_TYPE_DRIVER, 356500, 1856, 1904, |
|
- | 402 | 1936, 2016, 0, 1392, 1395, 1399, 1474, 0, |
|
- | 403 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 404 | /* 1920x1200@60Hz RB */ |
|
- | 405 | { DRM_MODE("1920x1200", DRM_MODE_TYPE_DRIVER, 154000, 1920, 1968, |
|
- | 406 | 2000, 2080, 0, 1200, 1203, 1209, 1235, 0, |
|
- | 407 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 408 | /* 1920x1200@60Hz */ |
|
- | 409 | { DRM_MODE("1920x1200", DRM_MODE_TYPE_DRIVER, 193250, 1920, 2056, |
|
- | 410 | 2256, 2592, 0, 1200, 1203, 1209, 1245, 0, |
|
- | 411 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 412 | /* 1920x1200@75Hz */ |
|
- | 413 | { DRM_MODE("1920x1200", DRM_MODE_TYPE_DRIVER, 245250, 1920, 2056, |
|
- | 414 | 2264, 2608, 0, 1200, 1203, 1209, 1255, 0, |
|
- | 415 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 416 | /* 1920x1200@85Hz */ |
|
- | 417 | { DRM_MODE("1920x1200", DRM_MODE_TYPE_DRIVER, 281250, 1920, 2064, |
|
- | 418 | 2272, 2624, 0, 1200, 1203, 1209, 1262, 0, |
|
- | 419 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 420 | /* 1920x1200@120Hz RB */ |
|
- | 421 | { DRM_MODE("1920x1200", DRM_MODE_TYPE_DRIVER, 317000, 1920, 1968, |
|
- | 422 | 2000, 2080, 0, 1200, 1203, 1209, 1271, 0, |
|
- | 423 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 424 | /* 1920x1440@60Hz */ |
|
- | 425 | { DRM_MODE("1920x1440", DRM_MODE_TYPE_DRIVER, 234000, 1920, 2048, |
|
- | 426 | 2256, 2600, 0, 1440, 1441, 1444, 1500, 0, |
|
- | 427 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 428 | /* 1920x1440@75Hz */ |
|
- | 429 | { DRM_MODE("1920x1440", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2064, |
|
- | 430 | 2288, 2640, 0, 1440, 1441, 1444, 1500, 0, |
|
- | 431 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 432 | /* 1920x1440@120Hz RB */ |
|
- | 433 | { DRM_MODE("1920x1440", DRM_MODE_TYPE_DRIVER, 380500, 1920, 1968, |
|
- | 434 | 2000, 2080, 0, 1440, 1443, 1447, 1525, 0, |
|
- | 435 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 436 | /* 2560x1600@60Hz RB */ |
|
- | 437 | { DRM_MODE("2560x1600", DRM_MODE_TYPE_DRIVER, 268500, 2560, 2608, |
|
- | 438 | 2640, 2720, 0, 1600, 1603, 1609, 1646, 0, |
|
- | 439 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 440 | /* 2560x1600@60Hz */ |
|
- | 441 | { DRM_MODE("2560x1600", DRM_MODE_TYPE_DRIVER, 348500, 2560, 2752, |
|
- | 442 | 3032, 3504, 0, 1600, 1603, 1609, 1658, 0, |
|
- | 443 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 444 | /* 2560x1600@75HZ */ |
|
- | 445 | { DRM_MODE("2560x1600", DRM_MODE_TYPE_DRIVER, 443250, 2560, 2768, |
|
- | 446 | 3048, 3536, 0, 1600, 1603, 1609, 1672, 0, |
|
- | 447 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 448 | /* 2560x1600@85HZ */ |
|
- | 449 | { DRM_MODE("2560x1600", DRM_MODE_TYPE_DRIVER, 505250, 2560, 2768, |
|
- | 450 | 3048, 3536, 0, 1600, 1603, 1609, 1682, 0, |
|
- | 451 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 452 | /* 2560x1600@120Hz RB */ |
|
- | 453 | { DRM_MODE("2560x1600", DRM_MODE_TYPE_DRIVER, 552750, 2560, 2608, |
|
- | 454 | 2640, 2720, 0, 1600, 1603, 1609, 1694, 0, |
|
- | 455 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 456 | }; |
|
- | 457 | ||
- | 458 | static const struct drm_display_mode edid_est_modes[] = { |
|
- | 459 | { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 40000, 800, 840, |
|
- | 460 | 968, 1056, 0, 600, 601, 605, 628, 0, |
|
- | 461 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 800x600@60Hz */ |
|
- | 462 | { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 36000, 800, 824, |
|
- | 463 | 896, 1024, 0, 600, 601, 603, 625, 0, |
|
- | 464 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 800x600@56Hz */ |
|
- | 465 | { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 31500, 640, 656, |
|
- | 466 | 720, 840, 0, 480, 481, 484, 500, 0, |
|
- | 467 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, /* 640x480@75Hz */ |
|
- | 468 | { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 31500, 640, 664, |
|
- | 469 | 704, 832, 0, 480, 489, 491, 520, 0, |
|
- | 470 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, /* 640x480@72Hz */ |
|
- | 471 | { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 30240, 640, 704, |
|
- | 472 | 768, 864, 0, 480, 483, 486, 525, 0, |
|
- | 473 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, /* 640x480@67Hz */ |
|
- | 474 | { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 25200, 640, 656, |
|
- | 475 | 752, 800, 0, 480, 490, 492, 525, 0, |
|
- | 476 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, /* 640x480@60Hz */ |
|
- | 477 | { DRM_MODE("720x400", DRM_MODE_TYPE_DRIVER, 35500, 720, 738, |
|
- | 478 | 846, 900, 0, 400, 421, 423, 449, 0, |
|
- | 479 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, /* 720x400@88Hz */ |
|
- | 480 | { DRM_MODE("720x400", DRM_MODE_TYPE_DRIVER, 28320, 720, 738, |
|
- | 481 | 846, 900, 0, 400, 412, 414, 449, 0, |
|
- | 482 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 720x400@70Hz */ |
|
- | 483 | { DRM_MODE("1280x1024", DRM_MODE_TYPE_DRIVER, 135000, 1280, 1296, |
|
- | 484 | 1440, 1688, 0, 1024, 1025, 1028, 1066, 0, |
|
- | 485 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 1280x1024@75Hz */ |
|
- | 486 | { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 78800, 1024, 1040, |
|
- | 487 | 1136, 1312, 0, 768, 769, 772, 800, 0, |
|
- | 488 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 1024x768@75Hz */ |
|
- | 489 | { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 75000, 1024, 1048, |
|
- | 490 | 1184, 1328, 0, 768, 771, 777, 806, 0, |
|
- | 491 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, /* 1024x768@70Hz */ |
|
- | 492 | { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 65000, 1024, 1048, |
|
- | 493 | 1184, 1344, 0, 768, 771, 777, 806, 0, |
|
- | 494 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, /* 1024x768@60Hz */ |
|
- | 495 | { DRM_MODE("1024x768i", DRM_MODE_TYPE_DRIVER,44900, 1024, 1032, |
|
- | 496 | 1208, 1264, 0, 768, 768, 776, 817, 0, |
|
- | 497 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_INTERLACE) }, /* 1024x768@43Hz */ |
|
- | 498 | { DRM_MODE("832x624", DRM_MODE_TYPE_DRIVER, 57284, 832, 864, |
|
- | 499 | 928, 1152, 0, 624, 625, 628, 667, 0, |
|
- | 500 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, /* 832x624@75Hz */ |
|
- | 501 | { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 49500, 800, 816, |
|
- | 502 | 896, 1056, 0, 600, 601, 604, 625, 0, |
|
- | 503 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 800x600@75Hz */ |
|
- | 504 | { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 50000, 800, 856, |
|
- | 505 | 976, 1040, 0, 600, 637, 643, 666, 0, |
|
- | 506 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 800x600@72Hz */ |
|
- | 507 | { DRM_MODE("1152x864", DRM_MODE_TYPE_DRIVER, 108000, 1152, 1216, |
|
- | 508 | 1344, 1600, 0, 864, 865, 868, 900, 0, |
|
- | 509 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, /* 1152x864@75Hz */ |
|
- | 510 | }; |
|
- | 511 | ||
- | 512 | struct minimode { |
|
- | 513 | short w; |
|
- | 514 | short h; |
|
- | 515 | short r; |
|
- | 516 | short rb; |
|
- | 517 | }; |
|
- | 518 | ||
- | 519 | static const struct minimode est3_modes[] = { |
|
- | 520 | /* byte 6 */ |
|
- | 521 | { 640, 350, 85, 0 }, |
|
- | 522 | { 640, 400, 85, 0 }, |
|
- | 523 | { 720, 400, 85, 0 }, |
|
- | 524 | { 640, 480, 85, 0 }, |
|
- | 525 | { 848, 480, 60, 0 }, |
|
- | 526 | { 800, 600, 85, 0 }, |
|
- | 527 | { 1024, 768, 85, 0 }, |
|
- | 528 | { 1152, 864, 75, 0 }, |
|
- | 529 | /* byte 7 */ |
|
- | 530 | { 1280, 768, 60, 1 }, |
|
- | 531 | { 1280, 768, 60, 0 }, |
|
- | 532 | { 1280, 768, 75, 0 }, |
|
- | 533 | { 1280, 768, 85, 0 }, |
|
- | 534 | { 1280, 960, 60, 0 }, |
|
- | 535 | { 1280, 960, 85, 0 }, |
|
- | 536 | { 1280, 1024, 60, 0 }, |
|
- | 537 | { 1280, 1024, 85, 0 }, |
|
- | 538 | /* byte 8 */ |
|
- | 539 | { 1360, 768, 60, 0 }, |
|
- | 540 | { 1440, 900, 60, 1 }, |
|
- | 541 | { 1440, 900, 60, 0 }, |
|
- | 542 | { 1440, 900, 75, 0 }, |
|
- | 543 | { 1440, 900, 85, 0 }, |
|
- | 544 | { 1400, 1050, 60, 1 }, |
|
- | 545 | { 1400, 1050, 60, 0 }, |
|
- | 546 | { 1400, 1050, 75, 0 }, |
|
- | 547 | /* byte 9 */ |
|
- | 548 | { 1400, 1050, 85, 0 }, |
|
- | 549 | { 1680, 1050, 60, 1 }, |
|
- | 550 | { 1680, 1050, 60, 0 }, |
|
- | 551 | { 1680, 1050, 75, 0 }, |
|
- | 552 | { 1680, 1050, 85, 0 }, |
|
- | 553 | { 1600, 1200, 60, 0 }, |
|
- | 554 | { 1600, 1200, 65, 0 }, |
|
- | 555 | { 1600, 1200, 70, 0 }, |
|
- | 556 | /* byte 10 */ |
|
- | 557 | { 1600, 1200, 75, 0 }, |
|
- | 558 | { 1600, 1200, 85, 0 }, |
|
- | 559 | { 1792, 1344, 60, 0 }, |
|
- | 560 | { 1792, 1344, 85, 0 }, |
|
- | 561 | { 1856, 1392, 60, 0 }, |
|
- | 562 | { 1856, 1392, 75, 0 }, |
|
- | 563 | { 1920, 1200, 60, 1 }, |
|
- | 564 | { 1920, 1200, 60, 0 }, |
|
- | 565 | /* byte 11 */ |
|
- | 566 | { 1920, 1200, 75, 0 }, |
|
- | 567 | { 1920, 1200, 85, 0 }, |
|
- | 568 | { 1920, 1440, 60, 0 }, |
|
- | 569 | { 1920, 1440, 75, 0 }, |
|
- | 570 | }; |
|
- | 571 | ||
- | 572 | static const struct minimode extra_modes[] = { |
|
- | 573 | { 1024, 576, 60, 0 }, |
|
- | 574 | { 1366, 768, 60, 0 }, |
|
- | 575 | { 1600, 900, 60, 0 }, |
|
- | 576 | { 1680, 945, 60, 0 }, |
|
- | 577 | { 1920, 1080, 60, 0 }, |
|
- | 578 | { 2048, 1152, 60, 0 }, |
|
- | 579 | { 2048, 1536, 60, 0 }, |
|
- | 580 | }; |
|
- | 581 | ||
- | 582 | /* |
|
- | 583 | * Probably taken from CEA-861 spec. |
|
- | 584 | * This table is converted from xorg's hw/xfree86/modes/xf86EdidModes.c. |
|
- | 585 | */ |
|
- | 586 | static const struct drm_display_mode edid_cea_modes[] = { |
|
- | 587 | /* 1 - 640x480@60Hz */ |
|
- | 588 | { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 25175, 640, 656, |
|
- | 589 | 752, 800, 0, 480, 490, 492, 525, 0, |
|
- | 590 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 591 | /* 2 - 720x480@60Hz */ |
|
- | 592 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 27000, 720, 736, |
|
- | 593 | 798, 858, 0, 480, 489, 495, 525, 0, |
|
- | 594 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 595 | /* 3 - 720x480@60Hz */ |
|
- | 596 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 27000, 720, 736, |
|
- | 597 | 798, 858, 0, 480, 489, 495, 525, 0, |
|
- | 598 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 599 | /* 4 - 1280x720@60Hz */ |
|
- | 600 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390, |
|
- | 601 | 1430, 1650, 0, 720, 725, 730, 750, 0, |
|
- | 602 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 603 | /* 5 - 1920x1080i@60Hz */ |
|
- | 604 | { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008, |
|
- | 605 | 2052, 2200, 0, 1080, 1084, 1094, 1125, 0, |
|
- | 606 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | |
|
- | 607 | DRM_MODE_FLAG_INTERLACE) }, |
|
- | 608 | /* 6 - 1440x480i@60Hz */ |
|
- | 609 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478, |
|
- | 610 | 1602, 1716, 0, 480, 488, 494, 525, 0, |
|
- | 611 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 612 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, |
|
- | 613 | /* 7 - 1440x480i@60Hz */ |
|
- | 614 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478, |
|
- | 615 | 1602, 1716, 0, 480, 488, 494, 525, 0, |
|
- | 616 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 617 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, |
|
- | 618 | /* 8 - 1440x240@60Hz */ |
|
- | 619 | { DRM_MODE("1440x240", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478, |
|
- | 620 | 1602, 1716, 0, 240, 244, 247, 262, 0, |
|
- | 621 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 622 | DRM_MODE_FLAG_DBLCLK) }, |
|
- | 623 | /* 9 - 1440x240@60Hz */ |
|
- | 624 | { DRM_MODE("1440x240", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478, |
|
- | 625 | 1602, 1716, 0, 240, 244, 247, 262, 0, |
|
- | 626 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 627 | DRM_MODE_FLAG_DBLCLK) }, |
|
- | 628 | /* 10 - 2880x480i@60Hz */ |
|
- | 629 | { DRM_MODE("2880x480i", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956, |
|
- | 630 | 3204, 3432, 0, 480, 488, 494, 525, 0, |
|
- | 631 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 632 | DRM_MODE_FLAG_INTERLACE) }, |
|
- | 633 | /* 11 - 2880x480i@60Hz */ |
|
- | 634 | { DRM_MODE("2880x480i", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956, |
|
- | 635 | 3204, 3432, 0, 480, 488, 494, 525, 0, |
|
- | 636 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 637 | DRM_MODE_FLAG_INTERLACE) }, |
|
- | 638 | /* 12 - 2880x240@60Hz */ |
|
- | 639 | { DRM_MODE("2880x240", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956, |
|
- | 640 | 3204, 3432, 0, 240, 244, 247, 262, 0, |
|
- | 641 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 642 | /* 13 - 2880x240@60Hz */ |
|
- | 643 | { DRM_MODE("2880x240", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956, |
|
- | 644 | 3204, 3432, 0, 240, 244, 247, 262, 0, |
|
- | 645 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 646 | /* 14 - 1440x480@60Hz */ |
|
- | 647 | { DRM_MODE("1440x480", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1472, |
|
- | 648 | 1596, 1716, 0, 480, 489, 495, 525, 0, |
|
- | 649 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 650 | /* 15 - 1440x480@60Hz */ |
|
- | 651 | { DRM_MODE("1440x480", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1472, |
|
- | 652 | 1596, 1716, 0, 480, 489, 495, 525, 0, |
|
- | 653 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 654 | /* 16 - 1920x1080@60Hz */ |
|
- | 655 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008, |
|
- | 656 | 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, |
|
- | 657 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 658 | /* 17 - 720x576@50Hz */ |
|
- | 659 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 27000, 720, 732, |
|
- | 660 | 796, 864, 0, 576, 581, 586, 625, 0, |
|
- | 661 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 662 | /* 18 - 720x576@50Hz */ |
|
- | 663 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 27000, 720, 732, |
|
- | 664 | 796, 864, 0, 576, 581, 586, 625, 0, |
|
- | 665 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 666 | /* 19 - 1280x720@50Hz */ |
|
- | 667 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720, |
|
- | 668 | 1760, 1980, 0, 720, 725, 730, 750, 0, |
|
- | 669 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 670 | /* 20 - 1920x1080i@50Hz */ |
|
- | 671 | { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, |
|
- | 672 | 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, |
|
- | 673 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | |
|
- | 674 | DRM_MODE_FLAG_INTERLACE) }, |
|
- | 675 | /* 21 - 1440x576i@50Hz */ |
|
- | 676 | { DRM_MODE("1440x576i", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464, |
|
- | 677 | 1590, 1728, 0, 576, 580, 586, 625, 0, |
|
- | 678 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 679 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, |
|
- | 680 | /* 22 - 1440x576i@50Hz */ |
|
- | 681 | { DRM_MODE("1440x576i", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464, |
|
- | 682 | 1590, 1728, 0, 576, 580, 586, 625, 0, |
|
- | 683 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 684 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, |
|
- | 685 | /* 23 - 1440x288@50Hz */ |
|
- | 686 | { DRM_MODE("1440x288", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464, |
|
- | 687 | 1590, 1728, 0, 288, 290, 293, 312, 0, |
|
- | 688 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 689 | DRM_MODE_FLAG_DBLCLK) }, |
|
- | 690 | /* 24 - 1440x288@50Hz */ |
|
- | 691 | { DRM_MODE("1440x288", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464, |
|
- | 692 | 1590, 1728, 0, 288, 290, 293, 312, 0, |
|
- | 693 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 694 | DRM_MODE_FLAG_DBLCLK) }, |
|
- | 695 | /* 25 - 2880x576i@50Hz */ |
|
- | 696 | { DRM_MODE("2880x576i", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928, |
|
- | 697 | 3180, 3456, 0, 576, 580, 586, 625, 0, |
|
- | 698 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 699 | DRM_MODE_FLAG_INTERLACE) }, |
|
- | 700 | /* 26 - 2880x576i@50Hz */ |
|
- | 701 | { DRM_MODE("2880x576i", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928, |
|
- | 702 | 3180, 3456, 0, 576, 580, 586, 625, 0, |
|
- | 703 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 704 | DRM_MODE_FLAG_INTERLACE) }, |
|
- | 705 | /* 27 - 2880x288@50Hz */ |
|
- | 706 | { DRM_MODE("2880x288", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928, |
|
- | 707 | 3180, 3456, 0, 288, 290, 293, 312, 0, |
|
- | 708 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 709 | /* 28 - 2880x288@50Hz */ |
|
- | 710 | { DRM_MODE("2880x288", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928, |
|
- | 711 | 3180, 3456, 0, 288, 290, 293, 312, 0, |
|
- | 712 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 713 | /* 29 - 1440x576@50Hz */ |
|
- | 714 | { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464, |
|
- | 715 | 1592, 1728, 0, 576, 581, 586, 625, 0, |
|
- | 716 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 717 | /* 30 - 1440x576@50Hz */ |
|
- | 718 | { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464, |
|
- | 719 | 1592, 1728, 0, 576, 581, 586, 625, 0, |
|
- | 720 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 721 | /* 31 - 1920x1080@50Hz */ |
|
- | 722 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, |
|
- | 723 | 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, |
|
- | 724 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 725 | /* 32 - 1920x1080@24Hz */ |
|
- | 726 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2558, |
|
- | 727 | 2602, 2750, 0, 1080, 1084, 1089, 1125, 0, |
|
- | 728 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 729 | /* 33 - 1920x1080@25Hz */ |
|
- | 730 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, |
|
- | 731 | 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, |
|
- | 732 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 733 | /* 34 - 1920x1080@30Hz */ |
|
- | 734 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008, |
|
- | 735 | 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, |
|
- | 736 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 737 | /* 35 - 2880x480@60Hz */ |
|
- | 738 | { DRM_MODE("2880x480", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2944, |
|
- | 739 | 3192, 3432, 0, 480, 489, 495, 525, 0, |
|
- | 740 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 741 | /* 36 - 2880x480@60Hz */ |
|
- | 742 | { DRM_MODE("2880x480", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2944, |
|
- | 743 | 3192, 3432, 0, 480, 489, 495, 525, 0, |
|
- | 744 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 745 | /* 37 - 2880x576@50Hz */ |
|
- | 746 | { DRM_MODE("2880x576", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2928, |
|
- | 747 | 3184, 3456, 0, 576, 581, 586, 625, 0, |
|
- | 748 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 749 | /* 38 - 2880x576@50Hz */ |
|
- | 750 | { DRM_MODE("2880x576", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2928, |
|
- | 751 | 3184, 3456, 0, 576, 581, 586, 625, 0, |
|
- | 752 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 753 | /* 39 - 1920x1080i@50Hz */ |
|
- | 754 | { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 72000, 1920, 1952, |
|
- | 755 | 2120, 2304, 0, 1080, 1126, 1136, 1250, 0, |
|
- | 756 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 757 | DRM_MODE_FLAG_INTERLACE) }, |
|
- | 758 | /* 40 - 1920x1080i@100Hz */ |
|
- | 759 | { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, |
|
- | 760 | 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, |
|
- | 761 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | |
|
- | 762 | DRM_MODE_FLAG_INTERLACE) }, |
|
- | 763 | /* 41 - 1280x720@100Hz */ |
|
- | 764 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720, |
|
- | 765 | 1760, 1980, 0, 720, 725, 730, 750, 0, |
|
- | 766 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 767 | /* 42 - 720x576@100Hz */ |
|
- | 768 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 54000, 720, 732, |
|
- | 769 | 796, 864, 0, 576, 581, 586, 625, 0, |
|
- | 770 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 771 | /* 43 - 720x576@100Hz */ |
|
- | 772 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 54000, 720, 732, |
|
- | 773 | 796, 864, 0, 576, 581, 586, 625, 0, |
|
- | 774 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 775 | /* 44 - 1440x576i@100Hz */ |
|
- | 776 | { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464, |
|
- | 777 | 1590, 1728, 0, 576, 580, 586, 625, 0, |
|
- | 778 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 779 | DRM_MODE_FLAG_DBLCLK) }, |
|
- | 780 | /* 45 - 1440x576i@100Hz */ |
|
- | 781 | { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464, |
|
- | 782 | 1590, 1728, 0, 576, 580, 586, 625, 0, |
|
- | 783 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 784 | DRM_MODE_FLAG_DBLCLK) }, |
|
- | 785 | /* 46 - 1920x1080i@120Hz */ |
|
- | 786 | { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008, |
|
- | 787 | 2052, 2200, 0, 1080, 1084, 1094, 1125, 0, |
|
- | 788 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | |
|
- | 789 | DRM_MODE_FLAG_INTERLACE) }, |
|
- | 790 | /* 47 - 1280x720@120Hz */ |
|
- | 791 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390, |
|
- | 792 | 1430, 1650, 0, 720, 725, 730, 750, 0, |
|
- | 793 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 794 | /* 48 - 720x480@120Hz */ |
|
- | 795 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 54000, 720, 736, |
|
- | 796 | 798, 858, 0, 480, 489, 495, 525, 0, |
|
- | 797 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 798 | /* 49 - 720x480@120Hz */ |
|
- | 799 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 54000, 720, 736, |
|
- | 800 | 798, 858, 0, 480, 489, 495, 525, 0, |
|
- | 801 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 802 | /* 50 - 1440x480i@120Hz */ |
|
- | 803 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1478, |
|
- | 804 | 1602, 1716, 0, 480, 488, 494, 525, 0, |
|
- | 805 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 806 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, |
|
- | 807 | /* 51 - 1440x480i@120Hz */ |
|
- | 808 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1478, |
|
- | 809 | 1602, 1716, 0, 480, 488, 494, 525, 0, |
|
- | 810 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 811 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, |
|
- | 812 | /* 52 - 720x576@200Hz */ |
|
- | 813 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 108000, 720, 732, |
|
- | 814 | 796, 864, 0, 576, 581, 586, 625, 0, |
|
- | 815 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 816 | /* 53 - 720x576@200Hz */ |
|
- | 817 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 108000, 720, 732, |
|
- | 818 | 796, 864, 0, 576, 581, 586, 625, 0, |
|
- | 819 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 820 | /* 54 - 1440x576i@200Hz */ |
|
- | 821 | { DRM_MODE("1440x576i", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1464, |
|
- | 822 | 1590, 1728, 0, 576, 580, 586, 625, 0, |
|
- | 823 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 824 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, |
|
- | 825 | /* 55 - 1440x576i@200Hz */ |
|
- | 826 | { DRM_MODE("1440x576i", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1464, |
|
- | 827 | 1590, 1728, 0, 576, 580, 586, 625, 0, |
|
- | 828 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 829 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, |
|
- | 830 | /* 56 - 720x480@240Hz */ |
|
- | 831 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 108000, 720, 736, |
|
- | 832 | 798, 858, 0, 480, 489, 495, 525, 0, |
|
- | 833 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 834 | /* 57 - 720x480@240Hz */ |
|
- | 835 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 108000, 720, 736, |
|
- | 836 | 798, 858, 0, 480, 489, 495, 525, 0, |
|
- | 837 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) }, |
|
- | 838 | /* 58 - 1440x480i@240 */ |
|
- | 839 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1478, |
|
- | 840 | 1602, 1716, 0, 480, 488, 494, 525, 0, |
|
- | 841 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 842 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, |
|
- | 843 | /* 59 - 1440x480i@240 */ |
|
- | 844 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1478, |
|
- | 845 | 1602, 1716, 0, 480, 488, 494, 525, 0, |
|
- | 846 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
|
- | 847 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK) }, |
|
- | 848 | /* 60 - 1280x720@24Hz */ |
|
- | 849 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040, |
|
- | 850 | 3080, 3300, 0, 720, 725, 730, 750, 0, |
|
- | 851 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 852 | /* 61 - 1280x720@25Hz */ |
|
- | 853 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700, |
|
- | 854 | 3740, 3960, 0, 720, 725, 730, 750, 0, |
|
- | 855 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 856 | /* 62 - 1280x720@30Hz */ |
|
- | 857 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040, |
|
- | 858 | 3080, 3300, 0, 720, 725, 730, 750, 0, |
|
- | 859 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 860 | /* 63 - 1920x1080@120Hz */ |
|
- | 861 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2008, |
|
- | 862 | 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, |
|
- | 863 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
- | 864 | /* 64 - 1920x1080@100Hz */ |
|
- | 865 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2448, |
|
- | 866 | 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, |
|
- | 867 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, |
|
131 | }; |
868 | }; |
Line 132... | Line 869... | ||
132 | 869 | ||
133 | /*** DDC fetch and block validation ***/ |
870 | /*** DDC fetch and block validation ***/ |
134 | 871 | ||
Line 151... | Line 888... | ||
151 | return score; |
888 | return score; |
152 | } |
889 | } |
153 | EXPORT_SYMBOL(drm_edid_header_is_valid); |
890 | EXPORT_SYMBOL(drm_edid_header_is_valid); |
Line 154... | Line 891... | ||
154 | 891 | ||
155 | static int edid_fixup __read_mostly = 6; |
892 | static int edid_fixup __read_mostly = 6; |
156 | //module_param_named(edid_fixup, edid_fixup, int, 0400); |
893 | module_param_named(edid_fixup, edid_fixup, int, 0400); |
157 | //MODULE_PARM_DESC(edid_fixup, |
894 | MODULE_PARM_DESC(edid_fixup, |
Line 158... | Line 895... | ||
158 | // "Minimum number of valid EDID header bytes (0-8, default 6)"); |
895 | "Minimum number of valid EDID header bytes (0-8, default 6)"); |
159 | 896 | ||
160 | /* |
897 | /* |
161 | * Sanity check the EDID block (base or extension). Return 0 if the block |
898 | * Sanity check the EDID block (base or extension). Return 0 if the block |
Line 212... | Line 949... | ||
212 | return 1; |
949 | return 1; |
Line 213... | Line 950... | ||
213 | 950 | ||
214 | bad: |
951 | bad: |
215 | if (raw_edid && print_bad_edid) { |
952 | if (raw_edid && print_bad_edid) { |
216 | printk(KERN_ERR "Raw EDID:\n"); |
953 | printk(KERN_ERR "Raw EDID:\n"); |
- | 954 | print_hex_dump(KERN_ERR, " \t", DUMP_PREFIX_NONE, 16, 1, |
|
217 | // print_hex_dump_bytes(KERN_ERR, DUMP_PREFIX_NONE, raw_edid, EDID_LENGTH); |
955 | raw_edid, EDID_LENGTH, false); |
218 | } |
956 | } |
219 | return 0; |
957 | return 0; |
220 | } |
958 | } |
Line 304... | Line 1042... | ||
304 | return ret == xfers ? 0 : -1; |
1042 | return ret == xfers ? 0 : -1; |
305 | } |
1043 | } |
Line 306... | Line 1044... | ||
306 | 1044 | ||
307 | static bool drm_edid_is_zero(u8 *in_edid, int length) |
1045 | static bool drm_edid_is_zero(u8 *in_edid, int length) |
308 | { |
- | |
309 | int i; |
- | |
310 | u32 *raw_edid = (u32 *)in_edid; |
- | |
311 | - | ||
312 | for (i = 0; i < length / 4; i++) |
1046 | { |
313 | if (*(raw_edid + i) != 0) |
1047 | if (memchr_inv(in_edid, 0, length)) |
- | 1048 | return false; |
|
314 | return false; |
1049 | |
315 | return true; |
1050 | return true; |
Line 316... | Line 1051... | ||
316 | } |
1051 | } |
317 | 1052 | ||
318 | static u8 * |
1053 | static u8 * |
319 | drm_do_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter) |
- | |
320 | { |
1054 | drm_do_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter) |
321 | size_t alloc_size; |
1055 | { |
322 | int i, j = 0, valid_extensions = 0; |
1056 | int i, j = 0, valid_extensions = 0; |
Line 323... | Line 1057... | ||
323 | u8 *block, *new; |
1057 | u8 *block, *new; |
Line 342... | Line 1076... | ||
342 | 1076 | ||
343 | /* if there's no extensions, we're done */ |
1077 | /* if there's no extensions, we're done */ |
344 | if (block[0x7e] == 0) |
1078 | if (block[0x7e] == 0) |
Line 345... | Line 1079... | ||
345 | return block; |
1079 | return block; |
346 | - | ||
347 | alloc_size = (block[0x7e] + 1) * EDID_LENGTH ; |
- | |
348 | - | ||
349 | new = kmalloc(alloc_size, GFP_KERNEL); |
1080 | |
350 | 1081 | new = krealloc(block, (block[0x7e] + 1) * EDID_LENGTH, GFP_KERNEL); |
|
351 | if (!new) |
- | |
352 | goto out; |
- | |
353 | - | ||
354 | memcpy(new, block, EDID_LENGTH); |
- | |
355 | kfree(block); |
1082 | if (!new) |
Line 356... | Line 1083... | ||
356 | 1083 | goto out; |
|
357 | block = new; |
1084 | block = new; |
358 | 1085 | ||
Line 365... | Line 1092... | ||
365 | if (drm_edid_block_valid(block + (valid_extensions + 1) * EDID_LENGTH, j, print_bad_edid)) { |
1092 | if (drm_edid_block_valid(block + (valid_extensions + 1) * EDID_LENGTH, j, print_bad_edid)) { |
366 | valid_extensions++; |
1093 | valid_extensions++; |
367 | break; |
1094 | break; |
368 | } |
1095 | } |
369 | } |
1096 | } |
- | 1097 | ||
370 | if (i == 4) |
1098 | if (i == 4 && print_bad_edid) { |
371 | dev_warn(connector->dev->dev, |
1099 | dev_warn(connector->dev->dev, |
372 | "%s: Ignoring invalid EDID block %d.\n", |
1100 | "%s: Ignoring invalid EDID block %d.\n", |
373 | drm_get_connector_name(connector), j); |
1101 | drm_get_connector_name(connector), j); |
- | 1102 | ||
- | 1103 | connector->bad_edid_counter++; |
|
- | 1104 | } |
|
374 | } |
1105 | } |
Line 375... | Line 1106... | ||
375 | 1106 | ||
376 | if (valid_extensions != block[0x7e]) { |
1107 | if (valid_extensions != block[0x7e]) { |
377 | block[EDID_LENGTH-1] += block[0x7e] - valid_extensions; |
1108 | block[EDID_LENGTH-1] += block[0x7e] - valid_extensions; |
378 | block[0x7e] = valid_extensions; |
1109 | block[0x7e] = valid_extensions; |
379 | new = kmalloc((valid_extensions + 1) * EDID_LENGTH, GFP_KERNEL); |
1110 | new = krealloc(block, (valid_extensions + 1) * EDID_LENGTH, GFP_KERNEL); |
380 | if (!new) |
1111 | if (!new) |
381 | goto out; |
- | |
382 | memcpy(new, block, alloc_size); |
- | |
383 | kfree(block); |
1112 | goto out; |
384 | block = new; |
1113 | block = new; |
Line 385... | Line 1114... | ||
385 | } |
1114 | } |
Line 551... | Line 1280... | ||
551 | int hsize, int vsize, int fresh, |
1280 | int hsize, int vsize, int fresh, |
552 | bool rb) |
1281 | bool rb) |
553 | { |
1282 | { |
554 | int i; |
1283 | int i; |
Line 555... | Line 1284... | ||
555 | 1284 | ||
556 | for (i = 0; i < drm_num_dmt_modes; i++) { |
1285 | for (i = 0; i < ARRAY_SIZE(drm_dmt_modes); i++) { |
557 | const struct drm_display_mode *ptr = &drm_dmt_modes[i]; |
1286 | const struct drm_display_mode *ptr = &drm_dmt_modes[i]; |
558 | if (hsize != ptr->hdisplay) |
1287 | if (hsize != ptr->hdisplay) |
559 | continue; |
1288 | continue; |
560 | if (vsize != ptr->vdisplay) |
1289 | if (vsize != ptr->vdisplay) |
Line 903... | Line 1632... | ||
903 | unsigned vactive = (pt->vactive_vblank_hi & 0xf0) << 4 | pt->vactive_lo; |
1632 | unsigned vactive = (pt->vactive_vblank_hi & 0xf0) << 4 | pt->vactive_lo; |
904 | unsigned hblank = (pt->hactive_hblank_hi & 0xf) << 8 | pt->hblank_lo; |
1633 | unsigned hblank = (pt->hactive_hblank_hi & 0xf) << 8 | pt->hblank_lo; |
905 | unsigned vblank = (pt->vactive_vblank_hi & 0xf) << 8 | pt->vblank_lo; |
1634 | unsigned vblank = (pt->vactive_vblank_hi & 0xf) << 8 | pt->vblank_lo; |
906 | unsigned hsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc0) << 2 | pt->hsync_offset_lo; |
1635 | unsigned hsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc0) << 2 | pt->hsync_offset_lo; |
907 | unsigned hsync_pulse_width = (pt->hsync_vsync_offset_pulse_width_hi & 0x30) << 4 | pt->hsync_pulse_width_lo; |
1636 | unsigned hsync_pulse_width = (pt->hsync_vsync_offset_pulse_width_hi & 0x30) << 4 | pt->hsync_pulse_width_lo; |
908 | unsigned vsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc) >> 2 | pt->vsync_offset_pulse_width_lo >> 4; |
1637 | unsigned vsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc) << 2 | pt->vsync_offset_pulse_width_lo >> 4; |
909 | unsigned vsync_pulse_width = (pt->hsync_vsync_offset_pulse_width_hi & 0x3) << 4 | (pt->vsync_offset_pulse_width_lo & 0xf); |
1638 | unsigned vsync_pulse_width = (pt->hsync_vsync_offset_pulse_width_hi & 0x3) << 4 | (pt->vsync_offset_pulse_width_lo & 0xf); |
Line 910... | Line 1639... | ||
910 | 1639 | ||
911 | /* ignore tiny modes */ |
1640 | /* ignore tiny modes */ |
912 | if (hactive < 64 || vactive < 64) |
1641 | if (hactive < 64 || vactive < 64) |
Line 984... | Line 1713... | ||
984 | mode->width_mm = edid->width_cm * 10; |
1713 | mode->width_mm = edid->width_cm * 10; |
985 | mode->height_mm = edid->height_cm * 10; |
1714 | mode->height_mm = edid->height_cm * 10; |
986 | } |
1715 | } |
Line 987... | Line 1716... | ||
987 | 1716 | ||
- | 1717 | mode->type = DRM_MODE_TYPE_DRIVER; |
|
988 | mode->type = DRM_MODE_TYPE_DRIVER; |
1718 | mode->vrefresh = drm_mode_vrefresh(mode); |
Line 989... | Line 1719... | ||
989 | drm_mode_set_name(mode); |
1719 | drm_mode_set_name(mode); |
990 | 1720 | ||
Line 1092... | Line 1822... | ||
1092 | { |
1822 | { |
1093 | int i, modes = 0; |
1823 | int i, modes = 0; |
1094 | struct drm_display_mode *newmode; |
1824 | struct drm_display_mode *newmode; |
1095 | struct drm_device *dev = connector->dev; |
1825 | struct drm_device *dev = connector->dev; |
Line 1096... | Line 1826... | ||
1096 | 1826 | ||
1097 | for (i = 0; i < drm_num_dmt_modes; i++) { |
1827 | for (i = 0; i < ARRAY_SIZE(drm_dmt_modes); i++) { |
1098 | if (mode_in_range(drm_dmt_modes + i, edid, timing) && |
1828 | if (mode_in_range(drm_dmt_modes + i, edid, timing) && |
1099 | valid_inferred_mode(connector, drm_dmt_modes + i)) { |
1829 | valid_inferred_mode(connector, drm_dmt_modes + i)) { |
1100 | newmode = drm_mode_duplicate(dev, &drm_dmt_modes[i]); |
1830 | newmode = drm_mode_duplicate(dev, &drm_dmt_modes[i]); |
1101 | if (newmode) { |
1831 | if (newmode) { |
Line 1127... | Line 1857... | ||
1127 | { |
1857 | { |
1128 | int i, modes = 0; |
1858 | int i, modes = 0; |
1129 | struct drm_display_mode *newmode; |
1859 | struct drm_display_mode *newmode; |
1130 | struct drm_device *dev = connector->dev; |
1860 | struct drm_device *dev = connector->dev; |
Line 1131... | Line 1861... | ||
1131 | 1861 | ||
1132 | for (i = 0; i < num_extra_modes; i++) { |
1862 | for (i = 0; i < ARRAY_SIZE(extra_modes); i++) { |
1133 | const struct minimode *m = &extra_modes[i]; |
1863 | const struct minimode *m = &extra_modes[i]; |
1134 | newmode = drm_gtf_mode(dev, m->w, m->h, m->r, 0, 0); |
1864 | newmode = drm_gtf_mode(dev, m->w, m->h, m->r, 0, 0); |
1135 | if (!newmode) |
1865 | if (!newmode) |
Line 1156... | Line 1886... | ||
1156 | int i, modes = 0; |
1886 | int i, modes = 0; |
1157 | struct drm_display_mode *newmode; |
1887 | struct drm_display_mode *newmode; |
1158 | struct drm_device *dev = connector->dev; |
1888 | struct drm_device *dev = connector->dev; |
1159 | bool rb = drm_monitor_supports_rb(edid); |
1889 | bool rb = drm_monitor_supports_rb(edid); |
Line 1160... | Line 1890... | ||
1160 | 1890 | ||
1161 | for (i = 0; i < num_extra_modes; i++) { |
1891 | for (i = 0; i < ARRAY_SIZE(extra_modes); i++) { |
1162 | const struct minimode *m = &extra_modes[i]; |
1892 | const struct minimode *m = &extra_modes[i]; |
1163 | newmode = drm_cvt_mode(dev, m->w, m->h, m->r, rb, 0, 0); |
1893 | newmode = drm_cvt_mode(dev, m->w, m->h, m->r, rb, 0, 0); |
1164 | if (!newmode) |
1894 | if (!newmode) |
Line 1493... | Line 2223... | ||
1493 | #define HDMI_IDENTIFIER 0x000C03 |
2223 | #define HDMI_IDENTIFIER 0x000C03 |
1494 | #define AUDIO_BLOCK 0x01 |
2224 | #define AUDIO_BLOCK 0x01 |
1495 | #define VIDEO_BLOCK 0x02 |
2225 | #define VIDEO_BLOCK 0x02 |
1496 | #define VENDOR_BLOCK 0x03 |
2226 | #define VENDOR_BLOCK 0x03 |
1497 | #define SPEAKER_BLOCK 0x04 |
2227 | #define SPEAKER_BLOCK 0x04 |
- | 2228 | #define VIDEO_CAPABILITY_BLOCK 0x07 |
|
1498 | #define EDID_BASIC_AUDIO (1 << 6) |
2229 | #define EDID_BASIC_AUDIO (1 << 6) |
1499 | #define EDID_CEA_YCRCB444 (1 << 5) |
2230 | #define EDID_CEA_YCRCB444 (1 << 5) |
1500 | #define EDID_CEA_YCRCB422 (1 << 4) |
2231 | #define EDID_CEA_YCRCB422 (1 << 4) |
- | 2232 | #define EDID_CEA_VCDB_QS (1 << 6) |
|
Line 1501... | Line 2233... | ||
1501 | 2233 | ||
1502 | /** |
2234 | /** |
1503 | * Search EDID for CEA extension block. |
2235 | * Search EDID for CEA extension block. |
1504 | */ |
2236 | */ |
Line 1523... | Line 2255... | ||
1523 | 2255 | ||
1524 | return edid_ext; |
2256 | return edid_ext; |
1525 | } |
2257 | } |
Line 1526... | Line 2258... | ||
1526 | EXPORT_SYMBOL(drm_find_cea_extension); |
2258 | EXPORT_SYMBOL(drm_find_cea_extension); |
1527 | 2259 | ||
- | 2260 | /** |
|
- | 2261 | * drm_match_cea_mode - look for a CEA mode matching given mode |
|
1528 | /* |
2262 | * @to_match: display mode |
- | 2263 | * |
|
1529 | * Looks for a CEA mode matching given drm_display_mode. |
2264 | * Returns the CEA Video ID (VIC) of the mode or 0 if it isn't a CEA-861 |
1530 | * Returns its CEA Video ID code, or 0 if not found. |
2265 | * mode. |
1531 | */ |
2266 | */ |
1532 | u8 drm_match_cea_mode(struct drm_display_mode *to_match) |
2267 | u8 drm_match_cea_mode(const struct drm_display_mode *to_match) |
1533 | { |
2268 | { |
Line 1534... | Line 2269... | ||
1534 | struct drm_display_mode *cea_mode; |
2269 | struct drm_display_mode *cea_mode; |
1535 | u8 mode; |
2270 | u8 mode; |
Line 1536... | Line 2271... | ||
1536 | 2271 | ||
1537 | for (mode = 0; mode < drm_num_cea_modes; mode++) { |
2272 | for (mode = 0; mode < ARRAY_SIZE(edid_cea_modes); mode++) { |
1538 | cea_mode = (struct drm_display_mode *)&edid_cea_modes[mode]; |
2273 | cea_mode = (struct drm_display_mode *)&edid_cea_modes[mode]; |
Line 1552... | Line 2287... | ||
1552 | u8 * mode, cea_mode; |
2287 | u8 * mode, cea_mode; |
1553 | int modes = 0; |
2288 | int modes = 0; |
Line 1554... | Line 2289... | ||
1554 | 2289 | ||
1555 | for (mode = db; mode < db + len; mode++) { |
2290 | for (mode = db; mode < db + len; mode++) { |
1556 | cea_mode = (*mode & 127) - 1; /* CEA modes are numbered 1..127 */ |
2291 | cea_mode = (*mode & 127) - 1; /* CEA modes are numbered 1..127 */ |
1557 | if (cea_mode < drm_num_cea_modes) { |
2292 | if (cea_mode < ARRAY_SIZE(edid_cea_modes)) { |
1558 | struct drm_display_mode *newmode; |
2293 | struct drm_display_mode *newmode; |
1559 | newmode = drm_mode_duplicate(dev, |
2294 | newmode = drm_mode_duplicate(dev, |
1560 | &edid_cea_modes[cea_mode]); |
2295 | &edid_cea_modes[cea_mode]); |
1561 | if (newmode) { |
2296 | if (newmode) { |
Line 1912... | Line 2647... | ||
1912 | return has_audio; |
2647 | return has_audio; |
1913 | } |
2648 | } |
1914 | EXPORT_SYMBOL(drm_detect_monitor_audio); |
2649 | EXPORT_SYMBOL(drm_detect_monitor_audio); |
Line 1915... | Line 2650... | ||
1915 | 2650 | ||
- | 2651 | /** |
|
- | 2652 | * drm_rgb_quant_range_selectable - is RGB quantization range selectable? |
|
- | 2653 | * |
|
- | 2654 | * Check whether the monitor reports the RGB quantization range selection |
|
- | 2655 | * as supported. The AVI infoframe can then be used to inform the monitor |
|
- | 2656 | * which quantization range (full or limited) is used. |
|
- | 2657 | */ |
|
- | 2658 | bool drm_rgb_quant_range_selectable(struct edid *edid) |
|
- | 2659 | { |
|
- | 2660 | u8 *edid_ext; |
|
- | 2661 | int i, start, end; |
|
- | 2662 | ||
- | 2663 | edid_ext = drm_find_cea_extension(edid); |
|
- | 2664 | if (!edid_ext) |
|
- | 2665 | return false; |
|
- | 2666 | ||
- | 2667 | if (cea_db_offsets(edid_ext, &start, &end)) |
|
- | 2668 | return false; |
|
- | 2669 | ||
- | 2670 | for_each_cea_db(edid_ext, i, start, end) { |
|
- | 2671 | if (cea_db_tag(&edid_ext[i]) == VIDEO_CAPABILITY_BLOCK && |
|
- | 2672 | cea_db_payload_len(&edid_ext[i]) == 2) { |
|
- | 2673 | DRM_DEBUG_KMS("CEA VCDB 0x%02x\n", edid_ext[i + 2]); |
|
- | 2674 | return edid_ext[i + 2] & EDID_CEA_VCDB_QS; |
|
- | 2675 | } |
|
- | 2676 | } |
|
- | 2677 | ||
- | 2678 | return false; |
|
- | 2679 | } |
|
- | 2680 | EXPORT_SYMBOL(drm_rgb_quant_range_selectable); |
|
- | 2681 | ||
1916 | /** |
2682 | /** |
1917 | * drm_add_display_info - pull display info out if present |
2683 | * drm_add_display_info - pull display info out if present |
1918 | * @edid: EDID data |
2684 | * @edid: EDID data |
1919 | * @info: display info (attached to connector) |
2685 | * @info: display info (attached to connector) |
1920 | * |
2686 | * |
Line 2030... | Line 2796... | ||
2030 | */ |
2796 | */ |
2031 | num_modes += add_detailed_modes(connector, edid, quirks); |
2797 | num_modes += add_detailed_modes(connector, edid, quirks); |
2032 | num_modes += add_cvt_modes(connector, edid); |
2798 | num_modes += add_cvt_modes(connector, edid); |
2033 | num_modes += add_standard_modes(connector, edid); |
2799 | num_modes += add_standard_modes(connector, edid); |
2034 | num_modes += add_established_modes(connector, edid); |
2800 | num_modes += add_established_modes(connector, edid); |
- | 2801 | if (edid->features & DRM_EDID_FEATURE_DEFAULT_GTF) |
|
2035 | num_modes += add_inferred_modes(connector, edid); |
2802 | num_modes += add_inferred_modes(connector, edid); |
2036 | num_modes += add_cea_modes(connector, edid); |
2803 | num_modes += add_cea_modes(connector, edid); |
Line 2037... | Line 2804... | ||
2037 | 2804 | ||
2038 | if (quirks & (EDID_QUIRK_PREFER_LARGE_60 | EDID_QUIRK_PREFER_LARGE_75)) |
2805 | if (quirks & (EDID_QUIRK_PREFER_LARGE_60 | EDID_QUIRK_PREFER_LARGE_75)) |
Line 2091... | Line 2858... | ||
2091 | return num_modes; |
2858 | return num_modes; |
2092 | } |
2859 | } |
2093 | EXPORT_SYMBOL(drm_add_modes_noedid); |
2860 | EXPORT_SYMBOL(drm_add_modes_noedid); |
Line 2094... | Line 2861... | ||
2094 | 2861 | ||
- | 2862 | /** |
|
2095 | /** |
2863 | * drm_hdmi_avi_infoframe_from_display_mode() - fill an HDMI AVI infoframe with |
- | 2864 | * data from a DRM display mode |
|
2096 | * drm_mode_cea_vic - return the CEA-861 VIC of a given mode |
2865 | * @frame: HDMI AVI infoframe |
2097 | * @mode: mode |
2866 | * @mode: DRM display mode |
2098 | * |
- | |
2099 | * RETURNS: |
2867 | * |
2100 | * The VIC number, 0 in case it's not a CEA-861 mode. |
2868 | * Returns 0 on success or a negative error code on failure. |
- | 2869 | */ |
|
- | 2870 | int |
|
2101 | */ |
2871 | drm_hdmi_avi_infoframe_from_display_mode(struct hdmi_avi_infoframe *frame, |
2102 | uint8_t drm_mode_cea_vic(const struct drm_display_mode *mode) |
2872 | const struct drm_display_mode *mode) |
2103 | { |
2873 | { |
- | 2874 | int err; |
|
- | 2875 | ||
- | 2876 | if (!frame || !mode) |
|
- | 2877 | return -EINVAL; |
|
- | 2878 | ||
- | 2879 | err = hdmi_avi_infoframe_init(frame); |
|
- | 2880 | if (err < 0) |
|
- | 2881 | return err; |
|
- | 2882 | ||
- | 2883 | frame->video_code = drm_match_cea_mode(mode); |
|
- | 2884 | if (!frame->video_code) |
|
Line 2104... | Line 2885... | ||
2104 | uint8_t i; |
2885 | return 0; |
2105 | 2886 | ||
2106 | for (i = 0; i < drm_num_cea_modes; i++) |
- | |
Line 2107... | Line 2887... | ||
2107 | if (drm_mode_equal(mode, &edid_cea_modes[i])) |
2887 | frame->picture_aspect = HDMI_PICTURE_ASPECT_NONE; |
2108 | return i + 1; |
2888 | frame->active_aspect = HDMI_ACTIVE_ASPECT_PICTURE; |
2109 | 2889 |