add Full VSYNC bypas option

This commit is contained in:
marqs 2025-03-01 11:23:24 +02:00
parent 2725351039
commit fe3c6fdfa7
6 changed files with 19 additions and 7 deletions

View File

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

View File

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

View File

@ -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 } } },
}))

View File

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

View File

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