diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_common/hdmi_parameters.c b/drivers/amlogic/media/vout/hdmitx/hdmi_common/hdmi_parameters.c index 244e303ca0c0..43f1e2d79dd9 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_common/hdmi_parameters.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_common/hdmi_parameters.c @@ -2175,6 +2175,54 @@ static struct hdmi_format_para fmt_para_480x320p60_4x3 = { }, }; +static struct hdmi_format_para fmt_para_480x272p60_4x3 = { + .vic = HDMI_480x272p60_4x3, + .name = "480x272p60hz", + .sname = "480x272p60hz", + .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 = 272, + .v_total = 525, + .v_blank = 253, + .v_front = 8, + .v_sync = 7, + .v_back = 238, + .v_sync_ln = 1, + }, + .hdmitx_vinfo = { + .name = "480x272p60hz", + .mode = VMODE_HDMI, + .width = 480, + .height = 272, + .field_height = 272, + .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_480x800p60_4x3 = { .vic = HDMI_480x800p60_4x3, .name = "480x800p60hz", @@ -2343,6 +2391,7 @@ static struct hdmi_format_para *all_fmt_paras[] = { &fmt_para_800x480p60_5x3, &fmt_para_640x480p60_4x3, &fmt_para_480x320p60_4x3, + &fmt_para_480x272p60_4x3, &fmt_para_480x800p60_4x3, &fmt_para_custombuilt, &fmt_para_null_hdmi_fmt, diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_edid.c b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_edid.c index 8117bab3bdba..0a90ec50ec93 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_edid.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_edid.c @@ -2205,6 +2205,7 @@ static struct dispmode_vic dispmode_vic_tab[] = { {"800x480p60hz", HDMI_800x480p60_5x3}, {"640x480p60hz", HDMI_640x480p60_4x3}, {"480x320p60hz", HDMI_480x320p60_4x3}, + {"480x272p60hz", HDMI_480x272p60_4x3}, {"480x800p60hz", HDMI_480x800p60_4x3}, {"custombuilt", HDMI_CUSTOMBUILT}, }; diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_video.c b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_video.c index ea6263fe7fa6..b1ffd00dee56 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_video.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_video.c @@ -677,6 +677,17 @@ static struct hdmitx_vidpara hdmi_tx_video_params[] = { .ss = SS_SCAN_UNDER, .sc = SC_SCALE_HORIZ_VERT, }, + { + .VIC = HDMI_480x272p60_4x3, + .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_480x800p60_4x3, .color_prefer = COLORSPACE_RGB444, diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/enc_cfg_hw.c b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/enc_cfg_hw.c index 15585215b175..dd324960c65d 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/enc_cfg_hw.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/enc_cfg_hw.c @@ -1123,6 +1123,32 @@ static const struct reg_s tvregs_480x320p_60hz[] = { {MREG_END_MARKER, 0} }; +static const struct reg_s tvregs_480x272p_60hz[] = { + {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, 0xEE,}, + {P_ENCP_VIDEO_VAVON_ELINE, 0x1FD,}, + {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, 0x7,}, + + {P_ENCP_VIDEO_EN, 1,}, + {P_ENCI_VIDEO_EN, 0,}, + {MREG_END_MARKER, 0} +}; + static const struct reg_s tvregs_480x800p_60hz[] = { {P_ENCP_VIDEO_EN, 0}, {P_ENCI_VIDEO_EN, 0}, @@ -1206,6 +1232,7 @@ static struct vic_tvregs_set tvregsTab[] = { {HDMI_800x480p60_5x3, tvregs_800x480p_60hz}, {HDMI_640x480p60_4x3, tvregs_640x480p_60hz}, {HDMI_480x320p60_4x3, tvregs_480x320p_60hz}, + {HDMI_480x272p60_4x3, tvregs_480x272p_60hz}, {HDMI_480x800p60_4x3, tvregs_480x800p_60hz}, }; diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hdmi_tx_hw.c b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hdmi_tx_hw.c index 59733e5f25cf..61bb649f3860 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hdmi_tx_hw.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hdmi_tx_hw.c @@ -1766,6 +1766,22 @@ static void hdmi_tvenc_set(struct hdmitx_vidpara *param) SOF_LINES = 95; TOTAL_FRAMES = 4; break; + case HDMI_480x272p60_4x3: + INTERLACE_MODE = 0; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (480*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (272/(1+INTERLACE_MODE)); + LINES_F0 = 263; + LINES_F1 = 263; + FRONT_PORCH = 120; + HSYNC_PIXELS = 100; + BACK_PORCH = 100; + EOF_LINES = 8; + VSYNC_LINES = 4; + SOF_LINES = 119; + TOTAL_FRAMES = 4; + break; case HDMI_480x800p60_4x3: INTERLACE_MODE = 0U; PIXEL_REPEAT_VENC = 0; diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hw_clk.c b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hw_clk.c index 8009cef59933..1366e75becdf 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hw_clk.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hw_clk.c @@ -829,6 +829,7 @@ static struct hw_enc_clk_val_group setting_enc_clk_val_24[] = { /* actual hpll : 2014000 */ 2000000, 4, 2, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, {{HDMI_480x320p60_4x3, + HDMI_480x272p60_4x3, HDMI_VIC_END}, /* actual hpll : 2016000 */ 2000000, 4, 2, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, diff --git a/include/linux/amlogic/media/vout/hdmi_tx/hdmi_common.h b/include/linux/amlogic/media/vout/hdmi_tx/hdmi_common.h index 50598de3d62c..e6c8e9cc52f4 100644 --- a/include/linux/amlogic/media/vout/hdmi_tx/hdmi_common.h +++ b/include/linux/amlogic/media/vout/hdmi_tx/hdmi_common.h @@ -161,6 +161,7 @@ enum hdmi_vic { HDMI_800x600p60_4x3, HDMI_800x480p60_5x3, HDMI_480x320p60_4x3, + HDMI_480x272p60_4x3, HDMI_480x800p60_4x3, HDMI_CUSTOMBUILT,