ODROID: media: hdmitx: add new hdmi resolutions

Change-Id: Idf6a74dcb73c3c6a03fb2cdf41219a2acfb31ccb
This commit is contained in:
Chris KIM
2019-12-26 14:05:22 +09:00
committed by Luke Go
parent 7bd41e8460
commit c5dd5d0f3c
7 changed files with 263 additions and 1 deletions

View File

@@ -1507,9 +1507,58 @@ static struct hdmi_format_para fmt_para_2560x1080p60_64x27 = {
/*
* VESA timing describe
*/
static struct hdmi_format_para fmt_para_vesa_480x320p60_4x3 = {
.vic = HDMIV_480x320p60hz,
.name = "480x320p60hz",
.sname = "480x320p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
.tmds_clk_div40 = 0,
.tmds_clk = 25200,
.timing = {
.pixel_freq = 25200,
.frac_freq = 25200,
.h_freq = 31500,
.v_freq = 60000,
.vsync_polarity = 0, /* -VSync */
.hsync_polarity = 0, /* -HSync */
.h_active = 480,
.h_total = 800,
.h_blank = 320,
.h_front = 120,
.h_sync = 100,
.h_back = 100,
.v_active = 320,
.v_total = 525,
.v_blank = 205,
.v_front = 8,
.v_sync = 8,
.v_back = 189,
.v_sync_ln = 1,
},
.hdmitx_vinfo = {
.name = "480x320p60hz",
.mode = VMODE_HDMI,
.width = 480,
.height = 320,
.field_height = 320,
.aspect_ratio_num = 4,
.aspect_ratio_den = 3,
.sync_duration_num = 60,
.sync_duration_den = 1,
.video_clk = 25200000,
.htotal = 800,
.vtotal = 525,
.viu_color_fmt = COLOR_FMT_YUV444,
.viu_mux = VIU_MUX_ENCP,
},
};
static struct hdmi_format_para fmt_para_vesa_640x480p60_4x3 = {
.vic = HDMIV_640x480p60hz,
.name = "640x480p60hz",
.sname = "640x480p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -1555,9 +1604,58 @@ static struct hdmi_format_para fmt_para_vesa_640x480p60_4x3 = {
},
};
static struct hdmi_format_para fmt_para_vesa_480x800p60_4x3 = {
.vic = HDMIV_480x800p60hz,
.name = "480x800p60hz",
.sname = "480x800p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
.tmds_clk_div40 = 0,
.tmds_clk = 32000,
.timing = {
.pixel_freq = 32000,
.frac_freq = 32000,
.h_freq = 52600,
.v_freq = 62300,
.vsync_polarity = 0,
.hsync_polarity = 0,
.h_active = 480,
.h_total = 608,
.h_blank = 128,
.h_front = 40,
.h_sync = 48,
.h_back = 40,
.v_active = 800,
.v_total = 845,
.v_blank = 45,
.v_front = 13,
.v_sync = 3,
.v_back = 29,
.v_sync_ln = 1,
},
.hdmitx_vinfo = {
.name = "480x800p60hz",
.mode = VMODE_HDMI,
.width = 480,
.height = 800,
.field_height = 800,
.aspect_ratio_num = 4,
.aspect_ratio_den = 3,
.sync_duration_num = 60,
.sync_duration_den = 1,
.video_clk = 32000000,
.htotal = 608,
.vtotal = 845,
.viu_color_fmt = COLOR_FMT_YUV444,
.viu_mux = VIU_MUX_ENCP,
},
};
static struct hdmi_format_para fmt_para_vesa_800x480p60_4x3 = {
.vic = HDMIV_800x480p60hz,
.name = "800x480p60hz",
.sname = "800x480p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -1606,6 +1704,7 @@ static struct hdmi_format_para fmt_para_vesa_800x480p60_4x3 = {
static struct hdmi_format_para fmt_para_vesa_800x600p60_4x3 = {
.vic = HDMIV_800x600p60hz,
.name = "800x600p60hz",
.sname = "800x600p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -1654,6 +1753,7 @@ static struct hdmi_format_para fmt_para_vesa_800x600p60_4x3 = {
static struct hdmi_format_para fmt_para_vesa_852x480p60_213x120 = {
.vic = HDMIV_852x480p60hz,
.name = "852x480p60hz",
.sname = "852x480p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -1702,6 +1802,7 @@ static struct hdmi_format_para fmt_para_vesa_852x480p60_213x120 = {
static struct hdmi_format_para fmt_para_vesa_854x480p60_427x240 = {
.vic = HDMIV_854x480p60hz,
.name = "854x480p60hz",
.sname = "854x480p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -1750,6 +1851,7 @@ static struct hdmi_format_para fmt_para_vesa_854x480p60_427x240 = {
static struct hdmi_format_para fmt_para_vesa_1024x600p60_17x10 = {
.vic = HDMIV_1024x600p60hz,
.name = "1024x600p60hz",
.sname = "1024x600p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -1798,6 +1900,7 @@ static struct hdmi_format_para fmt_para_vesa_1024x600p60_17x10 = {
static struct hdmi_format_para fmt_para_vesa_1024x768p60_4x3 = {
.vic = HDMIV_1024x768p60hz,
.name = "1024x768p60hz",
.sname = "1024x768p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -1846,6 +1949,7 @@ static struct hdmi_format_para fmt_para_vesa_1024x768p60_4x3 = {
static struct hdmi_format_para fmt_para_vesa_1152x864p75_4x3 = {
.vic = HDMIV_1152x864p75hz,
.name = "1152x864p75hz",
.sname = "1152x864p75hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -1893,6 +1997,7 @@ static struct hdmi_format_para fmt_para_vesa_1152x864p75_4x3 = {
static struct hdmi_format_para fmt_para_vesa_1280x768p60_5x3 = {
.vic = HDMIV_1280x768p60hz,
.name = "1280x768p60hz",
.sname = "1280x768p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -1940,6 +2045,7 @@ static struct hdmi_format_para fmt_para_vesa_1280x768p60_5x3 = {
static struct hdmi_format_para fmt_para_vesa_1280x800p60_8x5 = {
.vic = HDMIV_1280x800p60hz,
.name = "1280x800p60hz",
.sname = "1280x800p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -1988,6 +2094,7 @@ static struct hdmi_format_para fmt_para_vesa_1280x800p60_8x5 = {
static struct hdmi_format_para fmt_para_vesa_1280x960p60_4x3 = {
.vic = HDMIV_1280x960p60hz,
.name = "1280x960p60hz",
.sname = "1280x960p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -2035,6 +2142,7 @@ static struct hdmi_format_para fmt_para_vesa_1280x960p60_4x3 = {
static struct hdmi_format_para fmt_para_vesa_1280x1024p60_5x4 = {
.vic = HDMIV_1280x1024p60hz,
.name = "1280x1024p60hz",
.sname = "1280x1024p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -2083,6 +2191,7 @@ static struct hdmi_format_para fmt_para_vesa_1280x1024p60_5x4 = {
static struct hdmi_format_para fmt_para_vesa_1360x768p60_16x9 = {
.vic = HDMIV_1360x768p60hz,
.name = "1360x768p60hz",
.sname = "1360x768p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -2131,6 +2240,7 @@ static struct hdmi_format_para fmt_para_vesa_1360x768p60_16x9 = {
static struct hdmi_format_para fmt_para_vesa_1366x768p60_16x9 = {
.vic = HDMIV_1366x768p60hz,
.name = "1366x768p60hz",
.sname = "1366x768p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -2179,6 +2289,7 @@ static struct hdmi_format_para fmt_para_vesa_1366x768p60_16x9 = {
static struct hdmi_format_para fmt_para_vesa_1400x1050p60_4x3 = {
.vic = HDMIV_1400x1050p60hz,
.name = "1400x1050p60hz",
.sname = "1400x1050p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -2227,6 +2338,7 @@ static struct hdmi_format_para fmt_para_vesa_1400x1050p60_4x3 = {
static struct hdmi_format_para fmt_para_vesa_1440x900p60_8x5 = {
.vic = HDMIV_1440x900p60hz,
.name = "1440x900p60hz",
.sname = "1440x900p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -2324,6 +2436,7 @@ static struct hdmi_format_para fmt_para_vesa_1440x2560p60_9x16 = {
static struct hdmi_format_para fmt_para_vesa_1600x900p60_16x9 = {
.vic = HDMIV_1600x900p60hz,
.name = "1600x900p60hz",
.sname = "1600x900p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -2372,6 +2485,7 @@ static struct hdmi_format_para fmt_para_vesa_1600x900p60_16x9 = {
static struct hdmi_format_para fmt_para_vesa_1600x1200p60_4x3 = {
.vic = HDMIV_1600x1200p60hz,
.name = "1600x1200p60hz",
.sname = "1600x1200p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -2420,6 +2534,7 @@ static struct hdmi_format_para fmt_para_vesa_1600x1200p60_4x3 = {
static struct hdmi_format_para fmt_para_vesa_1680x1050p60_8x5 = {
.vic = HDMIV_1680x1050p60hz,
.name = "1680x1050p60hz",
.sname = "1680x1050p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -2468,6 +2583,7 @@ static struct hdmi_format_para fmt_para_vesa_1680x1050p60_8x5 = {
static struct hdmi_format_para fmt_para_vesa_1920x1200p60_8x5 = {
.vic = HDMIV_1920x1200p60hz,
.name = "1920x1200p60hz",
.sname = "1920x1200p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -2516,6 +2632,7 @@ static struct hdmi_format_para fmt_para_vesa_1920x1200p60_8x5 = {
static struct hdmi_format_para fmt_para_vesa_2160x1200p90_9x5 = {
.vic = HDMIV_2160x1200p90hz,
.name = "2160x1200p90hz",
.sname = "2160x1200p90hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -2564,6 +2681,7 @@ static struct hdmi_format_para fmt_para_vesa_2160x1200p90_9x5 = {
static struct hdmi_format_para fmt_para_vesa_2560x1600p60_8x5 = {
.vic = HDMIV_2560x1600p60hz,
.name = "2560x1600p60hz",
.sname = "2560x1600p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
@@ -2630,6 +2748,54 @@ static struct hdmi_format_para fmt_para_custombuilt = {
},
};
static struct hdmi_format_para fmt_para_vesa_2560x1440p60_16x9 = {
.vic = HDMIV_2560x1440p60hz,
.name = "2560x1440p60hz",
.sname = "2560x1440p60hz",
.pixel_repetition_factor = 0,
.progress_mode = 1,
.scrambler_en = 0,
.tmds_clk_div40 = 0,
.tmds_clk = 241500,
.timing = {
.pixel_freq = 241500,
.frac_freq = 241500,
.h_freq = 88790,
.v_freq = 60000,
.vsync_polarity = 1,
.hsync_polarity = 1,
.h_active = 2560,
.h_total = 2720,
.h_blank = 160,
.h_front = 48,
.h_sync = 32,
.h_back = 80,
.v_active = 1440,
.v_total = 1481,
.v_blank = 41,
.v_front = 2,
.v_sync = 5,
.v_back = 34,
.v_sync_ln = 1,
},
.hdmitx_vinfo = {
.name = "2560x1440p60hz",
.mode = VMODE_HDMI,
.width = 2560,
.height = 1440,
.field_height = 1440,
.aspect_ratio_num = 16,
.aspect_ratio_den = 9,
.sync_duration_num = 60,
.sync_duration_den = 1,
.video_clk = 241500000,
.htotal = 2720,
.vtotal = 1481,
.viu_color_fmt = COLOR_FMT_YUV444,
.viu_mux = VIU_MUX_ENCP,
},
};
static struct hdmi_format_para *all_fmt_paras[] = {
&fmt_para_3840x2160p60_16x9,
&fmt_para_3840x2160p50_16x9,
@@ -2660,7 +2826,9 @@ static struct hdmi_format_para *all_fmt_paras[] = {
&fmt_para_4096x2160p50_256x135_y420,
&fmt_para_2560x1080p50_64x27,
&fmt_para_2560x1080p60_64x27,
&fmt_para_vesa_480x320p60_4x3,
&fmt_para_vesa_640x480p60_4x3,
&fmt_para_vesa_480x800p60_4x3,
&fmt_para_vesa_800x480p60_4x3,
&fmt_para_vesa_800x600p60_4x3,
&fmt_para_vesa_852x480p60_213x120,
@@ -2683,6 +2851,7 @@ static struct hdmi_format_para *all_fmt_paras[] = {
&fmt_para_vesa_1920x1200p60_8x5,
&fmt_para_vesa_2160x1200p90_9x5,
&fmt_para_vesa_2560x1600p60_8x5,
&fmt_para_vesa_2560x1440p60_16x9,
&fmt_para_custombuilt,
&fmt_para_null_hdmi_fmt,
&fmt_para_non_hdmi_fmt,

View File

@@ -2539,7 +2539,9 @@ static struct dispmode_vic dispmode_vic_tab[] = {
{"smpte60hz", HDMI_4096x2160p60_256x135},
{"2160p60hz", HDMI_4k2k_60},
{"2160p50hz", HDMI_4k2k_50},
{"480x320p60hz", HDMIV_480x320p60hz},
{"640x480p60hz", HDMIV_640x480p60hz},
{"480x800p60hz", HDMIV_480x800p60hz},
{"800x480p60hz", HDMIV_800x480p60hz},
{"800x600p60hz", HDMIV_800x600p60hz},
{"852x480p60hz", HDMIV_852x480p60hz},

View File

@@ -2378,7 +2378,9 @@ const char *disp_mode_t[] = {
"2160p50hz",
"2160p60hz",
/* VESA modes */
"480x320p60hz",
"640x480p60hz",
"480x800p60hz",
"800x480p60hz",
"800x600p60hz",
"852x480p60hz",

View File

@@ -39,6 +39,17 @@ static void hdmi_set_vend_spec_infofram(struct hdmitx_dev *hdev,
enum hdmi_vic VideoCode);
static struct hdmitx_vidpara hdmi_tx_video_params[] = {
{
.VIC = HDMIV_480x320p60hz,
.color_prefer = COLORSPACE_RGB444,
.color_depth = COLORDEPTH_24B,
.bar_info = B_BAR_VERT_HORIZ,
.repeat_time = NO_REPEAT,
.aspect_ratio = ASPECT_RATIO_SAME_AS_SOURCE,
.cc = CC_ITU709,
.ss = SS_SCAN_UNDER,
.sc = SC_SCALE_HORIZ_VERT,
},
{
.VIC = HDMI_640x480p60,
.color_prefer = COLORSPACE_RGB444,
@@ -50,6 +61,17 @@ static struct hdmitx_vidpara hdmi_tx_video_params[] = {
.ss = SS_SCAN_UNDER,
.sc = SC_SCALE_HORIZ_VERT,
},
{
.VIC = HDMIV_480x800p60hz,
.color_prefer = COLORSPACE_RGB444,
.color_depth = COLORDEPTH_24B,
.bar_info = B_BAR_VERT_HORIZ,
.repeat_time = NO_REPEAT,
.aspect_ratio = ASPECT_RATIO_SAME_AS_SOURCE,
.cc = CC_ITU709,
.ss = SS_SCAN_UNDER,
.sc = SC_SCALE_HORIZ_VERT,
},
{
.VIC = HDMI_480p60,
.color_prefer = COLORSPACE_RGB444,

View File

@@ -711,6 +711,32 @@ static const struct reg_s tvregs_2560x1080p60hz[] = {
{MREG_END_MARKER, 0},
};
static const struct reg_s tvregs_vesa_480x320p60hz[] = {
{P_VENC_VDAC_SETTING, 0xff,},
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x31F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x20C,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x64,},
{P_ENCP_VIDEO_HAVON_END, 0x243,},
{P_ENCP_VIDEO_VAVON_BLINE, 0xBD,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x1FC,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x64,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x8,},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
static const struct reg_s tvregs_vesa_640x480p60hz[] = {
{P_VENC_VDAC_SETTING, 0xff,},
{P_ENCP_VIDEO_EN, 0,},
@@ -734,6 +760,33 @@ static const struct reg_s tvregs_vesa_640x480p60hz[] = {
{MREG_END_MARKER, 0}
};
static const struct reg_s tvregs_vesa_480x800p60hz[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_MODE, 0x4040},
{P_ENCP_VIDEO_MODE_ADV, 0x18},
{P_ENCP_VIDEO_MAX_PXCNT, 0x25F},
{P_ENCP_VIDEO_MAX_LNCNT, 0x34C},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x28},
{P_ENCP_VIDEO_HAVON_END, 0x207},
{P_ENCP_VIDEO_VAVON_BLINE, 0x1D},
{P_ENCP_VIDEO_VAVON_ELINE, 0x33C},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0},
{P_ENCP_VIDEO_HSO_END, 0x30},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E},
{P_ENCP_VIDEO_VSO_END, 0x32},
{P_ENCP_VIDEO_VSO_BLINE, 0x0},
{P_ENCP_VIDEO_VSO_ELINE, 0x3},
{P_ENCP_VIDEO_EN, 1},
{P_ENCI_VIDEO_EN, 0},
{MREG_END_MARKER, 0},
};
static const struct reg_s tvregs_vesa_800x600p60hz[] = {
{P_VENC_VDAC_SETTING, 0xff,},
{P_ENCP_VIDEO_EN, 0,},
@@ -1426,7 +1479,9 @@ static struct vic_tvregs_set tvregsTab[] = {
{HDMI_3840x2160p50_16x9_Y420, tvregs_4k2k_25hz},
{HDMI_2560x1080p50_64x27, tvregs_2560x1080p50hz},
{HDMI_2560x1080p60_64x27, tvregs_2560x1080p60hz},
{HDMIV_480x320p60hz, tvregs_vesa_480x320p60hz},
{HDMIV_640x480p60hz, tvregs_vesa_640x480p60hz},
{HDMIV_480x800p60hz, tvregs_vesa_480x800p60hz},
{HDMIV_800x480p60hz, tvregs_vesa_800x480p60hz},
{HDMIV_800x600p60hz, tvregs_vesa_800x600p60hz},
{HDMIV_852x480p60hz, tvregs_vesa_852x480p60hz},

View File

@@ -824,9 +824,16 @@ static struct hw_enc_clk_val_group setting_enc_clk_val_24[] = {
HDMI_VIC_END},
3450000, 1, 2, 2, VID_PLL_DIV_5, 1, 1, 1, -1},
/* pll setting for VESA modes */
{{HDMIV_480x320p60hz,
HDMI_VIC_END},
/* actual hpll : 2016000 */
2000000, 4, 2, 2, VID_PLL_DIV_5, 1, 1, 1, -1},
{{HDMIV_640x480p60hz, /* 4.028G / 16 = 251.75M */
HDMI_VIC_END},
4028000, 4, 4, 1, VID_PLL_DIV_5, 2, 1, 1, -1},
{{HDMIV_480x800p60hz,
HDMI_VIC_END},
2560000, 4, 2, 2, VID_PLL_DIV_5, 1, 1, 1, -1},
{{HDMIV_800x480p60hz,
HDMI_VIC_END},
4761600, 4, 4, 1, VID_PLL_DIV_5, 2, 1, 1, -1},
@@ -887,6 +894,9 @@ static struct hw_enc_clk_val_group setting_enc_clk_val_24[] = {
HDMI_VIC_END},
/* default 1080p60hz */
5940000, 4, 1, 2, VID_PLL_DIV_5, 1, 1, 1, -1},
{{HDMI_VIC_FAKE,
HDMI_VIC_END},
3450000, 1, 2, 2, VID_PLL_DIV_5, 1, 1, 1, -1},
};
/* For colordepth 10bits */

View File

@@ -181,7 +181,9 @@ enum hdmi_vic {
HDMI_VIC_Y420_MAX,
HDMI_VIC_FAKE = HDMITX_VIC420_FAKE_OFFSET,
HDMIV_640x480p60hz = HDMITX_VESA_OFFSET,
HDMIV_480x320p60hz = HDMITX_VESA_OFFSET,
HDMIV_640x480p60hz,
HDMIV_480x800p60hz,
HDMIV_800x480p60hz,
HDMIV_800x600p60hz,
HDMIV_852x480p60hz,