ALC option

This commit is contained in:
borti4938 2016-04-14 12:39:49 +02:00
parent 2b644e89e5
commit 3e8ec16cf1
3 changed files with 37 additions and 30 deletions

View File

@ -131,6 +131,7 @@ typedef enum {
VIDEO_LPF,
LINETRIPLE_ENABLE,
LINETRIPLE_MODE,
EN_ALC,
TX_MODE,
#ifndef DEBUG
FW_UPDATE,
@ -166,6 +167,7 @@ typedef struct {
alt_8 sync_thold;
alt_u8 sync_lpf;
alt_u8 video_lpf;
alt_u8 en_alc;
} avconfig_t;
// Target configuration
@ -208,6 +210,7 @@ const menuitem_t menu[] = {
{ VIDEO_LPF, "Video LPF" },
{ LINETRIPLE_ENABLE, "240p/288p lineX3" },
{ LINETRIPLE_MODE, "Linetriple mode" },
{ EN_ALC, "Auto Lev. Contr." },
{ TX_MODE, "TX mode" },
#ifndef DEBUG
{ FW_UPDATE, "Firmware update" },
@ -828,6 +831,11 @@ void display_menu(alt_u8 forcedisp)
tc.l3_mode = tc.l3_mode < L3_MODE_MAX ? tc.l3_mode+1 : 0;
strncpy(menu_row2, l3_mode_desc[tc.l3_mode], LCD_ROW_LEN+1);
break;
case EN_ALC:
if ((code == VAL_MINUS) || (code == VAL_PLUS))
tc.en_alc = !tc.en_alc;
sniprintf(menu_row2, LCD_ROW_LEN+1, tc.en_alc ? "Enabled" : "Disabled");
break;
case TX_MODE:
if (!(IORD_ALTERA_AVALON_PIO_DATA(PIO_1_BASE) & HDMITX_MODE_MASK) && ((code == VAL_MINUS) || (code == VAL_PLUS))) {
tc.tx_mode = !tc.tx_mode;
@ -1046,10 +1054,10 @@ status_t get_status(tvp_input_t input)
status = (status < MODE_CHANGE) ? MODE_CHANGE : status;
}
if ((tc.linemult_target != cm.cc.linemult_target) || (tc.l3_mode != cm.cc.l3_mode))
status = (status < MODE_CHANGE) ? MODE_CHANGE : status;
if ((tc.s480p_mode != cm.cc.s480p_mode) && (video_modes[cm.id].flags & (MODE_DTV480P|MODE_VGA480P)))
if ((tc.linemult_target != cm.cc.linemult_target) ||
(tc.l3_mode != cm.cc.l3_mode) ||
((tc.s480p_mode != cm.cc.s480p_mode) && (video_modes[cm.id].flags & (MODE_DTV480P|MODE_VGA480P))) ||
(tc.en_alc != cm.cc.en_alc))
status = (status < MODE_CHANGE) ? MODE_CHANGE : status;
cm.totlines = totlines;
@ -1152,7 +1160,7 @@ void program_mode()
printf("Mode %s selected\n", video_modes[cm.id].name);
tvp_source_setup(cm.id, target_type, (cm.progressive ? cm.totlines : cm.totlines/2), v_hz_x100/100, cm.refclk);
tvp_source_setup(cm.id, target_type, cm.cc.en_alc, (cm.progressive ? cm.totlines : cm.totlines/2), v_hz_x100/100, cm.refclk);
set_lpf(cm.cc.video_lpf);
set_videoinfo();
}

View File

@ -91,29 +91,28 @@ static void tvp_set_clamp_position(video_type type)
}
}
static void tvp_set_alc(video_type type)
static void tvp_set_alc(alt_u8 en_alc, video_type type)
{
//disable ALC
//tvp_writereg(TVP_ALCEN, 0x00);
//tvp_writereg(TVP_ALCEN, 0x80);
//select ALC placement
switch (type) {
case VIDEO_LDTV:
tvp_writereg(TVP_ALCPLACE, 0x9);
break;
case VIDEO_SDTV:
case VIDEO_EDTV:
case VIDEO_PC:
tvp_writereg(TVP_ALCPLACE, 0x18);
break;
case VIDEO_HDTV:
tvp_writereg(TVP_ALCPLACE, 0x5A);
break;
default:
break;
if (en_alc) {
tvp_writereg(TVP_ALCEN, 0x80); //enable ALC
//select ALC placement
switch (type) {
case VIDEO_LDTV:
tvp_writereg(TVP_ALCPLACE, 0x9);
break;
case VIDEO_SDTV:
case VIDEO_EDTV:
case VIDEO_PC:
tvp_writereg(TVP_ALCPLACE, 0x18);
break;
case VIDEO_HDTV:
tvp_writereg(TVP_ALCPLACE, 0x5A);
break;
default:
break;
}
} else {
tvp_writereg(TVP_ALCEN, 0x00); //disable ALC
}
}
@ -304,14 +303,14 @@ void tvp_set_sog_thold(alt_u8 val)
printf("SOG thold set to 0x%x\n", val);
}
void tvp_source_setup(alt_8 modeid, video_type type, alt_u32 vlines, alt_u8 hz, alt_u8 refclk)
void tvp_source_setup(alt_8 modeid, video_type type, alt_u8 en_alc, alt_u32 vlines, alt_u8 hz, alt_u8 refclk)
{
// Configure clock settings
tvp_sel_clk(refclk);
// Clamp position and ALC
tvp_set_clamp_position(type);
tvp_set_alc(type);
tvp_set_alc(en_alc, type);
//set analog (coarse) gain to max recommended value (-> 91% of the ADC range with 0.7Vpp input)
tvp_writereg(TVP_BG_CGAIN, 0x88);

2
software/sys_controller/tvp7002/tvp7002.h Normal file → Executable file
View File

@ -83,7 +83,7 @@ void tvp_set_hpll_phase(alt_u8 val);
void tvp_set_sog_thold(alt_u8 val);
void tvp_source_setup(alt_8 modeid, video_type type, alt_u32 vlines, alt_u8 hz, alt_u8 refclk);
void tvp_source_setup(alt_8 modeid, video_type type, alt_u8 en_alc, alt_u32 vlines, alt_u8 hz, alt_u8 refclk);
void tvp_source_sel(tvp_input_t input, video_format fmt, alt_u8 refclk);