}
}
} 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;
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,
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,