siihdmi: move some audio muting around based on Silicon Image example code

siihdmi: don't reconfigure the SII9022 just because there was a mode change if the mode is identical
ipuv3fb: default to a real 640x480 mode and not a "dummy" xres/yres
modedb: move cea modes to an extern so it only gets included once in the kernel
also: whitespace police
This commit is contained in:
Matt Sealey
2011-07-12 11:02:58 -05:00
parent 901989541c
commit 39e907d4bc
6 changed files with 1027 additions and 1005 deletions

View File

@@ -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/

File diff suppressed because it is too large Load Diff

View File

@@ -44,6 +44,7 @@
#include <linux/io.h>
#include <linux/ipu.h>
#include <linux/mxcfb.h>
#include <linux/cea861_modes.h>
#include <asm/mach-types.h>
#include <asm/uaccess.h>
#include <mach/hardware.h>
@@ -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)

View File

@@ -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:

View File

@@ -410,6 +410,7 @@ struct siihdmi_tx {
} scanning;
struct fb_videomode preferred_mode;
struct fb_videomode current_mode;
} sink;
};

View File

@@ -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];