diff --git a/dmt-table.c b/dmt-table.c index c87465b..decdc4e 100644 --- a/dmt-table.c +++ b/dmt-table.c @@ -10,6 +10,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 640, .vert_video = 350, .refresh_rate_hz = 85.0, + .pixel_clock_hz = 31500000, + .horiz_blank = 192, + .horiz_front_porch = 32, + .horiz_sync_pulse = 64, + .horiz_border = 0, + .vert_blank = 95, + .vert_front_porch = 32, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x02, @@ -18,6 +27,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 640, .vert_video = 400, .refresh_rate_hz = 85.0, + .pixel_clock_hz = 31500000, + .horiz_blank = 192, + .horiz_front_porch = 32, + .horiz_sync_pulse = 64, + .horiz_border = 0, + .vert_blank = 45, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x03, @@ -26,6 +44,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 720, .vert_video = 400, .refresh_rate_hz = 85.0, + .pixel_clock_hz = 35500000, + .horiz_blank = 216, + .horiz_front_porch = 36, + .horiz_sync_pulse = 72, + .horiz_border = 0, + .vert_blank = 46, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x04, @@ -34,6 +61,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 640, .vert_video = 480, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 25175000, + .horiz_blank = 144, + .horiz_front_porch = 8, + .horiz_sync_pulse = 96, + .horiz_border = 8, + .vert_blank = 29, + .vert_front_porch = 2, + .vert_sync_pulse = 2, + .vert_border = 8, }, { .dmt_id = 0x05, @@ -42,6 +78,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 640, .vert_video = 480, .refresh_rate_hz = 72.0, + .pixel_clock_hz = 31500000, + .horiz_blank = 176, + .horiz_front_porch = 16, + .horiz_sync_pulse = 40, + .horiz_border = 8, + .vert_blank = 24, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 8, }, { .dmt_id = 0x06, @@ -50,6 +95,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 640, .vert_video = 480, .refresh_rate_hz = 75.0, + .pixel_clock_hz = 31500000, + .horiz_blank = 200, + .horiz_front_porch = 16, + .horiz_sync_pulse = 64, + .horiz_border = 0, + .vert_blank = 20, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x07, @@ -58,6 +112,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 640, .vert_video = 480, .refresh_rate_hz = 85.0, + .pixel_clock_hz = 36000000, + .horiz_blank = 192, + .horiz_front_porch = 56, + .horiz_sync_pulse = 56, + .horiz_border = 0, + .vert_blank = 29, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x08, @@ -66,6 +129,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 800, .vert_video = 600, .refresh_rate_hz = 56.0, + .pixel_clock_hz = 36000000, + .horiz_blank = 224, + .horiz_front_porch = 24, + .horiz_sync_pulse = 72, + .horiz_border = 0, + .vert_blank = 25, + .vert_front_porch = 1, + .vert_sync_pulse = 2, + .vert_border = 0, }, { .dmt_id = 0x09, @@ -74,6 +146,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 800, .vert_video = 600, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 40000000, + .horiz_blank = 256, + .horiz_front_porch = 40, + .horiz_sync_pulse = 128, + .horiz_border = 0, + .vert_blank = 28, + .vert_front_porch = 1, + .vert_sync_pulse = 4, + .vert_border = 0, }, { .dmt_id = 0x0A, @@ -82,6 +163,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 800, .vert_video = 600, .refresh_rate_hz = 72.0, + .pixel_clock_hz = 50000000, + .horiz_blank = 240, + .horiz_front_porch = 56, + .horiz_sync_pulse = 120, + .horiz_border = 0, + .vert_blank = 66, + .vert_front_porch = 37, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x0B, @@ -90,6 +180,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 800, .vert_video = 600, .refresh_rate_hz = 75.0, + .pixel_clock_hz = 49500000, + .horiz_blank = 256, + .horiz_front_porch = 16, + .horiz_sync_pulse = 80, + .horiz_border = 0, + .vert_blank = 25, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x0C, @@ -98,6 +197,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 800, .vert_video = 600, .refresh_rate_hz = 85.0, + .pixel_clock_hz = 56250000, + .horiz_blank = 248, + .horiz_front_porch = 32, + .horiz_sync_pulse = 64, + .horiz_border = 0, + .vert_blank = 31, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x0D, @@ -106,6 +214,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 800, .vert_video = 600, .refresh_rate_hz = 120.0, + .pixel_clock_hz = 73250000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 36, + .vert_front_porch = 3, + .vert_sync_pulse = 4, + .vert_border = 0, }, { .dmt_id = 0x0E, @@ -114,6 +231,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 848, .vert_video = 480, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 33750000, + .horiz_blank = 240, + .horiz_front_porch = 16, + .horiz_sync_pulse = 112, + .horiz_border = 0, + .vert_blank = 37, + .vert_front_porch = 6, + .vert_sync_pulse = 8, + .vert_border = 0, }, { .dmt_id = 0x0F, @@ -122,6 +248,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1024, .vert_video = 768, .refresh_rate_hz = 43.0, + .pixel_clock_hz = 44900000, + .horiz_blank = 240, + .horiz_front_porch = 8, + .horiz_sync_pulse = 176, + .horiz_border = 0, + .vert_blank = 24, + .vert_front_porch = 0, + .vert_sync_pulse = 4, + .vert_border = 0, }, { .dmt_id = 0x10, @@ -130,6 +265,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1024, .vert_video = 768, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 65000000, + .horiz_blank = 320, + .horiz_front_porch = 24, + .horiz_sync_pulse = 136, + .horiz_border = 0, + .vert_blank = 38, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x11, @@ -138,6 +282,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1024, .vert_video = 768, .refresh_rate_hz = 70.0, + .pixel_clock_hz = 75000000, + .horiz_blank = 304, + .horiz_front_porch = 24, + .horiz_sync_pulse = 136, + .horiz_border = 0, + .vert_blank = 38, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x12, @@ -146,6 +299,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1024, .vert_video = 768, .refresh_rate_hz = 75.0, + .pixel_clock_hz = 78750000, + .horiz_blank = 288, + .horiz_front_porch = 16, + .horiz_sync_pulse = 96, + .horiz_border = 0, + .vert_blank = 32, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x13, @@ -154,6 +316,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1024, .vert_video = 768, .refresh_rate_hz = 85.0, + .pixel_clock_hz = 94500000, + .horiz_blank = 352, + .horiz_front_porch = 48, + .horiz_sync_pulse = 96, + .horiz_border = 0, + .vert_blank = 40, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x14, @@ -162,6 +333,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1024, .vert_video = 768, .refresh_rate_hz = 120.0, + .pixel_clock_hz = 115500000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 45, + .vert_front_porch = 3, + .vert_sync_pulse = 4, + .vert_border = 0, }, { .dmt_id = 0x15, @@ -170,6 +350,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1152, .vert_video = 864, .refresh_rate_hz = 75.0, + .pixel_clock_hz = 108000000, + .horiz_blank = 448, + .horiz_front_porch = 64, + .horiz_sync_pulse = 128, + .horiz_border = 0, + .vert_blank = 36, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x55, @@ -178,6 +367,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 720, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 74250000, + .horiz_blank = 370, + .horiz_front_porch = 110, + .horiz_sync_pulse = 40, + .horiz_border = 0, + .vert_blank = 30, + .vert_front_porch = 5, + .vert_sync_pulse = 5, + .vert_border = 0, }, { .dmt_id = 0x16, @@ -186,6 +384,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 768, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 68250000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 22, + .vert_front_porch = 3, + .vert_sync_pulse = 7, + .vert_border = 0, }, { .dmt_id = 0x17, @@ -194,6 +401,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 768, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 79500000, + .horiz_blank = 384, + .horiz_front_porch = 64, + .horiz_sync_pulse = 128, + .horiz_border = 0, + .vert_blank = 30, + .vert_front_porch = 3, + .vert_sync_pulse = 7, + .vert_border = 0, }, { .dmt_id = 0x18, @@ -202,6 +418,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 768, .refresh_rate_hz = 75.0, + .pixel_clock_hz = 102250000, + .horiz_blank = 416, + .horiz_front_porch = 80, + .horiz_sync_pulse = 128, + .horiz_border = 0, + .vert_blank = 37, + .vert_front_porch = 3, + .vert_sync_pulse = 7, + .vert_border = 0, }, { .dmt_id = 0x19, @@ -210,6 +435,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 768, .refresh_rate_hz = 85.0, + .pixel_clock_hz = 117500000, + .horiz_blank = 432, + .horiz_front_porch = 80, + .horiz_sync_pulse = 136, + .horiz_border = 0, + .vert_blank = 41, + .vert_front_porch = 3, + .vert_sync_pulse = 7, + .vert_border = 0, }, { .dmt_id = 0x1A, @@ -218,6 +452,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 768, .refresh_rate_hz = 120.0, + .pixel_clock_hz = 140250000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 45, + .vert_front_porch = 3, + .vert_sync_pulse = 7, + .vert_border = 0, }, { .dmt_id = 0x1B, @@ -226,6 +469,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 800, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 71000000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 23, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x1C, @@ -234,6 +486,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 800, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 83500000, + .horiz_blank = 400, + .horiz_front_porch = 72, + .horiz_sync_pulse = 128, + .horiz_border = 0, + .vert_blank = 31, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x1D, @@ -242,6 +503,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 800, .refresh_rate_hz = 75.0, + .pixel_clock_hz = 106500000, + .horiz_blank = 416, + .horiz_front_porch = 80, + .horiz_sync_pulse = 128, + .horiz_border = 0, + .vert_blank = 38, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x1E, @@ -250,6 +520,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 800, .refresh_rate_hz = 85.0, + .pixel_clock_hz = 122500000, + .horiz_blank = 432, + .horiz_front_porch = 80, + .horiz_sync_pulse = 136, + .horiz_border = 0, + .vert_blank = 43, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x1F, @@ -258,6 +537,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 800, .refresh_rate_hz = 120.0, + .pixel_clock_hz = 146250000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 47, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x20, @@ -266,6 +554,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 960, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 108000000, + .horiz_blank = 520, + .horiz_front_porch = 96, + .horiz_sync_pulse = 112, + .horiz_border = 0, + .vert_blank = 40, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x21, @@ -274,6 +571,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 960, .refresh_rate_hz = 85.0, + .pixel_clock_hz = 148500000, + .horiz_blank = 448, + .horiz_front_porch = 64, + .horiz_sync_pulse = 160, + .horiz_border = 0, + .vert_blank = 51, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x22, @@ -282,6 +588,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 960, .refresh_rate_hz = 120.0, + .pixel_clock_hz = 175500000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 57, + .vert_front_porch = 3, + .vert_sync_pulse = 4, + .vert_border = 0, }, { .dmt_id = 0x23, @@ -290,6 +605,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 1024, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 108000000, + .horiz_blank = 408, + .horiz_front_porch = 48, + .horiz_sync_pulse = 112, + .horiz_border = 0, + .vert_blank = 42, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x24, @@ -298,6 +622,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 1024, .refresh_rate_hz = 75.0, + .pixel_clock_hz = 135000000, + .horiz_blank = 408, + .horiz_front_porch = 16, + .horiz_sync_pulse = 144, + .horiz_border = 0, + .vert_blank = 42, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x25, @@ -306,6 +639,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 1024, .refresh_rate_hz = 85.0, + .pixel_clock_hz = 157500000, + .horiz_blank = 448, + .horiz_front_porch = 64, + .horiz_sync_pulse = 160, + .horiz_border = 0, + .vert_blank = 48, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x26, @@ -314,6 +656,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1280, .vert_video = 1024, .refresh_rate_hz = 120.0, + .pixel_clock_hz = 187250000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 60, + .vert_front_porch = 3, + .vert_sync_pulse = 7, + .vert_border = 0, }, { .dmt_id = 0x27, @@ -322,6 +673,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1360, .vert_video = 768, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 85500000, + .horiz_blank = 432, + .horiz_front_porch = 64, + .horiz_sync_pulse = 112, + .horiz_border = 0, + .vert_blank = 27, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x28, @@ -330,6 +690,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1360, .vert_video = 768, .refresh_rate_hz = 120.0, + .pixel_clock_hz = 148250000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 45, + .vert_front_porch = 3, + .vert_sync_pulse = 5, + .vert_border = 0, }, { .dmt_id = 0x51, @@ -338,6 +707,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1366, .vert_video = 768, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 85500000, + .horiz_blank = 426, + .horiz_front_porch = 70, + .horiz_sync_pulse = 143, + .horiz_border = 0, + .vert_blank = 30, + .vert_front_porch = 3, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x56, @@ -346,6 +724,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1366, .vert_video = 768, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 72000000, + .horiz_blank = 134, + .horiz_front_porch = 14, + .horiz_sync_pulse = 56, + .horiz_border = 0, + .vert_blank = 32, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x29, @@ -354,6 +741,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1400, .vert_video = 1050, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 101000000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 30, + .vert_front_porch = 3, + .vert_sync_pulse = 4, + .vert_border = 0, }, { .dmt_id = 0x2A, @@ -362,6 +758,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1400, .vert_video = 1050, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 121750000, + .horiz_blank = 464, + .horiz_front_porch = 88, + .horiz_sync_pulse = 144, + .horiz_border = 0, + .vert_blank = 39, + .vert_front_porch = 3, + .vert_sync_pulse = 4, + .vert_border = 0, }, { .dmt_id = 0x2B, @@ -370,6 +775,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1400, .vert_video = 1050, .refresh_rate_hz = 75.0, + .pixel_clock_hz = 156000000, + .horiz_blank = 496, + .horiz_front_porch = 104, + .horiz_sync_pulse = 144, + .horiz_border = 0, + .vert_blank = 49, + .vert_front_porch = 3, + .vert_sync_pulse = 4, + .vert_border = 0, }, { .dmt_id = 0x2C, @@ -378,6 +792,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1400, .vert_video = 1050, .refresh_rate_hz = 85.0, + .pixel_clock_hz = 179500000, + .horiz_blank = 512, + .horiz_front_porch = 104, + .horiz_sync_pulse = 152, + .horiz_border = 0, + .vert_blank = 55, + .vert_front_porch = 3, + .vert_sync_pulse = 4, + .vert_border = 0, }, { .dmt_id = 0x2D, @@ -386,6 +809,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1400, .vert_video = 1050, .refresh_rate_hz = 120.0, + .pixel_clock_hz = 208000000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 62, + .vert_front_porch = 3, + .vert_sync_pulse = 4, + .vert_border = 0, }, { .dmt_id = 0x2E, @@ -394,6 +826,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1440, .vert_video = 900, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 88750000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 26, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x2F, @@ -402,6 +843,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1440, .vert_video = 900, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 106500000, + .horiz_blank = 464, + .horiz_front_porch = 80, + .horiz_sync_pulse = 152, + .horiz_border = 0, + .vert_blank = 34, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x30, @@ -410,6 +860,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1440, .vert_video = 900, .refresh_rate_hz = 75.0, + .pixel_clock_hz = 136750000, + .horiz_blank = 496, + .horiz_front_porch = 96, + .horiz_sync_pulse = 152, + .horiz_border = 0, + .vert_blank = 42, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x31, @@ -418,6 +877,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1440, .vert_video = 900, .refresh_rate_hz = 85.0, + .pixel_clock_hz = 157000000, + .horiz_blank = 512, + .horiz_front_porch = 104, + .horiz_sync_pulse = 152, + .horiz_border = 0, + .vert_blank = 48, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x32, @@ -426,6 +894,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1440, .vert_video = 900, .refresh_rate_hz = 120.0, + .pixel_clock_hz = 182750000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 53, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x53, @@ -434,6 +911,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1600, .vert_video = 900, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 108000000, + .horiz_blank = 200, + .horiz_front_porch = 24, + .horiz_sync_pulse = 80, + .horiz_border = 0, + .vert_blank = 100, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x33, @@ -442,6 +928,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1600, .vert_video = 1200, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 162000000, + .horiz_blank = 560, + .horiz_front_porch = 64, + .horiz_sync_pulse = 192, + .horiz_border = 0, + .vert_blank = 50, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x34, @@ -450,6 +945,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1600, .vert_video = 1200, .refresh_rate_hz = 65.0, + .pixel_clock_hz = 175500000, + .horiz_blank = 560, + .horiz_front_porch = 64, + .horiz_sync_pulse = 192, + .horiz_border = 0, + .vert_blank = 50, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x35, @@ -458,6 +962,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1600, .vert_video = 1200, .refresh_rate_hz = 70.0, + .pixel_clock_hz = 189000000, + .horiz_blank = 560, + .horiz_front_porch = 64, + .horiz_sync_pulse = 192, + .horiz_border = 0, + .vert_blank = 50, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x36, @@ -466,6 +979,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1600, .vert_video = 1200, .refresh_rate_hz = 75.0, + .pixel_clock_hz = 202500000, + .horiz_blank = 560, + .horiz_front_porch = 64, + .horiz_sync_pulse = 192, + .horiz_border = 0, + .vert_blank = 50, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x37, @@ -474,6 +996,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1600, .vert_video = 1200, .refresh_rate_hz = 85.0, + .pixel_clock_hz = 229500000, + .horiz_blank = 560, + .horiz_front_porch = 64, + .horiz_sync_pulse = 192, + .horiz_border = 0, + .vert_blank = 50, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x38, @@ -482,6 +1013,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1600, .vert_video = 1200, .refresh_rate_hz = 120.0, + .pixel_clock_hz = 268250000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 71, + .vert_front_porch = 3, + .vert_sync_pulse = 4, + .vert_border = 0, }, { .dmt_id = 0x39, @@ -490,6 +1030,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1680, .vert_video = 1050, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 119000000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 30, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x3A, @@ -498,6 +1047,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1680, .vert_video = 1050, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 146250000, + .horiz_blank = 560, + .horiz_front_porch = 104, + .horiz_sync_pulse = 176, + .horiz_border = 0, + .vert_blank = 39, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x3B, @@ -506,6 +1064,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1680, .vert_video = 1050, .refresh_rate_hz = 75.0, + .pixel_clock_hz = 187000000, + .horiz_blank = 592, + .horiz_front_porch = 120, + .horiz_sync_pulse = 176, + .horiz_border = 0, + .vert_blank = 49, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x3C, @@ -514,6 +1081,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1680, .vert_video = 1050, .refresh_rate_hz = 85.0, + .pixel_clock_hz = 214750000, + .horiz_blank = 608, + .horiz_front_porch = 128, + .horiz_sync_pulse = 176, + .horiz_border = 0, + .vert_blank = 55, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x3D, @@ -522,6 +1098,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1680, .vert_video = 1050, .refresh_rate_hz = 120.0, + .pixel_clock_hz = 245500000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 62, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x3E, @@ -530,6 +1115,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1792, .vert_video = 1344, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 204750000, + .horiz_blank = 656, + .horiz_front_porch = 128, + .horiz_sync_pulse = 200, + .horiz_border = 0, + .vert_blank = 50, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x3F, @@ -538,6 +1132,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1792, .vert_video = 1344, .refresh_rate_hz = 75.0, + .pixel_clock_hz = 261000000, + .horiz_blank = 664, + .horiz_front_porch = 96, + .horiz_sync_pulse = 216, + .horiz_border = 0, + .vert_blank = 73, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x40, @@ -546,6 +1149,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1792, .vert_video = 1344, .refresh_rate_hz = 120.0, + .pixel_clock_hz = 333250000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 79, + .vert_front_porch = 3, + .vert_sync_pulse = 4, + .vert_border = 0, }, { .dmt_id = 0x41, @@ -554,6 +1166,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1856, .vert_video = 1392, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 218250000, + .horiz_blank = 672, + .horiz_front_porch = 96, + .horiz_sync_pulse = 224, + .horiz_border = 0, + .vert_blank = 47, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x42, @@ -562,6 +1183,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1856, .vert_video = 1392, .refresh_rate_hz = 75.0, + .pixel_clock_hz = 288000000, + .horiz_blank = 704, + .horiz_front_porch = 128, + .horiz_sync_pulse = 224, + .horiz_border = 0, + .vert_blank = 108, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x43, @@ -570,6 +1200,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1856, .vert_video = 1392, .refresh_rate_hz = 120.0, + .pixel_clock_hz = 356500000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 82, + .vert_front_porch = 3, + .vert_sync_pulse = 4, + .vert_border = 0, }, { .dmt_id = 0x52, @@ -578,6 +1217,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1920, .vert_video = 1080, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 148500000, + .horiz_blank = 280, + .horiz_front_porch = 88, + .horiz_sync_pulse = 44, + .horiz_border = 0, + .vert_blank = 45, + .vert_front_porch = 4, + .vert_sync_pulse = 5, + .vert_border = 0, }, { .dmt_id = 0x44, @@ -586,6 +1234,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1920, .vert_video = 1200, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 154000000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 35, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x45, @@ -594,6 +1251,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1920, .vert_video = 1200, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 193250000, + .horiz_blank = 672, + .horiz_front_porch = 136, + .horiz_sync_pulse = 200, + .horiz_border = 0, + .vert_blank = 45, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x46, @@ -602,6 +1268,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1920, .vert_video = 1200, .refresh_rate_hz = 75.0, + .pixel_clock_hz = 245250000, + .horiz_blank = 688, + .horiz_front_porch = 136, + .horiz_sync_pulse = 208, + .horiz_border = 0, + .vert_blank = 55, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x47, @@ -610,6 +1285,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1920, .vert_video = 1200, .refresh_rate_hz = 85.0, + .pixel_clock_hz = 281250000, + .horiz_blank = 704, + .horiz_front_porch = 144, + .horiz_sync_pulse = 208, + .horiz_border = 0, + .vert_blank = 62, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x48, @@ -618,6 +1302,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1920, .vert_video = 1200, .refresh_rate_hz = 120.0, + .pixel_clock_hz = 317000000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 71, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x49, @@ -626,6 +1319,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1920, .vert_video = 1440, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 234000000, + .horiz_blank = 680, + .horiz_front_porch = 128, + .horiz_sync_pulse = 208, + .horiz_border = 0, + .vert_blank = 60, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x4A, @@ -634,6 +1336,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1920, .vert_video = 1440, .refresh_rate_hz = 75.0, + .pixel_clock_hz = 297000000, + .horiz_blank = 720, + .horiz_front_porch = 144, + .horiz_sync_pulse = 224, + .horiz_border = 0, + .vert_blank = 60, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x4B, @@ -642,6 +1353,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 1920, .vert_video = 1440, .refresh_rate_hz = 120.0, + .pixel_clock_hz = 380500000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 85, + .vert_front_porch = 3, + .vert_sync_pulse = 4, + .vert_border = 0, }, { .dmt_id = 0x54, @@ -650,6 +1370,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 2048, .vert_video = 1152, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 162000000, + .horiz_blank = 202, + .horiz_front_porch = 26, + .horiz_sync_pulse = 80, + .horiz_border = 0, + .vert_blank = 48, + .vert_front_porch = 1, + .vert_sync_pulse = 3, + .vert_border = 0, }, { .dmt_id = 0x4C, @@ -658,6 +1387,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 2560, .vert_video = 1600, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 268500000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 46, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x4D, @@ -666,6 +1404,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 2560, .vert_video = 1600, .refresh_rate_hz = 60.0, + .pixel_clock_hz = 348500000, + .horiz_blank = 944, + .horiz_front_porch = 192, + .horiz_sync_pulse = 280, + .horiz_border = 0, + .vert_blank = 58, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x4E, @@ -674,6 +1421,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 2560, .vert_video = 1600, .refresh_rate_hz = 75.0, + .pixel_clock_hz = 443250000, + .horiz_blank = 976, + .horiz_front_porch = 208, + .horiz_sync_pulse = 280, + .horiz_border = 0, + .vert_blank = 72, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x4F, @@ -682,6 +1438,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 2560, .vert_video = 1600, .refresh_rate_hz = 85.0, + .pixel_clock_hz = 505250000, + .horiz_blank = 976, + .horiz_front_porch = 208, + .horiz_sync_pulse = 280, + .horiz_border = 0, + .vert_blank = 82, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, { .dmt_id = 0x50, @@ -690,6 +1455,15 @@ const struct di_dmt_timing _di_dmt_timings[] = { .horiz_video = 2560, .vert_video = 1600, .refresh_rate_hz = 120.0, + .pixel_clock_hz = 552750000, + .horiz_blank = 160, + .horiz_front_porch = 48, + .horiz_sync_pulse = 32, + .horiz_border = 0, + .vert_blank = 94, + .vert_front_porch = 3, + .vert_sync_pulse = 6, + .vert_border = 0, }, }; diff --git a/include/dmt.h b/include/dmt.h index 535ef8d..88f71fe 100644 --- a/include/dmt.h +++ b/include/dmt.h @@ -19,6 +19,16 @@ struct di_dmt_timing { int32_t horiz_video, vert_video; /* Field Refresh Rate in Hz */ float refresh_rate_hz; + /* Pixel clock in Hz */ + int32_t pixel_clock_hz; + /* Horizontal/Vertical Blanking in pixels/lines */ + int32_t horiz_blank, vert_blank; + /* Horizontal/Vertical Front Porch in pixels/lines */ + int32_t horiz_front_porch, vert_front_porch; + /* Horizontal/Vertical Sync Pulse Width in pixels/lines */ + int32_t horiz_sync_pulse, vert_sync_pulse; + /* Horizontal/Vertical Border in pixels/lines */ + int32_t horiz_border, vert_border; }; extern const struct di_dmt_timing _di_dmt_timings[]; diff --git a/tool/gen-dmt.py b/tool/gen-dmt.py index eccc99b..87cbcce 100755 --- a/tool/gen-dmt.py +++ b/tool/gen-dmt.py @@ -22,6 +22,16 @@ def parse_hex_list(s): assert(0 <= int(b, 16) <= 255) return "0x" + "".join(l) +def parse_pixel_param(l): + l = l[2].split(" ") + assert(len(l) >= 2 and l[1] == "Pixels") + return int(l[0]) + +def parse_line_param(l): + l = l[1].split(" ") + assert(len(l) >= 2 and l[1] == "lines") + return int(l[0]) + def parse_timing(page): lines = [l.strip() for l in page.splitlines()] if len(lines) < 6: @@ -73,6 +83,18 @@ def parse_timing(page): edid_std_id = parse_hex_list(ids["Std. 2 Byte Code"]) cvt_id = parse_hex_list(ids["CVT 3 Byte Code"]) + pixel_clock_mhz = float(params["Pixel Clock"][0].split(";")[0]) + horiz_blank = parse_pixel_param(params["Hor Blank Time"]) + horiz_front_porch = parse_pixel_param(params["// H Front Porch"]) + horiz_sync_pulse = parse_pixel_param(params["Hor Sync Time"]) + horiz_border = parse_pixel_param(params["// H Right Border"]) + assert(horiz_border == parse_pixel_param(params["// H Left Border"])) + vert_blank = parse_line_param(params["Ver Blank Time"]) + vert_front_porch = parse_line_param(params["// V Front Porch"]) + vert_sync_pulse = parse_line_param(params["Ver Sync Time"]) + vert_border = parse_line_param(params["// V Bottom Border"]) + assert(vert_border == parse_line_param(params["// V Top Border"])) + return { "dmt_id": dmt_id, "edid_std_id": 0 if edid_std_id is None else edid_std_id, @@ -80,6 +102,15 @@ def parse_timing(page): "horiz_video": horiz_video, "vert_video": vert_video, "refresh_rate_hz": refresh_rate_hz, + "pixel_clock_hz": int(pixel_clock_mhz * 1000 * 1000), + "horiz_blank": horiz_blank, + "horiz_front_porch": horiz_front_porch, + "horiz_sync_pulse": horiz_sync_pulse, + "horiz_border": horiz_border, + "vert_blank": vert_blank, + "vert_front_porch": vert_front_porch, + "vert_sync_pulse": vert_sync_pulse, + "vert_border": vert_border, } if len(sys.argv) != 2: