diff options
author | Wilson Sung <wilsonsung@google.com> | 2022-10-05 20:51:59 +0800 |
---|---|---|
committer | Wilson Sung <wilsonsung@google.com> | 2022-10-05 20:58:24 +0800 |
commit | 136847709180d9fb4762ce1fa52d579347b0420c (patch) | |
tree | a5da62b14496f1678090503025b4bcd51ac8e41f | |
parent | bfece139faaca5aeeaf95ec568fe28d7659fb5f8 (diff) | |
parent | 063c78db744205e0ff24e5d06679e37229143d53 (diff) | |
download | display-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.c | 12 | ||||
-rw-r--r-- | samsung/exynos_drm_decon.c | 1 | ||||
-rw-r--r-- | samsung/exynos_drm_decon.h | 2 | ||||
-rw-r--r-- | samsung/exynos_drm_dpp.c | 6 | ||||
-rw-r--r-- | samsung/panel/panel-boe-nt37290.c | 16 |
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), |