struct fb_info *fbi;
struct rk_fb_par *fb_par = NULL;
int i = 0, ret = 0, index = 0;
+ unsigned long flags;
if (rk_fb->num_lcdc == RK30_MAX_LCDC_SUPPORT)
return -ENXIO;
xact, yact, width, height);
return 0;
}
-
+ local_irq_save(flags);
+ if (dev_drv->ops->wait_frame_start)
+ dev_drv->ops->wait_frame_start(dev_drv, 0);
if (dev_drv->ops->post_dspbuf) {
dev_drv->ops->post_dspbuf(dev_drv,
main_fbi->fix.smem_start,
dev_drv->ops->mmu_en(dev_drv);
freed_index = 0;
}
-
+ local_irq_restore(flags);
return 0;
} else if (dev_drv->uboot_logo && uboot_logo_base) {
u32 start = uboot_logo_base;
kfree(pages);
vunmap(vaddr);
-
+ local_irq_save(flags);
+ if (dev_drv->ops->wait_frame_start)
+ dev_drv->ops->wait_frame_start(dev_drv, 0);
dev_drv->ops->post_dspbuf(dev_drv,
main_fbi->fix.smem_start,
format, xact, yact,
dev_drv->ops->mmu_en(dev_drv);
freed_index = 0;
}
+ local_irq_restore(flags);
return 0;
} else {
if (dev_drv->iommu_enabled) {
int (*backlight_close)(struct rk_lcdc_driver *dev_drv, int enable);
int (*area_support_num)(struct rk_lcdc_driver *dev_drv, unsigned int *area_support);
int (*extern_func)(struct rk_lcdc_driver *dev_drv, int cmd);
+ int (*wait_frame_start)(struct rk_lcdc_driver *dev_drv, int enable);
};
struct rk_fb_area_par {