deinterlace: fix tl1 in 1080i has small sawtooth [1/1]

PD#SWPL-4072

Problem:
tl1 1080i in some dark scenes and roller coasters
have small sawtooth

Solution:
adjust a set of registers with special motion

Verify:
tl1

Change-Id: Idbe62e823f1c6c683b67d000978de1862c8e3162
Signed-off-by: Wenfeng Guo <wenfeng.guo@amlogic.com>
This commit is contained in:
Wenfeng Guo
2019-01-10 16:19:58 +08:00
committed by Jianxin Pan
parent 2e4371efff
commit fb34727346
3 changed files with 31 additions and 0 deletions

View File

@@ -3937,6 +3937,18 @@ jiffies_to_msecs(jiffies_64 - vframe->ready_jiffies64));
}
}
} else {
/*********************************/
if ((di_buf->vframe->width >= 1920) &&
(di_buf->vframe->height >= 1080) &&
is_meson_tl1_cpu()) {
if (combing_fix_en) {
combing_fix_en = false;
fix_tl1_1080i_sawtooth_patch();
}
} else
combing_fix_en = true;
/*********************************/
if (
di_pre_stru.di_chan2_buf_dup_p == NULL) {
di_pre_stru.field_count_for_cont = 0;

View File

@@ -624,6 +624,24 @@ static int di_debug_readreg;
module_param(di_debug_readreg, int, 0644);
MODULE_PARM_DESC(di_debug_readreg, "di_debug_readreg");
/*from VLSI yanling.liu, the patch fix TL1 1080I in some dark */
/*scenes and roller coasters have small sawtooth, when turn off*/
/*combing_fix_en, set the registers*/
void fix_tl1_1080i_sawtooth_patch(void)
{
DI_Wr(0x1741, 0x0A0A1A22);
DI_Wr(0x1742, 0x0a100101);
DI_Wr(0x1743, 0x01020420);
DI_Wr(0x1744, 0x32210404);
DI_Wr(0x17a9, 0x0a100505);
DI_Wr(0x17aa, 0x04040101);
DI_Wr(0x17ab, 0x0a0a0a0a);
DI_Wr(0x17ac, 0x0f100101);
DI_Wr(0x17ad, 0x04040606);
DI_Wr(0x17ae, 0x02030202);
DI_Wr(0x17af, 0x60020a60);
}
int adaptive_combing_fixing(
struct combing_status_s *cmb_status,
unsigned int field_diff,

View File

@@ -39,6 +39,7 @@ struct combing_status_s *adpative_combing_config(unsigned int width,
unsigned int height,
enum vframe_source_type_e src_type, bool prog,
enum tvin_sig_fmt_e fmt);
extern void fix_tl1_1080i_sawtooth_patch(void);
int adaptive_combing_fixing(
struct combing_status_s *cmb_status,
unsigned int field_diff, unsigned int frame_diff,