summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPixelBot AutoMerger <android-nexus-securitybot@system.gserviceaccount.com>2022-12-19 01:15:55 -0800
committerSecurityBot <android-nexus-securitybot@system.gserviceaccount.com>2022-12-19 01:15:56 -0800
commit190bd94c1f25067b73ead73b017b22c3e4161dad (patch)
tree793d4f5352f1b2d60b0bb3e18c7b71f3f08b825f
parentfb505dd6385d5815a5a51f8c9d5014f9974fa9be (diff)
parenta89a64ba804d442fd399776521f2d868886b2afc (diff)
downloaddisplay-190bd94c1f25067b73ead73b017b22c3e4161dad.tar.gz
Merge android13-gs-pixel-5.10-tm-qpr2 into android13-gs-pixel-5.10-tm-qpr3
SBMerger: 478053055 Change-Id: Ie1e9189d04b0a93e8e00ffe5d992f3d5e3fbd1f0 Signed-off-by: SecurityBot <android-nexus-securitybot@system.gserviceaccount.com>
-rw-r--r--include/trace/panel_trace.h76
-rw-r--r--samsung/exynos_drm_decon.c7
-rw-r--r--samsung/exynos_drm_dsim.c10
3 files changed, 90 insertions, 3 deletions
diff --git a/include/trace/panel_trace.h b/include/trace/panel_trace.h
new file mode 100644
index 0000000..adeb44d
--- /dev/null
+++ b/include/trace/panel_trace.h
@@ -0,0 +1,76 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Panel command trace support
+ *
+ * Copyright (C) 2022 Google, Inc.
+ */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM panel
+
+#if !defined(_PANEL_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
+#define _PANEL_TRACE_H_
+
+#include <linux/tracepoint.h>
+
+TRACE_EVENT_CONDITION(dsi_tx,
+ TP_PROTO(u8 type, const u8 *tx_buf, size_t length, bool last),
+ TP_ARGS(type, tx_buf, length, last),
+ TP_CONDITION(length > 0),
+ TP_STRUCT__entry(
+ __field( u8, type )
+ __dynamic_array(u8, tx_buf, length )
+ __field( bool, last )
+ ),
+ TP_fast_assign(
+ __entry->type = type;
+ memcpy(__get_dynamic_array(tx_buf), tx_buf, length);
+ __entry->last = last;
+ ),
+ TP_printk("type=0x%02x length=%u last=%d tx=[%s]", __entry->type,
+ __get_dynamic_array_len(tx_buf), __entry->last,
+ __print_hex(__get_dynamic_array(tx_buf),
+ __get_dynamic_array_len(tx_buf)))
+);
+
+TRACE_EVENT_CONDITION(dsi_rx,
+ TP_PROTO(u8 cmd, const u8 *rx_buf, size_t length),
+ TP_ARGS(cmd, rx_buf, length),
+ TP_CONDITION(length > 0),
+ TP_STRUCT__entry(
+ __field( u8, cmd )
+ __dynamic_array(u8, rx_buf, length )
+ ),
+ TP_fast_assign(
+ __entry->cmd = cmd;
+ memcpy(__get_dynamic_array(rx_buf), rx_buf, length);
+ ),
+ TP_printk("cmd=0x%02x length=%u rx=[%s]", __entry->cmd,
+ __get_dynamic_array_len(rx_buf),
+ __print_hex(__get_dynamic_array(rx_buf),
+ __get_dynamic_array_len(rx_buf)))
+);
+
+TRACE_EVENT(dsi_cmd_fifo_status,
+ TP_PROTO(u8 header, u16 payload),
+ TP_ARGS(header, payload),
+ TP_STRUCT__entry(
+ __field(u8, header )
+ __field(u16, payload)
+ ),
+ TP_fast_assign(
+ __entry->header = header;
+ __entry->payload = payload;
+ ),
+ TP_printk("header=%d payload=%d", __entry->header, __entry->payload)
+);
+
+#endif /* _PANEL_TRACE_H_ */
+
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH trace/.
+
+#undef TRACE_INCLUDE_FILE
+#define TRACE_INCLUDE_FILE panel_trace
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/samsung/exynos_drm_decon.c b/samsung/exynos_drm_decon.c
index b7461c2..48cc79a 100644
--- a/samsung/exynos_drm_decon.c
+++ b/samsung/exynos_drm_decon.c
@@ -103,14 +103,17 @@ void decon_dump(const struct decon_device *decon)
continue;
if (d->state != DECON_STATE_ON) {
- drm_printf(&p, "%s[%u]: DECON disabled(%d)\n",
- decon->dev->driver->name, decon->id, decon->state);
+ drm_printf(&p, "%s[%u]: DECON state is not On(%d)\n",
+ d->dev->driver->name, d->id, d->state);
continue;
}
__decon_dump(&p, d->id, &d->regs, d->config.dsc.enabled, d->dqe != NULL);
}
+ if (decon->state != DECON_STATE_ON)
+ return;
+
for (i = 0; i < decon->dpp_cnt; ++i)
dpp_dump(&p, decon->dpp[i]);
diff --git a/samsung/exynos_drm_dsim.c b/samsung/exynos_drm_dsim.c
index 14cccdc..9ff30f3 100644
--- a/samsung/exynos_drm_dsim.c
+++ b/samsung/exynos_drm_dsim.c
@@ -56,6 +56,8 @@
#include <regs-dsim.h>
#include <trace/dpu_trace.h>
+#define CREATE_TRACE_POINTS
+#include <trace/panel_trace.h>
#include "exynos_drm_connector.h"
#include "exynos_drm_crtc.h"
@@ -2051,6 +2053,7 @@ dsim_write_data(struct dsim_device *dsim, const struct mipi_dsi_msg *msg)
is_last = true;
}
+ trace_dsi_tx(msg->type, msg->tx_buf, msg->tx_len, is_last);
dsim_debug(dsim, "%s last command\n", is_last ? "" : "Not");
if (is_last) {
@@ -2091,6 +2094,7 @@ dsim_write_data(struct dsim_device *dsim, const struct mipi_dsi_msg *msg)
}
err:
+ trace_dsi_cmd_fifo_status(dsim->total_pend_ph, dsim->total_pend_pl);
DPU_ATRACE_END(__func__);
return ret;
}
@@ -2099,16 +2103,18 @@ static int
dsim_req_read_command(struct dsim_device *dsim, const struct mipi_dsi_msg *msg)
{
struct mipi_dsi_packet packet;
+ const u8 rx_len = msg->rx_len & 0xff;
dsim_reg_clear_int(dsim->id, DSIM_INTSRC_SFR_PH_FIFO_EMPTY);
reinit_completion(&dsim->ph_wr_comp);
-
+ trace_dsi_tx(MIPI_DSI_SET_MAXIMUM_RETURN_PACKET_SIZE, &rx_len, 1, true);
/* set the maximum packet size returned */
dsim_reg_wr_tx_header(dsim->id, MIPI_DSI_SET_MAXIMUM_RETURN_PACKET_SIZE,
msg->rx_len, 0, false);
/* read request */
mipi_dsi_create_packet(&packet, msg);
+ trace_dsi_tx(msg->type, msg->tx_buf, msg->tx_len, true);
dsim_reg_wr_tx_header(dsim->id, packet.header[0], packet.header[1],
packet.header[2], true);
@@ -2121,6 +2127,7 @@ dsim_read_data(struct dsim_device *dsim, const struct mipi_dsi_msg *msg)
u32 rx_fifo, rx_size = 0;
int i = 0, ret = 0;
u8 *rx_buf = msg->rx_buf;
+ const u8 *tx_buf = msg->tx_buf;
if (msg->rx_len > MAX_RX_FIFO) {
dsim_err(dsim, "invalid rx len(%lu) max(%d)\n", msg->rx_len,
@@ -2205,6 +2212,7 @@ dsim_read_data(struct dsim_device *dsim, const struct mipi_dsi_msg *msg)
} while (!dsim_reg_rx_fifo_is_empty(dsim->id) && --retry_cnt);
}
+ trace_dsi_rx(tx_buf[0], rx_buf, rx_size);
return rx_size;
}