summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi.c4
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi.h4
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi_host.c304
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c4
-rw-r--r--drivers/video/fbdev/msm/mdss_panel.h3
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 {