Fix LCD white screen

Signed-off-by: August <mingxin.android@gmail.com>
This commit is contained in:
August 2018-07-30 16:53:22 +08:00
parent fd93bb2190
commit 1e1eabd889
4 changed files with 29 additions and 14 deletions

View file

@ -660,6 +660,8 @@ static void lcd_get_sys_config(u32 disp, disp_lcd_cfg *lcd_cfg)
ret = disp_sys_script_get_item(primary_key,"lcd_bl_en", (int *)gpio_info, 3);
if (ret == 3)
{
gpio_info->data = 0;
gpio_info->mul_sel = 1;
lcd_cfg->lcd_bl_hdl = disp_sys_gpio_request(gpio_info, 1);
lcd_cfg->lcd_bl_en_used = 1;
}
@ -1041,16 +1043,20 @@ static s32 disp_lcd_tcon_disable(struct disp_device *lcd)
static s32 disp_lcd_pin_cfg(struct disp_device *lcd, u32 bon)
{
int i;
//int i;
struct disp_lcd_private_data *lcdp = disp_lcd_get_priv(lcd);
char dev_name[25];
//char dev_name[25];
printf("disp_lcd_pin_cfg\n");
if ((NULL == lcd) || (NULL == lcdp)) {
DE_WRN("NULL hdl!\n");
return DIS_FAIL;
}
DE_INF("lcd %d pin config, state %s, %d\n", lcd->disp, (bon)? "on":"off", bon);
printf("lcd %d pin config, state %s, %d\n", lcd->disp, (bon)? "on":"off", bon);
/* lcd_pin_power already on in sw_enable, comment here to fix white screen before logo display */
#if 0
//io-pad
if (bon == 1) {
for (i=0; i<LCD_GPIO_REGU_NUM; i++) {
@ -1070,7 +1076,9 @@ static s32 disp_lcd_pin_cfg(struct disp_device *lcd, u32 bon)
disp_sys_power_disable(lcdp->lcd_cfg.lcd_pin_power[i]);
}
}
#else
disp_al_lcd_io_cfg(lcd->hwdev_index, bon, &lcdp->panel_info);
#endif
return DIS_SUCCESS;
}
@ -1130,9 +1138,13 @@ static s32 disp_lcd_backlight_enable(struct disp_device *lcd)
if (!((!strcmp(lcdp->lcd_cfg.lcd_bl_en_power, "")) || (!strcmp(lcdp->lcd_cfg.lcd_bl_en_power, "none"))))
disp_sys_power_enable(lcdp->lcd_cfg.lcd_bl_en_power);
memcpy(gpio_info, &(lcdp->lcd_cfg.lcd_bl_en), sizeof(disp_gpio_set_t));
disp_sys_gpio_request_simple(gpio_info, 1);
if(!lcdp->lcd_cfg.lcd_bl_hdl) {
memcpy(gpio_info, &(lcdp->lcd_cfg.lcd_bl_en), sizeof(disp_gpio_set_t));
disp_sys_gpio_request_simple(gpio_info, 1);
}
else {
disp_sys_gpio_set_value(lcdp->lcd_cfg.lcd_bl_hdl, 1, "lcd_bl_en");
}
}
bl = disp_lcd_get_bright(lcd);
disp_lcd_set_bright(lcd, bl);
@ -1274,6 +1286,8 @@ s32 disp_lcd_set_bright(struct disp_device *lcd, u32 bright)
struct disp_manager *mgr = NULL;
struct disp_smbl *smbl = NULL;
return 0;
if ((NULL == lcd) || (NULL == lcdp)) {
DE_WRN("NULL hdl!\n");
return DIS_FAIL;
@ -1523,8 +1537,6 @@ static s32 disp_lcd_post_enable(struct disp_device* lcd)
bl = disp_lcd_get_bright(lcd);
disp_lcd_set_bright(lcd, bl);
disp_sys_gpio_set_value(lcdp->lcd_cfg.lcd_bl_hdl, 1, "lcd_bl_en");
return ret;
}

View file

@ -112,8 +112,6 @@ static void LCD_power_on(u32 sel)
sunxi_lcd_delay_ms(30);
panel_reset(1);
sunxi_lcd_delay_ms(10);
}
static void LCD_power_off(u32 sel)