summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilson Sung <wilsonsung@google.com>2022-10-05 20:51:59 +0800
committerWilson Sung <wilsonsung@google.com>2022-10-05 20:58:24 +0800
commit136847709180d9fb4762ce1fa52d579347b0420c (patch)
treea5da62b14496f1678090503025b4bcd51ac8e41f
parentbfece139faaca5aeeaf95ec568fe28d7659fb5f8 (diff)
parent063c78db744205e0ff24e5d06679e37229143d53 (diff)
downloaddisplay-136847709180d9fb4762ce1fa52d579347b0420c.tar.gz
Merge 'partner/android13-gs-pixel-5.10-tm-qpr1' into qpr2
Bug: 246922524 Signed-off-by: Wilson Sung <wilsonsung@google.com> Change-Id: I11c9487cd2c0f92331f205381f1b2eb12dae1b4e
-rw-r--r--samsung/exynos_drm_debug.c12
-rw-r--r--samsung/exynos_drm_decon.c1
-rw-r--r--samsung/exynos_drm_decon.h2
-rw-r--r--samsung/exynos_drm_dpp.c6
-rw-r--r--samsung/panel/panel-boe-nt37290.c16
5 files changed, 31 insertions, 6 deletions
diff --git a/samsung/exynos_drm_debug.c b/samsung/exynos_drm_debug.c
index 77748b7..d757fbe 100644
--- a/samsung/exynos_drm_debug.c
+++ b/samsung/exynos_drm_debug.c
@@ -21,6 +21,7 @@
#include <drm/drm_print.h>
#include <drm/drm_managed.h>
#include <drm/drm_fourcc.h>
+#include <trace/dpu_trace.h>
#include <cal_config.h>
@@ -47,7 +48,7 @@ static unsigned int dpu_event_print_underrun = 128;
static unsigned int dpu_event_print_fail_update_bw = 32;
static unsigned int dpu_debug_dump_mask = DPU_EVT_CONDITION_DEFAULT |
DPU_EVT_CONDITION_UNDERRUN | DPU_EVT_CONDITION_FAIL_UPDATE_BW |
- DPU_EVT_CONDITION_FIFO_TIMEOUT;
+ DPU_EVT_CONDITION_FIFO_TIMEOUT | DPU_EVT_CONDITION_IDMA_ERROR_COMPACT;
module_param_named(event_log_max, dpu_event_log_max, uint, 0);
module_param_named(event_print_max, dpu_event_print_max, uint, 0600);
@@ -113,7 +114,7 @@ void DPU_EVENT_LOG(enum dpu_event_type type, int index, void *priv)
int idx;
bool skip_excessive = true;
- if (index < 0) {
+ if (index < 0 || index >= MAX_DECON_CNT) {
DRM_ERROR("%s: decon id is not valid(%d)\n", __func__, index);
return;
}
@@ -148,6 +149,7 @@ void DPU_EVENT_LOG(enum dpu_event_type type, int index, void *priv)
case DPU_EVT_IDMA_DEADLOCK:
case DPU_EVT_IDMA_CFG_ERROR:
decon->d.idma_err_cnt++;
+ DPU_ATRACE_INT_PID("IDMA_ERROR", decon->d.idma_err_cnt & 1, decon->thread->pid);
break;
default:
skip_excessive = false;
@@ -669,7 +671,8 @@ static bool is_skip_dpu_event_dump(enum dpu_event_type type, enum dpu_event_cond
}
}
- if (condition == DPU_EVT_CONDITION_IDMA_ERROR) {
+ if (condition == DPU_EVT_CONDITION_IDMA_ERROR ||
+ condition == DPU_EVT_CONDITION_IDMA_ERROR_COMPACT) {
switch (type) {
case DPU_EVT_DECON_FRAMEDONE:
case DPU_EVT_DECON_FRAMESTART:
@@ -1827,7 +1830,7 @@ void dpu_print_hex_dump(struct drm_printer *p, void __iomem *regs, const void *b
}
}
-static bool decon_dump_ignore(enum dpu_event_condition condition)
+bool decon_dump_ignore(enum dpu_event_condition condition)
{
return !(dpu_debug_dump_mask & condition);
}
@@ -1872,6 +1875,7 @@ void decon_dump_event_condition(const struct decon_device *decon,
case DPU_EVT_CONDITION_UNDERRUN:
case DPU_EVT_CONDITION_FIFO_TIMEOUT:
case DPU_EVT_CONDITION_IDMA_ERROR:
+ case DPU_EVT_CONDITION_IDMA_ERROR_COMPACT:
print_log_size = dpu_event_print_underrun;
break;
case DPU_EVT_CONDITION_FAIL_UPDATE_BW:
diff --git a/samsung/exynos_drm_decon.c b/samsung/exynos_drm_decon.c
index 972ee8f..58ef780 100644
--- a/samsung/exynos_drm_decon.c
+++ b/samsung/exynos_drm_decon.c
@@ -34,7 +34,6 @@
#include <linux/pm_runtime.h>
#include <linux/console.h>
#include <linux/iommu.h>
-#include <trace/dpu_trace.h>
#include <uapi/linux/sched/types.h>
#include <soc/google/exynos-cpupm.h>
diff --git a/samsung/exynos_drm_decon.h b/samsung/exynos_drm_decon.h
index 0065606..4bc3ea5 100644
--- a/samsung/exynos_drm_decon.h
+++ b/samsung/exynos_drm_decon.h
@@ -279,6 +279,7 @@ enum dpu_event_condition {
DPU_EVT_CONDITION_FAIL_UPDATE_BW = 1U << 2,
DPU_EVT_CONDITION_FIFO_TIMEOUT = 1U << 3,
DPU_EVT_CONDITION_IDMA_ERROR = 1U << 4,
+ DPU_EVT_CONDITION_IDMA_ERROR_COMPACT = 1U << 5,
};
#define DPU_CALLSTACK_MAX 10
@@ -487,6 +488,7 @@ static inline struct decon_device *get_decon_drvdata(u32 id)
return NULL;
}
+bool decon_dump_ignore(enum dpu_event_condition condition);
void decon_dump(const struct decon_device *decon);
void decon_dump_all(struct decon_device *decon,
enum dpu_event_condition cond, bool async_buf_dump);
diff --git a/samsung/exynos_drm_dpp.c b/samsung/exynos_drm_dpp.c
index ed593a9..88eff56 100644
--- a/samsung/exynos_drm_dpp.c
+++ b/samsung/exynos_drm_dpp.c
@@ -1145,7 +1145,11 @@ static irqreturn_t dma_irq_handler(int irq, void *priv)
if (dump && time_after(jiffies, last_dumptime + msecs_to_jiffies(5000))) {
struct decon_device *decon = get_decon_drvdata(dpp->decon_id);
if (decon) {
- decon_dump_all(decon, DPU_EVT_CONDITION_IDMA_ERROR, true);
+ if (decon_dump_ignore(DPU_EVT_CONDITION_IDMA_ERROR))
+ decon_dump_event_condition(decon,
+ DPU_EVT_CONDITION_IDMA_ERROR_COMPACT);
+ else
+ decon_dump_all(decon, DPU_EVT_CONDITION_IDMA_ERROR, true);
last_dumptime = jiffies;
}
}
diff --git a/samsung/panel/panel-boe-nt37290.c b/samsung/panel/panel-boe-nt37290.c
index 4766a26..ddf6ba7 100644
--- a/samsung/panel/panel-boe-nt37290.c
+++ b/samsung/panel/panel-boe-nt37290.c
@@ -389,6 +389,19 @@ static const struct exynos_dsi_cmd nt37290_init_cmds[] = {
EXYNOS_DSI_CMD_SEQ_REV(PANEL_REV_DVT1, 0xF0, 0x55, 0xAA, 0x52, 0x08, 0x00),
EXYNOS_DSI_CMD_SEQ_REV(PANEL_REV_DVT1, 0x6F, 0x14),
EXYNOS_DSI_CMD_SEQ_REV(PANEL_REV_DVT1, 0xC2, 0x00, 0x50),
+ /* CMD2 Page 3: tune internal power on sequence */
+ EXYNOS_DSI_CMD_SEQ(0xF0, 0x55, 0xAA, 0x52, 0x08, 0x03),
+ EXYNOS_DSI_CMD_SEQ(0x6F, 0x10),
+ EXYNOS_DSI_CMD_SEQ(0xB6, 0x1F),
+ /* CMD2 Page 5: tune internal power on sequence */
+ EXYNOS_DSI_CMD_SEQ(0xF0, 0x55, 0xAA, 0x52, 0x08, 0x05),
+ EXYNOS_DSI_CMD_SEQ(0xB8, 0x04, 0x00, 0x00, 0x02),
+ EXYNOS_DSI_CMD_SEQ(0xB9, 0x04, 0x00, 0x00, 0x02),
+ EXYNOS_DSI_CMD_SEQ(0xBA, 0x84, 0x00, 0x00, 0x02),
+ /* CMD2 Page 3: tune internal power on sequence */
+ EXYNOS_DSI_CMD_SEQ(0xF0, 0x55, 0xAA, 0x52, 0x08, 0x03),
+ EXYNOS_DSI_CMD_SEQ(0x6F, 0x12),
+ EXYNOS_DSI_CMD_SEQ(0xD8, 0x14),
/* CMD2 Page 8: IRC IP settings */
EXYNOS_DSI_CMD_SEQ_REV(PANEL_REV_DVT1, 0xF0, 0x55, 0xAA, 0x52, 0x08, 0x08),
EXYNOS_DSI_CMD_SEQ_REV(PANEL_REV_DVT1, 0x6F, 0x10),
@@ -397,6 +410,9 @@ static const struct exynos_dsi_cmd nt37290_init_cmds[] = {
0x00),
EXYNOS_DSI_CMD_SEQ_REV(PANEL_REV_DVT1, 0x6F, 0x28),
EXYNOS_DSI_CMD_SEQ_REV(PANEL_REV_DVT1, 0xB8, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00),
+ /* CMD2 Page 5: remove long TE2 pulse */
+ EXYNOS_DSI_CMD_SEQ(0xF0, 0x55, 0xAA, 0x52, 0x08, 0x05),
+ EXYNOS_DSI_CMD_SEQ(0xB6, 0x06, 0x03),
/* CMD3 Page 0 */
EXYNOS_DSI_CMD_SEQ(0xFF, 0xAA, 0x55, 0xA5, 0x80),