コード例 #1
0
/* new function to close fifo */
int s3cfb_close_fifo(int id, int (*do_priv)(void *), void *param, int sleep)
{
	struct s3cfb_window *win = ctrl->fb[id]->par;

	dev_dbg(ctrl->dev, "[fb%d] close fifo\n", win->id);

	if (sleep)
		win->path = DATA_PATH_FIFO;
	else
		win->path = DATA_PATH_DMA;

	s3cfb_set_vsync_interrupt(ctrl, 1);
	s3cfb_wait_for_vsync();
	s3cfb_set_vsync_interrupt(ctrl, 0);

	s3cfb_display_off(ctrl);
	s3cfb_check_line_count(ctrl);
	s3cfb_disable_window(id);

	if (do_priv) {
		if (do_priv(param)) {
			dev_err(ctrl->dev, "failed to run for private fifo close\n");
			s3cfb_enable_window(id);
			s3cfb_display_on(ctrl);
			return -EFAULT;
		}
	}

	s3cfb_display_on(ctrl);

	return 0;
}
コード例 #2
0
void s3cfb_enable_local(int win, int in_yuv, int sel)
{
	s3cfb_check_line_count();

	switch (win) {
	case 0:
		s3cfb_enable_local0(in_yuv);
		break;

	case 1:
		s3cfb_enable_local1(in_yuv, sel);
		break;

	case 2:
		s3cfb_enable_local2(in_yuv, sel);
		break;

	default:
		break;
	}
}