summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Huang <kenbshuang@google.com>2022-12-08 00:38:47 +0800
committerTreeHugger Robot <treehugger-gerrit@google.com>2022-12-22 01:15:38 +0000
commit51c80e5a59f73fb5d608ba9e4588a7093779442c (patch)
treebf626cc52e8238dca577be96af97e84ce7729fa5
parent190bd94c1f25067b73ead73b017b22c3e4161dad (diff)
downloaddisplay-51c80e5a59f73fb5d608ba9e4588a7093779442c.tar.gz
drm: samsung: add more dpu event log
Add event log for itmon, sysmmu fault, and dpp protection. Bug: 260514681 Test: dump event log Change-Id: I2b989e340a561c1fe8f7858ecb7be8d03a7ad056 Signed-off-by: Ken Huang <kenbshuang@google.com>
-rw-r--r--samsung/exynos_drm_debug.c9
-rw-r--r--samsung/exynos_drm_decon.c1
-rw-r--r--samsung/exynos_drm_decon.h3
3 files changed, 11 insertions, 2 deletions
diff --git a/samsung/exynos_drm_debug.c b/samsung/exynos_drm_debug.c
index 0c51934..6d09122 100644
--- a/samsung/exynos_drm_debug.c
+++ b/samsung/exynos_drm_debug.c
@@ -237,6 +237,7 @@ void DPU_EVENT_LOG(enum dpu_event_type type, int index, void *priv)
dpp = (struct dpp_device *)priv;
log->data.win.win_idx = dpp->win_id;
log->data.win.plane_idx = dpp->id;
+ log->data.win.secure = dpp->protection;
break;
case DPU_EVT_REQ_CRTC_INFO_OLD:
case DPU_EVT_REQ_CRTC_INFO_NEW:
@@ -577,6 +578,8 @@ static const char *get_event_name(enum dpu_event_type type)
"DIMMING_START",
"DIMMING_END",
"CGC_FRAMEDONE",
+ "ITMON_ERROR",
+ "SYSMMU_FAULT",
};
if (type >= DPU_EVT_MAX)
@@ -826,9 +829,10 @@ static void dpu_event_log_print(const struct decon_device *decon, struct drm_pri
case DPU_EVT_PLANE_UPDATE:
case DPU_EVT_PLANE_DISABLE:
scnprintf(buf + len, sizeof(buf) - len,
- "\tCH:%d, WIN:%d",
+ "\tCH:%d, WIN:%d, %s",
log->data.win.plane_idx,
- log->data.win.win_idx);
+ log->data.win.win_idx,
+ log->data.win.secure ? "SECURE" : "");
break;
case DPU_EVT_REQ_CRTC_INFO_OLD:
case DPU_EVT_REQ_CRTC_INFO_NEW:
@@ -1935,6 +1939,7 @@ int dpu_itmon_notifier(struct notifier_block *nb, unsigned long act, void *data)
/* port is master and dest is target */
if (dpu_itmon_check(decon, itmon_data->port, "itmon,port") ||
dpu_itmon_check(decon, itmon_data->dest, "itmon,dest")) {
+ DPU_EVENT_LOG(DPU_EVT_ITMON_ERROR, decon->id, NULL);
pr_info("%s: port: %s, dest: %s\n", __func__,
itmon_data->port, itmon_data->dest);
diff --git a/samsung/exynos_drm_decon.c b/samsung/exynos_drm_decon.c
index 48cc79a..badcb8a 100644
--- a/samsung/exynos_drm_decon.c
+++ b/samsung/exynos_drm_decon.c
@@ -1474,6 +1474,7 @@ static int dpu_sysmmu_fault_handler(struct iommu_fault *fault, void *data)
if (!decon)
return 0;
+ DPU_EVENT_LOG(DPU_EVT_SYSMMU_FAULT, decon->id, NULL);
decon_warn(decon, "%s +\n", __func__);
decon_dump_all(decon, DPU_EVT_CONDITION_DEFAULT, false);
diff --git a/samsung/exynos_drm_decon.h b/samsung/exynos_drm_decon.h
index 779ea4b..5f1f37b 100644
--- a/samsung/exynos_drm_decon.h
+++ b/samsung/exynos_drm_decon.h
@@ -269,6 +269,8 @@ enum dpu_event_type {
DPU_EVT_DIMMING_END,
DPU_EVT_CGC_FRAMEDONE,
+ DPU_EVT_ITMON_ERROR,
+ DPU_EVT_SYSMMU_FAULT,
DPU_EVT_MAX, /* End of EVENT */
};
@@ -300,6 +302,7 @@ struct dpu_log_dpp {
struct dpu_log_win {
u32 win_idx;
u32 plane_idx;
+ bool secure;
};
struct dpu_log_rsc_occupancy {