void __init msm_msm7627a_allocate_memory_regions(void)
{
	/*Add 4 framebuffer and delete the mem adapter strategy*/	
	void *addr;
	unsigned long fb_size;
#ifndef CONFIG_HUAWEI_KERNEL
	if (machine_is_msm7625a_surf() || machine_is_msm7625a_ffa())
		fb_size = MSM7x25A_MSM_FB_SIZE;
	else if (machine_is_msm7627a_evb() || machine_is_msm8625_evb()
						|| machine_is_msm8625_evt())
		fb_size = MSM8x25_MSM_FB_SIZE;
	else
		fb_size = MSM_FB_SIZE;
#else
	fb_size = get_framebuffer_size();
#endif
	addr = alloc_bootmem_align(fb_size, 0x1000);
	msm_fb_resources[0].start = __pa(addr);
	msm_fb_resources[0].end = msm_fb_resources[0].start + fb_size - 1;
	pr_info("allocating %lu bytes at %p (%lx physical) for fb\n", fb_size,
						addr, __pa(addr));

#ifdef CONFIG_MSM_V4L2_VIDEO_OVERLAY_DEVICE
	fb_size = MSM_V4L2_VIDEO_OVERLAY_BUF_SIZE;
	addr = alloc_bootmem_align(fb_size, 0x1000);
	msm_v4l2_video_overlay_resources[0].start = __pa(addr);
	msm_v4l2_video_overlay_resources[0].end =
		msm_v4l2_video_overlay_resources[0].start + fb_size - 1;
	pr_debug("allocating %lu bytes at %p (%lx physical) for v4l2\n",
		fb_size, addr, __pa(addr));
#endif

}
예제 #2
0
파일: a10disp.c 프로젝트: Kasercorp/a10disp
static void check_framebuffer_size(int screen, int mode, int bytes_per_pixel) {
	struct fb_var_screeninfo var_screeninfo;
	int framebuffer_size_in_bytes = get_framebuffer_size(screen);
	if (bytes_per_pixel == 0) {
		ioctl(fd_fb[screen], FBIOGET_VSCREENINFO, &var_screeninfo);
		bytes_per_pixel = (var_screeninfo.bits_per_pixel + 7) / 8;
	}
	int mode_size_in_bytes;
	if (mode == DISP_TV_MODE_EDID) {
		int tmp, width, height;
		tmp = screen;
		width = ioctl(fd_disp, DISP_CMD_SCN_GET_WIDTH, &tmp);
		tmp = screen;
		height = ioctl(fd_disp, DISP_CMD_SCN_GET_HEIGHT, &tmp);
		mode_size_in_bytes = width * height * bytes_per_pixel;
	}
	else
		mode_size_in_bytes = mode_size[mode] * bytes_per_pixel;
	if (mode_size_in_bytes * nu_framebuffer_buffers > framebuffer_size_in_bytes) {
		printf("Reported framebuffer size is too small to fit mode (%.2f MB available; %.2f MB required).\n",
			(float)framebuffer_size_in_bytes / (1024 * 1024),
			(float)mode_size_in_bytes * nu_framebuffer_buffers / (1024 * 1024));
		if (nu_framebuffer_buffers == 1)
			printf("Increase the default framebuffer size allocated at boot.\n");
		else
			printf("Increase the default framebuffer size allocated at boot, or if you "
				"don't need double buffering (used by Mali and video acceleration) "
				"use the --nodoublebuffer option.\n");
		exit(- 1);
	}
}