ALC option

This commit is contained in:
borti4938 2016-04-14 12:39:49 +02:00 committed by marqs
parent c4bb809c3c
commit e8c8347496
4 changed files with 47 additions and 32 deletions

View File

@ -152,6 +152,7 @@ typedef enum {
VIDEO_LPF,
LINETRIPLE_ENABLE,
LINETRIPLE_MODE,
EN_ALC,
TX_MODE,
#ifndef DEBUG
FW_UPDATE,
@ -190,6 +191,7 @@ typedef struct {
alt_8 vsync_thold;
alt_u8 sync_lpf;
alt_u8 video_lpf;
alt_u8 en_alc;
alt_u8 pre_coast;
alt_u8 post_coast;
} avconfig_t;
@ -236,6 +238,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>" },
@ -632,6 +635,7 @@ void set_default_avconfig()
tc.pre_coast = DEFAULT_PRE_COAST;
tc.post_coast = DEFAULT_POST_COAST;
tc.vsync_thold = DEFAULT_VSYNC_THOLD;
tc.en_alc = 1;
}
int read_userdata()
@ -887,6 +891,11 @@ void display_menu(alt_u8 forcedisp)
tc.l3_mode++;
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;
@ -1167,6 +1176,9 @@ status_t get_status(tvp_input_t input, video_format format)
if (tc.sync_lpf != cm.cc.sync_lpf)
tvp_set_sync_lpf(tc.sync_lpf);
if (tc.en_alc != cm.cc.en_alc)
tvp_set_alc(tc.en_alc, target_type);
// use memcpy instead?
cm.cc = tc;
@ -1241,7 +1253,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.cc.pre_coast, cm.cc.post_coast, cm.cc.vsync_thold);
tvp_source_setup(cm.id, target_type, cm.cc.en_alc, (cm.progressive ? cm.totlines : cm.totlines/2), v_hz_x100/100, cm.cc.pre_coast, cm.cc.post_coast, cm.cc.vsync_thold);
set_lpf(cm.cc.video_lpf);
set_videoinfo();
}

View File

@ -80,31 +80,6 @@ static void tvp_set_clamp_position(video_type type)
}
}
static void tvp_set_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;
}
}
inline alt_u32 tvp_readreg(alt_u32 regaddr)
{
I2C_start(I2CA_BASE, TVP_BASE, 0);
@ -314,11 +289,37 @@ 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 pre_coast, alt_u8 post_coast, alt_u8 vsync_thold)
void tvp_set_alc(alt_u8 en_alc, video_type type)
{
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
}
}
void tvp_source_setup(alt_8 modeid, video_type type, alt_u8 en_alc, alt_u32 vlines, alt_u8 hz, alt_u8 pre_coast, alt_u8 post_coast, alt_u8 vsync_thold)
{
// Clamp position and ALC
tvp_set_clamp_position(type);
tvp_set_alc(type);
tvp_set_alc(en_alc, type);
tvp_set_ssthold(vsync_thold);

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

@ -89,7 +89,9 @@ 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 pre_coast, alt_u8 post_coast, alt_u8 vsync_thold);
void tvp_set_alc(alt_u8 en_alc, video_type type);
void tvp_source_setup(alt_8 modeid, video_type type, alt_u8 en_alc, alt_u32 vlines, alt_u8 hz, alt_u8 pre_coast, alt_u8 post_coast, alt_u8 vsync_thold);
void tvp_source_sel(tvp_input_t input, video_format fmt);

View File

@ -2,9 +2,9 @@
<sch:Settings xmlns:sch="http://www.altera.com/embeddedsw/bsp/schema">
<BspType>hal</BspType>
<BspVersion>default</BspVersion>
<BspGeneratedTimeStamp>May 22, 2016 8:28:30 PM</BspGeneratedTimeStamp>
<BspGeneratedUnixTimeStamp>1463938110913</BspGeneratedUnixTimeStamp>
<BspGeneratedLocation>./</BspGeneratedLocation>
<BspGeneratedTimeStamp>May 24, 2016 1:04:38 AM</BspGeneratedTimeStamp>
<BspGeneratedUnixTimeStamp>1464041078241</BspGeneratedUnixTimeStamp>
<BspGeneratedLocation>/home/markus/Code/ossc/software/sys_controller_bsp</BspGeneratedLocation>
<BspSettingsFile>settings.bsp</BspSettingsFile>
<SopcDesignFile>../../sys.sopcinfo</SopcDesignFile>
<JdiFile>default</JdiFile>