diff options
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_dsi.c | 4 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_dsi.h | 4 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_dsi_host.c | 304 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c | 4 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_panel.h | 3 |
5 files changed, 208 insertions, 111 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dsi.c b/drivers/video/fbdev/msm/mdss_dsi.c index 7b12663dd84c..2429921f6138 100644 --- a/drivers/video/fbdev/msm/mdss_dsi.c +++ b/drivers/video/fbdev/msm/mdss_dsi.c @@ -1336,6 +1336,7 @@ static int mdss_dsi_event_handler(struct mdss_panel_data *pdata, pdata); break; case MDSS_EVENT_UNBLANK: + mdss_dsi_get_hw_revision(ctrl_pdata); if (ctrl_pdata->refresh_clk_rate) rc = mdss_dsi_clk_refresh(pdata); @@ -1399,9 +1400,6 @@ static int mdss_dsi_event_handler(struct mdss_panel_data *pdata, rc = mdss_dsi_register_recovery_handler(ctrl_pdata, (struct mdss_intf_recovery *)arg); break; - case MDSS_EVENT_INTF_RESTORE: - mdss_dsi_ctrl_phy_restore(ctrl_pdata); - break; default: pr_debug("%s: unhandled event=%d\n", __func__, event); break; diff --git a/drivers/video/fbdev/msm/mdss_dsi.h b/drivers/video/fbdev/msm/mdss_dsi.h index f3b3ef86794f..1c8063b2545a 100644 --- a/drivers/video/fbdev/msm/mdss_dsi.h +++ b/drivers/video/fbdev/msm/mdss_dsi.h @@ -284,6 +284,7 @@ enum { #define DSI_EV_MDP_FIFO_UNDERFLOW 0x0002 #define DSI_EV_DSI_FIFO_EMPTY 0x0004 #define DSI_EV_DLNx_FIFO_OVERFLOW 0x0008 +#define DSI_EV_STOP_HS_CLK_LANE 0x40000000 #define DSI_EV_MDP_BUSY_RELEASE 0x80000000 struct mdss_dsi_ctrl_pdata { @@ -336,6 +337,7 @@ struct mdss_dsi_ctrl_pdata { int bklt_max; int new_fps; int pwm_enabled; + int clk_lane_cnt; bool dmap_iommu_map; bool panel_bias_vreg; bool dsi_irq_line; @@ -379,6 +381,7 @@ struct mdss_dsi_ctrl_pdata { struct mutex cmd_mutex; struct regulator *lab; /* vreg handle */ struct regulator *ibb; /* vreg handle */ + struct mutex clk_lane_mutex; u32 ulps_clamp_ctrl_off; u32 ulps_phyrst_ctrl_off; @@ -473,6 +476,7 @@ bool __mdss_dsi_clk_enabled(struct mdss_dsi_ctrl_pdata *ctrl, u8 clk_type); void mdss_dsi_ctrl_setup(struct mdss_dsi_ctrl_pdata *ctrl); void mdss_dsi_dln0_phy_err(struct mdss_dsi_ctrl_pdata *ctrl); void mdss_dsi_lp_cd_rx(struct mdss_dsi_ctrl_pdata *ctrl); +void mdss_dsi_get_hw_revision(struct mdss_dsi_ctrl_pdata *ctrl); int mdss_dsi_panel_init(struct device_node *node, struct mdss_dsi_ctrl_pdata *ctrl_pdata, diff --git a/drivers/video/fbdev/msm/mdss_dsi_host.c b/drivers/video/fbdev/msm/mdss_dsi_host.c index a4a640b77110..1d762e34ee30 100644 --- a/drivers/video/fbdev/msm/mdss_dsi_host.c +++ b/drivers/video/fbdev/msm/mdss_dsi_host.c @@ -56,6 +56,7 @@ static struct mutex dsi_mtx; /* event */ struct dsi_event_q { struct mdss_dsi_ctrl_pdata *ctrl; + u32 arg; u32 todo; }; @@ -106,6 +107,7 @@ void mdss_dsi_ctrl_init(struct device *ctrl_dev, spin_lock_init(&ctrl->mdp_lock); mutex_init(&ctrl->mutex); mutex_init(&ctrl->cmd_mutex); + mutex_init(&ctrl->clk_lane_mutex); mdss_dsi_buf_alloc(ctrl_dev, &ctrl->tx_buf, SZ_4K); mdss_dsi_buf_alloc(ctrl_dev, &ctrl->rx_buf, SZ_4K); mdss_dsi_buf_alloc(ctrl_dev, &ctrl->status_buf, SZ_4K); @@ -261,6 +263,13 @@ void mdss_dsi_read_hw_revision(struct mdss_dsi_ctrl_pdata *ctrl) { /* clock must be on */ ctrl->hw_rev = MIPI_INP(ctrl->ctrl_base); +} + +void mdss_dsi_get_hw_revision(struct mdss_dsi_ctrl_pdata *ctrl) +{ + mdss_dsi_clk_ctrl(ctrl, DSI_ALL_CLKS, 1); + ctrl->hw_rev = MIPI_INP(ctrl->ctrl_base); + mdss_dsi_clk_ctrl(ctrl, DSI_ALL_CLKS, 0); pr_debug("%s: ndx=%d hw_rev=%x\n", __func__, ctrl->ndx, ctrl->hw_rev); @@ -459,107 +468,163 @@ void mdss_dsi_sw_reset(struct mdss_dsi_ctrl_pdata *ctrl, bool restore) } } -void mdss_dsi_ctrl_phy_restore(struct mdss_dsi_ctrl_pdata *ctrl) +static void mdss_dsi_cfg_lane_ctrl(struct mdss_dsi_ctrl_pdata *ctrl, + u32 bits, int set) { - struct mdss_dsi_ctrl_pdata *ctrl0, *ctrl1; - u32 ln0, ln1, ln_ctrl0, ln_ctrl1, i; - /* - * Add delay suggested by HW team. - */ - u32 loop = 10; + u32 data; + + data = MIPI_INP(ctrl->ctrl_base + 0x00ac); + if (set) + data |= bits; + else + data &= ~bits; + MIPI_OUTP(ctrl->ctrl_base + 0x0ac, data); +} + - if (ctrl->ndx == DSI_CTRL_1) +static inline bool mdss_dsi_poll_clk_lane(struct mdss_dsi_ctrl_pdata *ctrl) +{ + u32 clk = 0; + + if (readl_poll_timeout(((ctrl->ctrl_base) + 0x00a8), + clk, + (clk & 0x0010), + 10, 1000)) { + pr_err("%s: ndx=%d clk lane NOT stopped, clk=%x\n", + __func__, ctrl->ndx, clk); + + return false; + } + return true; +} + +static void mdss_dsi_wait_clk_lane_to_stop(struct mdss_dsi_ctrl_pdata *ctrl) +{ + if (mdss_dsi_poll_clk_lane(ctrl)) /* stopped */ return; - pr_debug("MDSS DSI CTRL PHY restore. ctrl-num = %d\n", ctrl->ndx); + /* clk stuck at hs, start recovery process */ - ctrl0 = mdss_dsi_get_ctrl_by_index(DSI_CTRL_0); - if (mdss_dsi_split_display_enabled()) { - ctrl1 = mdss_dsi_get_ctrl_by_index(DSI_CTRL_1); - if (!ctrl1) - return; + /* force clk lane tx stop -- bit 20 */ + mdss_dsi_cfg_lane_ctrl(ctrl, BIT(20), 1); - ln_ctrl0 = MIPI_INP(ctrl0->ctrl_base + 0x00ac); - ln_ctrl1 = MIPI_INP(ctrl1->ctrl_base + 0x00ac); - MIPI_OUTP(ctrl0->ctrl_base + 0x0ac, ln_ctrl0 & ~BIT(28)); - MIPI_OUTP(ctrl1->ctrl_base + 0x0ac, ln_ctrl1 & ~BIT(28)); + if (mdss_dsi_poll_clk_lane(ctrl) == false) + pr_err("%s: clk lane recovery failed\n", __func__); - /* - * Toggle Clk lane Force TX stop so that - * clk lane status is no more in stop state - */ - ln0 = MIPI_INP(ctrl0->ctrl_base + 0x00a8); - ln1 = MIPI_INP(ctrl1->ctrl_base + 0x00a8); + /* clear clk lane tx stop -- bit 20 */ + mdss_dsi_cfg_lane_ctrl(ctrl, BIT(20), 0); +} +/* + * mdss_dsi_start_hs_clk_lane: + * this function is work around solution for 8994 dsi clk lane + * may stuck at HS problem + */ +static void mdss_dsi_start_hs_clk_lane(struct mdss_dsi_ctrl_pdata *ctrl) +{ + mutex_lock(&ctrl->clk_lane_mutex); + if (ctrl->clk_lane_cnt) { + pr_err("%s: ndx=%d do-wait, cnt=%d\n", + __func__, ctrl->ndx, ctrl->clk_lane_cnt); + mdss_dsi_wait_clk_lane_to_stop(ctrl); + } + + /* force clk lane hs for next dma or mdp stream */ + mdss_dsi_cfg_lane_ctrl(ctrl, BIT(28), 1); + ctrl->clk_lane_cnt++; + pr_debug("%s: ndx=%d, set_hs, cnt=%d\n", __func__, + ctrl->ndx, ctrl->clk_lane_cnt); + mutex_unlock(&ctrl->clk_lane_mutex); +} - pr_debug("%s: lane status, ctrl0 = 0x%x, ctrl1 = 0x%x\n", - __func__, ln0, ln1); - - if ((ln0 == 0x1f0f) || (ln1 == 0x1f0f)) { - ln_ctrl0 = MIPI_INP(ctrl0->ctrl_base + 0x00ac); - ln_ctrl1 = MIPI_INP(ctrl1->ctrl_base + 0x00ac); - MIPI_OUTP(ctrl0->ctrl_base + 0x0ac, ln_ctrl0 | BIT(20)); - MIPI_OUTP(ctrl1->ctrl_base + 0x0ac, ln_ctrl1 | BIT(20)); - - for (i = 0; i < loop; i++) { - ln0 = MIPI_INP(ctrl0->ctrl_base + 0x00a8); - ln1 = MIPI_INP(ctrl1->ctrl_base + 0x00a8); - if ((ln0 == 0x1f1f) && (ln1 == 0x1f1f)) - break; - else - /* - * check clk lane status for every 1 - * milli second - */ - udelay(1000); - } - pr_debug("%s: lane ctrl, ctrl0 = 0x%x, ctrl1 = 0x%x\n", - __func__, ln0, ln1); - MIPI_OUTP(ctrl0->ctrl_base + 0x0ac, - ln_ctrl0 & ~BIT(20)); - MIPI_OUTP(ctrl1->ctrl_base + 0x0ac, - ln_ctrl1 & ~BIT(20)); - } +/* + * mdss_dsi_stop_hs_clk_lane: + * this function is work around solution for 8994 dsi clk lane + * may stuck at HS problem + */ +static void mdss_dsi_stop_hs_clk_lane(struct mdss_dsi_ctrl_pdata *ctrl, + u32 term) +{ + u32 fifo = 0; + u32 lane = 0; + unsigned long flags; - ln_ctrl0 = MIPI_INP(ctrl0->ctrl_base + 0x00ac); - ln_ctrl1 = MIPI_INP(ctrl1->ctrl_base + 0x00ac); - MIPI_OUTP(ctrl0->ctrl_base + 0x0ac, ln_ctrl0 | BIT(28)); - MIPI_OUTP(ctrl1->ctrl_base + 0x0ac, ln_ctrl1 | BIT(28)); - } else { - ln_ctrl0 = MIPI_INP(ctrl0->ctrl_base + 0x00ac); - MIPI_OUTP(ctrl0->ctrl_base + 0x0ac, ln_ctrl0 & ~BIT(28)); + mutex_lock(&ctrl->clk_lane_mutex); + if (ctrl->clk_lane_cnt != 1) { + pr_err("%s: ndx=%d wait had been done, cnt=%d\n", + __func__, ctrl->ndx, ctrl->clk_lane_cnt); + goto release; + } - /* - * Toggle Clk lane Force TX stop so that - * clk lane status is no more in stop state - */ - ln0 = MIPI_INP(ctrl0->ctrl_base + 0x00a8); + /* fifo */ + if (readl_poll_timeout(((ctrl->ctrl_base) + 0x000c), + fifo, + ((fifo & 0x11110000) == 0x11110000), + 10, 1000)) { + pr_err("%s: fifo NOT empty, fifo=%x\n", + __func__, fifo); + goto end; + } - pr_debug("%s: lane status, ctrl0 = 0x%x\n", __func__, ln0); - - if (ln0 == 0x1f0f) { - ln_ctrl0 = MIPI_INP(ctrl0->ctrl_base + 0x00ac); - MIPI_OUTP(ctrl0->ctrl_base + 0x0ac, ln_ctrl0 | BIT(20)); - - for (i = 0; i < loop; i++) { - ln0 = MIPI_INP(ctrl0->ctrl_base + 0x00a8); - if (ln0 == 0x1f1f) - break; - else - /* - * check clk lane status for every 1 - * milli second - */ - udelay(1000); - } - pr_debug("%s: lane ctrl, ctrl0 = 0x%x\n", - __func__, ln0); - MIPI_OUTP(ctrl0->ctrl_base + 0x0ac, - ln_ctrl0 & ~BIT(20)); - } + /* data lane status */ + if (readl_poll_timeout(((ctrl->ctrl_base) + 0x00a8), + lane, + ((lane & 0x000f) == 0x000f), + 100, 2000)) { + pr_err("%s: datalane NOT stopped, lane=%x\n", + __func__, lane); + } - ln_ctrl0 = MIPI_INP(ctrl0->ctrl_base + 0x00ac); - MIPI_OUTP(ctrl0->ctrl_base + 0x0ac, ln_ctrl0 | BIT(28)); +end: + /* stop force clk lane hs */ + mdss_dsi_cfg_lane_ctrl(ctrl, BIT(28), 0); + + mdss_dsi_wait_clk_lane_to_stop(ctrl); + + ctrl->clk_lane_cnt = 0; + +release: + if (term == DSI_MDP_TERM) { + spin_lock_irqsave(&ctrl->mdp_lock, flags); + ctrl->mdp_busy = false; + complete(&ctrl->mdp_comp); + spin_unlock_irqrestore(&ctrl->mdp_lock, flags); + } + pr_debug("%s: ndx=%d, cnt=%d\n", __func__, + ctrl->ndx, ctrl->clk_lane_cnt); + + mutex_unlock(&ctrl->clk_lane_mutex); +} + +static void mdss_dsi_cmd_start_hs_clk_lane(struct mdss_dsi_ctrl_pdata *ctrl) +{ + struct mdss_dsi_ctrl_pdata *mctrl = NULL; + + if (mdss_dsi_sync_wait_enable(ctrl)) { + if (!mdss_dsi_sync_wait_trigger(ctrl)) + return; + mctrl = mdss_dsi_get_other_ctrl(ctrl); + + if (mctrl) + mdss_dsi_start_hs_clk_lane(mctrl); + } + + mdss_dsi_start_hs_clk_lane(ctrl); +} + +static void mdss_dsi_cmd_stop_hs_clk_lane(struct mdss_dsi_ctrl_pdata *ctrl) +{ + struct mdss_dsi_ctrl_pdata *mctrl = NULL; + + if (mdss_dsi_sync_wait_enable(ctrl)) { + if (!mdss_dsi_sync_wait_trigger(ctrl)) + return; + mctrl = mdss_dsi_get_other_ctrl(ctrl); + + if (mctrl) + mdss_dsi_stop_hs_clk_lane(mctrl, DSI_CMD_TERM); } + + mdss_dsi_stop_hs_clk_lane(ctrl, DSI_CMD_TERM); } static void mdss_dsi_ctl_phy_reset(struct mdss_dsi_ctrl_pdata *ctrl) @@ -1902,8 +1967,12 @@ int mdss_dsi_cmdlist_commit(struct mdss_dsi_ctrl_pdata *ctrl, int from_mdp) if (mdss_get_sd_client_cnt()) return -EPERM; - if (from_mdp) /* from mdp kickoff */ + if (from_mdp) { /* from mdp kickoff */ mutex_lock(&ctrl->cmd_mutex); + pinfo = &ctrl->panel_data.panel_info; + if (pinfo->partial_update_enabled) + roi = &pinfo->roi; + } req = mdss_dsi_cmdlist_get(ctrl); @@ -1916,6 +1985,27 @@ int mdss_dsi_cmdlist_commit(struct mdss_dsi_ctrl_pdata *ctrl, int from_mdp) pr_debug("%s: ctrl=%d from_mdp=%d pid=%d\n", __func__, ctrl->ndx, from_mdp, current->pid); + if (from_mdp) { /* from mdp kickoff */ + /* + * when partial update enabled, the roi of pinfo + * is updated before mdp kickoff. Either width or + * height of roi is 0, then it is false kickoff so + * no mdp_busy flag set needed. + * when partial update disabled, mdp_busy flag + * alway set. + */ + if (!roi || (roi->w != 0 || roi->h != 0)) { + if (ctrl->hw_rev == MDSS_DSI_HW_REV_103 && + ctrl->panel_mode == DSI_CMD_MODE) + mdss_dsi_start_hs_clk_lane(ctrl); + } + } else { /* from dcs send */ + if (ctrl->hw_rev == MDSS_DSI_HW_REV_103 && + ctrl->panel_mode == DSI_CMD_MODE) + mdss_dsi_cmd_start_hs_clk_lane(ctrl); + } + + if (req == NULL) goto need_lock; @@ -1978,20 +2068,21 @@ need_lock: * when partial update disabled, mdp_busy flag * alway set. */ - pinfo = &ctrl->panel_data.panel_info; - if (pinfo->partial_update_enabled) - roi = &pinfo->roi; - if (!roi || (roi->w != 0 || roi->h != 0)) mdss_dsi_cmd_mdp_start(ctrl); mutex_unlock(&ctrl->cmd_mutex); + } else { /* from dcs send */ + if (ctrl->hw_rev == MDSS_DSI_HW_REV_103 && + ctrl->panel_mode == DSI_CMD_MODE) + mdss_dsi_cmd_stop_hs_clk_lane(ctrl); } return ret; } -static void dsi_send_events(struct mdss_dsi_ctrl_pdata *ctrl, u32 events) +static void dsi_send_events(struct mdss_dsi_ctrl_pdata *ctrl, + u32 events, u32 arg) { struct dsi_event_q *evq; @@ -2003,6 +2094,7 @@ static void dsi_send_events(struct mdss_dsi_ctrl_pdata *ctrl, u32 events) spin_lock(&dsi_event.event_lock); evq = &dsi_event.todo_list[dsi_event.event_pndx++]; evq->todo = events; + evq->arg = arg; evq->ctrl = ctrl; dsi_event.event_pndx %= DSI_EVENT_Q_MAX; wake_up(&dsi_event.event_q); @@ -2017,6 +2109,7 @@ static int dsi_event_thread(void *data) unsigned long flag; struct sched_param param; u32 todo = 0, ln_status; + u32 arg; int ret; param.sched_priority = 16; @@ -2035,6 +2128,7 @@ static int dsi_event_thread(void *data) evq = &ev->todo_list[ev->event_gndx++]; todo = evq->todo; ctrl = evq->ctrl; + arg = evq->arg; evq->todo = 0; ev->event_gndx %= DSI_EVENT_Q_MAX; spin_unlock_irqrestore(&ev->event_lock, flag); @@ -2117,6 +2211,8 @@ static int dsi_event_thread(void *data) mdss_dsi_clk_ctrl(ctrl, DSI_ALL_CLKS, 0); } + if (todo & DSI_EV_STOP_HS_CLK_LANE) + mdss_dsi_stop_hs_clk_lane(ctrl, arg); } return 0; @@ -2183,14 +2279,14 @@ void mdss_dsi_fifo_status(struct mdss_dsi_ctrl_pdata *ctrl) MIPI_OUTP(base + 0x000c, status); pr_err("%s: status=%x\n", __func__, status); if (status & 0x44440000) {/* DLNx_HS_FIFO_OVERFLOW */ - dsi_send_events(ctrl, DSI_EV_DLNx_FIFO_OVERFLOW); + dsi_send_events(ctrl, DSI_EV_DLNx_FIFO_OVERFLOW, 0); /* Ignore FIFO EMPTY when overflow happens */ status = status & 0xeeeeffff; } if (status & 0x0080) /* CMD_DMA_FIFO_UNDERFLOW */ - dsi_send_events(ctrl, DSI_EV_MDP_FIFO_UNDERFLOW); + dsi_send_events(ctrl, DSI_EV_MDP_FIFO_UNDERFLOW, 0); if (status & 0x11110000) /* DLN_FIFO_EMPTY */ - dsi_send_events(ctrl, DSI_EV_DSI_FIFO_EMPTY); + dsi_send_events(ctrl, DSI_EV_DSI_FIFO_EMPTY, 0); } } @@ -2219,7 +2315,7 @@ void mdss_dsi_clk_status(struct mdss_dsi_ctrl_pdata *ctrl) if (status & 0x10000) { /* DSI_CLK_PLL_UNLOCKED */ MIPI_OUTP(base + 0x0120, status); - dsi_send_events(ctrl, DSI_EV_PLL_UNLOCKED); + dsi_send_events(ctrl, DSI_EV_PLL_UNLOCKED, 0); pr_err("%s: status=%x\n", __func__, status); } } @@ -2245,7 +2341,7 @@ void mdss_dsi_error(struct mdss_dsi_ctrl_pdata *ctrl) intr |= DSI_INTR_ERROR; MIPI_OUTP(ctrl->ctrl_base + 0x0110, intr); - dsi_send_events(ctrl, DSI_EV_MDP_BUSY_RELEASE); + dsi_send_events(ctrl, DSI_EV_MDP_BUSY_RELEASE, 0); } irqreturn_t mdss_dsi_isr(int irq, void *ptr) @@ -2288,9 +2384,15 @@ irqreturn_t mdss_dsi_isr(int irq, void *ptr) if (isr & DSI_INTR_CMD_MDP_DONE) { MDSS_XLOG(ctrl->ndx, ctrl->mdp_busy, isr, 0x99); spin_lock(&ctrl->mdp_lock); - ctrl->mdp_busy = false; mdss_dsi_disable_irq_nosync(ctrl, DSI_MDP_TERM); - complete(&ctrl->mdp_comp); + if (ctrl->hw_rev == MDSS_DSI_HW_REV_103 && + ctrl->panel_mode == DSI_CMD_MODE) { + dsi_send_events(ctrl, DSI_EV_STOP_HS_CLK_LANE, + DSI_MDP_TERM); + } else { + ctrl->mdp_busy = false; + complete(&ctrl->mdp_comp); + } spin_unlock(&ctrl->mdp_lock); } diff --git a/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c b/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c index 6985382bf675..d158db7993ab 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c +++ b/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c @@ -942,10 +942,6 @@ int mdss_mdp_cmd_kickoff(struct mdss_mdp_ctl *ctl, void *arg) if (sctx) mdss_mdp_irq_enable(MDSS_MDP_IRQ_PING_PONG_COMP, sctx->pp_num); - if (ctl->mdata->mdp_rev == MDSS_MDP_HW_REV_105 || - ctl->mdata->mdp_rev == MDSS_MDP_HW_REV_109) - mdss_mdp_ctl_intf_event(ctl, MDSS_EVENT_INTF_RESTORE, NULL); - if (!ctx->autorefresh_pending && !ctl->cmd_autorefresh_en) { /* Kickoff */ mdss_mdp_ctl_write(ctl, MDSS_MDP_REG_CTL_START, 1); diff --git a/drivers/video/fbdev/msm/mdss_panel.h b/drivers/video/fbdev/msm/mdss_panel.h index d58e23bf40d3..c0b298316eed 100644 --- a/drivers/video/fbdev/msm/mdss_panel.h +++ b/drivers/video/fbdev/msm/mdss_panel.h @@ -181,8 +181,6 @@ struct mdss_intf_recovery { * - 1: update to command mode * @MDSS_EVENT_REGISTER_RECOVERY_HANDLER: Event to recover the interface in * case there was any errors detected. - * @MDSS_EVENT_INTF_RESTORE: Event to restore the interface in case there - * was any errors detected during normal operation. */ enum mdss_intf_events { MDSS_EVENT_RESET = 1, @@ -205,7 +203,6 @@ enum mdss_intf_events { MDSS_EVENT_DSI_STREAM_SIZE, MDSS_EVENT_DSI_DYNAMIC_SWITCH, MDSS_EVENT_REGISTER_RECOVERY_HANDLER, - MDSS_EVENT_INTF_RESTORE, }; struct lcd_panel_info { |
