Ejemplo n.º 1
0
static int fimc_change_fifo_position(struct fimc_control *ctrl,
				     struct fimc_ctx *ctx) {
	struct v4l2_rect fimd_rect;
	struct fb_info *fbinfo;
	struct s3cfb_window *win;
	int ret = -1;

	fbinfo = registered_fb[ctx->overlay.fb_id];
	win = (struct s3cfb_window *)fbinfo->par;

	memset(&fimd_rect, 0, sizeof(struct v4l2_rect));

	ret = fimc_fimd_rect(ctrl, ctx, &fimd_rect);
	if (ret < 0) {
		fimc_err("fimc_fimd_rect fail\n");
		return -EINVAL;
	}

	/* Update WIN position */
	win->x = fimd_rect.left;
	win->y = fimd_rect.top;

	fbinfo->var.activate = FB_ACTIVATE_FORCE;
	ret = fb_set_var(fbinfo, &fbinfo->var);
	if (ret < 0) {
		fimc_err("fb_set_var fail (ret=%d)\n", ret);
		return -EINVAL;
	}

	return 0;
}
Ejemplo n.º 2
0
static int fimc_change_fifo_position(struct fimc_control *ctrl,
				     struct fimc_ctx *ctx) {
	struct v4l2_rect fimd_rect;
	struct s3cfb_user_window window;
	int ret = -1;

	memset(&fimd_rect, 0, sizeof(struct v4l2_rect));

	ret = fimc_fimd_rect(ctrl, ctx, &fimd_rect);
	if (ret < 0) {
		fimc_err("fimc_fimd_rect fail\n");
		return -EINVAL;
	}

	/* Update WIN position */
	window.x = fimd_rect.left;
	window.y = fimd_rect.top;
	ret = s3cfb_direct_ioctl(ctrl->id, S3CFB_WIN_POSITION,
			(unsigned long)&window);
	if (ret < 0) {
		fimc_err("direct_ioctl(S3CFB_WIN_POSITION) fail\n");
		return -EINVAL;
	}

	return 0;
}