int s3cfb_suspend(struct platform_device *dev, pm_message_t state) { struct fb_info *fbinfo = platform_get_drvdata(dev); s3cfb_info_t *info = fbinfo->par; s3cfb_stop_lcd(); s3c6410_pm_do_save(s3c_lcd_save, ARRAY_SIZE(s3c_lcd_save)); msleep(1); clk_disable(info->clk); return 0; }
/* * Suspend */ int s3cfb_suspend(struct platform_device *dev, pm_message_t state) { struct fb_info *fbinfo = platform_get_drvdata(dev); s3cfb_info_t *info = fbinfo->par; s3cfb_stop_lcd(); s3c_pm_do_save(s3c_lcd_save, ARRAY_SIZE(s3c_lcd_save)); /* sleep before disabling the clock, we need to ensure * the LCD DMA engine is not going to get back on the bus * before the clock goes off again (bjd) */ msleep(1); clk_disable(info->clk); return 0; }
void s3cfb_enable_dma(int win) { s3cfb_stop_lcd(); switch (win) { case 0: s3cfb_enable_dma0(); break; case 1: s3cfb_enable_dma1(); break; case 2: s3cfb_enable_dma2(); break; default: break; } s3cfb_start_lcd(); }