summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c853ee2)
raw | patch | inline | side by side (parent: c853ee2)
author | Patil, Rachna <rachna@ti.com> | |
Fri, 9 Mar 2012 12:45:37 +0000 (18:15 +0530) | ||
committer | Patil, Rachna <rachna@ti.com> | |
Fri, 9 Mar 2012 13:29:13 +0000 (18:59 +0530) |
1. correct suspend/resume sequence
for LCD.
2. add msleep in suspend/resume, to allow
LCD to finish transmitting all the frames.
3. remove enabling/disabling of clocks in
interrupt handler. This sequence was wrong.
Trying to disable clocks and write to a register
was wrong.
4. correct LCD context save sequence
Signed-off-by: Patil, Rachna <rachna@ti.com>
for LCD.
2. add msleep in suspend/resume, to allow
LCD to finish transmitting all the frames.
3. remove enabling/disabling of clocks in
interrupt handler. This sequence was wrong.
Trying to disable clocks and write to a register
was wrong.
4. correct LCD context save sequence
Signed-off-by: Patil, Rachna <rachna@ti.com>
drivers/video/da8xx-fb.c | patch | blob | history |
index c5ee62113323f8bdec44c58ff882b0295d2248f2..5736a3ec107ef45b96eb77f070f973dc3344d25a 100644 (file)
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
printk(KERN_ERR "LCD Controller timed out\n");
return;
}
-
- if (lcd_revision == LCD_VERSION_2)
- /* Write 1 to reset LCDC */
- lcdc_write(LCD_CLK_MAIN_RESET, LCD_CLK_RESET_REG);
}
static void lcd_blit(int load_mode, struct da8xx_fb_par *par)
if ((stat & LCD_SYNC_LOST) && (stat & LCD_FIFO_UNDERFLOW)) {
printk(KERN_ERR "LCDC sync lost or underflow error occured\n");
lcd_disable_raster(NO_WAIT_FOR_FRAME_DONE);
- pm_runtime_put_sync(dev);
lcdc_write(stat, LCD_MASKED_STAT_REG);
lcd_enable_raster();
- pm_runtime_get_sync(dev);
} else if (stat & LCD_PL_LOAD_DONE) {
/*
* Must disable raster before changing state of any control bit.
lcdc_read(LCD_DMA_FRM_BUF_BASE_ADDR_1_REG);
reg_context.dma_frm_buf_ceiling_addr_1 =
lcdc_read(LCD_DMA_FRM_BUF_CEILING_ADDR_1_REG);
- reg_context.raster_ctrl = lcdc_read(LCD_RASTER_CTRL_REG);
+ reg_context.raster_ctrl = lcdc_read(LCD_RASTER_CTRL_REG) &
+ ~LCD_RASTER_ENABLE;
return;
}
par->panel_power_ctrl(0);
fb_set_suspend(info, 1);
- lcd_disable_raster(WAIT_FOR_FRAME_DONE);
lcd_context_save();
+ lcd_disable_raster(WAIT_FOR_FRAME_DONE);
+ msleep(10);
- pm_runtime_put_sync(&dev->dev);
+ pm_runtime_put(&dev->dev);
console_unlock();
return 0;
struct da8xx_fb_par *par = info->par;
console_lock();
- if (par->panel_power_ctrl)
- par->panel_power_ctrl(1);
pm_runtime_get_sync(&dev->dev);
+ msleep(1);
+ lcdc_write(LCD_CLK_MAIN_RESET, LCD_CLK_RESET_REG);
+ msleep(10);
+ lcdc_write(0, LCD_CLK_RESET_REG);
+ msleep(1);
+
lcd_context_restore();
lcd_enable_raster();