extern int win_update_log_level;
extern int dpu_mres_log_level;
extern int decon_systrace_enable;
+extern int esd_bypass_cnt;
extern struct decon_bts_ops decon_bts_control;
#define DECON_MODULE_NAME "exynos-decon"
#define FD_TRY_CNT 3
#define VALID_FD_VAL 3
#define DECON_TRACE_BUF_SIZE 40
+#define MAX_BYPASS_CNT 20
#define DECON_WIN_UPDATE_IDX MAX_DECON_WIN
int dpu_mres_log_level = 6;
module_param(dpu_mres_log_level, int, 0644);
int decon_systrace_enable;
+int esd_bypass_cnt;
struct decon_device *decon_drvdata[MAX_DECON_CNT];
EXPORT_SYMBOL(decon_drvdata);
decon_warn("decon-%d skip win_config(state:%s, bypass:%s)\n",
decon->id, decon_state_names[decon->state],
decon_is_bypass(decon) ? "on" : "off");
+ if (decon_is_bypass(decon)) {
+ if (esd_bypass_cnt < MAX_BYPASS_CNT) {
+ esd_bypass_cnt++;
+ } else {
+ decon_set_bypass(decon, false);
+ esd_bypass_cnt = 0;
+ }
+ }
#else
decon_warn("decon-%d skip win_config(state:%s)\n",
decon->id, decon_state_names[decon->state]);
decon_systrace_enable = 0;
decon->systrace.pid = 0;
+ /* esd_thread */
+ esd_bypass_cnt = 0;
+
ret = decon_init_resources(decon, pdev, device_name);
if (ret)
goto err_res;
#if defined(READ_ESD_SOLUTION_TEST)
status = DSIM_ESD_OK;
#else
- status = call_panel_ops(dsim, read_state, dsim);
+ status = DSIM_ESD_OK;
#endif
if (status != DSIM_ESD_OK) {
decon_err("%s failed to recover subdev(status %d)\n",
}
dsim->esd_recovering = false;
+
+ if (!decon_is_bypass(decon))
+ decon_set_bypass(decon, true);
+
decon_bypass_off(decon);
decon_info("%s -\n", __func__);