bool _s5p_vlayer_set_top_address(unsigned long buf_in)
{
	u32 t_y_addr = 0;
	u32 t_c_addr = 0;
	u32 b_y_addr = 0;
	u32 b_c_addr = 0;

	struct s5p_video_img_address *addr =
		(struct s5p_video_img_address *)buf_in;
	enum s5p_tv_vp_err verr;

	s5ptv_status.vl_basic_param.top_y_address = addr->y_address;
	s5ptv_status.vl_basic_param.top_c_address = addr->c_address;

	_s5p_vlayer_calc_inner_values();

	t_y_addr = s5ptv_status.vl_top_y_address;
	t_c_addr = s5ptv_status.vl_top_c_address;
	b_y_addr = s5ptv_status.vl_bottom_y_address;
	b_c_addr = s5ptv_status.vl_bottom_c_address;

	if (_s5p_vlayer_wait_previous_update())
		return false;


	verr = __s5p_vp_set_top_field_address(t_y_addr, t_c_addr);

	if (verr != VPROC_NO_ERROR)
		return false;


	if (check_input_mode(s5ptv_status.src_color) == INTERLACED) {
		__s5p_vp_set_field_id(s5ptv_status.field_id);
		verr = __s5p_vp_set_bottom_field_address(b_y_addr, b_c_addr);

		if (verr != VPROC_NO_ERROR)
			return false;
	}

	verr = __s5p_vp_update();

	if (verr != VPROC_NO_ERROR)
		return false;

	return true;
}
Example #2
0
bool _s5p_vlayer_set_field_id(unsigned long buf_in)
{
	s5p_tv_vp_err verr;

	s5ptv_status.field_id = (s5p_vp_field)(buf_in);

	if (_s5p_vlayer_wait_previous_update())
		return false;

	__s5p_vp_set_field_id(s5ptv_status.field_id);

	verr = __s5p_vp_update();

	if (verr != VPROC_NO_ERROR)
		return false;

	return true;
}