mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-10 12:57:06 +09:00
lcd: support resume_type to avoid dual display interfere each other [1/1]
PD#SWPL-19365 Problem: panel can't display when first resume by dual display mode, without kernel printk log print. lcd workqueue resume will effect each other for dual display. Solution: change lcd driver to directly resume for dual display Verify: ac200 Change-Id: I4638a9b526625693ed97070a0967b37328617ae6 Signed-off-by: Evoke Zhang <evoke.zhang@amlogic.com>
This commit is contained in:
@@ -39,6 +39,9 @@
|
||||
0 56 1>;
|
||||
interrupt-names = "vsync","vsync2";
|
||||
pinctrl_version = <2>; /* for uboot */
|
||||
resume_type = <0>; /* 0:directly resume(dual display preferred),
|
||||
* 1:workqueue resume(default)
|
||||
*/
|
||||
|
||||
/* power type:
|
||||
* (0=cpu_gpio, 1=pmu_gpio, 2=signal,3=extern, 0xff=ending)
|
||||
|
||||
@@ -40,6 +40,9 @@
|
||||
interrupt-names = "vsync","vsync2";
|
||||
pinctrl_version = <2>; /* for uboot */
|
||||
clk_path = <1>; /* default gp0 pll */
|
||||
resume_type = <0>; /* 0:directly resume(dual display preferred),
|
||||
* 1:workqueue resume(default)
|
||||
*/
|
||||
|
||||
/* power type:
|
||||
* (0=cpu_gpio, 1=pmu_gpio, 2=signal,3=extern, 0xff=ending)
|
||||
|
||||
@@ -40,6 +40,9 @@
|
||||
0 56 1>;
|
||||
interrupt-names = "vsync","vsync2";
|
||||
pinctrl_version = <2>; /* for uboot */
|
||||
resume_type = <0>; /* 0:directly resume(dual display preferred),
|
||||
* 1:workqueue resume(default)
|
||||
*/
|
||||
|
||||
/* power type:
|
||||
* (0=cpu_gpio, 1=pmu_gpio, 2=signal,3=extern, 0xff=ending)
|
||||
|
||||
@@ -39,6 +39,9 @@
|
||||
0 56 1>;
|
||||
interrupt-names = "vsync","vsync2";
|
||||
pinctrl_version = <2>; /* for uboot */
|
||||
resume_type = <0>; /* 0:directly resume(dual display preferred),
|
||||
* 1:workqueue resume(default)
|
||||
*/
|
||||
|
||||
/* power type:
|
||||
* (0=cpu_gpio, 1=pmu_gpio, 2=signal,3=extern, 0xff=ending)
|
||||
|
||||
@@ -40,6 +40,9 @@
|
||||
interrupt-names = "vsync","vsync2";
|
||||
pinctrl_version = <2>; /* for uboot */
|
||||
clk_path = <1>; /* default gp0 pll */
|
||||
resume_type = <0>; /* 0:directly resume(dual display preferred),
|
||||
* 1:workqueue resume(default)
|
||||
*/
|
||||
|
||||
/* power type:
|
||||
* (0=cpu_gpio, 1=pmu_gpio, 2=signal,3=extern, 0xff=ending)
|
||||
|
||||
@@ -39,6 +39,9 @@
|
||||
0 56 1>;
|
||||
interrupt-names = "vsync","vsync2";
|
||||
pinctrl_version = <2>; /* for uboot */
|
||||
resume_type = <0>; /* 0:directly resume(dual display preferred),
|
||||
* 1:workqueue resume(default)
|
||||
*/
|
||||
|
||||
/* power type:
|
||||
* (0=cpu_gpio, 1=pmu_gpio, 2=signal,3=extern, 0xff=ending)
|
||||
|
||||
@@ -43,7 +43,9 @@
|
||||
/* 20190911: add lcd_init_level for tl1 */
|
||||
/* 20191025: tcon chpi phy setting update */
|
||||
/* 20191115: tcon add demura and vac function for tl1*/
|
||||
#define LCD_DRV_VERSION "20191115"
|
||||
/* 20191227: vbyone hw filter disable support*/
|
||||
/* 20200102: support resume type to avoid dual display interfere each other*/
|
||||
#define LCD_DRV_VERSION "20200102"
|
||||
|
||||
#define VPP_OUT_SATURATE (1 << 0)
|
||||
|
||||
|
||||
@@ -521,15 +521,15 @@ static int lcd_info_print(char *buf, int offset)
|
||||
n = lcd_debug_info_len(len + offset);
|
||||
len += snprintf((buf+len), n,
|
||||
"driver version: %s\n"
|
||||
"panel_type: %s, chip: %d, mode: %s, status: %d, viu_sel: %d\n"
|
||||
"key_valid: %d, config_load: %d\n"
|
||||
"fr_auto_policy: %d\n",
|
||||
"panel_type: %s, chip: %d, mode: %s, status: %d\n"
|
||||
"viu_sel: %d, resume_type: %d, fr_auto_policy: %d\n"
|
||||
"key_valid: %d, config_load: %d\n",
|
||||
lcd_drv->version,
|
||||
pconf->lcd_propname, lcd_drv->data->chip_type,
|
||||
lcd_mode_mode_to_str(lcd_drv->lcd_mode),
|
||||
lcd_drv->lcd_status, lcd_drv->viu_sel,
|
||||
lcd_drv->lcd_key_valid, lcd_drv->lcd_config_load,
|
||||
lcd_drv->fr_auto_policy);
|
||||
lcd_drv->lcd_resume_type, lcd_drv->fr_auto_policy,
|
||||
lcd_drv->lcd_key_valid, lcd_drv->lcd_config_load);
|
||||
|
||||
n = lcd_debug_info_len(len + offset);
|
||||
len += snprintf((buf+len), n,
|
||||
|
||||
@@ -1343,6 +1343,17 @@ static int lcd_config_probe(struct platform_device *pdev)
|
||||
LCDPR("detect lcd_auto_test: %d\n", lcd_driver->lcd_auto_test);
|
||||
}
|
||||
|
||||
ret = of_property_read_u32(lcd_driver->dev->of_node,
|
||||
"resume_type", &val);
|
||||
if (ret) {
|
||||
if (lcd_debug_print_flag)
|
||||
LCDPR("failed to get resume_type\n");
|
||||
lcd_driver->lcd_resume_type = 1; /* default workqueue */
|
||||
} else {
|
||||
lcd_driver->lcd_resume_type = (unsigned char)val;
|
||||
LCDPR("detect resume_type: %d\n", lcd_driver->lcd_resume_type);
|
||||
}
|
||||
|
||||
lcd_driver->res_vsync_irq = platform_get_resource_byname(pdev,
|
||||
IORESOURCE_IRQ, "vsync");
|
||||
lcd_driver->res_vsync2_irq = platform_get_resource_byname(pdev,
|
||||
@@ -1358,7 +1369,6 @@ static int lcd_config_probe(struct platform_device *pdev)
|
||||
lcd_driver->lcd_test_flag = 0;
|
||||
lcd_driver->lcd_mute_state = 0;
|
||||
lcd_driver->lcd_mute_flag = 0;
|
||||
lcd_driver->lcd_resume_type = 1; /* default workqueue */
|
||||
lcd_driver->fr_mode = 0;
|
||||
lcd_driver->viu_sel = LCD_VIU_SEL_NONE;
|
||||
lcd_driver->vsync_none_timer_flag = 0;
|
||||
|
||||
Reference in New Issue
Block a user