示例#1
0
bool _s5p_grp_stop(enum s5p_tv_vmx_layer vm_layer)
{
	enum s5p_tv_vmx_err merr;
	struct s5p_tv_status *st = &s5ptv_status;

	GRPPRINTK("()\n\r");

	merr = __s5p_vm_set_layer_show(vm_layer, false);

	if (merr != VMIXER_NO_ERROR)
		return false;

	merr = __s5p_vm_set_layer_priority(vm_layer, 0);

	if (merr != VMIXER_NO_ERROR)
		return false;

	__s5p_vm_start();


	st->grp_layer_enable[vm_layer] = false;

	GRPPRINTK("()\n\r");

	return true;
}
示例#2
0
int s5ptvfb_set_par(struct fb_info *fb)
{
	struct s5ptvfb_window *win = fb->par;
	struct fb_var_screeninfo *fbvar;
	dev_dbg(g_s5ptv_status.dev_fb, "[fb%d] set_par\n", win->id);

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

	//((struct fb_var_screeninfo) (g_s5ptv_status.fb->var)).bits_per_pixel =
	//	((struct fb_var_screeninfo) (fb->var)).bits_per_pixel;
	fbvar = (struct fb_var_screeninfo *) &g_s5ptv_status.fb->var;
	fbvar->bits_per_pixel = ((struct fb_var_screeninfo) (fb->var)).bits_per_pixel;

	s5ptvfb_set_display_mode(&g_s5ptv_status);

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

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

	return 0;
}
示例#3
0
bool s5p_grp_stop(enum s5p_tv_vmx_layer vm_layer)
{
	enum s5p_tv_vmx_err merr;
	struct s5p_tv_status *st = &g_s5ptv_status;

	GRPPRINTK("()\n");

	merr = s5p_vm_set_layer_show(vm_layer, false);
	if (merr != VMIXER_NO_ERROR) {
		pr_err("%s::s5p_vm_set_layer_show(false) fail\n", __func__);
		return false;
	}

	merr = s5p_vm_set_layer_priority(vm_layer, 0);
	if (merr != VMIXER_NO_ERROR) {
		pr_err("%s::s5p_vm_set_layer_priority(0) fail\n", __func__);
		return false;
	}

	/* for video layer */
	s5p_vm_start();

	st->grp_layer_enable[vm_layer] = false;

	return true;
}
示例#4
0
bool s5p_grp_start(enum s5p_tv_vmx_layer vm_layer)
{
	enum s5p_tv_vmx_err merr;
	struct s5p_tv_status *st = &g_s5ptv_status;

	if (!(st->grp_layer_enable[0] || st->grp_layer_enable[1])) {
		merr = s5p_vm_init_status_reg(st->grp_burst, st->grp_endian);
		if (merr != VMIXER_NO_ERROR)
			return false;
	}

	merr = s5p_vm_init_layer(g_s5ptv_status.tvout_param.disp_mode,
			  vm_layer,
			  true,
			  g_s5ptv_overlay[vm_layer].win_blending,
			  g_s5ptv_overlay[vm_layer].win.global_alpha,
			  g_s5ptv_overlay[vm_layer].priority,
			  g_s5ptv_overlay[vm_layer].fb.fmt.pixelformat,
			  g_s5ptv_overlay[vm_layer].blank_change,
			  g_s5ptv_overlay[vm_layer].pixel_blending,
			  g_s5ptv_overlay[vm_layer].pre_mul,
			  g_s5ptv_overlay[vm_layer].blank_color,
			  g_s5ptv_overlay[vm_layer].base_addr,
			  g_s5ptv_overlay[vm_layer].fb.fmt.bytesperline,
			  g_s5ptv_overlay[vm_layer].win.w.width,
			  g_s5ptv_overlay[vm_layer].win.w.height,
			  g_s5ptv_overlay[vm_layer].win.w.left,
			  g_s5ptv_overlay[vm_layer].win.w.top,
			  g_s5ptv_overlay[vm_layer].dst_rect.left,
			  g_s5ptv_overlay[vm_layer].dst_rect.top,
			  g_s5ptv_overlay[vm_layer].dst_rect.width,
			  g_s5ptv_overlay[vm_layer].dst_rect.height);

	if (merr != VMIXER_NO_ERROR) {
		pr_err("can't initialize layer(%d)\n", merr);
		return false;
	}

	s5p_vm_start();

	st->grp_layer_enable[vm_layer] = true;

	GRPPRINTK("()\n");

	return true;
}
示例#5
0
bool _s5p_grp_start(enum s5p_tv_vmx_layer vm_layer)
{
	enum s5p_tv_vmx_err merr;
	struct s5p_tv_status *st = &s5ptv_status;

	if (!(st->grp_layer_enable[0] || st->grp_layer_enable[1])) {

		merr = __s5p_vm_init_status_reg(st->grp_burst,
					st->grp_endian);

		if (merr != VMIXER_NO_ERROR)
			return false;
	}

#ifdef CONFIG_CPU_S5PC100
	merr = __s5p_vm_init_layer(vm_layer,
			  true,
			  s5ptv_overlay[vm_layer].win_blending,
			  s5ptv_overlay[vm_layer].win.global_alpha,
			  s5ptv_overlay[vm_layer].priority,
			  s5ptv_overlay[vm_layer].fb.fmt.pixelformat,
			  s5ptv_overlay[vm_layer].blank_change,
			  s5ptv_overlay[vm_layer].pixel_blending,
			  s5ptv_overlay[vm_layer].pre_mul,
			  s5ptv_overlay[vm_layer].blank_color,
			  s5ptv_overlay[vm_layer].base_addr,
			  s5ptv_overlay[vm_layer].fb.fmt.bytesperline,
			  s5ptv_overlay[vm_layer].win.w.width,
			  s5ptv_overlay[vm_layer].win.w.height,
			  s5ptv_overlay[vm_layer].win.w.left,
			  s5ptv_overlay[vm_layer].win.w.top,
			  s5ptv_overlay[vm_layer].dst_rect.left,
			  s5ptv_overlay[vm_layer].dst_rect.top);
#endif

#ifdef CONFIG_CPU_S5PV210
	merr = __s5p_vm_init_layer(s5ptv_status.tvout_param.disp_mode,
			  vm_layer,
			  true,
			  s5ptv_overlay[vm_layer].win_blending,
			  s5ptv_overlay[vm_layer].win.global_alpha,
			  s5ptv_overlay[vm_layer].priority,
			  s5ptv_overlay[vm_layer].fb.fmt.pixelformat,
			  s5ptv_overlay[vm_layer].blank_change,
			  s5ptv_overlay[vm_layer].pixel_blending,
			  s5ptv_overlay[vm_layer].pre_mul,
			  s5ptv_overlay[vm_layer].blank_color,
			  s5ptv_overlay[vm_layer].base_addr,
			  s5ptv_overlay[vm_layer].fb.fmt.bytesperline,
			  s5ptv_overlay[vm_layer].win.w.width,
			  s5ptv_overlay[vm_layer].win.w.height,
			  s5ptv_overlay[vm_layer].win.w.left,
			  s5ptv_overlay[vm_layer].win.w.top,
			  s5ptv_overlay[vm_layer].dst_rect.left,
			  s5ptv_overlay[vm_layer].dst_rect.top,
			  s5ptv_overlay[vm_layer].dst_rect.width,
			  s5ptv_overlay[vm_layer].dst_rect.height);
#endif


	if (merr != VMIXER_NO_ERROR) {
		GRPPRINTK("can't initialize layer(%d)\n\r", merr);
		return false;
	}

	__s5p_vm_start();


	st->grp_layer_enable[vm_layer] = true;

	GRPPRINTK("()\n\r");

	return true;
}