Esempio n. 1
0
int s5ptvfb_set_par(struct fb_info *fb)
{
	struct s5ptvfb_window *win = fb->par;

	dev_dbg(s5ptv_status.dev_fb, "[fb%d] set_par\n", win->id);

	if (!fb->fix.smem_start) {
#ifndef CONFIG_USER_ALLOC_TVOUT
		GRPPRINTK(" The frame buffer is allocated here\n");
		s5ptvfb_map_video_memory(fb);
#else
		printk(KERN_ERR
		"[Warning] The frame buffer should be allocated by ioctl\n");
#endif
	}

//	((struct fb_var_screeninfo) (s5ptv_status.fb->var)).bits_per_pixel =
	(s5ptv_status.fb->var).bits_per_pixel =
		((struct fb_var_screeninfo) (fb->var)).bits_per_pixel;

	s5ptvfb_set_display_mode(&s5ptv_status);

	s5ptvfb_set_window_control(&s5ptv_status, win->id);
	s5ptvfb_set_window_position(&s5ptv_status, win->id);
	s5ptvfb_set_window_size(&s5ptv_status, win->id);
	s5ptvfb_set_buffer_address(&s5ptv_status, win->id);
	s5ptvfb_set_buffer_size(&s5ptv_status, win->id);

	if (win->id > 0)
		s5ptvfb_set_alpha_blending(&s5ptv_status, win->id);

	return 0;
}
Esempio n. 2
0
static int s5ptvfb_alloc_framebuffer(void)
{
	int ret;

	/* alloc for each framebuffer */
	s5ptv_status.fb = framebuffer_alloc(sizeof(struct s5ptvfb_window),
					 s5ptv_status.dev_fb);
	if (!s5ptv_status.fb) {
		dev_err(s5ptv_status.dev_fb, "not enough memory\n");
		ret = -ENOMEM;
		goto err_alloc_fb;
	}

	ret = s5ptvfb_init_fbinfo(5);
	if (ret) {
		dev_err(s5ptv_status.dev_fb,
			"failed to allocate memory for fb for tv\n");
		ret = -ENOMEM;
		goto err_alloc_fb;
	}
#ifndef CONFIG_USER_ALLOC_TVOUT
	if (s5ptvfb_map_video_memory(s5ptv_status.fb)) {
		dev_err(s5ptv_status.dev_fb,
			"failed to map video memory "
			"for default window \n");
		ret = -ENOMEM;
		goto err_alloc_fb;
	}
#endif
	return 0;

err_alloc_fb:
	if (s5ptv_status.fb)
		framebuffer_release(s5ptv_status.fb);

	kfree(s5ptv_status.fb);

	return ret;
}