mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 19:08:57 +09:00
lcd: fix lcd_resume without panel display mode mistake
PD#156734: lcd: fix lcd_resume without panel display mode mistake Change-Id: I2f41dba8fd777cf6748a3b3fe7f2b7922a12591d Signed-off-by: Weiming Liu <weiming.liu@amlogic.com>
This commit is contained in:
@@ -93,7 +93,9 @@ static int lcd_set_current_vmode(enum vmode_e mode)
|
||||
} else
|
||||
lcd_clk_gate_switch(1);
|
||||
|
||||
lcd_drv->lcd_status |= LCD_STATUS_VMODE_ACTIVE;
|
||||
mutex_unlock(&lcd_drv->power_mutex);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -102,6 +104,7 @@ static int lcd_vout_disable(enum vmode_e cur_vmod)
|
||||
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);
|
||||
@@ -326,6 +329,9 @@ static int lcd_resume(void)
|
||||
{
|
||||
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;
|
||||
|
||||
|
||||
@@ -302,6 +302,8 @@ static int lcd_set_current_vmode(enum vmode_e mode)
|
||||
} else
|
||||
lcd_clk_gate_switch(1);
|
||||
|
||||
lcd_drv->lcd_status |= LCD_STATUS_VMODE_ACTIVE;
|
||||
|
||||
mutex_unlock(&lcd_drv->power_mutex);
|
||||
return ret;
|
||||
}
|
||||
@@ -326,6 +328,10 @@ static int lcd_vmode_is_supported(enum vmode_e mode)
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -554,6 +560,9 @@ static int lcd_resume(void)
|
||||
{
|
||||
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;
|
||||
|
||||
|
||||
@@ -1048,6 +1048,9 @@ static int lcd_remove(struct platform_device *pdev)
|
||||
|
||||
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) {
|
||||
|
||||
@@ -384,6 +384,7 @@ struct lcd_duration_s {
|
||||
|
||||
#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 {
|
||||
|
||||
Reference in New Issue
Block a user