From fe3c6fdfa77acebfb0a5a73ccdf9f4efa69a04a9 Mon Sep 17 00:00:00 2001 From: marqs Date: Sat, 1 Mar 2025 11:23:24 +0200 Subject: [PATCH] add Full VSYNC bypas option --- software/sys_controller/ossc/av_controller.c | 5 ++++- software/sys_controller/ossc/avconfig.h | 1 + software/sys_controller/ossc/menu.c | 1 + software/sys_controller/tvp7002/tvp7002.c | 17 +++++++++++------ software/sys_controller/tvp7002/tvp7002.h | 2 ++ software/sys_controller_bsp/libhal_bsp.a | Bin 34808 -> 34944 bytes 6 files changed, 19 insertions(+), 7 deletions(-) diff --git a/software/sys_controller/ossc/av_controller.c b/software/sys_controller/ossc/av_controller.c index 591b54c..07ae972 100644 --- a/software/sys_controller/ossc/av_controller.c +++ b/software/sys_controller/ossc/av_controller.c @@ -415,6 +415,9 @@ status_t get_status(tvp_sync_input_t syncinput) if (memcmp(&tc.col, &cm.cc.col, sizeof(color_setup_t))) tvp_set_gain_offset(&tc.col); + if (tc.full_vs_bypass != cm.cc.full_vs_bypass) + tvp_set_full_vs_bypass(tc.full_vs_bypass); + #ifdef ENABLE_AUDIO if ((tc.audio_dw_sampl != cm.cc.audio_dw_sampl) || #ifdef MANUAL_CTS @@ -964,7 +967,7 @@ int main() printf("### DIY VIDEO DIGITIZER / SCANCONVERTER INIT OK ###\n\n"); sniprintf(row1, LCD_ROW_LEN+1, "OSSC fw. %u.%.2u" FW_SUFFIX1 FW_SUFFIX2, FW_VER_MAJOR, FW_VER_MINOR); #ifndef DEBUG - strncpy(row2, "2014-2024 marqs", LCD_ROW_LEN+1); + strncpy(row2, "2014-2025 marqs", LCD_ROW_LEN+1); #else strncpy(row2, "** DEBUG BUILD *", LCD_ROW_LEN+1); #endif diff --git a/software/sys_controller/ossc/avconfig.h b/software/sys_controller/ossc/avconfig.h index 0f5b79b..52f7d04 100644 --- a/software/sys_controller/ossc/avconfig.h +++ b/software/sys_controller/ossc/avconfig.h @@ -137,6 +137,7 @@ typedef struct { alt_u8 alc_h_filter; alt_u8 alc_v_filter; color_setup_t col; + alt_u8 full_vs_bypass; /* Audio settings */ alt_u8 audio_dw_sampl; diff --git a/software/sys_controller/ossc/menu.c b/software/sys_controller/ossc/menu.c index 4d89817..6e45e5d 100644 --- a/software/sys_controller/ossc/menu.c +++ b/software/sys_controller/ossc/menu.c @@ -223,6 +223,7 @@ MENU(menu_compatibility, P99_PROTECT({ \ { LNG("Full TX setup","フルTXセットアップ"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.full_tx_setup, OPT_WRAP, SETTING_ITEM(off_on_desc) } } }, { LNG("Allow TVP HPLL2x","TVP HPLL2xキョヨウ"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.tvp_hpll2x, OPT_WRAP, SETTING_ITEM(off_on_desc) } } }, { "AV3 use alt. RGB", OPT_AVCONFIG_SELECTION, { .sel = { &tc.av3_alt_rgb, OPT_WRAP, SETTING_ITEM(av3_alt_rgb_desc) } } }, + { "Full VSYNC bypas", OPT_AVCONFIG_SELECTION, { .sel = { &tc.full_vs_bypass, OPT_WRAP, SETTING_ITEM(off_on_desc) } } }, { "Default HDMI VIC", OPT_AVCONFIG_NUMVALUE, { .num = { &tc.default_vic, OPT_NOWRAP, 0, HDMI_1080p50, value_disp } } }, })) diff --git a/software/sys_controller/tvp7002/tvp7002.c b/software/sys_controller/tvp7002/tvp7002.c index 96d2a08..4c67046 100644 --- a/software/sys_controller/tvp7002/tvp7002.c +++ b/software/sys_controller/tvp7002/tvp7002.c @@ -38,7 +38,8 @@ const ypbpr_to_rgb_csc_t csc_coeffs[] = { }; static const alt_u8 Kvco[] = {75, 85, 150, 200}; -static const char *Kvco_str[] = { "Ultra low", "Low", "Medium", "High" }; +static const char* const Kvco_str[] = { "Ultra low", "Low", "Medium", "High" }; +static alt_u8 full_vs_bypass; static void tvp_set_clamp_type(video_format fmt) { @@ -201,6 +202,7 @@ void tvp_init() }; // Set default configuration (skip those which match register reset values) + full_vs_bypass = 0; // Configure external refclk, HPLL generated pclk tvp_sel_clk(REFCLK_EXT27, 0); @@ -267,6 +269,10 @@ void tvp_set_gain_offset(color_setup_t *col) { tvp_writereg(TVP_B_FOFFSET_MSB, col->b_f_off); } +void tvp_set_full_vs_bypass(alt_u8 enable) { + full_vs_bypass = enable; +} + // Configure H-PLL (sampling rate, VCO gain and charge pump current) void tvp_setup_hpll(alt_u16 h_samplerate, alt_u16 pixs_per_line, alt_u16 refclks_per_line, alt_u8 plldivby2) { @@ -447,11 +453,10 @@ void tvp_source_sel(tvp_input_t input, tvp_sync_input_t syncinput, video_format else tvp_writereg(TVP_MISCCTRL3, 0x00); -#ifdef SYNCBYPASS - tvp_writereg(TVP_SYNCBYPASS, 0x03); -#else - tvp_writereg(TVP_SYNCBYPASS, 0x00); -#endif + if ((syncinput > TVP_SOG3) && (syncinput < TVP_CS_A)) + tvp_writereg(TVP_SYNCBYPASS, full_vs_bypass ? 0x02 : 0x00); + else + tvp_writereg(TVP_SYNCBYPASS, 0x00); //TODO: //TVP_ADCSETUP diff --git a/software/sys_controller/tvp7002/tvp7002.h b/software/sys_controller/tvp7002/tvp7002.h index 3a92300..f89cb48 100644 --- a/software/sys_controller/tvp7002/tvp7002.h +++ b/software/sys_controller/tvp7002/tvp7002.h @@ -98,6 +98,8 @@ void tvp_init(); void tvp_set_gain_offset(color_setup_t *col); +void tvp_set_full_vs_bypass(alt_u8 enable); + void tvp_setup_hpll(alt_u16 h_samplerate, alt_u16 pixs_per_line, alt_u16 refclks_per_line, alt_u8 plldivby2); void tvp_sel_csc(const ypbpr_to_rgb_csc_t *csc); diff --git a/software/sys_controller_bsp/libhal_bsp.a b/software/sys_controller_bsp/libhal_bsp.a index 056e5d6ed509a69cdb1002e1522c4a24b0e6b717..b3002f2bfee981e2fe5df7775acfe8846588a5da 100644 GIT binary patch delta 720 zcmZ{iKWGzC9LK*e|L>B!CQa=%HccXl_CnKeiKjM7B~aP~6-}^31yM?^R)m_`4h~|| z=qgoyLv@jKa&c(MP!NX{2N#!&ZVv7uICLoDdv`)8r9b$*-}n9Qckh1R$L*~<>Tevc zudnU_;S``%Yz99A@wZ)4T&MpWB)bosxd#+#!1yzu$eHv3c~URe9fTW@+tbE73rowNbh@OH{gVa9{BGv zFMah_{`d4zHgGP&ZHjPlGLj|X;pwf+;-`E2Rx%;@sU?A#*?Da&r%0X(G>qe=RxOtT0vRa2P#jX)QJ^)%lkHCy;5aH_i;|#D=Na>tb`XscNmh_|JuZ*5#29 delta 647 zcmZ{iPiPZC6vn?zx@k7aHcb|7bvD_^2HB9B?ld8^rJ&N(h=tOU=s`sEp!6WpLJtK6 z8}%w`pHK=OiU@iXQt)cA2M;2GCqXa=4_-=p@Q{=GCOHI=KKRY|F*ENE!>m0Gv>yka z)b4Eq$rdma>mpVGXRt?>eeTx36jp%JH(>lHF!c*K%~aNaD%Y8<0CQVCF6{z}Ywv&? z!@%Ol9=AQ9td`~1htp^S|I-X>(g@08nGS@fwWwiP&aoYPW^?~-Kk(pHKOVhbNQ8Fp zZ@f73wQBF=E=t;n+