Samsung SPH-L720 (Sprint) source updates
/drivers/video/msm/mipi_dsi.c
blob:35ca9abf5335d4a01485cc126043c821867a27d2 -> blob:a39137ee3d8b024d209993ad8109e2e533ff0247
--- drivers/video/msm/mipi_dsi.c
+++ drivers/video/msm/mipi_dsi.c
@@ -65,6 +65,10 @@ static struct platform_driver mipi_dsi_d
struct device dsi_dev;
+#if defined(CONFIG_ESD_ERR_FG_RECOVERY)
+extern struct mutex power_state_chagne;
+static struct platform_device *pdev_for_esd;
+#endif
static int mipi_dsi_off(struct platform_device *pdev)
{
int ret = 0;
@@ -166,6 +170,9 @@ static int mipi_dsi_on(struct platform_d
pr_debug("%s+:\n", __func__);
+#if defined(CONFIG_ESD_ERR_FG_RECOVERY)
+ pdev_for_esd = pdev;
+#endif
mfd = platform_get_drvdata(pdev);
fbi = mfd->fbi;
var = &fbi->var;
@@ -369,6 +376,64 @@ static int mipi_dsi_late_init(struct pla
return panel_next_late_init(pdev);
}
+#if defined(CONFIG_ESD_ERR_FG_RECOVERY)
+void esd_recovery(void)
+{
+ struct msm_fb_data_type *mfd;
+ u32 tmp, tmp2;
+
+ if (pdev_for_esd) {
+ mfd = platform_get_drvdata(pdev_for_esd);
+
+ if (mfd->panel_power_on == TRUE) {
+ mutex_lock(&power_state_chagne);
+
+ panel_next_off(pdev_for_esd);
+
+ if (mipi_dsi_pdata && mipi_dsi_pdata->active_reset)
+ mipi_dsi_pdata->active_reset(0); /* low */
+
+ if (mipi_dsi_pdata && mipi_dsi_pdata->panel_power_save)
+ mipi_dsi_pdata->panel_power_save(0);
+
+ msleep(10);
+
+ if (mipi_dsi_pdata && mipi_dsi_pdata->panel_power_save)
+ mipi_dsi_pdata->panel_power_save(1);
+
+ /* LP11 */
+ tmp2 = tmp = MIPI_INP(MIPI_DSI_BASE + 0xA8);
+ tmp &= ~(1<<28);
+ MIPI_OUTP(MIPI_DSI_BASE + 0xA8, tmp);
+ wmb();
+ /* LP11 */
+
+ usleep(5000);
+ if (mipi_dsi_pdata && mipi_dsi_pdata->active_reset)
+ mipi_dsi_pdata->active_reset(1); /* high */
+ msleep(10);
+ if (mipi_dsi_pdata && mipi_dsi_pdata->active_reset)
+ mipi_dsi_pdata->active_reset(0); /* low */
+ msleep(10);
+ if (mipi_dsi_pdata && mipi_dsi_pdata->active_reset)
+ mipi_dsi_pdata->active_reset(1); /* high */
+ msleep(10);
+
+ MIPI_OUTP(MIPI_DSI_BASE + 0xA8, tmp2);
+ wmb();
+
+ panel_next_on(pdev_for_esd);
+ mipi_dsi_late_init(pdev_for_esd);
+
+#if defined(CONFIG_MDNIE_LITE_TUNING)
+ is_negative_on();
+#endif
+ mutex_unlock(&power_state_chagne);
+ }
+ }
+}
+#endif
+
static int mipi_dsi_resource_initialized;
static int mipi_dsi_probe(struct platform_device *pdev)