static const struct di_ext_ops di_ext = {
.di_post_reg_rd = lDI_POST_REG_RD,
.di_post_wr_reg_bits = lDI_POST_WR_REG_BITS,
+ .post_update_mc = di_patch_post_update_mc,
};
#endif
if (!di_pre_stru.bypass_flag)
di_pre_trigger_work(&di_pre_stru);
hrtimer_forward_now(&di_pre_hrtimer, ms_to_ktime(10));
- di_patch_post_update_mc();
+ /*di_patch_post_update_mc();*/
return HRTIMER_RESTART;
}
}
EXPORT_SYMBOL(DI_POST_WR_REG_BITS);
+void DI_POST_UPDATE_MC(void)
+{
+ if (dil_api && dil_api->post_update_mc)
+ dil_api->post_update_mc();
+}
+EXPORT_SYMBOL(DI_POST_UPDATE_MC);
+
/***************************************
* reserved mem for di *
**************************************/
struct di_ext_ops {
unsigned int (*di_post_reg_rd)(unsigned int addr);
int (*di_post_wr_reg_bits)(u32 adr, u32 val, u32 start, u32 len);
+ void (*post_update_mc)(void);
};
#endif /*__DI_LOCAL_H__*/
static const struct di_ext_ops di_ext = {
.di_post_reg_rd = l_DI_POST_REG_RD,
.di_post_wr_reg_bits = l_DI_POST_WR_REG_BITS,
+ .post_update_mc = NULL,
};
void dim_attach_to_local(void)
struct vframe_s *cur_dispbuf_back = cur_dispbuf;
static struct vframe_s *pause_vf;
int force_flush = 0;
+ bool di_post_process_done = false;
static u32 interrupt_count;
int ret = 0;
u32 next_afbc_request = atomic_read(&gAfbc_request);
24) | (frame_par_di_set << 16),
zoom_end_x_lines, zoom_start_y_lines,
zoom_end_y_lines, cur_dispbuf);
+ di_post_process_done = true;
}
exit:
+ if (legacy_vpp &&
+ !di_post_process_done &&
+ (DI_POST_REG_RD(DI_POST_CTRL) & 0x100))
+ DI_POST_UPDATE_MC();
+
#if defined(PTS_LOGGING) || defined(PTS_TRACE_DEBUG)
pts_trace++;
#endif
u32 get_video_angle(void);
extern unsigned int DI_POST_REG_RD(unsigned int addr);
extern int DI_POST_WR_REG_BITS(u32 adr, u32 val, u32 start, u32 len);
+void DI_POST_UPDATE_MC(void);
+
extern void videosync_pcrscr_update(s32 inc, u32 base);
#endif /* VIDEO_H */