static void err_fg_work_func(struct work_struct *work)
{
	err_fg_working = 1;
	esd_recovery();
	err_fg_working = 0;
	pr_info("%s esd end", __func__);
	return;
}
Пример #2
0
static void lcd_esd_seq(struct esd_data_t *p_esd_data)
{

	struct msm_fb_data_type *mfd;
	struct msm_fb_panel_data *pdata;
#if defined(CONFIG_FB_MSM_MIPI_NOVATEK_VIDEO_HD_PT_PANEL)
	int retry;
#endif

	mfd = platform_get_drvdata(mipi_control.mipi_dev);
	if (mfd->panel_power_on) {
#ifndef ESD_DEBUG
		/* threaded irq can sleep */
		wake_lock_timeout(&p_esd_data->det_wake_lock, WAKE_LOCK_TIME);
#endif
		pr_info("lcd_esd_seq + \n");
		p_esd_data->refresh_ongoing = true;
		set_esd_refresh(true);
		p_esd_data->esd_ignore = true;

#if defined(CONFIG_FB_MSM_MIPI_NOVATEK_VIDEO_HD_PT_PANEL)
		for(retry=0; retry<10; retry++)
		{
			esd_recovery();
			msleep(500);
			if(!gpio_get_value(GPIO_LCD_ESD_DET))
				break;
			else
				printk(KERN_ERR "ESD Retry!!!! (cnt=%d)\n",retry+1);
		}
#endif

		p_esd_data->refresh_ongoing = false;
		set_esd_refresh(false);
		p_esd_data->esd_processed_count++;
		pr_info("lcd_esd_seq - \n");
		/* Restore brightness */
		pdata = mipi_control.mipi_dev->dev.platform_data;
		pdata->set_backlight(mfd);

	} else {
		 pr_err("Panel is Off Skip ESD Sequence\n");
	}

#ifdef READ_REGISTER_ESD
	complete(&esd_completion);
#endif

}
static void err_fg_work_func(struct work_struct *work)
{
	struct msm_fb_data_type *mfd;
	mfd = platform_get_drvdata(msd.msm_pdev);

	if (mfd->resume_state == MIPI_SUSPEND_STATE) {
		pr_info("[%s] mipi suspend state!! return!\n",__func__);
		return;
	}

	pr_info("%s : start", __func__);
	err_fg_working = 1;
	esd_recovery();
	esd_count++;
	err_fg_working = 0;

	pr_info("%s : end", __func__);
	return;
}