mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 12:17:12 +09:00
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:
@@ -3937,6 +3937,18 @@ jiffies_to_msecs(jiffies_64 - vframe->ready_jiffies64));
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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 (
|
if (
|
||||||
di_pre_stru.di_chan2_buf_dup_p == NULL) {
|
di_pre_stru.di_chan2_buf_dup_p == NULL) {
|
||||||
di_pre_stru.field_count_for_cont = 0;
|
di_pre_stru.field_count_for_cont = 0;
|
||||||
|
|||||||
@@ -624,6 +624,24 @@ static int di_debug_readreg;
|
|||||||
module_param(di_debug_readreg, int, 0644);
|
module_param(di_debug_readreg, int, 0644);
|
||||||
MODULE_PARM_DESC(di_debug_readreg, "di_debug_readreg");
|
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(
|
int adaptive_combing_fixing(
|
||||||
struct combing_status_s *cmb_status,
|
struct combing_status_s *cmb_status,
|
||||||
unsigned int field_diff,
|
unsigned int field_diff,
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ struct combing_status_s *adpative_combing_config(unsigned int width,
|
|||||||
unsigned int height,
|
unsigned int height,
|
||||||
enum vframe_source_type_e src_type, bool prog,
|
enum vframe_source_type_e src_type, bool prog,
|
||||||
enum tvin_sig_fmt_e fmt);
|
enum tvin_sig_fmt_e fmt);
|
||||||
|
extern void fix_tl1_1080i_sawtooth_patch(void);
|
||||||
int adaptive_combing_fixing(
|
int adaptive_combing_fixing(
|
||||||
struct combing_status_s *cmb_status,
|
struct combing_status_s *cmb_status,
|
||||||
unsigned int field_diff, unsigned int frame_diff,
|
unsigned int field_diff, unsigned int frame_diff,
|
||||||
|
|||||||
Reference in New Issue
Block a user