From 1bf959a7df19c0e6db417b1ecfc9b8a5189e5ebc Mon Sep 17 00:00:00 2001 From: Joy Cho Date: Tue, 3 Jul 2018 15:26:26 +0900 Subject: [PATCH] media: hdmitx: add new hdmi resolutions Change-Id: I909abfcfd408d1b3014ba7b9b750903e10e06aa6 --- .../vout/hdmitx/hdmi_common/hdmi_parameters.c | 883 ++++++++++++++++++ .../vout/hdmitx/hdmi_tx_20/hdmi_tx_edid.c | 19 +- .../vout/hdmitx/hdmi_tx_20/hdmi_tx_video.c | 198 ++++ .../vout/hdmitx/hdmi_tx_20/hw/enc_cfg_hw.c | 482 ++++++++++ .../vout/hdmitx/hdmi_tx_20/hw/hdmi_tx_hw.c | 285 ++++++ .../media/vout/hdmitx/hdmi_tx_20/hw/hw_clk.c | 58 ++ .../media/vout/hdmitx/hdmi_tx_20/hw/hw_g12a.c | 207 ++++ .../amlogic/media/vout/hdmi_tx/hdmi_common.h | 16 + 8 files changed, 2147 insertions(+), 1 deletion(-) 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 89a3ce16e8d1..4d85b5b69682 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_common/hdmi_parameters.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_common/hdmi_parameters.c @@ -1333,6 +1333,871 @@ static struct hdmi_format_para fmt_para_4096x2160p60_256x135_y420 = { }, }; +/* new display modes for odroid-n2 */ +static struct hdmi_format_para fmt_para_2560x1600p60_8x5 = { + .vic = HDMI_2560x1600p60_8x5, + .name = "2560x1600p60hz", + .sname = "2560x1600p60hz", + .pixel_repetition_factor = 0, + .progress_mode = 1, + .scrambler_en = 0, + .tmds_clk_div40 = 0, + .tmds_clk = 268500, + .timing = { + .pixel_freq = 268500, + .frac_freq = 268500, + .h_freq = 98700, + .v_freq = 60000, + .vsync_polarity = 0, + .hsync_polarity = 1, + .h_active = 2560, + .h_total = 2720, + .h_blank = 160, + .h_front = 48, + .h_sync = 32, + .h_back = 80, + .v_active = 1600, + .v_total = 1646, + .v_blank = 46, + .v_front = 3, + .v_sync = 6, + .v_back = 38, + .v_sync_ln = 1, + }, + .hdmitx_vinfo = { + .name = "2560x1600p60hz", + .mode = VMODE_HDMI, + .width = 2560, + .height = 1600, + .field_height = 1600, + .aspect_ratio_num = 8, + .aspect_ratio_den = 5, + .sync_duration_num = 60, + .sync_duration_den = 1, + .video_clk = 268500000, + .htotal = 2720, + .vtotal = 1646, + .viu_color_fmt = COLOR_FMT_YUV444, + .viu_mux = VIU_MUX_ENCP, + }, +}; + +static struct hdmi_format_para fmt_para_2560x1440p60_16x9 = { + .vic = HDMI_2560x1440p60_16x9, + .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 = 98700, + .v_freq = 60000, + .vsync_polarity = 0, + .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 fmt_para_2560x1080p60_64x27 = { + .vic = HDMI_2560x1080p60_64x27, + .name = "2560x1080p60hz", + .sname = "2560x1080p60hz", + .pixel_repetition_factor = 0, + .progress_mode = 1, + .scrambler_en = 0, + .tmds_clk_div40 = 0, + .tmds_clk = 185580, + .timing = { + .pixel_freq = 185580, + .frac_freq = 185580, + .h_freq = 66659, + .v_freq = 60000, + .vsync_polarity = 0, + .hsync_polarity = 1, + .h_active = 2560, + .h_total = 2784, + .h_blank = 224, + .h_front = 64, + .h_sync = 64, + .h_back = 96, + .v_active = 1080, + .v_total = 1111, + .v_blank = 31, + .v_front = 3, + .v_sync = 10, + .v_back = 18, + .v_sync_ln = 1, + }, + .hdmitx_vinfo = { + .name = "2560x1080p60hz", + .mode = VMODE_HDMI, + .width = 2560, + .height = 1080, + .field_height = 1080, + .aspect_ratio_num = 64, + .aspect_ratio_den = 27, + .sync_duration_num = 60, + .sync_duration_den = 1, + .video_clk = 185580000, + .htotal = 2784, + .vtotal = 1111, + .viu_color_fmt = COLOR_FMT_YUV444, + .viu_mux = VIU_MUX_ENCP, + }, +}; + +static struct hdmi_format_para fmt_para_1920x1200p60_8x5 = { + .vic = HDMI_1920x1200p60_8x5, + .name = "1920x1200p60hz", + .sname = "1920x1200p60hz", + .pixel_repetition_factor = 0, + .progress_mode = 1, + .scrambler_en = 0, + .tmds_clk_div40 = 0, + .tmds_clk = 154000, + .timing = { + .pixel_freq = 154000, + .frac_freq = 154000, + .h_freq = 74040, + .v_freq = 60000, + .vsync_polarity = 0, + .hsync_polarity = 1, + .h_active = 1920, + .h_total = 2080, + .h_blank = 160, + .h_front = 48, + .h_sync = 32, + .h_back = 80, + .v_active = 1200, + .v_total = 1235, + .v_blank = 35, + .v_front = 3, + .v_sync = 6, + .v_back = 26, + .v_sync_ln = 1, + }, + .hdmitx_vinfo = { + .name = "1920x1200p60hz", + .mode = VMODE_HDMI, + .width = 1920, + .height = 1200, + .field_height = 1200, + .aspect_ratio_num = 8, + .aspect_ratio_den = 5, + .sync_duration_num = 60, + .sync_duration_den = 1, + .video_clk = 154000000, + .htotal = 2080, + .vtotal = 1235, + .viu_color_fmt = COLOR_FMT_YUV444, + .viu_mux = VIU_MUX_ENCP, + }, +}; + +static struct hdmi_format_para fmt_para_1680x1050p60_8x5 = { + .vic = HDMI_1680x1050p60_8x5, + .name = "1680x1050p60hz", + .sname = "1680x1050p60hz", + .pixel_repetition_factor = 0, + .progress_mode = 1, + .scrambler_en = 0, + .tmds_clk_div40 = 0, + .tmds_clk = 146250, + .timing = { + .pixel_freq = 146250, + .frac_freq = 146250, + .h_freq = 65340, + .v_freq = 60000, + .vsync_polarity = 1, + .hsync_polarity = 1, + .h_active = 1680, + .h_total = 2240, + .h_blank = 560, + .h_front = 104, + .h_sync = 176, + .h_back = 280, + .v_active = 1050, + .v_total = 1089, + .v_blank = 39, + .v_front = 3, + .v_sync = 6, + .v_back = 30, + .v_sync_ln = 1, + }, + .hdmitx_vinfo = { + .name = "1680x1050p60hz", + .mode = VMODE_HDMI, + .width = 1680, + .height = 1050, + .field_height = 1050, + .aspect_ratio_num = 8, + .aspect_ratio_den = 5, + .sync_duration_num = 60, + .sync_duration_den = 1, + .video_clk = 146250000, + .htotal = 2240, + .vtotal = 1089, + .viu_color_fmt = COLOR_FMT_YUV444, + .viu_mux = VIU_MUX_ENCP, + }, +}; + +static struct hdmi_format_para fmt_para_1600x1200p60_4x3 = { + .vic = HDMI_1600x1200p60_4x3, + .name = "1600x1200p60hz", + .sname = "1600x1200p60hz", + .pixel_repetition_factor = 0, + .progress_mode = 1, + .scrambler_en = 0, + .tmds_clk_div40 = 0, + .tmds_clk = 156000, + .timing = { + .pixel_freq = 156000, + .frac_freq = 156000, + .h_freq = 76200, + .v_freq = 60000, + .vsync_polarity = 0, + .hsync_polarity = 0, + .h_active = 1600, + .h_total = 2048, + .h_blank = 448, + .h_front = 32, + .h_sync = 160, + .h_back = 256, + .v_active = 1200, + .v_total = 1270, + .v_blank = 70, + .v_front = 10, + .v_sync = 8, + .v_back = 52, + .v_sync_ln = 1, + }, + .hdmitx_vinfo = { + .name = "1600x1200p60hz", + .mode = VMODE_HDMI, + .width = 1600, + .height = 1200, + .field_height = 1200, + .aspect_ratio_num = 4, + .aspect_ratio_den = 3, + .sync_duration_num = 60, + .sync_duration_den = 1, + .video_clk = 156000000, + .htotal = 2048, + .vtotal = 1270, + .viu_color_fmt = COLOR_FMT_YUV444, + .viu_mux = VIU_MUX_ENCP, + }, +}; + +static struct hdmi_format_para fmt_para_1600x900p60_16x9 = { + .vic = HDMI_1600x900p60_16x9, + .name = "1600x900p60hz", + .sname = "1600x900p60hz", + .pixel_repetition_factor = 0, + .progress_mode = 1, + .scrambler_en = 0, + .tmds_clk_div40 = 0, + .tmds_clk = 108000, + .timing = { + .pixel_freq = 108000, + .frac_freq = 108000, + .h_freq = 60000, + .v_freq = 60000, + .vsync_polarity = 1, + .hsync_polarity = 1, + .h_active = 1600, + .h_total = 1800, + .h_blank = 200, + .h_front = 24, + .h_sync = 80, + .h_back = 96, + .v_active = 900, + .v_total = 1000, + .v_blank = 100, + .v_front = 1, + .v_sync = 3, + .v_back = 96, + .v_sync_ln = 1, + }, + .hdmitx_vinfo = { + .name = "1600x900p60hz", + .mode = VMODE_HDMI, + .width = 1600, + .height = 900, + .field_height = 900, + .aspect_ratio_num = 16, + .aspect_ratio_den = 9, + .sync_duration_num = 60, + .sync_duration_den = 1, + .video_clk = 108000000, + .htotal = 1800, + .vtotal = 1000, + .viu_color_fmt = COLOR_FMT_YUV444, + .viu_mux = VIU_MUX_ENCP, + }, +}; + +static struct hdmi_format_para fmt_para_1440x900p60_8x5 = { + .vic = HDMI_1440x900p60_8x5, + .name = "1440x900p60hz", + .sname = "1440x900p60hz", + .pixel_repetition_factor = 0, + .progress_mode = 1, + .scrambler_en = 0, + .tmds_clk_div40 = 0, + .tmds_clk = 106500, + .timing = { + .pixel_freq = 106500, + .frac_freq = 106500, + .h_freq = 56040, + .v_freq = 60000, + .vsync_polarity = 1, + .hsync_polarity = 1, + .h_active = 1440, + .h_total = 1904, + .h_blank = 464, + .h_front = 80, + .h_sync = 152, + .h_back = 232, + .v_active = 900, + .v_total = 934, + .v_blank = 34, + .v_front = 3, + .v_sync = 6, + .v_back = 25, + .v_sync_ln = 1, + }, + .hdmitx_vinfo = { + .name = "1440x900p60hz", + .mode = VMODE_HDMI, + .width = 1440, + .height = 900, + .field_height = 900, + .aspect_ratio_num = 8, + .aspect_ratio_den = 5, + .sync_duration_num = 60, + .sync_duration_den = 1, + .video_clk = 106500000, + .htotal = 1904, + .vtotal = 934, + .viu_color_fmt = COLOR_FMT_YUV444, + .viu_mux = VIU_MUX_ENCP, + }, +}; + +static struct hdmi_format_para fmt_para_1360x768p60_16x9 = { + .vic = HDMI_1360x768p60_16x9, + .name = "1360x768p60hz", + .sname = "1360x768p60hz", + .pixel_repetition_factor = 0, + .progress_mode = 1, + .scrambler_en = 0, + .tmds_clk_div40 = 0, + .tmds_clk = 85500, + .timing = { + .pixel_freq = 85500, + .frac_freq = 85500, + .h_freq = 47700, + .v_freq = 60000, + .vsync_polarity = 1, + .hsync_polarity = 1, + .h_active = 1360, + .h_total = 1792, + .h_blank = 432, + .h_front = 64, + .h_sync = 112, + .h_back = 256, + .v_active = 768, + .v_total = 795, + .v_blank = 27, + .v_front = 3, + .v_sync = 6, + .v_back = 18, + .v_sync_ln = 1, + }, + .hdmitx_vinfo = { + .name = "1360x768p60hz", + .mode = VMODE_HDMI, + .width = 1360, + .height = 768, + .field_height = 768, + .aspect_ratio_num = 16, + .aspect_ratio_den = 9, + .sync_duration_num = 60, + .sync_duration_den = 1, + .video_clk = 85500000, + .htotal = 1792, + .vtotal = 795, + .viu_color_fmt = COLOR_FMT_YUV444, + .viu_mux = VIU_MUX_ENCP, + }, +}; + +static struct hdmi_format_para fmt_para_1280x1024p60_5x4 = { + .vic = HDMI_1280x1024p60_5x4, + .name = "1280x1024p60hz", + .sname = "1280x1024p60hz", + .pixel_repetition_factor = 0, + .progress_mode = 1, + .scrambler_en = 0, + .tmds_clk_div40 = 0, + .tmds_clk = 108000, + .timing = { + .pixel_freq = 108000, + .frac_freq = 108000, + .h_freq = 64080, + .v_freq = 60000, + .vsync_polarity = 1, + .hsync_polarity = 1, + .h_active = 1280, + .h_total = 1688, + .h_blank = 408, + .h_front = 48, + .h_sync = 112, + .h_back = 248, + .v_active = 1024, + .v_total = 1068, + .v_blank = 42, + .v_front = 1, + .v_sync = 3, + .v_back = 38, + .v_sync_ln = 1, + }, + .hdmitx_vinfo = { + .name = "1280x1024p60hz", + .mode = VMODE_HDMI, + .width = 1280, + .height = 1024, + .field_height = 1024, + .aspect_ratio_num = 5, + .aspect_ratio_den = 4, + .sync_duration_num = 60, + .sync_duration_den = 1, + .video_clk = 108000000, + .htotal = 1688, + .vtotal = 1068, + .viu_color_fmt = COLOR_FMT_YUV444, + .viu_mux = VIU_MUX_ENCP, + }, +}; + +static struct hdmi_format_para fmt_para_1280x800p60_8x5 = { + .vic = HDMI_1280x800p60_8x5, + .name = "1280x800p60hz", + .sname = "1280x800p60hz", + .pixel_repetition_factor = 0, + .progress_mode = 1, + .scrambler_en = 0, + .tmds_clk_div40 = 0, + .tmds_clk = 83500, + .timing = { + .pixel_freq = 83500, + .frac_freq = 83500, + .h_freq = 49380, + .v_freq = 60000, + .vsync_polarity = 1, + .hsync_polarity = 1, + .h_active = 1280, + .h_total = 1440, + .h_blank = 160, + .h_front = 48, + .h_sync = 32, + .h_back = 80, + .v_active = 800, + .v_total = 823, + .v_blank = 23, + .v_front = 3, + .v_sync = 6, + .v_back = 14, + .v_sync_ln = 1, + }, + .hdmitx_vinfo = { + .name = "1280x800p60hz", + .mode = VMODE_HDMI, + .width = 1280, + .height = 800, + .field_height = 800, + .aspect_ratio_num = 8, + .aspect_ratio_den = 5, + .sync_duration_num = 60, + .sync_duration_den = 1, + .video_clk = 83500000, + .htotal = 1440, + .vtotal = 823, + .viu_color_fmt = COLOR_FMT_YUV444, + .viu_mux = VIU_MUX_ENCP, + }, +}; + +static struct hdmi_format_para fmt_para_1024x768p60_4x3 = { + .vic = HDMI_1024x768p60_4x3, + .name = "1024x768p60hz", + .sname = "1024x768p60hz", + .pixel_repetition_factor = 0, + .progress_mode = 1, + .scrambler_en = 0, + .tmds_clk_div40 = 0, + .tmds_clk = 79500, + .timing = { + .pixel_freq = 79500, + .frac_freq = 79500, + .h_freq = 48360, + .v_freq = 60000, + .vsync_polarity = 1, + .hsync_polarity = 1, + .h_active = 1024, + .h_total = 1344, + .h_blank = 320, + .h_front = 24, + .h_sync = 136, + .h_back = 160, + .v_active = 768, + .v_total = 806, + .v_blank = 38, + .v_front = 3, + .v_sync = 6, + .v_back = 29, + .v_sync_ln = 1, + }, + .hdmitx_vinfo = { + .name = "1024x768p60hz", + .mode = VMODE_HDMI, + .width = 1024, + .height = 768, + .field_height = 768, + .aspect_ratio_num = 4, + .aspect_ratio_den = 3, + .sync_duration_num = 60, + .sync_duration_den = 1, + .video_clk = 79500000, + .htotal = 1344, + .vtotal = 806, + .viu_color_fmt = COLOR_FMT_YUV444, + .viu_mux = VIU_MUX_ENCP, + }, +}; + +static struct hdmi_format_para fmt_para_1024x600p60_16x9 = { + .vic = HDMI_1024x600p60_16x9, + .name = "1024x600p60hz", + .sname = "1024x600p60hz", + .pixel_repetition_factor = 0, + .progress_mode = 1, + .scrambler_en = 0, + .tmds_clk_div40 = 0, + .tmds_clk = 50400, + .timing = { + .pixel_freq = 50400, + .frac_freq = 50400, + .h_freq = 38280, + .v_freq = 60000, + .vsync_polarity = 1, + .hsync_polarity = 1, + .h_active = 1024, + .h_total = 1344, + .h_blank = 320, + .h_front = 24, + .h_sync = 136, + .h_back = 160, + .v_active = 600, + .v_total = 638, + .v_blank = 38, + .v_front = 3, + .v_sync = 6, + .v_back = 29, + .v_sync_ln = 1, + }, + .hdmitx_vinfo = { + .name = "1024x600p60hz", + .mode = VMODE_HDMI, + .width = 1024, + .height = 600, + .field_height = 600, + .aspect_ratio_num = 16, + .aspect_ratio_den = 9, + .sync_duration_num = 60, + .sync_duration_den = 1, + .video_clk = 50400000, + .htotal = 1344, + .vtotal = 638, + .viu_color_fmt = COLOR_FMT_YUV444, + .viu_mux = VIU_MUX_ENCP, + }, +}; + +static struct hdmi_format_para fmt_para_800x600p60_4x3 = { + .vic = HDMI_800x600p60_4x3, + .name = "800x600p60hz", + .sname = "800x600p60hz", + .pixel_repetition_factor = 0, + .progress_mode = 1, + .scrambler_en = 0, + .tmds_clk_div40 = 0, + .tmds_clk = 39790, + .timing = { + .pixel_freq = 39790, + .frac_freq = 39790, + .h_freq = 37879, + .v_freq = 60000, + .vsync_polarity = 1, + .hsync_polarity = 1, + .h_active = 800, + .h_total = 1056, + .h_blank = 256, + .h_front = 40, + .h_sync = 128, + .h_back = 88, + .v_active = 600, + .v_total = 628, + .v_blank = 28, + .v_front = 1, + .v_sync = 4, + .v_back = 23, + .v_sync_ln = 1, + }, + .hdmitx_vinfo = { + .name = "800x600p60hz", + .mode = VMODE_HDMI, + .width = 800, + .height = 600, + .field_height = 600, + .aspect_ratio_num = 4, + .aspect_ratio_den = 3, + .sync_duration_num = 60, + .sync_duration_den = 1, + .video_clk = 40000000, + .htotal = 1056, + .vtotal = 628, + .viu_color_fmt = COLOR_FMT_YUV444, + .viu_mux = VIU_MUX_ENCP, + }, +}; + +static struct hdmi_format_para fmt_para_800x480p60_5x3 = { + .vic = HDMI_800x480p60_5x3, + .name = "800x480p60hz", + .sname = "800x480p60hz", + .pixel_repetition_factor = 0, + .progress_mode = 1, + .scrambler_en = 0, + .tmds_clk_div40 = 0, + .tmds_clk = 29760, + .timing = { + .pixel_freq = 29760, + .frac_freq = 29760, + .h_freq = 30000, + .v_freq = 60000, + .vsync_polarity = 1, + .hsync_polarity = 1, + .h_active = 800, + .h_total = 992, + .h_blank = 192, + .h_front = 24, + .h_sync = 72, + .h_back = 96, + .v_active = 480, + .v_total = 500, + .v_blank = 20, + .v_front = 3, + .v_sync = 7, + .v_back = 10, + .v_sync_ln = 1, + }, + .hdmitx_vinfo = { + .name = "800x480p60hz", + .mode = VMODE_HDMI, + .width = 800, + .height = 480, + .field_height = 480, + .aspect_ratio_num = 5, + .aspect_ratio_den = 3, + .sync_duration_num = 60, + .sync_duration_den = 1, + .video_clk = 29760000, + .htotal = 992, + .vtotal = 500, + .viu_color_fmt = COLOR_FMT_YUV444, + .viu_mux = VIU_MUX_ENCP, + }, +}; + +static struct hdmi_format_para fmt_para_640x480p60_4x3 = { + .vic = HDMI_640x480p60_4x3, + .name = "640x480p60hz", + .sname = "640x480p60hz", + .pixel_repetition_factor = 0, + .progress_mode = 1, + .scrambler_en = 0, + .tmds_clk_div40 = 0, + .tmds_clk = 25175, + .timing = { + .pixel_freq = 25175, + .frac_freq = 25175, + .h_freq = 26218, + .v_freq = 59940, + .vsync_polarity = 0, + .hsync_polarity = 0, + .h_active = 640, + .h_total = 800, + .h_blank = 160, + .h_front = 16, + .h_sync = 96, + .h_back = 48, + .v_active = 480, + .v_total = 525, + .v_blank = 45, + .v_front = 10, + .v_sync = 2, + .v_back = 33, + .v_sync_ln = 1, + }, + .hdmitx_vinfo = { + .name = "640x480p60hz", + .mode = VMODE_HDMI, + .width = 640, + .height = 480, + .field_height = 480, + .aspect_ratio_num = 4, + .aspect_ratio_den = 3, + .sync_duration_num = 60, + .sync_duration_den = 1, + .video_clk = 25175000, + .htotal = 800, + .vtotal = 525, + .viu_color_fmt = COLOR_FMT_YUV444, + .viu_mux = VIU_MUX_ENCP, + }, +}; + +static struct hdmi_format_para fmt_para_480x320p60_4x3 = { + .vic = HDMI_480x320p60_4x3, + .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_480x800p60_4x3 = { + .vic = HDMI_480x800p60_4x3, + .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_non_hdmi_fmt = { .vic = HDMI_Unknown, .name = "invalid", @@ -1415,6 +2280,24 @@ static struct hdmi_format_para *all_fmt_paras[] = { &fmt_para_4096x2160p60_256x135_y420, &fmt_para_3840x2160p50_16x9_y420, &fmt_para_4096x2160p50_256x135_y420, + &fmt_para_2560x1600p60_8x5, + &fmt_para_2560x1440p60_16x9, + &fmt_para_2560x1080p60_64x27, + &fmt_para_1920x1200p60_8x5, + &fmt_para_1680x1050p60_8x5, + &fmt_para_1600x1200p60_4x3, + &fmt_para_1600x900p60_16x9, + &fmt_para_1440x900p60_8x5, + &fmt_para_1360x768p60_16x9, + &fmt_para_1280x1024p60_5x4, + &fmt_para_1280x800p60_8x5, + &fmt_para_1024x768p60_4x3, + &fmt_para_1024x600p60_16x9, + &fmt_para_800x600p60_4x3, + &fmt_para_800x480p60_5x3, + &fmt_para_640x480p60_4x3, + &fmt_para_480x320p60_4x3, + &fmt_para_480x800p60_4x3, &fmt_para_null_hdmi_fmt, &fmt_para_non_hdmi_fmt, NULL, 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 41520ce8f814..a77e7f85a85c 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 @@ -2176,7 +2176,24 @@ static struct dispmode_vic dispmode_vic_tab[] = { {"smpte60hz", HDMI_4096x2160p60_256x135}, {"2160p60hz", HDMI_4k2k_60}, {"2160p50hz", HDMI_4k2k_50}, - + {"2560x1600p60hz", HDMI_2560x1600p60_8x5}, + {"2560x1440p60hz", HDMI_2560x1440p60_16x9}, + {"2560x1080p60hz", HDMI_2560x1080p60_64x27}, + {"1920x1200p60hz", HDMI_1920x1200p60_8x5}, + {"1680x1050p60hz", HDMI_1680x1050p60_8x5}, + {"1600x1200p60hz", HDMI_1600x1200p60_4x3}, + {"1600x900p60hz", HDMI_1600x900p60_16x9}, + {"1440x900p60hz", HDMI_1440x900p60_8x5}, + {"1360x768p60hz", HDMI_1360x768p60_16x9}, + {"1280x1024p60hz", HDMI_1280x1024p60_5x4}, + {"1280x800p60hz", HDMI_1280x800p60_8x5}, + {"1024x768p60hz", HDMI_1024x768p60_4x3}, + {"1024x600p60hz", HDMI_1024x600p60_16x9}, + {"800x600p60hz", HDMI_800x600p60_4x3}, + {"800x480p60hz", HDMI_800x480p60_5x3}, + {"640x480p60hz", HDMI_640x480p60_4x3}, + {"480x320p60hz", HDMI_480x320p60_4x3}, + {"480x800p60hz", HDMI_480x800p60_4x3}, }; int hdmitx_edid_VIC_support(enum hdmi_vic vic) 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 087c4b6b961e..d71ee9897008 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 @@ -490,6 +490,204 @@ static struct hdmitx_vidpara hdmi_tx_video_params[] = { .ss = SS_SCAN_UNDER, .sc = SC_SCALE_HORIZ_VERT, }, + { + .VIC = HDMI_2560x1600p60_8x5, + .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_2560x1440p60_16x9, + .color_prefer = COLORSPACE_RGB444, + .color_depth = COLORDEPTH_24B, + .bar_info = B_BAR_VERT_HORIZ, + .repeat_time = NO_REPEAT, + .aspect_ratio = TV_ASPECT_RATIO_16_9, + .cc = CC_ITU709, + .ss = SS_SCAN_UNDER, + .sc = SC_SCALE_HORIZ_VERT, + }, + { + .VIC = HDMI_2560x1080p60_64x27, + .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_1920x1200p60_8x5, + .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_1680x1050p60_8x5, + .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_1600x1200p60_4x3, + .color_prefer = COLORSPACE_RGB444, + .color_depth = COLORDEPTH_24B, + .bar_info = B_BAR_VERT_HORIZ, + .repeat_time = NO_REPEAT, + .aspect_ratio = TV_ASPECT_RATIO_4_3, + .cc = CC_ITU709, + .ss = SS_SCAN_UNDER, + .sc = SC_SCALE_HORIZ_VERT, + }, + { + .VIC = HDMI_1600x900p60_16x9, + .color_prefer = COLORSPACE_RGB444, + .color_depth = COLORDEPTH_24B, + .bar_info = B_BAR_VERT_HORIZ, + .repeat_time = NO_REPEAT, + .aspect_ratio = TV_ASPECT_RATIO_16_9, + .cc = CC_ITU709, + .ss = SS_SCAN_UNDER, + .sc = SC_SCALE_HORIZ_VERT, + }, + { + .VIC = HDMI_1440x900p60_8x5, + .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_1360x768p60_16x9, + .color_prefer = COLORSPACE_RGB444, + .color_depth = COLORDEPTH_24B, + .bar_info = B_BAR_VERT_HORIZ, + .repeat_time = NO_REPEAT, + .aspect_ratio = TV_ASPECT_RATIO_16_9, + .cc = CC_ITU709, + .ss = SS_SCAN_UNDER, + .sc = SC_SCALE_HORIZ_VERT, + }, + { + .VIC = HDMI_1280x1024p60_5x4, + .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_1280x800p60_8x5, + .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_1024x768p60_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_1024x600p60_16x9, + .color_prefer = COLORSPACE_RGB444, + .color_depth = COLORDEPTH_24B, + .bar_info = B_BAR_VERT_HORIZ, + .repeat_time = NO_REPEAT, + .aspect_ratio = TV_ASPECT_RATIO_16_9, + .cc = CC_ITU709, + .ss = SS_SCAN_UNDER, + .sc = SC_SCALE_HORIZ_VERT, + }, + { + .VIC = HDMI_800x600p60_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_800x480p60_5x3, + .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_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_480x320p60_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, + .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, + }, }; static struct hdmitx_vidpara *hdmi_get_video_param( 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 8414c9f6bf3f..38eab89a796c 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 @@ -687,6 +687,470 @@ static const struct reg_s tvregs_4k2k_smpte_60hz[] = { {P_ENCI_VIDEO_EN, 0}, {MREG_END_MARKER, 0}, }; + +static const struct reg_s tvregs_2560x1600p_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, 2719,}, + {P_ENCP_VIDEO_MAX_LNCNT, 1645,}, + {P_ENCP_VIDEO_HAVON_BEGIN, 80,}, + {P_ENCP_VIDEO_HAVON_END, 2639,}, + {P_ENCP_VIDEO_VAVON_BLINE, 38,}, + {P_ENCP_VIDEO_VAVON_ELINE, 1637,}, + {P_ENCP_VIDEO_HSO_BEGIN, 0,}, + {P_ENCP_VIDEO_HSO_END, 32,}, + {P_ENCP_VIDEO_VSO_BEGIN, 0x1E,}, + {P_ENCP_VIDEO_VSO_END, 0x32,}, + {P_ENCP_VIDEO_VSO_BLINE, 0x0,}, + {P_ENCP_VIDEO_VSO_ELINE, 0x6,}, + + {P_ENCP_VIDEO_EN, 1,}, + {P_ENCI_VIDEO_EN, 0,}, + {MREG_END_MARKER, 0}, +}; + +static const struct reg_s tvregs_2560x1440p_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, 2719,}, + {P_ENCP_VIDEO_MAX_LNCNT, 1480,}, + {P_ENCP_VIDEO_HAVON_BEGIN, 80,}, + {P_ENCP_VIDEO_HAVON_END, 2639,}, + {P_ENCP_VIDEO_VAVON_BLINE, 34,}, + {P_ENCP_VIDEO_VAVON_ELINE, 1473,}, + {P_ENCP_VIDEO_HSO_BEGIN, 0,}, + {P_ENCP_VIDEO_HSO_END, 32,}, + {P_ENCP_VIDEO_VSO_BEGIN, 0x1E,}, + {P_ENCP_VIDEO_VSO_END, 0x32,}, + {P_ENCP_VIDEO_VSO_BLINE, 0x0,}, + {P_ENCP_VIDEO_VSO_ELINE, 0x5,}, + + {P_ENCP_VIDEO_EN, 1,}, + {P_ENCI_VIDEO_EN, 0,}, + {MREG_END_MARKER, 0}, +}; + +static const struct reg_s tvregs_2560x1080p_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, 2783,}, + {P_ENCP_VIDEO_MAX_LNCNT, 1110,}, + {P_ENCP_VIDEO_HAVON_BEGIN, 96,}, + {P_ENCP_VIDEO_HAVON_END, 2655,}, + {P_ENCP_VIDEO_VAVON_BLINE, 18,}, + {P_ENCP_VIDEO_VAVON_ELINE, 1097,}, + {P_ENCP_VIDEO_HSO_BEGIN, 0,}, + {P_ENCP_VIDEO_HSO_END, 64,}, + {P_ENCP_VIDEO_VSO_BEGIN, 0x1E,}, + {P_ENCP_VIDEO_VSO_END, 0x32,}, + {P_ENCP_VIDEO_VSO_BLINE, 0x0,}, + {P_ENCP_VIDEO_VSO_ELINE, 0xa,}, + + {P_ENCP_VIDEO_EN, 1,}, + {P_ENCI_VIDEO_EN, 0,}, + {MREG_END_MARKER, 0}, +}; + +static const struct reg_s tvregs_1920x1200p_60hz[] = { + {P_ENCP_VIDEO_EN, 0,}, + {P_ENCI_VIDEO_EN, 0,}, + {P_VENC_VDAC_SETTING, 0xff,}, + + {P_ENCP_VIDEO_MODE, 0x4040,}, + {P_ENCP_VIDEO_MODE_ADV, 0x18,}, + {P_ENCP_VIDEO_MAX_PXCNT, 2079,}, + {P_ENCP_VIDEO_MAX_LNCNT, 1234,}, + {P_ENCP_VIDEO_HAVON_BEGIN, 112,}, + {P_ENCP_VIDEO_HAVON_END, 2031,}, + {P_ENCP_VIDEO_VAVON_BLINE, 32,}, + {P_ENCP_VIDEO_VAVON_ELINE, 1231,}, + {P_ENCP_VIDEO_HSO_BEGIN, 0,}, + {P_ENCP_VIDEO_HSO_END, 48,}, + {P_ENCP_VIDEO_VSO_BEGIN, 0x1E,}, + {P_ENCP_VIDEO_VSO_END, 0x32,}, + {P_ENCP_VIDEO_VSO_BLINE, 0,}, + {P_ENCP_VIDEO_VSO_ELINE, 6,}, + + {P_ENCP_DACSEL_0, 0x0543,}, + {P_ENCP_DACSEL_1, 0x0000,}, + {P_ENCI_VIDEO_EN, 0}, + {P_ENCP_VIDEO_EN, 1}, + {MREG_END_MARKER, 0} +}; + +static const struct reg_s tvregs_1680x1050p_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, 0x8BF,}, + {P_ENCP_VIDEO_MAX_LNCNT, 0x440,}, + {P_ENCP_VIDEO_HAVON_BEGIN, 0x1C8,}, + {P_ENCP_VIDEO_HAVON_END, 0x857,}, + {P_ENCP_VIDEO_VAVON_BLINE, 0x24,}, + {P_ENCP_VIDEO_VAVON_ELINE, 0x43D,}, + {P_ENCP_VIDEO_HSO_BEGIN, 0x0,}, + {P_ENCP_VIDEO_HSO_END, 0xB0,}, + {P_ENCP_VIDEO_VSO_BEGIN, 0x1E,}, + {P_ENCP_VIDEO_VSO_END, 0x32,}, + {P_ENCP_VIDEO_VSO_BLINE, 0x0,}, + {P_ENCP_VIDEO_VSO_ELINE, 0x6,}, + + {P_ENCP_VIDEO_EN, 1,}, + {P_ENCI_VIDEO_EN, 0,}, + {MREG_END_MARKER, 0} +}; + +static const struct reg_s tvregs_1600x1200p_60hz[] = { + {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, 0x7FF,}, + {P_ENCP_VIDEO_MAX_LNCNT, 0x4F5,}, + {P_ENCP_VIDEO_HAVON_BEGIN, 0x1A0,}, + {P_ENCP_VIDEO_HAVON_END, 0x7DF,}, + {P_ENCP_VIDEO_VAVON_BLINE, 0x3C,}, + {P_ENCP_VIDEO_VAVON_ELINE, 0x4EB,}, + {P_ENCP_VIDEO_HSO_BEGIN, 0x0,}, + {P_ENCP_VIDEO_HSO_END, 0xA0,}, + {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_1600x900p_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, 0x707,}, + {P_ENCP_VIDEO_MAX_LNCNT, 0x3E7,}, + {P_ENCP_VIDEO_HAVON_BEGIN, 0xB0,}, + {P_ENCP_VIDEO_HAVON_END, 0x6EF,}, + {P_ENCP_VIDEO_VAVON_BLINE, 0x63,}, + {P_ENCP_VIDEO_VAVON_ELINE, 0x3E6,}, + {P_ENCP_VIDEO_HSO_BEGIN, 0x0,}, + {P_ENCP_VIDEO_HSO_END, 0x50,}, + {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_1440x900p_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, 0x76F,}, + {P_ENCP_VIDEO_MAX_LNCNT, 0x3A5,}, + {P_ENCP_VIDEO_HAVON_BEGIN, 0x180,}, + {P_ENCP_VIDEO_HAVON_END, 0x71F,}, + {P_ENCP_VIDEO_VAVON_BLINE, 0x1F,}, + {P_ENCP_VIDEO_VAVON_ELINE, 0x3A2,}, + {P_ENCP_VIDEO_HSO_BEGIN, 0x0,}, + {P_ENCP_VIDEO_HSO_END, 0x98,}, + {P_ENCP_VIDEO_VSO_BEGIN, 0x1E,}, + {P_ENCP_VIDEO_VSO_END, 0x32,}, + {P_ENCP_VIDEO_VSO_BLINE, 0x0,}, + {P_ENCP_VIDEO_VSO_ELINE, 0x6,}, + + {P_ENCP_VIDEO_EN, 1,}, + {P_ENCI_VIDEO_EN, 0,}, + {MREG_END_MARKER, 0} +}; + +static const struct reg_s tvregs_1360x768p_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, 0x6FF,}, + {P_ENCP_VIDEO_MAX_LNCNT, 0x31A,}, + {P_ENCP_VIDEO_HAVON_BEGIN, 0x170,}, + {P_ENCP_VIDEO_HAVON_END, 0x6BF,}, + {P_ENCP_VIDEO_VAVON_BLINE, 0x18,}, + {P_ENCP_VIDEO_VAVON_ELINE, 0x317,}, + {P_ENCP_VIDEO_HSO_BEGIN, 0x0,}, + {P_ENCP_VIDEO_HSO_END, 0x70,}, + {P_ENCP_VIDEO_VSO_BEGIN, 0x1E,}, + {P_ENCP_VIDEO_VSO_END, 0x32,}, + {P_ENCP_VIDEO_VSO_BLINE, 0x0,}, + {P_ENCP_VIDEO_VSO_ELINE, 0x6,}, + + {P_ENCP_VIDEO_EN, 1,}, + {P_ENCI_VIDEO_EN, 0,}, + {MREG_END_MARKER, 0} +}; + +static const struct reg_s tvregs_1280x1024p_60hz[] = { + {P_ENCP_VIDEO_EN, 0,}, + {P_ENCI_VIDEO_EN, 0,}, + {P_VENC_VDAC_SETTING, 0xff,}, + + {P_ENCP_VIDEO_MODE, 0x4040,}, + {P_ENCP_VIDEO_MODE_ADV, 0x18,}, + {P_ENCP_VIDEO_MAX_PXCNT, 0x697,}, + {P_ENCP_VIDEO_MAX_LNCNT, 0x429,}, + {P_ENCP_VIDEO_HAVON_BEGIN, 0x168,}, + {P_ENCP_VIDEO_HAVON_END, 0x667,}, + {P_ENCP_VIDEO_VAVON_BLINE, 0x29,}, + {P_ENCP_VIDEO_VAVON_ELINE, 0x428,}, + {P_ENCP_VIDEO_HSO_BEGIN, 0x0,}, + {P_ENCP_VIDEO_HSO_END, 0x70,}, + {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_ENCI_VIDEO_EN, 0}, + {P_ENCP_VIDEO_EN, 1}, + {MREG_END_MARKER, 0} +}; + +static const struct reg_s tvregs_1280x800p_60hz[] = { + {P_ENCP_VIDEO_EN, 0,}, + {P_ENCI_VIDEO_EN, 0,}, + {P_VENC_VDAC_SETTING, 0xff,}, + + {P_ENCP_VIDEO_MODE, 0x4040,}, + {P_ENCP_VIDEO_MODE_ADV, 0x18,}, + {P_ENCP_VIDEO_MAX_PXCNT, 0x59F,}, + {P_ENCP_VIDEO_MAX_LNCNT, 0x336,}, + {P_ENCP_VIDEO_HAVON_BEGIN, 0x70,}, + {P_ENCP_VIDEO_HAVON_END, 0x56F,}, + {P_ENCP_VIDEO_VAVON_BLINE, 0x14,}, + {P_ENCP_VIDEO_VAVON_ELINE, 0x333,}, + {P_ENCP_VIDEO_HSO_BEGIN, 0x0,}, + {P_ENCP_VIDEO_HSO_END, 0x20,}, + {P_ENCP_VIDEO_VSO_BEGIN, 0x1E,}, + {P_ENCP_VIDEO_VSO_END, 0x32,}, + {P_ENCP_VIDEO_VSO_BLINE, 0x0,}, + {P_ENCP_VIDEO_VSO_ELINE, 0x6,}, + + {P_ENCI_VIDEO_EN, 0}, + {P_ENCP_VIDEO_EN, 1}, + {MREG_END_MARKER, 0} +}; + +static const struct reg_s tvregs_1024x768p_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, 0x53F,}, + {P_ENCP_VIDEO_MAX_LNCNT, 0x325,}, + {P_ENCP_VIDEO_HAVON_BEGIN, 0x128,}, + {P_ENCP_VIDEO_HAVON_END, 0x527,}, + {P_ENCP_VIDEO_VAVON_BLINE, 0x23,}, + {P_ENCP_VIDEO_VAVON_ELINE, 0x322,}, + {P_ENCP_VIDEO_HSO_BEGIN, 0x0,}, + {P_ENCP_VIDEO_HSO_END, 0x88,}, + {P_ENCP_VIDEO_VSO_BEGIN, 0x1E,}, + {P_ENCP_VIDEO_VSO_END, 0x32,}, + {P_ENCP_VIDEO_VSO_BLINE, 0x0,}, + {P_ENCP_VIDEO_VSO_ELINE, 0x6,}, + + {P_ENCP_VIDEO_EN, 1,}, + {P_ENCI_VIDEO_EN, 0,}, + {MREG_END_MARKER, 0} +}; + +static const struct reg_s tvregs_1024x600p_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, 0x53F,}, + {P_ENCP_VIDEO_MAX_LNCNT, 0x27D,}, + {P_ENCP_VIDEO_HAVON_BEGIN, 0x128,}, + {P_ENCP_VIDEO_HAVON_END, 0x527,}, + {P_ENCP_VIDEO_VAVON_BLINE, 0x23,}, + {P_ENCP_VIDEO_VAVON_ELINE, 0x27A,}, + {P_ENCP_VIDEO_HSO_BEGIN, 0x0,}, + {P_ENCP_VIDEO_HSO_END, 0x88,}, + {P_ENCP_VIDEO_VSO_BEGIN, 0x1E,}, + {P_ENCP_VIDEO_VSO_END, 0x32,}, + {P_ENCP_VIDEO_VSO_BLINE, 0x0,}, + {P_ENCP_VIDEO_VSO_ELINE, 0x6,}, + + {P_ENCP_VIDEO_EN, 1,}, + {P_ENCI_VIDEO_EN, 0,}, + {MREG_END_MARKER, 0} +}; + +static const struct reg_s tvregs_800x600p_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, 0x41F,}, + {P_ENCP_VIDEO_MAX_LNCNT, 0x273,}, + {P_ENCP_VIDEO_HAVON_BEGIN, 0xD8,}, + {P_ENCP_VIDEO_HAVON_END, 0x3F7,}, + {P_ENCP_VIDEO_VAVON_BLINE, 0x1B,}, + {P_ENCP_VIDEO_VAVON_ELINE, 0x272,}, + {P_ENCP_VIDEO_HSO_BEGIN, 0x0,}, + {P_ENCP_VIDEO_HSO_END, 0x80,}, + {P_ENCP_VIDEO_VSO_BEGIN, 0x1E,}, + {P_ENCP_VIDEO_VSO_END, 0x32,}, + {P_ENCP_VIDEO_VSO_BLINE, 0x0,}, + {P_ENCP_VIDEO_VSO_ELINE, 0x4,}, + + {P_ENCP_VIDEO_EN, 1,}, + {P_ENCI_VIDEO_EN, 0,}, + {MREG_END_MARKER, 0} +}; + +static const struct reg_s tvregs_800x480p_60hz[] = { + {P_ENCP_VIDEO_EN, 0}, + {P_ENCI_VIDEO_EN, 0}, + {P_VENC_VDAC_SETTING, 0xff}, + + {P_ENCP_VIDEO_MODE, 0x4040}, + {P_ENCP_VIDEO_MODE_ADV, 0x18}, + {P_ENCP_VIDEO_MAX_PXCNT, 0x3DF}, + {P_ENCP_VIDEO_MAX_LNCNT, 0x1F3}, + {P_ENCP_VIDEO_HAVON_BEGIN, 0xA8}, + {P_ENCP_VIDEO_HAVON_END, 0x3C7}, + {P_ENCP_VIDEO_VAVON_BLINE, 0x11}, + {P_ENCP_VIDEO_VAVON_ELINE, 0x1F0}, + {P_ENCP_VIDEO_HSO_BEGIN, 0x0}, + {P_ENCP_VIDEO_HSO_END, 0x48}, + {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_640x480p_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, 0x90,}, + {P_ENCP_VIDEO_HAVON_END, 0x30F,}, + {P_ENCP_VIDEO_VAVON_BLINE, 0x23,}, + {P_ENCP_VIDEO_VAVON_ELINE, 0x202,}, + {P_ENCP_VIDEO_HSO_BEGIN, 0x0,}, + {P_ENCP_VIDEO_HSO_END, 0x60,}, + {P_ENCP_VIDEO_VSO_BEGIN, 0x1E,}, + {P_ENCP_VIDEO_VSO_END, 0x32,}, + {P_ENCP_VIDEO_VSO_BLINE, 0x0,}, + {P_ENCP_VIDEO_VSO_ELINE, 0x2,}, + + {P_ENCP_VIDEO_EN, 1,}, + {P_ENCI_VIDEO_EN, 0,}, + {MREG_END_MARKER, 0} +}; + +static const struct reg_s tvregs_480x320p_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, 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_480x800p_60hz[] = { + {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}, +}; + + struct vic_tvregs_set { enum hdmi_vic vic; const struct reg_s *reg_setting; @@ -725,6 +1189,24 @@ static struct vic_tvregs_set tvregsTab[] = { {HDMI_3840x2160p50_16x9, tvregs_4k2k_25hz}, {HDMI_3840x2160p60_16x9_Y420, tvregs_4k2k_30hz}, {HDMI_3840x2160p50_16x9_Y420, tvregs_4k2k_25hz}, + {HDMI_2560x1600p60_8x5, tvregs_2560x1600p_60hz}, + {HDMI_2560x1440p60_16x9, tvregs_2560x1440p_60hz}, + {HDMI_2560x1080p60_64x27, tvregs_2560x1080p_60hz}, + {HDMI_1920x1200p60_8x5, tvregs_1920x1200p_60hz}, + {HDMI_1680x1050p60_8x5, tvregs_1680x1050p_60hz}, + {HDMI_1600x1200p60_4x3, tvregs_1600x1200p_60hz}, + {HDMI_1600x900p60_16x9, tvregs_1600x900p_60hz}, + {HDMI_1440x900p60_8x5, tvregs_1440x900p_60hz}, + {HDMI_1360x768p60_16x9, tvregs_1360x768p_60hz}, + {HDMI_1280x1024p60_5x4, tvregs_1280x1024p_60hz}, + {HDMI_1280x800p60_8x5, tvregs_1280x800p_60hz}, + {HDMI_1024x768p60_4x3, tvregs_1024x768p_60hz}, + {HDMI_1024x600p60_16x9, tvregs_1024x600p_60hz}, + {HDMI_800x600p60_4x3, tvregs_800x600p_60hz}, + {HDMI_800x480p60_5x3, tvregs_800x480p_60hz}, + {HDMI_640x480p60_4x3, tvregs_640x480p_60hz}, + {HDMI_480x320p60_4x3, tvregs_480x320p_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 c8abe65909a4..9f96e49b119e 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 @@ -1431,6 +1431,291 @@ static void hdmi_tvenc_set(struct hdmitx_vidpara *param) SOF_LINES = 36; TOTAL_FRAMES = 4; break; + case HDMI_2560x1600p60_8x5: + INTERLACE_MODE = 0U; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (2560*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (1600/(1+INTERLACE_MODE)); + LINES_F0 = 1646; + LINES_F1 = 1646; + FRONT_PORCH = 48; + HSYNC_PIXELS = 32; + BACK_PORCH = 80; + EOF_LINES = 2; + VSYNC_LINES = 6; + SOF_LINES = 38; + TOTAL_FRAMES = 4; + break; + case HDMI_2560x1440p60_16x9: + INTERLACE_MODE = 0U; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (2560*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (1440/(1+INTERLACE_MODE)); + LINES_F0 = 1481; + LINES_F1 = 1481; + FRONT_PORCH = 48; + HSYNC_PIXELS = 32; + BACK_PORCH = 80; + EOF_LINES = 2; + VSYNC_LINES = 5; + SOF_LINES = 34; + TOTAL_FRAMES = 4; + break; + case HDMI_2560x1080p60_64x27: + INTERLACE_MODE = 0U; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (2560*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (1080/(1+INTERLACE_MODE)); + LINES_F0 = 1111; + LINES_F1 = 1111; + FRONT_PORCH = 64; + HSYNC_PIXELS = 64; + BACK_PORCH = 96; + EOF_LINES = 3; + VSYNC_LINES = 10; + SOF_LINES = 18; + TOTAL_FRAMES = 4; + break; + case HDMI_1920x1200p60_8x5: + INTERLACE_MODE = 0U; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (1920*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (1200/(1+INTERLACE_MODE)); + LINES_F0 = 1235; + LINES_F1 = 1235; + FRONT_PORCH = 48; + HSYNC_PIXELS = 32; + BACK_PORCH = 80; + EOF_LINES = 3; + VSYNC_LINES = 6; + SOF_LINES = 26; + break; + case HDMI_1680x1050p60_8x5: + INTERLACE_MODE = 0U; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (1680*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (1050/(1+INTERLACE_MODE)); + LINES_F0 = 1089; + LINES_F1 = 1089; + FRONT_PORCH = 104; + HSYNC_PIXELS = 176; + BACK_PORCH = 280; + EOF_LINES = 3; + VSYNC_LINES = 6; + SOF_LINES = 30; + TOTAL_FRAMES = 4; + break; + case HDMI_1600x1200p60_4x3: + INTERLACE_MODE = 0U; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (1600*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (1200/(1+INTERLACE_MODE)); + LINES_F0 = 1270; + LINES_F1 = 1270; + FRONT_PORCH = 32; + HSYNC_PIXELS = 160; + BACK_PORCH = 256; + EOF_LINES = 10; + VSYNC_LINES = 8; + SOF_LINES = 52; + TOTAL_FRAMES = 4; + break; + case HDMI_1600x900p60_16x9: + INTERLACE_MODE = 0U; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (1600*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (900/(1+INTERLACE_MODE)); + LINES_F0 = 1800; + LINES_F1 = 1800; + FRONT_PORCH = 24; + HSYNC_PIXELS = 80; + BACK_PORCH = 96; + EOF_LINES = 1; + VSYNC_LINES = 3; + SOF_LINES = 96; + TOTAL_FRAMES = 4; + break; + case HDMI_1440x900p60_8x5: + INTERLACE_MODE = 0U; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (1440*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (900/(1+INTERLACE_MODE)); + LINES_F0 = 934; + LINES_F1 = 934; + FRONT_PORCH = 80; + HSYNC_PIXELS = 152; + BACK_PORCH = 232; + EOF_LINES = 3; + VSYNC_LINES = 6; + SOF_LINES = 25; + TOTAL_FRAMES = 4; + break; + case HDMI_1360x768p60_16x9: + INTERLACE_MODE = 0; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (1360*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (768/(1+INTERLACE_MODE)); + LINES_F0 = 795; + LINES_F1 = 795; + FRONT_PORCH = 64; + HSYNC_PIXELS = 112; + BACK_PORCH = 256; + EOF_LINES = 3; + VSYNC_LINES = 6; + SOF_LINES = 18; + TOTAL_FRAMES = 4; + break; + case HDMI_1280x1024p60_5x4: + INTERLACE_MODE = 0; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (1280*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (1024/(1+INTERLACE_MODE)); + LINES_F0 = 1066; + LINES_F1 = 1066; + FRONT_PORCH = 48; + HSYNC_PIXELS = 112; + BACK_PORCH = 248; + EOF_LINES = 1; + VSYNC_LINES = 3; + SOF_LINES = 38; + break; + case HDMI_1280x800p60_8x5: + INTERLACE_MODE = 0; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (1280*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (800/(1+INTERLACE_MODE)); + LINES_F0 = 823; + LINES_F1 = 823; + FRONT_PORCH = 48; + HSYNC_PIXELS = 32; + BACK_PORCH = 80; + EOF_LINES = 3; + VSYNC_LINES = 6; + SOF_LINES = 14; + break; + case HDMI_1024x768p60_4x3: + INTERLACE_MODE = 0; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (1024*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (768/(1+INTERLACE_MODE)); + LINES_F0 = 806; + LINES_F1 = 806; + FRONT_PORCH = 24; + HSYNC_PIXELS = 136; + BACK_PORCH = 160; + EOF_LINES = 3; + VSYNC_LINES = 6; + SOF_LINES = 29; + TOTAL_FRAMES = 4; + break; + case HDMI_1024x600p60_16x9: + INTERLACE_MODE = 0; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (1024*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (600/(1+INTERLACE_MODE)); + LINES_F0 = 638; + LINES_F1 = 638; + FRONT_PORCH = 24; + HSYNC_PIXELS = 136; + BACK_PORCH = 160; + EOF_LINES = 3; + VSYNC_LINES = 6; + SOF_LINES = 29; + TOTAL_FRAMES = 4; + break; + case HDMI_800x600p60_4x3: + INTERLACE_MODE = 0; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (800*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (600/(1+INTERLACE_MODE)); + LINES_F0 = 628; + LINES_F1 = 628; + FRONT_PORCH = 40; + HSYNC_PIXELS = 128; + BACK_PORCH = 88; + EOF_LINES = 1; + VSYNC_LINES = 4; + SOF_LINES = 23; + TOTAL_FRAMES = 4; + break; + case HDMI_800x480p60_5x3: + INTERLACE_MODE = 0; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (800*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (480/(1+INTERLACE_MODE)); + LINES_F0 = 500; + LINES_F1 = 500; + FRONT_PORCH = 24; + HSYNC_PIXELS = 72; + BACK_PORCH = 96; + EOF_LINES = 3; + VSYNC_LINES = 7; + SOF_LINES = 10; + TOTAL_FRAMES = 4; + break; + case HDMI_640x480p60_4x3: + INTERLACE_MODE = 0; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (640*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (480/(1+INTERLACE_MODE)); + LINES_F0 = 525; + LINES_F1 = 525; + FRONT_PORCH = 16; + HSYNC_PIXELS = 96; + BACK_PORCH = 48; + EOF_LINES = 10; + VSYNC_LINES = 2; + SOF_LINES = 33; + TOTAL_FRAMES = 4; + break; + case HDMI_480x320p60_4x3: + INTERLACE_MODE = 0; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (480*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (320/(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 = 95; + TOTAL_FRAMES = 4; + break; + case HDMI_480x800p60_4x3: + INTERLACE_MODE = 0U; + PIXEL_REPEAT_VENC = 0; + PIXEL_REPEAT_HDMI = 0; + ACTIVE_PIXELS = (480*(1+PIXEL_REPEAT_HDMI)); + ACTIVE_LINES = (800*(1+PIXEL_REPEAT_HDMI)); + LINES_F0 = 845; + LINES_F1 = 845; + FRONT_PORCH = 40; + HSYNC_PIXELS = 48; + BACK_PORCH = 40; + EOF_LINES = 13; + VSYNC_LINES = 3; + SOF_LINES = 29; + TOTAL_FRAMES = 4; + break; default: break; } 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 8c8bd05de47a..c8068820d0f5 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 @@ -777,6 +777,64 @@ static struct hw_enc_clk_val_group setting_enc_clk_val_24[] = { HDMI_3840x2160p50_16x9_Y420, HDMI_VIC_END}, 5940000, 2, 1, 1, VID_PLL_DIV_5, 1, 2, 1, -1}, + {{HDMI_2560x1600p60_8x5, + HDMI_VIC_END}, + 2685000, 1, 1, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_2560x1440p60_16x9, + HDMI_VIC_END}, + 2415000, 1, 1, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_2560x1080p60_64x27, + HDMI_VIC_END}, + 1855800, 1, 1, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_1920x1200p60_8x5, + HDMI_VIC_END}, + 1540000, 1, 1, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_1680x1050p60_8x5, + HDMI_VIC_END}, + 1462500, 1, 1, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_1600x1200p60_4x3, + HDMI_VIC_END}, + 1560000, 1, 1, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_1600x900p60_16x9, + HDMI_VIC_END}, + /* It works, but the exact hpll is 4320000 */ + 4324320, 4, 1, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_1440x900p60_8x5, + HDMI_VIC_END}, + 2134000, 2, 1, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_1360x768p60_16x9, + HDMI_VIC_END}, + 3420000, 2, 2, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_1280x1024p60_5x4, + HDMI_VIC_END}, + /* actual hpll : 4320000 */ + 4324320, 4, 1, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_1280x800p60_8x5, + HDMI_VIC_END}, + 1422000, 2, 1, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_1024x768p60_4x3, + HDMI_VIC_END}, + 2600000, 4, 1, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_1024x600p60_16x9, + HDMI_VIC_END}, + 2058000, 4, 1, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_800x600p60_4x3, + HDMI_VIC_END}, + 1560000, 2, 2, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_800x480p60_5x3, + HDMI_VIC_END}, + 2415000, 4, 2, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_640x480p60_4x3, + HDMI_VIC_END}, + /* actual hpll : 2014000 */ + 2000000, 4, 2, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_480x320p60_4x3, + HDMI_VIC_END}, + /* actual hpll : 2016000 */ + 2000000, 4, 2, 2, VID_PLL_DIV_5, 1, 1, 1, -1}, + {{HDMI_480x800p60_4x3, + HDMI_VIC_END}, + 2560000, 4, 2, 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}, diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hw_g12a.c b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hw_g12a.c index 47881ffbf1de..0cda696a4b3b 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hw_g12a.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hw_g12a.c @@ -250,6 +250,18 @@ void set_g12a_hpll_clk_out(unsigned int frac_rate, unsigned int clk) WAIT_FOR_PLL_LOCKED(P_HHI_HDMI_PLL_CNTL0); pr_info("HPLL: 0x%x\n", hd_read_reg(P_HHI_HDMI_PLL_CNTL0)); break; + case 3420000: + hd_write_reg(P_HHI_HDMI_PLL_CNTL0, 0x3b00048e); + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x00018000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL2, 0x00000000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL3, 0x0a691c00); + hd_write_reg(P_HHI_HDMI_PLL_CNTL4, 0x33771290); + hd_write_reg(P_HHI_HDMI_PLL_CNTL5, 0x39270000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL6, 0x50540000); + hd_set_reg_bits(P_HHI_HDMI_PLL_CNTL0, 0x0, 29, 1); + WAIT_FOR_PLL_LOCKED(P_HHI_HDMI_PLL_CNTL0); + pr_info("HPLL: 0x%x\n", hd_read_reg(P_HHI_HDMI_PLL_CNTL0)); + break; case 3243240: hd_write_reg(P_HHI_HDMI_PLL_CNTL0, 0x3b000487); if (frac_rate) @@ -280,6 +292,201 @@ void set_g12a_hpll_clk_out(unsigned int frac_rate, unsigned int clk) WAIT_FOR_PLL_LOCKED(P_HHI_HDMI_PLL_CNTL0); pr_info("HPLL: 0x%x\n", hd_read_reg(P_HHI_HDMI_PLL_CNTL0)); break; + case 2685000: + hd_write_reg(P_HHI_HDMI_PLL_CNTL0, 0x3b00046F); + if (frac_rate) + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x000140b4); + else + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x00018000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL2, 0x00000000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL3, 0x0a691c00); + hd_write_reg(P_HHI_HDMI_PLL_CNTL4, 0x33771290); + hd_write_reg(P_HHI_HDMI_PLL_CNTL5, 0x39270000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL6, 0x50540000); + hd_set_reg_bits(P_HHI_HDMI_PLL_CNTL0, 0x0, 29, 1); + WAIT_FOR_PLL_LOCKED(P_HHI_HDMI_PLL_CNTL0); + pr_info("HPLL: 0x%x\n", hd_read_reg(P_HHI_HDMI_PLL_CNTL0)); + break; + case 2600000: + hd_write_reg(P_HHI_HDMI_PLL_CNTL0, 0x3b00046C); + if (frac_rate) + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x000140b4); + else + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x00018000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL2, 0x00000000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL3, 0x0a691c00); + hd_write_reg(P_HHI_HDMI_PLL_CNTL4, 0x33771290); + hd_write_reg(P_HHI_HDMI_PLL_CNTL5, 0x39270000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL6, 0x50540000); + hd_set_reg_bits(P_HHI_HDMI_PLL_CNTL0, 0x0, 29, 1); + WAIT_FOR_PLL_LOCKED(P_HHI_HDMI_PLL_CNTL0); + pr_info("HPLL: 0x%x\n", hd_read_reg(P_HHI_HDMI_PLL_CNTL0)); + break; + case 2560000: + hd_write_reg(P_HHI_HDMI_PLL_CNTL0, 0x3b00046A); + if (frac_rate) + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x000140b4); + else + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x00018000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL2, 0x00000000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL3, 0x0a691c00); + hd_write_reg(P_HHI_HDMI_PLL_CNTL4, 0x33771290); + hd_write_reg(P_HHI_HDMI_PLL_CNTL5, 0x39270000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL6, 0x50540000); + hd_set_reg_bits(P_HHI_HDMI_PLL_CNTL0, 0x0, 29, 1); + WAIT_FOR_PLL_LOCKED(P_HHI_HDMI_PLL_CNTL0); + pr_info("HPLL: 0x%x\n", hd_read_reg(P_HHI_HDMI_PLL_CNTL0)); + break; + case 2415000: + hd_write_reg(P_HHI_HDMI_PLL_CNTL0, 0x3b000464); + if (frac_rate) + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x000140b4); + else + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x00018000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL2, 0x00000000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL3, 0x0a691c00); + hd_write_reg(P_HHI_HDMI_PLL_CNTL4, 0x33771290); + hd_write_reg(P_HHI_HDMI_PLL_CNTL5, 0x39270000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL6, 0x50540000); + hd_set_reg_bits(P_HHI_HDMI_PLL_CNTL0, 0x0, 29, 1); + WAIT_FOR_PLL_LOCKED(P_HHI_HDMI_PLL_CNTL0); + pr_info("HPLL: 0x%x\n", hd_read_reg(P_HHI_HDMI_PLL_CNTL0)); + break; + case 2134000: + hd_write_reg(P_HHI_HDMI_PLL_CNTL0, 0x3b00045A); + if (frac_rate) + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x000140b4); + else + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x00018000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL2, 0x00000000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL3, 0x0a691c00); + hd_write_reg(P_HHI_HDMI_PLL_CNTL4, 0x33771290); + hd_write_reg(P_HHI_HDMI_PLL_CNTL5, 0x39270000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL6, 0x50540000); + hd_set_reg_bits(P_HHI_HDMI_PLL_CNTL0, 0x0, 29, 1); + WAIT_FOR_PLL_LOCKED(P_HHI_HDMI_PLL_CNTL0); + pr_info("HPLL: 0x%x\n", hd_read_reg(P_HHI_HDMI_PLL_CNTL0)); + break; + case 2058000: + hd_write_reg(P_HHI_HDMI_PLL_CNTL0, 0x3b000455); + if (frac_rate) + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x000140b4); + else + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x00018000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL2, 0x00000000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL3, 0x0a691c00); + hd_write_reg(P_HHI_HDMI_PLL_CNTL4, 0x33771290); + hd_write_reg(P_HHI_HDMI_PLL_CNTL5, 0x39270000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL6, 0x50540000); + hd_set_reg_bits(P_HHI_HDMI_PLL_CNTL0, 0x0, 29, 1); + WAIT_FOR_PLL_LOCKED(P_HHI_HDMI_PLL_CNTL0); + pr_info("HPLL: 0x%x\n", hd_read_reg(P_HHI_HDMI_PLL_CNTL0)); + break; + case 2000000: + hd_write_reg(P_HHI_HDMI_PLL_CNTL0, 0x3b000453); + if (frac_rate) + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x000140b4); + else + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x00018000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL2, 0x00000000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL3, 0x0a691c00); + hd_write_reg(P_HHI_HDMI_PLL_CNTL4, 0x33771290); + hd_write_reg(P_HHI_HDMI_PLL_CNTL5, 0x39270000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL6, 0x50540000); + hd_set_reg_bits(P_HHI_HDMI_PLL_CNTL0, 0x0, 29, 1); + WAIT_FOR_PLL_LOCKED(P_HHI_HDMI_PLL_CNTL0); + pr_info("HPLL: 0x%x\n", hd_read_reg(P_HHI_HDMI_PLL_CNTL0)); + break; + case 1855800: + hd_write_reg(P_HHI_HDMI_PLL_CNTL0, 0x3b00044C); + if (frac_rate) + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x00000000); + else + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x0001A000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL2, 0x00000000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL3, 0x0a691c00); + hd_write_reg(P_HHI_HDMI_PLL_CNTL4, 0x33771290); + hd_write_reg(P_HHI_HDMI_PLL_CNTL5, 0x39270000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL6, 0x50540000); + hd_set_reg_bits(P_HHI_HDMI_PLL_CNTL0, 0x0, 29, 1); + WAIT_FOR_PLL_LOCKED(P_HHI_HDMI_PLL_CNTL0); + pr_info("HPLL: 0x%x\n", hd_read_reg(P_HHI_HDMI_PLL_CNTL0)); + break; + case 1560000: + hd_write_reg(P_HHI_HDMI_PLL_CNTL0, 0x3b000440); + if (frac_rate) + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x00000000); + else + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x0001A000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL2, 0x00000000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL3, 0x0a691c00); + hd_write_reg(P_HHI_HDMI_PLL_CNTL4, 0x33771290); + hd_write_reg(P_HHI_HDMI_PLL_CNTL5, 0x39270000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL6, 0x50540000); + hd_set_reg_bits(P_HHI_HDMI_PLL_CNTL0, 0x0, 29, 1); + WAIT_FOR_PLL_LOCKED(P_HHI_HDMI_PLL_CNTL0); + pr_info("HPLL: 0x%x\n", hd_read_reg(P_HHI_HDMI_PLL_CNTL0)); + break; + case 1540000: + hd_write_reg(P_HHI_HDMI_PLL_CNTL0, 0x3b00043F); + if (frac_rate) + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x00000000); + else + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x0001A000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL2, 0x00000000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL3, 0x0a691c00); + hd_write_reg(P_HHI_HDMI_PLL_CNTL4, 0x33771290); + hd_write_reg(P_HHI_HDMI_PLL_CNTL5, 0x39270000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL6, 0x50540000); + hd_set_reg_bits(P_HHI_HDMI_PLL_CNTL0, 0x0, 29, 1); + WAIT_FOR_PLL_LOCKED(P_HHI_HDMI_PLL_CNTL0); + pr_info("HPLL: 0x%x\n", hd_read_reg(P_HHI_HDMI_PLL_CNTL0)); + break; + case 1462500: + hd_write_reg(P_HHI_HDMI_PLL_CNTL0, 0x3b00043C); + if (frac_rate) + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x00000000); + else + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x0001A000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL2, 0x00000000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL3, 0x0a691c00); + hd_write_reg(P_HHI_HDMI_PLL_CNTL4, 0x33771290); + hd_write_reg(P_HHI_HDMI_PLL_CNTL5, 0x39270000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL6, 0x50540000); + hd_set_reg_bits(P_HHI_HDMI_PLL_CNTL0, 0x0, 29, 1); + WAIT_FOR_PLL_LOCKED(P_HHI_HDMI_PLL_CNTL0); + pr_info("HPLL: 0x%x\n", hd_read_reg(P_HHI_HDMI_PLL_CNTL0)); + break; + case 1422000: + hd_write_reg(P_HHI_HDMI_PLL_CNTL0, 0x3b00043A); + if (frac_rate) + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x00000000); + else + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x0001A000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL2, 0x00000000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL3, 0x0a691c00); + hd_write_reg(P_HHI_HDMI_PLL_CNTL4, 0x33771290); + hd_write_reg(P_HHI_HDMI_PLL_CNTL5, 0x39270000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL6, 0x50540000); + hd_set_reg_bits(P_HHI_HDMI_PLL_CNTL0, 0x0, 29, 1); + WAIT_FOR_PLL_LOCKED(P_HHI_HDMI_PLL_CNTL0); + pr_info("HPLL: 0x%x\n", hd_read_reg(P_HHI_HDMI_PLL_CNTL0)); + break; + case 320000: + hd_write_reg(P_HHI_HDMI_PLL_CNTL0, 0x3b00040D); + if (frac_rate) + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x00000000); + else + hd_write_reg(P_HHI_HDMI_PLL_CNTL1, 0x00018000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL2, 0x00000000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL3, 0x0a691c00); + hd_write_reg(P_HHI_HDMI_PLL_CNTL4, 0x33771290); + hd_write_reg(P_HHI_HDMI_PLL_CNTL5, 0x39270000); + hd_write_reg(P_HHI_HDMI_PLL_CNTL6, 0x50540000); + hd_set_reg_bits(P_HHI_HDMI_PLL_CNTL0, 0x0, 29, 1); + WAIT_FOR_PLL_LOCKED(P_HHI_HDMI_PLL_CNTL0); + pr_info("HPLL: 0x%x\n", hd_read_reg(P_HHI_HDMI_PLL_CNTL0)); + break; default: pr_info("error hpll clk: %d\n", clk); break; 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 2e14de1cfcbc..e21b50e3dd50 100644 --- a/include/linux/amlogic/media/vout/hdmi_tx/hdmi_common.h +++ b/include/linux/amlogic/media/vout/hdmi_tx/hdmi_common.h @@ -146,6 +146,22 @@ enum hdmi_vic { HDMI_3840x1080p100hz, HDMI_3840x540p240hz, HDMI_3840x540p200hz, + HDMI_2560x1600p60_8x5, + HDMI_2560x1440p60_16x9, + HDMI_1920x1200p60_8x5, + HDMI_1680x1050p60_8x5, + HDMI_1600x1200p60_4x3, + HDMI_1600x900p60_16x9, + HDMI_1440x900p60_8x5, + HDMI_1360x768p60_16x9, + HDMI_1280x1024p60_5x4, + HDMI_1280x800p60_8x5, + HDMI_1024x768p60_4x3, + HDMI_1024x600p60_16x9, + HDMI_800x600p60_4x3, + HDMI_800x480p60_5x3, + HDMI_480x320p60_4x3, + HDMI_480x800p60_4x3, /* * the following vic is for those y420 mode