diff options
author | Ken Huang <kenbshuang@google.com> | 2023-03-15 21:59:21 +0800 |
---|---|---|
committer | Ken Huang <kenbshuang@google.com> | 2023-03-16 02:01:56 +0000 |
commit | 1377d0c351a722a4bf5e8ee01f23347b1cdffd2d (patch) | |
tree | 9d3e0778587369b7d1e0eb77f201421292e9b61b | |
parent | f49bb252bd7fca78a7d819c1f697e742e6be6966 (diff) | |
download | display-1377d0c351a722a4bf5e8ee01f23347b1cdffd2d.tar.gz |
drm: samsung: add more log to debug stability issues
Bug: 269239140
Test: check dpu event log
Change-Id: Ia7c3cb8753d382de016c6ed8c5fef194a16203af
Signed-off-by: Ken Huang <kenbshuang@google.com>
-rw-r--r-- | samsung/cal_9845/decon_reg.c | 2 | ||||
-rw-r--r-- | samsung/exynos_drm_debug.c | 6 | ||||
-rw-r--r-- | samsung/exynos_drm_decon.c | 7 | ||||
-rw-r--r-- | samsung/exynos_drm_decon.h | 1 |
4 files changed, 9 insertions, 7 deletions
diff --git a/samsung/cal_9845/decon_reg.c b/samsung/cal_9845/decon_reg.c index 90d2111..b388b50 100644 --- a/samsung/cal_9845/decon_reg.c +++ b/samsung/cal_9845/decon_reg.c @@ -338,7 +338,7 @@ static void decon_reg_clear_dsimif(u32 id, u32 dsimif) val = SEL_DSIM_GET(dsimif_read(id, DSIMIF_SEL(dsimif))); if ((id == 0 && val < 2) || (id == 1 && val == 2)) { - cal_log_info(id, "clearing dsimif%d sel\n", dsimif); + cal_log_info(id, "clearing dsimif%u sel, val: %u\n", dsimif, val); dsimif_write(id, DSIMIF_SEL(dsimif), SEL_DSIM(3)); } } diff --git a/samsung/exynos_drm_debug.c b/samsung/exynos_drm_debug.c index 7c5487f..89276f7 100644 --- a/samsung/exynos_drm_debug.c +++ b/samsung/exynos_drm_debug.c @@ -258,6 +258,7 @@ void DPU_EVENT_LOG(enum dpu_event_type type, int index, void *priv) log->data.crtc_info.planes_changed = crtc_state->planes_changed; log->data.crtc_info.mode_changed = crtc_state->mode_changed; log->data.crtc_info.active_changed = crtc_state->active_changed; + log->data.crtc_info.connectors_changed = crtc_state->connectors_changed; break; case DPU_EVT_BTS_RELEASE_BW: case DPU_EVT_BTS_UPDATE_BW: @@ -857,13 +858,14 @@ static void dpu_event_log_print(const struct decon_device *decon, struct drm_pri case DPU_EVT_REQ_CRTC_INFO_OLD: case DPU_EVT_REQ_CRTC_INFO_NEW: scnprintf(buf + len, sizeof(buf) - len, - "\tenable(%d) active(%d) sr(%d) [p:%d m:%d a:%d]", + "\tenable(%d) active(%d) sr(%d) [p:%d m:%d a:%d c:%d]", log->data.crtc_info.enable, log->data.crtc_info.active, log->data.crtc_info.self_refresh, log->data.crtc_info.planes_changed, log->data.crtc_info.mode_changed, - log->data.crtc_info.active_changed); + log->data.crtc_info.active_changed, + log->data.crtc_info.connectors_changed); break; case DPU_EVT_BTS_RELEASE_BW: case DPU_EVT_BTS_UPDATE_BW: diff --git a/samsung/exynos_drm_decon.c b/samsung/exynos_drm_decon.c index dd41789..fba4326 100644 --- a/samsung/exynos_drm_decon.c +++ b/samsung/exynos_drm_decon.c @@ -347,7 +347,6 @@ static void decon_update_config(struct decon_config *config, const struct exynos_drm_connector_state *exynos_conn_state) { const struct drm_display_mode *mode = &crtc_state->adjusted_mode; - struct decon_device *decon = crtc_to_decon(crtc_state->crtc); config->image_width = mode->hdisplay; config->image_height = mode->vdisplay; @@ -380,8 +379,6 @@ static void decon_update_config(struct decon_config *config, decon_update_dsi_config(config, crtc_state, exynos_conn_state); config->out_bpc = exynos_conn_state->exynos_mode.bpc; - - DPU_EVENT_LOG(DPU_EVT_DECON_UPDATE_CONFIG, decon->id, NULL); } static bool decon_is_seamless_possible(const struct decon_device *decon, @@ -1240,7 +1237,8 @@ static void decon_enable(struct exynos_drm_crtc *exynos_crtc, struct drm_crtc_st DPU_ATRACE_BEGIN(__func__); if (decon->state == DECON_STATE_HIBERNATION) { - WARN_ON(!old_crtc_state->self_refresh_active); + WARN_ON(!old_crtc_state->self_refresh_active || + crtc_state->mode_changed || crtc_state->connectors_changed); if (old_exynos_crtc_state->bypass) { spin_lock_irqsave(&decon->slock, flags); @@ -1260,6 +1258,7 @@ static void decon_enable(struct exynos_drm_crtc *exynos_crtc, struct drm_crtc_st crtc_get_exynos_connector_state(state, crtc_state); decon_update_config(&decon->config, crtc_state, exynos_conn_state); + DPU_EVENT_LOG(DPU_EVT_DECON_UPDATE_CONFIG, decon->id, NULL); if (decon_is_te_enabled(decon)) decon_request_te_irq(exynos_crtc, exynos_conn_state); diff --git a/samsung/exynos_drm_decon.h b/samsung/exynos_drm_decon.h index 1d5ce3f..03a1634 100644 --- a/samsung/exynos_drm_decon.h +++ b/samsung/exynos_drm_decon.h @@ -332,6 +332,7 @@ struct dpu_log_crtc_info { bool mode_changed; bool active_changed; bool self_refresh; + bool connectors_changed; }; struct dpu_log_freqs { |