win = dev_drv->win[win_id];
if (!strcmp(fbi->fix.id, "fb0")) {
- fb_mem_size = get_fb_size();
+ fb_mem_size = get_fb_size(dev_drv->reserved_fb);
#if defined(CONFIG_ION_ROCKCHIP)
if (rk_fb_alloc_buffer_by_ion(fbi, win, fb_mem_size) < 0)
return -ENOMEM;
return 0;
}
-size_t get_fb_size(void)
+size_t get_fb_size(u8 reserved_fb)
{
size_t size = 0;
u32 xres = 0;
/* align as 64 bytes(16*4) in an odd number of times */
xres = ALIGN_64BYTE_ODD_TIMES(xres, ALIGN_PIXEL_64BYTE_RGB8888);
-
- #if defined(CONFIG_THREE_FB_BUFFER)
+ if (reserved_fb == 1) {
+ size = (xres * yres << 2);/*one buffer*/
+ } else {
+#if defined(CONFIG_THREE_FB_BUFFER)
size = (xres * yres << 2) * 3; /* three buffer */
- #else
+#else
size = (xres * yres << 2) << 1; /* two buffer */
- #endif
+#endif
+ }
return ALIGN(size, SZ_1M);
}
};
extern void set_lcd_info(struct rk_screen *screen, struct rk29lcd_info *lcd_info);
-extern size_t get_fb_size(void);
+extern size_t get_fb_size(u8 reserved_fb);
extern void set_tv_info(struct rk_screen *screen);
extern void set_hdmi_info(struct rk_screen *screen);