fbdev: dpu20: added event log for video mode
authorChiHun Won <chihun.won@samsung.com>
Tue, 19 Jun 2018 01:15:36 +0000 (10:15 +0900)
committerEunyoung Lee <ey470.lee@samsung.com>
Wed, 20 Jun 2018 00:22:28 +0000 (09:22 +0900)
Change-Id: I0767f5629ab804f03f2e296131c4028b27a1115c
Signed-off-by: ChiHun Won <chihun.won@samsung.com>
drivers/video/fbdev/exynos/dpu20/decon.h
drivers/video/fbdev/exynos/dpu20/dsim_drv.c
drivers/video/fbdev/exynos/dpu20/event_log.c

index 8fe35b4cf1c63f4178fea10b07a511a5f9dd9734..0dcb7f74ca8a049bd4b3afc2ba3ba44566789f1e 100644 (file)
@@ -481,6 +481,10 @@ typedef enum dpu_event_type {
        DPU_EVT_DECON_FRAMEDONE,
        DPU_EVT_DSIM_FRAMEDONE,
        DPU_EVT_RSC_CONFLICT,
+       DPU_EVT_DSIM_PL_FIFO_EMPTY,
+       DPU_EVT_DSIM_PH_FIFO_EMPTY,
+       DPU_EVT_DSIM_VT_STATUS,
+       DPU_EVT_DSIM_UNDER_RUN,
 
        /* Related with async event */
        DPU_EVT_UPDATE_HANDLER,
index 598b925d188f4c16de493dffd10490f6a8135691..998f2b294e7f697d014b1f30e7c21bb317addee7 100644 (file)
@@ -473,8 +473,11 @@ static irqreturn_t dsim_irq_handler(int irq, void *dev_id)
        if (int_src & DSIM_INTSRC_SFR_PH_FIFO_EMPTY) {
                del_timer(&dsim->cmd_timer);
                complete(&dsim->ph_wr_comp);
+               DPU_EVENT_LOG(DPU_EVT_DSIM_PH_FIFO_EMPTY, &dsim->sd, ktime_set(0, 0));
                dsim_dbg("dsim%d PH_FIFO_EMPTY irq occurs\n", dsim->id);
        }
+       if (int_src & DSIM_INTSRC_SFR_PL_FIFO_EMPTY)
+               DPU_EVENT_LOG(DPU_EVT_DSIM_PL_FIFO_EMPTY, &dsim->sd, ktime_set(0, 0));
        if (int_src & DSIM_INTSRC_RX_DATA_DONE)
                complete(&dsim->rd_comp);
        if (int_src & DSIM_INTSRC_FRAME_DONE)
@@ -484,9 +487,12 @@ static irqreturn_t dsim_irq_handler(int irq, void *dev_id)
 
        if (int_src & DSIM_INTSRC_UNDER_RUN) {
                dsim->total_underrun_cnt++;
+               DPU_EVENT_LOG(DPU_EVT_DSIM_UNDER_RUN, &dsim->sd, ktime_set(0, 0));
                dsim_info("dsim%d underrun irq occurs(%d)\n", dsim->id,
                                dsim->total_underrun_cnt);
                dsim_underrun_info(dsim);
+               if (dsim->lcd_info.mode == DECON_VIDEO_MODE)
+                       __dsim_dump(dsim);
        }
        if (int_src & DSIM_INTSRC_VT_STATUS) {
                dsim_dbg("dsim%d vt_status(vsync) irq occurs\n", dsim->id);
index 79029ddd0fa1aaa588773b1dad0d81ca49a38fe5..6f118d8c6f8116eec15beb505e4726777615292d 100644 (file)
@@ -252,6 +252,10 @@ void DPU_EVENT_LOG(dpu_event_t type, struct v4l2_subdev *sd, ktime_t time)
        case DPU_EVT_ENTER_ULPS:
        case DPU_EVT_EXIT_ULPS:
        case DPU_EVT_DSIM_SHUTDOWN:
+       case DPU_EVT_DSIM_PL_FIFO_EMPTY:
+       case DPU_EVT_DSIM_PH_FIFO_EMPTY:
+       case DPU_EVT_DSIM_VT_STATUS:
+       case DPU_EVT_DSIM_UNDER_RUN:
                dpu_event_log_dsim(type, sd, time);
                break;
        case DPU_EVT_DPP_FRAMEDONE: