|
@@ -131,6 +131,23 @@ static void mxs_lcd_init(GraphicDevice *panel,
|
|
|
writel(LCDIF_CTRL_RUN, ®s->hw_lcdif_ctrl_set);
|
|
|
}
|
|
|
|
|
|
+void lcdif_power_down(void)
|
|
|
+{
|
|
|
+ struct mxs_lcdif_regs *regs = (struct mxs_lcdif_regs *)MXS_LCDIF_BASE;
|
|
|
+ int timeout = 1000000;
|
|
|
+
|
|
|
+ writel(panel.frameAdrs, ®s->hw_lcdif_cur_buf_reg);
|
|
|
+ writel(panel.frameAdrs, ®s->hw_lcdif_next_buf_reg);
|
|
|
+ writel(LCDIF_CTRL1_VSYNC_EDGE_IRQ, ®s->hw_lcdif_ctrl1_clr);
|
|
|
+ while (--timeout) {
|
|
|
+ if (readl(®s->hw_lcdif_ctrl1_reg) &
|
|
|
+ LCDIF_CTRL1_VSYNC_EDGE_IRQ)
|
|
|
+ break;
|
|
|
+ udelay(1);
|
|
|
+ }
|
|
|
+ mxs_reset_block((struct mxs_register_32 *)®s->hw_lcdif_ctrl_reg);
|
|
|
+}
|
|
|
+
|
|
|
void *video_hw_init(void)
|
|
|
{
|
|
|
int bpp = -1;
|