} else
lcd_clk_gate_switch(1);
+ lcd_drv->lcd_status |= LCD_STATUS_VMODE_ACTIVE;
mutex_unlock(&lcd_drv->power_mutex);
+
return ret;
}
struct aml_lcd_drv_s *lcd_drv = aml_lcd_get_driver();
mutex_lock(&lcd_drv->power_mutex);
+ lcd_drv->lcd_status &= ~LCD_STATUS_VMODE_ACTIVE;
aml_lcd_notifier_call_chain(LCD_EVENT_POWER_OFF, NULL);
LCDPR("%s finished\n", __func__);
mutex_unlock(&lcd_drv->power_mutex);
{
struct aml_lcd_drv_s *lcd_drv = aml_lcd_get_driver();
+ if ((lcd_drv->lcd_status & LCD_STATUS_VMODE_ACTIVE) == 0)
+ return 0;
+
if (lcd_resume_flag)
return 0;
} else
lcd_clk_gate_switch(1);
+ lcd_drv->lcd_status |= LCD_STATUS_VMODE_ACTIVE;
+
mutex_unlock(&lcd_drv->power_mutex);
return ret;
}
static int lcd_vout_disable(enum vmode_e cur_vmod)
{
+ struct aml_lcd_drv_s *lcd_drv = aml_lcd_get_driver();
+
+ lcd_drv->lcd_status &= ~LCD_STATUS_VMODE_ACTIVE;
+
return 0;
}
{
struct aml_lcd_drv_s *lcd_drv = aml_lcd_get_driver();
+ if ((lcd_drv->lcd_status & LCD_STATUS_VMODE_ACTIVE) == 0)
+ return 0;
+
if (lcd_resume_flag)
return 0;
static int lcd_resume(struct platform_device *pdev)
{
+ if ((lcd_driver->lcd_status & LCD_STATUS_VMODE_ACTIVE) == 0)
+ return 0;
+
if (lcd_driver->lcd_resume_type) {
lcd_resume_flag = 1;
if (lcd_driver->workqueue) {
#define LCD_STATUS_IF_ON (1 << 0)
#define LCD_STATUS_ENCL_ON (1 << 1)
+#define LCD_STATUS_VMODE_ACTIVE (1 << 2)
#define LCD_STATUS_ON (LCD_STATUS_IF_ON | LCD_STATUS_ENCL_ON)
struct aml_lcd_drv_s {