diff --git a/drivers/video/Makefile b/drivers/video/Makefile index d3d951e0c4e..11b3a11846f 100644 --- a/drivers/video/Makefile +++ b/drivers/video/Makefile @@ -8,7 +8,7 @@ obj-$(CONFIG_VGASTATE) += vgastate.o obj-y += fb_notify.o obj-$(CONFIG_FB) += fb.o fb-y := fbmem.o fbmon.o fbcmap.o fbsysfs.o \ - modedb.o fbcvt.o + modedb.o cea861_modedb.o fbcvt.o fb-objs := $(fb-y) obj-$(CONFIG_VT) += console/ diff --git a/drivers/video/cea861_modedb.c b/drivers/video/cea861_modedb.c new file mode 100644 index 00000000000..ac07c3e2727 --- /dev/null +++ b/drivers/video/cea861_modedb.c @@ -0,0 +1,1000 @@ +#include + +const struct fb_videomode cea_modes[65] = { + [1] = { + .name = "CEA VIC 1: 640x480@60", + .refresh = 60, + .xres = 640, + .yres = 480, + .pixclock = 39721, /* 25.175MHz */ + .left_margin = 48, + .right_margin = 16, + .upper_margin = 33, + .lower_margin = 12, + .hsync_len = 96, + .vsync_len = 2, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [2] = { + .name = "CEA VIC 2: 720x480@60", + .refresh = 60, + .xres = 720, + .yres = 480, + .pixclock = 37037, /* 27.0MHz */ + .left_margin = 60, + .right_margin = 16, + .upper_margin = 30, + .lower_margin = 15, + .hsync_len = 62, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [3] = { + .name = "CEA VIC 3: 720x480@60", + .refresh = 60, + .xres = 720, + .yres = 480, + .pixclock = 37037, /* 27.0MHz */ + .left_margin = 60, + .right_margin = 16, + .upper_margin = 30, + .lower_margin = 15, + .hsync_len = 62, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [4] = { + .name = "CEA VIC 4: 1280x720@60", + .refresh = 60, + .xres = 1280, + .yres = 720, + .pixclock = 13468, /* 74.250MHz */ + .left_margin = 220, + .right_margin = 110, + .upper_margin = 20, + .lower_margin = 10, + .hsync_len = 40, + .vsync_len = 5, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [5] = { + .name = "CEA VIC 5: 1920x1080i@30", + .refresh = 30, + .xres = 1920, + .yres = 1080, + .pixclock = 13468, /* 74.250MHz */ + .left_margin = 148, + .right_margin = 88, + .upper_margin = 31, + .lower_margin = 14, + .hsync_len = 44, + .vsync_len = 10, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED, + .flag = FB_MODE_IS_CEA, + }, + [6] = { + .name = "CEA VIC 6: 1440x480i@30", + .refresh = 30, + .xres = 1440, + .yres = 480, + .pixclock = 37037, /* 27.0MHz */ + .left_margin = 114, + .right_margin = 38, + .upper_margin = 31, + .lower_margin = 14, + .hsync_len = 124, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, + .flag = FB_MODE_IS_CEA, + }, + [7] = { + .name = "CEA VIC 7: 1440x480i@30", + .refresh = 30, + .xres = 1440, + .yres = 480, + .pixclock = 37037, /* 27.0MHz */ + .left_margin = 114, + .right_margin = 38, + .upper_margin = 31, + .lower_margin = 14, + .hsync_len = 124, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, + .flag = FB_MODE_IS_CEA, + }, + [8] = { + .name = "CEA VIC 8: 1440x240@60", + .refresh = 60, + .xres = 1440, + .yres = 240, + .pixclock = 37037, /* 27.0MHz */ + .left_margin = 114, + .right_margin = 38, + .upper_margin = 15, + .lower_margin = 7, + .hsync_len = 124, + .vsync_len = 3, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [9] = { + .name = "CEA VIC 9: 1440x240@60", + .refresh = 60, + .xres = 1440, + .yres = 240, + .pixclock = 37037, /* 27.0MHz */ + .left_margin = 114, + .right_margin = 38, + .upper_margin = 15, + .lower_margin = 7, + .hsync_len = 124, + .vsync_len = 3, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [10] = { + .name = "CEA VIC 10: 2880x480i@30", + .refresh = 30, + .xres = 2880, + .yres = 480, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 228, + .right_margin = 76, + .upper_margin = 31, + .lower_margin = 14, + .hsync_len = 248, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, + .flag = FB_MODE_IS_CEA, + }, + [11] = { + .name = "CEA VIC 11: 2880x480i@30", + .refresh = 30, + .xres = 2880, + .yres = 480, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 228, + .right_margin = 76, + .upper_margin = 31, + .lower_margin = 14, + .hsync_len = 248, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, + .flag = FB_MODE_IS_CEA, + }, + [12] = { + .name = "CEA VIC 12: 2880x240@60", + .refresh = 60, + .xres = 2880, + .yres = 240, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 228, + .right_margin = 76, + .upper_margin = 15, + .lower_margin = 7, + .hsync_len = 248, + .vsync_len = 3, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [13] = { + .name = "CEA VIC 13: 2880x240@60", + .refresh = 60, + .xres = 2880, + .yres = 240, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 228, + .right_margin = 76, + .upper_margin = 15, + .lower_margin = 7, + .hsync_len = 248, + .vsync_len = 3, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [14] = { + .name = "CEA VIC 14: 1440x480@60", + .refresh = 60, + .xres = 1440, + .yres = 480, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 120, + .right_margin = 32, + .upper_margin = 30, + .lower_margin = 15, + .hsync_len = 124, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [15] = { + .name = "CEA VIC 15: 1440x480@60", + .refresh = 60, + .xres = 1440, + .yres = 480, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 120, + .right_margin = 32, + .upper_margin = 30, + .lower_margin = 15, + .hsync_len = 124, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [16] = { + .name = "CEA VIC 16: 1920x1080@60", + .refresh = 60, + .xres = 1920, + .yres = 1080, + .pixclock = 6734, /* 148.500MHz */ + .left_margin = 148, + .right_margin = 88, + .upper_margin = 36, + .lower_margin = 9, + .hsync_len = 44, + .vsync_len = 5, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [17] = { + .name = "CEA VIC 17: 720x576@50", + .refresh = 50, + .xres = 720, + .yres = 576, + .pixclock = 37037, /* 27.0MHz */ + .left_margin = 68, + .right_margin = 12, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 64, + .vsync_len = 5, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [18] = { + .name = "CEA VIC 18: 720x576@50", + .refresh = 50, + .xres = 720, + .yres = 576, + .pixclock = 37037, /* 27.0MHz */ + .left_margin = 68, + .right_margin = 12, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 64, + .vsync_len = 5, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [19] = { + .name = "CEA VIC 19: 1280x720@50", + .refresh = 50, + .xres = 1280, + .yres = 720, + .pixclock = 13468, /* 74.250MHz */ + .left_margin = 220, + .right_margin = 440, + .upper_margin = 20, + .lower_margin = 10, + .hsync_len = 40, + .vsync_len = 5, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [20] = { + .name = "CEA VIC 20: 1920x1080i@25", + .refresh = 25, + .xres = 1920, + .yres = 1080, + .pixclock = 13468, /* 74.250MHz */ + .left_margin = 148, + .right_margin = 528, + .upper_margin = 31, + .lower_margin = 14, + .hsync_len = 44, + .vsync_len = 10, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED, + .flag = FB_MODE_IS_CEA, + }, + [21] = { + .name = "CEA VIC 21: 1440x576i@25", + .refresh = 25, + .xres = 1440, + .yres = 576, + .pixclock = 37037, /* 27.0MHz */ + .left_margin = 138, + .right_margin = 24, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 126, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, + .flag = FB_MODE_IS_CEA, + }, + [22] = { + .name = "CEA VIC 22: 1440x576i@25", + .refresh = 25, + .xres = 1440, + .yres = 576, + .pixclock = 37037, /* 27.0MHz */ + .left_margin = 138, + .right_margin = 24, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 126, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, + .flag = FB_MODE_IS_CEA, + }, + [23] = { + .name = "CEA VIC 23: 1440x288@50", + .refresh = 50, + .xres = 1440, + .yres = 288, + .pixclock = 37037, /* 27.0MHz */ + .left_margin = 138, + .right_margin = 24, + .upper_margin = 19, + .lower_margin = 5, + .hsync_len = 126, + .vsync_len = 3, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [24] = { + .name = "CEA VIC 24: 1440x288@50", + .refresh = 50, + .xres = 1440, + .yres = 288, + .pixclock = 37037, /* 27.0MHz */ + .left_margin = 138, + .right_margin = 24, + .upper_margin = 19, + .lower_margin = 5, + .hsync_len = 126, + .vsync_len = 3, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [25] = { + .name = "CEA VIC 25: 2880x576i@25", + .refresh = 25, + .xres = 2880, + .yres = 576, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 276, + .right_margin = 48, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 252, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, + .flag = FB_MODE_IS_CEA, + }, + [26] = { + .name = "CEA VIC 26: 2880x576i@25", + .refresh = 25, + .xres = 2880, + .yres = 576, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 276, + .right_margin = 48, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 252, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, + .flag = FB_MODE_IS_CEA, + }, + [27] = { + .name = "CEA VIC 27: 2880x288@50", + .refresh = 50, + .xres = 2880, + .yres = 288, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 276, + .right_margin = 48, + .upper_margin = 19, + .lower_margin = 5, + .hsync_len = 252, + .vsync_len = 3, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [28] = { + .name = "CEA VIC 28: 2880x288@50", + .refresh = 50, + .xres = 2880, + .yres = 288, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 276, + .right_margin = 48, + .upper_margin = 19, + .lower_margin = 5, + .hsync_len = 252, + .vsync_len = 3, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [29] = { + .name = "CEA VIC 29: 1440x576@50", + .refresh = 50, + .xres = 1440, + .yres = 576, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 136, + .right_margin = 24, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 128, + .vsync_len = 5, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [30] = { + .name = "CEA VIC 30: 1440x576@50", + .refresh = 50, + .xres = 1440, + .yres = 576, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 136, + .right_margin = 24, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 128, + .vsync_len = 5, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [31] = { + .name = "CEA VIC 31: 1920x1080@50", + .refresh = 50, + .xres = 1920, + .yres = 1080, + .pixclock = 6734, /* 148.500MHz */ + .left_margin = 148, + .right_margin = 528, + .upper_margin = 36, + .lower_margin = 9, + .hsync_len = 44, + .vsync_len = 5, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [32] = { + .name = "CEA VIC 32: 1920x1080@24", + .refresh = 24, + .xres = 1920, + .yres = 1080, + .pixclock = 13468, /* 74.250MHz */ + .left_margin = 148, + .right_margin = 638, + .upper_margin = 36, + .lower_margin = 9, + .hsync_len = 44, + .vsync_len = 5, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [33] = { + .name = "CEA VIC 33: 1920x1080@25", + .refresh = 25, + .xres = 1920, + .yres = 1080, + .pixclock = 13468, /* 74.250MHz */ + .left_margin = 148, + .right_margin = 528, + .upper_margin = 36, + .lower_margin = 9, + .hsync_len = 44, + .vsync_len = 5, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [34] = { + .name = "CEA VIC 34: 1920x1080@30", + .refresh = 30, + .xres = 1920, + .yres = 1080, + .pixclock = 13468, /* 74.250MHz */ + .left_margin = 148, + .right_margin = 88, + .upper_margin = 36, + .lower_margin = 9, + .hsync_len = 44, + .vsync_len = 5, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [35] = { + .name = "CEA VIC 35: 2880x480@60", + .refresh = 60, + .xres = 2880, + .yres = 480, + .pixclock = 9259, /* 108.0MHz */ + .left_margin = 240, + .right_margin = 64, + .upper_margin = 30, + .lower_margin = 15, + .hsync_len = 248, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [36] = { + .name = "CEA VIC 36: 2880x480@60", + .refresh = 60, + .xres = 2880, + .yres = 480, + .pixclock = 9259, /* 108.0MHz */ + .left_margin = 240, + .right_margin = 64, + .upper_margin = 30, + .lower_margin = 15, + .hsync_len = 248, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [37] = { + .name = "CEA VIC 37: 2880x576@50", + .refresh = 50, + .xres = 2880, + .yres = 576, + .pixclock = 9259, /* 108.0MHz */ + .left_margin = 272, + .right_margin = 48, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 256, + .vsync_len = 5, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [38] = { + .name = "CEA VIC 38: 2880x576@50", + .refresh = 50, + .xres = 2880, + .yres = 576, + .pixclock = 9259, /* 108.0MHz */ + .left_margin = 272, + .right_margin = 48, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 256, + .vsync_len = 5, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [39] = { + .name = "CEA VIC 39: 1920x1080i@25", + .refresh = 25, + .xres = 1920, + .yres = 1080, + .pixclock = 13888, /* 72.0MHz */ + .left_margin = 184, + .right_margin = 32, + .upper_margin = 114, + .lower_margin = 56, + .hsync_len = 168, + .vsync_len = 10, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED, + .flag = FB_MODE_IS_CEA, + }, + [40] = { + .name = "CEA VIC 40: 1920x1080i@50", + .refresh = 50, + .xres = 1920, + .yres = 1080, + .pixclock = 6734, /* 148.500MHz */ + .left_margin = 148, + .right_margin = 528, + .upper_margin = 31, + .lower_margin = 14, + .hsync_len = 44, + .vsync_len = 10, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED, + .flag = FB_MODE_IS_CEA, + }, + [41] = { + .name = "CEA VIC 41: 1280x720@100", + .refresh = 100, + .xres = 1280, + .yres = 720, + .pixclock = 6734, /* 148.500MHz */ + .left_margin = 220, + .right_margin = 440, + .upper_margin = 20, + .lower_margin = 10, + .hsync_len = 40, + .vsync_len = 5, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [42] = { + .name = "CEA VIC 42: 720x576@100", + .refresh = 100, + .xres = 720, + .yres = 576, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 68, + .right_margin = 12, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 64, + .vsync_len = 5, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [43] = { + .name = "CEA VIC 43: 720x576@100", + .refresh = 100, + .xres = 720, + .yres = 576, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 68, + .right_margin = 12, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 64, + .vsync_len = 5, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [44] = { + .name = "CEA VIC 44: 1440x576@50", + .refresh = 50, + .xres = 1440, + .yres = 576, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 138, + .right_margin = 24, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 126, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [45] = { + .name = "CEA VIC 45: 1440x576@50", + .refresh = 50, + .xres = 1440, + .yres = 576, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 138, + .right_margin = 24, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 126, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + .vmode = FB_VMODE_DOUBLE, + }, + [46] = { + .name = "CEA VIC 46: 1920x1080i@60", + .refresh = 60, + .xres = 1920, + .yres = 1080, + .pixclock = 6734, /* 148.500MHz */ + .left_margin = 148, + .right_margin = 88, + .upper_margin = 31, + .lower_margin = 14, + .hsync_len = 44, + .vsync_len = 10, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED, + .flag = FB_MODE_IS_CEA, + }, + [47] = { + .name = "CEA VIC 47: 1280x720@120", + .refresh = 120, + .xres = 1280, + .yres = 720, + .pixclock = 6734, /* 148.500MHz */ + .left_margin = 220, + .right_margin = 110, + .upper_margin = 20, + .lower_margin = 10, + .hsync_len = 40, + .vsync_len = 5, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [48] = { + .name = "CEA VIC 48: 720x480@119", + .refresh = 119, + .xres = 720, + .yres = 480, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 60, + .right_margin = 16, + .upper_margin = 30, + .lower_margin = 15, + .hsync_len = 62, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [49] = { + .name = "CEA VIC 49: 720x480@119", + .refresh = 119, + .xres = 720, + .yres = 480, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 60, + .right_margin = 16, + .upper_margin = 30, + .lower_margin = 15, + .hsync_len = 62, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [50] = { + .name = "CEA VIC 50: 1440x480i@60", + .refresh = 60, + .xres = 1440, + .yres = 480, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 114, + .right_margin = 38, + .upper_margin = 31, + .lower_margin = 14, + .hsync_len = 124, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, + .flag = FB_MODE_IS_CEA, + }, + [51] = { + .name = "CEA VIC 51: 1440x480i@60", + .refresh = 60, + .xres = 1440, + .yres = 480, + .pixclock = 18518, /* 54.0MHz */ + .left_margin = 114, + .right_margin = 38, + .upper_margin = 31, + .lower_margin = 14, + .hsync_len = 124, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, + .flag = FB_MODE_IS_CEA, + }, + [52] = { + .name = "CEA VIC 52: 720x576@199", + .refresh = 199, + .xres = 720, + .yres = 576, + .pixclock = 9259, /* 108.0MHz */ + .left_margin = 68, + .right_margin = 12, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 64, + .vsync_len = 5, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [53] = { + .name = "CEA VIC 53: 720x576@199", + .refresh = 199, + .xres = 720, + .yres = 576, + .pixclock = 9259, /* 108.0MHz */ + .left_margin = 68, + .right_margin = 12, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 64, + .vsync_len = 5, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [54] = { + .name = "CEA VIC 54: 1440x576i@100", + .refresh = 100, + .xres = 1440, + .yres = 576, + .pixclock = 9259, /* 108.0MHz */ + .left_margin = 138, + .right_margin = 24, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 126, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, + .flag = FB_MODE_IS_CEA, + }, + [55] = { + .name = "CEA VIC 55: 1440x576i@100", + .refresh = 100, + .xres = 1440, + .yres = 576, + .pixclock = 9259, /* 108.0MHz */ + .left_margin = 138, + .right_margin = 24, + .upper_margin = 39, + .lower_margin = 10, + .hsync_len = 126, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, + .flag = FB_MODE_IS_CEA, + }, + [56] = { + .name = "CEA VIC 56: 720x480@238", + .refresh = 238, + .xres = 720, + .yres = 480, + .pixclock = 9259, /* 108.0MHz */ + .left_margin = 60, + .right_margin = 16, + .upper_margin = 30, + .lower_margin = 15, + .hsync_len = 62, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [57] = { + .name = "CEA VIC 57: 720x480@238", + .refresh = 238, + .xres = 720, + .yres = 480, + .pixclock = 9259, /* 108.0MHz */ + .left_margin = 60, + .right_margin = 16, + .upper_margin = 30, + .lower_margin = 15, + .hsync_len = 62, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [58] = { + .name = "CEA VIC 58: 1440x480i@119", + .refresh = 119, + .xres = 1440, + .yres = 480, + .pixclock = 9259, /* 108.0MHz */ + .left_margin = 114, + .right_margin = 38, + .upper_margin = 31, + .lower_margin = 14, + .hsync_len = 124, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, + .flag = FB_MODE_IS_CEA, + }, + [59] = { + .name = "CEA VIC 59: 1440x480i@119", + .refresh = 119, + .xres = 1440, + .yres = 480, + .pixclock = 9259, /* 108.0MHz */ + .left_margin = 114, + .right_margin = 38, + .upper_margin = 31, + .lower_margin = 14, + .hsync_len = 124, + .vsync_len = 6, + .sync = FB_SYNC_BROADCAST, + .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, + .flag = FB_MODE_IS_CEA, + }, + [60] = { + .name = "CEA VIC 60: 1280x720@24", + .refresh = 24, + .xres = 1280, + .yres = 720, + .pixclock = 16835, /* 59.400MHz */ + .left_margin = 220, + .right_margin = 1760, + .upper_margin = 20, + .lower_margin = 10, + .hsync_len = 40, + .vsync_len = 5, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [61] = { + .name = "CEA VIC 61: 1280x720@25", + .refresh = 25, + .xres = 1280, + .yres = 720, + .pixclock = 13468, /* 74.250MHz */ + .left_margin = 220, + .right_margin = 2420, + .upper_margin = 20, + .lower_margin = 10, + .hsync_len = 40, + .vsync_len = 5, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [62] = { + .name = "CEA VIC 62: 1280x720@30", + .refresh = 30, + .xres = 1280, + .yres = 720, + .pixclock = 13468, /* 74.250MHz */ + .left_margin = 220, + .right_margin = 1760, + .upper_margin = 20, + .lower_margin = 10, + .hsync_len = 40, + .vsync_len = 5, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [63] = { + .name = "CEA VIC 63: 1920x1080@120", + .refresh = 120, + .xres = 1920, + .yres = 1080, + .pixclock = 3367, /* 297.0MHz */ + .left_margin = 148, + .right_margin = 88, + .upper_margin = 36, + .lower_margin = 9, + .hsync_len = 44, + .vsync_len = 5, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, + [64] = { + .name = "CEA VIC 64: 1920x1080@100", + .refresh = 100, + .xres = 1920, + .yres = 1080, + .pixclock = 3367, /* 297.0MHz */ + .left_margin = 148, + .right_margin = 528, + .upper_margin = 31, + .lower_margin = 14, + .hsync_len = 44, + .vsync_len = 10, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, + .flag = FB_MODE_IS_CEA, + }, +}; diff --git a/drivers/video/mxc/mxc_ipuv3_fb.c b/drivers/video/mxc/mxc_ipuv3_fb.c index f78b18c3325..6fed79af171 100644 --- a/drivers/video/mxc/mxc_ipuv3_fb.c +++ b/drivers/video/mxc/mxc_ipuv3_fb.c @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include @@ -1715,15 +1716,16 @@ static int mxcfb_probe(struct platform_device *pdev) } ipu_disable_irq(mxcfbi->ipu_ch_irq); - /* Need dummy values until real panel is configured */ - fbi->var.xres = 640; - fbi->var.yres = 480; + /* default to 640x480@60 */ + fb_videomode_to_var(&fbi->var, &cea_modes[1]); if (plat_data && !mxcfbi->ipu_di_pix_fmt) { mxcfbi->ipu_di_pix_fmt = plat_data->interface_pix_fmt; +#if 0 /* try and use a bit depth closest to the bit depth we use for the panel */ -// if (!mxcfbi->default_bpp) -// mxcfbi->default_bpp = pixfmt_to_bpp(plat_data->interface_pix_fmt); + if (!mxcfbi->default_bpp) + mxcfbi->default_bpp = pixfmt_to_bpp(plat_data->interface_pix_fmt); +#endif } if (!mxcfbi->default_bpp) diff --git a/drivers/video/mxc/siihdmi.c b/drivers/video/mxc/siihdmi.c index 0822dff1395..16faa9a4422 100644 --- a/drivers/video/mxc/siihdmi.c +++ b/drivers/video/mxc/siihdmi.c @@ -132,6 +132,8 @@ static inline int siihdmi_power_down(struct siihdmi_tx *tx) int ret; u8 ctrl; + memset((void *) &tx->sink.current_mode, 0, sizeof(struct fb_videomode)); + ctrl = SIIHDMI_SYS_CTRL_TMDS_OUTPUT_POWER_DOWN; if (tx->sink.type == SINK_TYPE_HDMI) ctrl |= SIIHDMI_SYS_CTRL_OUTPUT_MODE_SELECT_HDMI; @@ -411,6 +413,10 @@ static void siihdmi_set_vmode_registers(struct siihdmi_tx *tx, /* basic video mode data */ vmode[PIXEL_CLOCK] = (u16) (pixclk / 10); + /* + Silicon Image example code implies refresh to be 6000 for 60Hz? + This may work simply because we only test it on little-endian :( + */ vmode[REFRESH_RATE] = (u16) refresh; vmode[X_RESOLUTION] = (u16) htotal; vmode[Y_RESOLUTION] = (u16) vtotal; @@ -630,8 +636,8 @@ static inline void siihdmi_configure_audio(struct siihdmi_tx *tx) i2c_smbus_write_byte_data(tx->client, SIIHDMI_TPI_REG_I2S_AUDIO_SAMPLING_HBR, 0); i2c_smbus_write_byte_data(tx->client, SIIHDMI_TPI_REG_I2S_ORIGINAL_FREQ_SAMPLE_LENGTH, SIIHDMI_AUDIO_HANDLING_DOWN_SAMPLE); - siihdmi_set_audio_info_frame(tx); siihdmi_audio_unmute(tx); + siihdmi_set_audio_info_frame(tx); } static void siihdmi_print_modeline(const struct siihdmi_tx *tx, @@ -693,6 +699,13 @@ static int siihdmi_set_resolution(struct siihdmi_tx *tx, u8 ctrl; int ret; + if (0 == memcmp((void *) &tx->sink.current_mode, (void *) mode, sizeof(struct fb_videomode))) + { + return 0; + } + + memset((void *) &tx->sink.current_mode, 0, sizeof(struct fb_videomode)); + INFO("selected configuration: \n"); siihdmi_print_modeline(tx, mode, NULL); @@ -762,6 +775,8 @@ static int siihdmi_set_resolution(struct siihdmi_tx *tx, /* step 10: (potentially) enable HDCP */ + memcpy((void *) &tx->sink.current_mode, mode, sizeof(struct fb_videomode)); + return ret; } @@ -1089,6 +1104,7 @@ static int siihdmi_fb_event_handler(struct notifier_block *nb, case FB_EVENT_BLANK: switch (*((int *) event->data)) { case FB_BLANK_POWERDOWN: + /* oddly, nobody ever uses this..? */ return siihdmi_power_down(tx); case FB_BLANK_VSYNC_SUSPEND: case FB_BLANK_HSYNC_SUSPEND: diff --git a/drivers/video/mxc/siihdmi.h b/drivers/video/mxc/siihdmi.h index b0ad5499a2e..974dc3376cc 100644 --- a/drivers/video/mxc/siihdmi.h +++ b/drivers/video/mxc/siihdmi.h @@ -410,6 +410,7 @@ struct siihdmi_tx { } scanning; struct fb_videomode preferred_mode; + struct fb_videomode current_mode; } sink; }; diff --git a/include/linux/cea861_modes.h b/include/linux/cea861_modes.h index 4b923df0c60..09973d233eb 100644 --- a/include/linux/cea861_modes.h +++ b/include/linux/cea861_modes.h @@ -1,998 +1 @@ -const struct fb_videomode cea_modes[] = { - [1] = { - .name = "CEA VIC 1: 640x480@60", - .refresh = 60, - .xres = 640, - .yres = 480, - .pixclock = 39721, /* 25.175MHz */ - .left_margin = 48, - .right_margin = 16, - .upper_margin = 33, - .lower_margin = 12, - .hsync_len = 96, - .vsync_len = 2, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [2] = { - .name = "CEA VIC 2: 720x480@60", - .refresh = 60, - .xres = 720, - .yres = 480, - .pixclock = 37037, /* 27.0MHz */ - .left_margin = 60, - .right_margin = 16, - .upper_margin = 30, - .lower_margin = 15, - .hsync_len = 62, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [3] = { - .name = "CEA VIC 3: 720x480@60", - .refresh = 60, - .xres = 720, - .yres = 480, - .pixclock = 37037, /* 27.0MHz */ - .left_margin = 60, - .right_margin = 16, - .upper_margin = 30, - .lower_margin = 15, - .hsync_len = 62, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [4] = { - .name = "CEA VIC 4: 1280x720@60", - .refresh = 60, - .xres = 1280, - .yres = 720, - .pixclock = 13468, /* 74.250MHz */ - .left_margin = 220, - .right_margin = 110, - .upper_margin = 20, - .lower_margin = 10, - .hsync_len = 40, - .vsync_len = 5, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [5] = { - .name = "CEA VIC 5: 1920x1080i@30", - .refresh = 30, - .xres = 1920, - .yres = 1080, - .pixclock = 13468, /* 74.250MHz */ - .left_margin = 148, - .right_margin = 88, - .upper_margin = 31, - .lower_margin = 14, - .hsync_len = 44, - .vsync_len = 10, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED, - .flag = FB_MODE_IS_CEA, - }, - [6] = { - .name = "CEA VIC 6: 1440x480i@30", - .refresh = 30, - .xres = 1440, - .yres = 480, - .pixclock = 37037, /* 27.0MHz */ - .left_margin = 114, - .right_margin = 38, - .upper_margin = 31, - .lower_margin = 14, - .hsync_len = 124, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, - .flag = FB_MODE_IS_CEA, - }, - [7] = { - .name = "CEA VIC 7: 1440x480i@30", - .refresh = 30, - .xres = 1440, - .yres = 480, - .pixclock = 37037, /* 27.0MHz */ - .left_margin = 114, - .right_margin = 38, - .upper_margin = 31, - .lower_margin = 14, - .hsync_len = 124, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, - .flag = FB_MODE_IS_CEA, - }, - [8] = { - .name = "CEA VIC 8: 1440x240@60", - .refresh = 60, - .xres = 1440, - .yres = 240, - .pixclock = 37037, /* 27.0MHz */ - .left_margin = 114, - .right_margin = 38, - .upper_margin = 15, - .lower_margin = 7, - .hsync_len = 124, - .vsync_len = 3, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [9] = { - .name = "CEA VIC 9: 1440x240@60", - .refresh = 60, - .xres = 1440, - .yres = 240, - .pixclock = 37037, /* 27.0MHz */ - .left_margin = 114, - .right_margin = 38, - .upper_margin = 15, - .lower_margin = 7, - .hsync_len = 124, - .vsync_len = 3, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [10] = { - .name = "CEA VIC 10: 2880x480i@30", - .refresh = 30, - .xres = 2880, - .yres = 480, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 228, - .right_margin = 76, - .upper_margin = 31, - .lower_margin = 14, - .hsync_len = 248, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, - .flag = FB_MODE_IS_CEA, - }, - [11] = { - .name = "CEA VIC 11: 2880x480i@30", - .refresh = 30, - .xres = 2880, - .yres = 480, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 228, - .right_margin = 76, - .upper_margin = 31, - .lower_margin = 14, - .hsync_len = 248, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, - .flag = FB_MODE_IS_CEA, - }, - [12] = { - .name = "CEA VIC 12: 2880x240@60", - .refresh = 60, - .xres = 2880, - .yres = 240, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 228, - .right_margin = 76, - .upper_margin = 15, - .lower_margin = 7, - .hsync_len = 248, - .vsync_len = 3, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [13] = { - .name = "CEA VIC 13: 2880x240@60", - .refresh = 60, - .xres = 2880, - .yres = 240, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 228, - .right_margin = 76, - .upper_margin = 15, - .lower_margin = 7, - .hsync_len = 248, - .vsync_len = 3, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [14] = { - .name = "CEA VIC 14: 1440x480@60", - .refresh = 60, - .xres = 1440, - .yres = 480, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 120, - .right_margin = 32, - .upper_margin = 30, - .lower_margin = 15, - .hsync_len = 124, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [15] = { - .name = "CEA VIC 15: 1440x480@60", - .refresh = 60, - .xres = 1440, - .yres = 480, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 120, - .right_margin = 32, - .upper_margin = 30, - .lower_margin = 15, - .hsync_len = 124, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [16] = { - .name = "CEA VIC 16: 1920x1080@60", - .refresh = 60, - .xres = 1920, - .yres = 1080, - .pixclock = 6734, /* 148.500MHz */ - .left_margin = 148, - .right_margin = 88, - .upper_margin = 36, - .lower_margin = 9, - .hsync_len = 44, - .vsync_len = 5, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [17] = { - .name = "CEA VIC 17: 720x576@50", - .refresh = 50, - .xres = 720, - .yres = 576, - .pixclock = 37037, /* 27.0MHz */ - .left_margin = 68, - .right_margin = 12, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 64, - .vsync_len = 5, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [18] = { - .name = "CEA VIC 18: 720x576@50", - .refresh = 50, - .xres = 720, - .yres = 576, - .pixclock = 37037, /* 27.0MHz */ - .left_margin = 68, - .right_margin = 12, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 64, - .vsync_len = 5, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [19] = { - .name = "CEA VIC 19: 1280x720@50", - .refresh = 50, - .xres = 1280, - .yres = 720, - .pixclock = 13468, /* 74.250MHz */ - .left_margin = 220, - .right_margin = 440, - .upper_margin = 20, - .lower_margin = 10, - .hsync_len = 40, - .vsync_len = 5, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [20] = { - .name = "CEA VIC 20: 1920x1080i@25", - .refresh = 25, - .xres = 1920, - .yres = 1080, - .pixclock = 13468, /* 74.250MHz */ - .left_margin = 148, - .right_margin = 528, - .upper_margin = 31, - .lower_margin = 14, - .hsync_len = 44, - .vsync_len = 10, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED, - .flag = FB_MODE_IS_CEA, - }, - [21] = { - .name = "CEA VIC 21: 1440x576i@25", - .refresh = 25, - .xres = 1440, - .yres = 576, - .pixclock = 37037, /* 27.0MHz */ - .left_margin = 138, - .right_margin = 24, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 126, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, - .flag = FB_MODE_IS_CEA, - }, - [22] = { - .name = "CEA VIC 22: 1440x576i@25", - .refresh = 25, - .xres = 1440, - .yres = 576, - .pixclock = 37037, /* 27.0MHz */ - .left_margin = 138, - .right_margin = 24, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 126, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, - .flag = FB_MODE_IS_CEA, - }, - [23] = { - .name = "CEA VIC 23: 1440x288@50", - .refresh = 50, - .xres = 1440, - .yres = 288, - .pixclock = 37037, /* 27.0MHz */ - .left_margin = 138, - .right_margin = 24, - .upper_margin = 19, - .lower_margin = 5, - .hsync_len = 126, - .vsync_len = 3, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [24] = { - .name = "CEA VIC 24: 1440x288@50", - .refresh = 50, - .xres = 1440, - .yres = 288, - .pixclock = 37037, /* 27.0MHz */ - .left_margin = 138, - .right_margin = 24, - .upper_margin = 19, - .lower_margin = 5, - .hsync_len = 126, - .vsync_len = 3, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [25] = { - .name = "CEA VIC 25: 2880x576i@25", - .refresh = 25, - .xres = 2880, - .yres = 576, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 276, - .right_margin = 48, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 252, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, - .flag = FB_MODE_IS_CEA, - }, - [26] = { - .name = "CEA VIC 26: 2880x576i@25", - .refresh = 25, - .xres = 2880, - .yres = 576, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 276, - .right_margin = 48, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 252, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, - .flag = FB_MODE_IS_CEA, - }, - [27] = { - .name = "CEA VIC 27: 2880x288@50", - .refresh = 50, - .xres = 2880, - .yres = 288, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 276, - .right_margin = 48, - .upper_margin = 19, - .lower_margin = 5, - .hsync_len = 252, - .vsync_len = 3, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [28] = { - .name = "CEA VIC 28: 2880x288@50", - .refresh = 50, - .xres = 2880, - .yres = 288, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 276, - .right_margin = 48, - .upper_margin = 19, - .lower_margin = 5, - .hsync_len = 252, - .vsync_len = 3, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [29] = { - .name = "CEA VIC 29: 1440x576@50", - .refresh = 50, - .xres = 1440, - .yres = 576, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 136, - .right_margin = 24, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 128, - .vsync_len = 5, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [30] = { - .name = "CEA VIC 30: 1440x576@50", - .refresh = 50, - .xres = 1440, - .yres = 576, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 136, - .right_margin = 24, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 128, - .vsync_len = 5, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [31] = { - .name = "CEA VIC 31: 1920x1080@50", - .refresh = 50, - .xres = 1920, - .yres = 1080, - .pixclock = 6734, /* 148.500MHz */ - .left_margin = 148, - .right_margin = 528, - .upper_margin = 36, - .lower_margin = 9, - .hsync_len = 44, - .vsync_len = 5, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [32] = { - .name = "CEA VIC 32: 1920x1080@24", - .refresh = 24, - .xres = 1920, - .yres = 1080, - .pixclock = 13468, /* 74.250MHz */ - .left_margin = 148, - .right_margin = 638, - .upper_margin = 36, - .lower_margin = 9, - .hsync_len = 44, - .vsync_len = 5, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [33] = { - .name = "CEA VIC 33: 1920x1080@25", - .refresh = 25, - .xres = 1920, - .yres = 1080, - .pixclock = 13468, /* 74.250MHz */ - .left_margin = 148, - .right_margin = 528, - .upper_margin = 36, - .lower_margin = 9, - .hsync_len = 44, - .vsync_len = 5, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [34] = { - .name = "CEA VIC 34: 1920x1080@30", - .refresh = 30, - .xres = 1920, - .yres = 1080, - .pixclock = 13468, /* 74.250MHz */ - .left_margin = 148, - .right_margin = 88, - .upper_margin = 36, - .lower_margin = 9, - .hsync_len = 44, - .vsync_len = 5, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [35] = { - .name = "CEA VIC 35: 2880x480@60", - .refresh = 60, - .xres = 2880, - .yres = 480, - .pixclock = 9259, /* 108.0MHz */ - .left_margin = 240, - .right_margin = 64, - .upper_margin = 30, - .lower_margin = 15, - .hsync_len = 248, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [36] = { - .name = "CEA VIC 36: 2880x480@60", - .refresh = 60, - .xres = 2880, - .yres = 480, - .pixclock = 9259, /* 108.0MHz */ - .left_margin = 240, - .right_margin = 64, - .upper_margin = 30, - .lower_margin = 15, - .hsync_len = 248, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [37] = { - .name = "CEA VIC 37: 2880x576@50", - .refresh = 50, - .xres = 2880, - .yres = 576, - .pixclock = 9259, /* 108.0MHz */ - .left_margin = 272, - .right_margin = 48, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 256, - .vsync_len = 5, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [38] = { - .name = "CEA VIC 38: 2880x576@50", - .refresh = 50, - .xres = 2880, - .yres = 576, - .pixclock = 9259, /* 108.0MHz */ - .left_margin = 272, - .right_margin = 48, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 256, - .vsync_len = 5, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [39] = { - .name = "CEA VIC 39: 1920x1080i@25", - .refresh = 25, - .xres = 1920, - .yres = 1080, - .pixclock = 13888, /* 72.0MHz */ - .left_margin = 184, - .right_margin = 32, - .upper_margin = 114, - .lower_margin = 56, - .hsync_len = 168, - .vsync_len = 10, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED, - .flag = FB_MODE_IS_CEA, - }, - [40] = { - .name = "CEA VIC 40: 1920x1080i@50", - .refresh = 50, - .xres = 1920, - .yres = 1080, - .pixclock = 6734, /* 148.500MHz */ - .left_margin = 148, - .right_margin = 528, - .upper_margin = 31, - .lower_margin = 14, - .hsync_len = 44, - .vsync_len = 10, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED, - .flag = FB_MODE_IS_CEA, - }, - [41] = { - .name = "CEA VIC 41: 1280x720@100", - .refresh = 100, - .xres = 1280, - .yres = 720, - .pixclock = 6734, /* 148.500MHz */ - .left_margin = 220, - .right_margin = 440, - .upper_margin = 20, - .lower_margin = 10, - .hsync_len = 40, - .vsync_len = 5, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [42] = { - .name = "CEA VIC 42: 720x576@100", - .refresh = 100, - .xres = 720, - .yres = 576, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 68, - .right_margin = 12, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 64, - .vsync_len = 5, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [43] = { - .name = "CEA VIC 43: 720x576@100", - .refresh = 100, - .xres = 720, - .yres = 576, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 68, - .right_margin = 12, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 64, - .vsync_len = 5, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [44] = { - .name = "CEA VIC 44: 1440x576@50", - .refresh = 50, - .xres = 1440, - .yres = 576, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 138, - .right_margin = 24, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 126, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [45] = { - .name = "CEA VIC 45: 1440x576@50", - .refresh = 50, - .xres = 1440, - .yres = 576, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 138, - .right_margin = 24, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 126, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - .vmode = FB_VMODE_DOUBLE, - }, - [46] = { - .name = "CEA VIC 46: 1920x1080i@60", - .refresh = 60, - .xres = 1920, - .yres = 1080, - .pixclock = 6734, /* 148.500MHz */ - .left_margin = 148, - .right_margin = 88, - .upper_margin = 31, - .lower_margin = 14, - .hsync_len = 44, - .vsync_len = 10, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED, - .flag = FB_MODE_IS_CEA, - }, - [47] = { - .name = "CEA VIC 47: 1280x720@120", - .refresh = 120, - .xres = 1280, - .yres = 720, - .pixclock = 6734, /* 148.500MHz */ - .left_margin = 220, - .right_margin = 110, - .upper_margin = 20, - .lower_margin = 10, - .hsync_len = 40, - .vsync_len = 5, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [48] = { - .name = "CEA VIC 48: 720x480@119", - .refresh = 119, - .xres = 720, - .yres = 480, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 60, - .right_margin = 16, - .upper_margin = 30, - .lower_margin = 15, - .hsync_len = 62, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [49] = { - .name = "CEA VIC 49: 720x480@119", - .refresh = 119, - .xres = 720, - .yres = 480, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 60, - .right_margin = 16, - .upper_margin = 30, - .lower_margin = 15, - .hsync_len = 62, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [50] = { - .name = "CEA VIC 50: 1440x480i@60", - .refresh = 60, - .xres = 1440, - .yres = 480, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 114, - .right_margin = 38, - .upper_margin = 31, - .lower_margin = 14, - .hsync_len = 124, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, - .flag = FB_MODE_IS_CEA, - }, - [51] = { - .name = "CEA VIC 51: 1440x480i@60", - .refresh = 60, - .xres = 1440, - .yres = 480, - .pixclock = 18518, /* 54.0MHz */ - .left_margin = 114, - .right_margin = 38, - .upper_margin = 31, - .lower_margin = 14, - .hsync_len = 124, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, - .flag = FB_MODE_IS_CEA, - }, - [52] = { - .name = "CEA VIC 52: 720x576@199", - .refresh = 199, - .xres = 720, - .yres = 576, - .pixclock = 9259, /* 108.0MHz */ - .left_margin = 68, - .right_margin = 12, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 64, - .vsync_len = 5, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [53] = { - .name = "CEA VIC 53: 720x576@199", - .refresh = 199, - .xres = 720, - .yres = 576, - .pixclock = 9259, /* 108.0MHz */ - .left_margin = 68, - .right_margin = 12, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 64, - .vsync_len = 5, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [54] = { - .name = "CEA VIC 54: 1440x576i@100", - .refresh = 100, - .xres = 1440, - .yres = 576, - .pixclock = 9259, /* 108.0MHz */ - .left_margin = 138, - .right_margin = 24, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 126, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, - .flag = FB_MODE_IS_CEA, - }, - [55] = { - .name = "CEA VIC 55: 1440x576i@100", - .refresh = 100, - .xres = 1440, - .yres = 576, - .pixclock = 9259, /* 108.0MHz */ - .left_margin = 138, - .right_margin = 24, - .upper_margin = 39, - .lower_margin = 10, - .hsync_len = 126, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, - .flag = FB_MODE_IS_CEA, - }, - [56] = { - .name = "CEA VIC 56: 720x480@238", - .refresh = 238, - .xres = 720, - .yres = 480, - .pixclock = 9259, /* 108.0MHz */ - .left_margin = 60, - .right_margin = 16, - .upper_margin = 30, - .lower_margin = 15, - .hsync_len = 62, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [57] = { - .name = "CEA VIC 57: 720x480@238", - .refresh = 238, - .xres = 720, - .yres = 480, - .pixclock = 9259, /* 108.0MHz */ - .left_margin = 60, - .right_margin = 16, - .upper_margin = 30, - .lower_margin = 15, - .hsync_len = 62, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [58] = { - .name = "CEA VIC 58: 1440x480i@119", - .refresh = 119, - .xres = 1440, - .yres = 480, - .pixclock = 9259, /* 108.0MHz */ - .left_margin = 114, - .right_margin = 38, - .upper_margin = 31, - .lower_margin = 14, - .hsync_len = 124, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, - .flag = FB_MODE_IS_CEA, - }, - [59] = { - .name = "CEA VIC 59: 1440x480i@119", - .refresh = 119, - .xres = 1440, - .yres = 480, - .pixclock = 9259, /* 108.0MHz */ - .left_margin = 114, - .right_margin = 38, - .upper_margin = 31, - .lower_margin = 14, - .hsync_len = 124, - .vsync_len = 6, - .sync = FB_SYNC_BROADCAST, - .vmode = FB_VMODE_INTERLACED | FB_VMODE_DOUBLE, - .flag = FB_MODE_IS_CEA, - }, - [60] = { - .name = "CEA VIC 60: 1280x720@24", - .refresh = 24, - .xres = 1280, - .yres = 720, - .pixclock = 16835, /* 59.400MHz */ - .left_margin = 220, - .right_margin = 1760, - .upper_margin = 20, - .lower_margin = 10, - .hsync_len = 40, - .vsync_len = 5, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [61] = { - .name = "CEA VIC 61: 1280x720@25", - .refresh = 25, - .xres = 1280, - .yres = 720, - .pixclock = 13468, /* 74.250MHz */ - .left_margin = 220, - .right_margin = 2420, - .upper_margin = 20, - .lower_margin = 10, - .hsync_len = 40, - .vsync_len = 5, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [62] = { - .name = "CEA VIC 62: 1280x720@30", - .refresh = 30, - .xres = 1280, - .yres = 720, - .pixclock = 13468, /* 74.250MHz */ - .left_margin = 220, - .right_margin = 1760, - .upper_margin = 20, - .lower_margin = 10, - .hsync_len = 40, - .vsync_len = 5, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [63] = { - .name = "CEA VIC 63: 1920x1080@120", - .refresh = 120, - .xres = 1920, - .yres = 1080, - .pixclock = 3367, /* 297.0MHz */ - .left_margin = 148, - .right_margin = 88, - .upper_margin = 36, - .lower_margin = 9, - .hsync_len = 44, - .vsync_len = 5, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, - [64] = { - .name = "CEA VIC 64: 1920x1080@100", - .refresh = 100, - .xres = 1920, - .yres = 1080, - .pixclock = 3367, /* 297.0MHz */ - .left_margin = 148, - .right_margin = 528, - .upper_margin = 31, - .lower_margin = 14, - .hsync_len = 44, - .vsync_len = 10, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT | FB_SYNC_BROADCAST, - .flag = FB_MODE_IS_CEA, - }, -}; +extern const struct fb_videomode cea_modes[64];