diff --git a/drivers/amlogic/media/vout/lcd/lcd_tcon.c b/drivers/amlogic/media/vout/lcd/lcd_tcon.c index fb7705984aaa..6a3956c3c870 100644 --- a/drivers/amlogic/media/vout/lcd/lcd_tcon.c +++ b/drivers/amlogic/media/vout/lcd/lcd_tcon.c @@ -106,6 +106,19 @@ void lcd_tcon_reg_write(unsigned int addr, unsigned int val) } } +static void lcd_tcon_od_init(unsigned char *table) +{ + unsigned int reg, bit, flag; + + if (lcd_tcon_data->reg_core_od == REG_LCD_TCON_MAX) + return; + + reg = lcd_tcon_data->reg_core_od; + bit = lcd_tcon_data->bit_od_en; + flag = (table[reg] >> bit) & 1; + lcd_tcon_od_set(flag); +} + static void lcd_tcon_od_check(unsigned char *table) { unsigned int reg, bit; @@ -369,6 +382,7 @@ static int lcd_tcon_config(struct aml_lcd_drv_s *lcd_drv) #endif lcd_tcon_intr_init(lcd_drv); + lcd_tcon_od_init(lcd_tcon_data->reg_table); return 0; } diff --git a/drivers/amlogic/media/vout/lcd/lcd_vout.c b/drivers/amlogic/media/vout/lcd/lcd_vout.c index 054605fb87c5..9a1c5dc3438d 100644 --- a/drivers/amlogic/media/vout/lcd/lcd_vout.c +++ b/drivers/amlogic/media/vout/lcd/lcd_vout.c @@ -1122,10 +1122,10 @@ static int lcd_mode_probe(struct device *dev) LCDERR("invalid lcd mode: %d\n", lcd_driver->lcd_mode); break; } - lcd_tcon_probe(lcd_driver); if (lcd_driver->lcd_status & LCD_STATUS_ENCL_ON) lcd_clk_gate_switch(1); + lcd_tcon_probe(lcd_driver); lcd_debug_probe(); lcd_fops_create();