Esempio n. 1
0
bool _s5p_vlayer_stop(void)
{
	s5p_tv_vp_err verr;
	s5p_tv_vmx_err merr;

	merr = __s5p_vm_set_layer_show(VM_VIDEO_LAYER, false);

	if (merr != VMIXER_NO_ERROR)
		return false;

	__s5p_vm_start();

	if (_s5p_vlayer_wait_previous_update())
		return false;

	verr = __s5p_vp_stop();

	if (verr != VPROC_NO_ERROR)
		return false;

	__s5p_tv_clk_set_vp_clk_onoff(false);

	s5ptv_status.vp_layer_enable = false;

	return true;
}
Esempio n. 2
0
void __s5p_tv_clk_stop(void)
{
	__s5p_tv_clk_set_sdout_sclk_onoff(false);
	__s5p_tv_clk_set_sdout_hclk_onoff(false);
	__s5p_tv_clk_set_hdmi_sclk_onoff(false);
	__s5p_tv_clk_set_hdmi_hclk_onoff(false);
	__s5p_tv_clk_set_vp_clk_onoff(false);
	__s5p_tv_clk_set_vmixer_sclk_onoff(false);
	__s5p_tv_clk_set_vmixer_hclk_onoff(false);
	__s5p_tv_clk_hpll_onoff(false);
}
Esempio n. 3
0
void __s5p_tv_clk_start(bool vp, bool sdout, bool hdmi)
{
	__s5p_tv_clk_set_vp_clk_onoff(vp);
	__s5p_tv_clk_set_sdout_hclk_onoff(sdout);
	__s5p_tv_clk_set_sdout_sclk_onoff(sdout);
	__s5p_tv_clk_set_hdmi_hclk_onoff(hdmi);
	__s5p_tv_clk_set_vmixer_hclk_onoff(true);
	__s5p_tv_clk_set_vmixer_sclk_onoff(true);	

	if (hdmi) {
		__s5p_tv_clk_hpll_onoff(true);
	}
}
/*
* start
*  - start functions are only called under stopping tvout clock
*/
void __s5p_tv_clk_start(bool vp_hclk_on,
			bool sdout_hclk_on,
			bool hdmi_hclk_on)
{
	TVCLKPRINTK("(%d,%d,%d)\n\r", vp_hclk_on, sdout_hclk_on, hdmi_hclk_on);

	__s5p_tv_clk_set_vp_clk_onoff(vp_hclk_on);
	__s5p_tv_clk_set_sdout_hclk_onoff(sdout_hclk_on);
	__s5p_tv_clk_set_sdout_sclk_onoff(sdout_hclk_on);
	__s5p_tv_clk_set_hdmi_hclk_onoff(hdmi_hclk_on);
	__s5p_tv_clk_set_vmixer_hclk_onoff(true);
	__s5p_tv_clk_set_vmixer_sclk_onoff(true);

	if (hdmi_hclk_on)
		__s5p_tv_clk_hpll_onoff(true);

}
bool _s5p_vlayer_stop(void)
{
	enum s5p_tv_vp_err verr;

	__s5p_vm_set_layer_show(VM_VIDEO_LAYER, false);

	if (_s5p_vlayer_wait_previous_update())
		return false;

	verr = __s5p_vp_stop();

	if (verr != VPROC_NO_ERROR)
		return false;

#ifdef CONFIG_CPU_S5PC100
	__s5p_tv_clk_set_vp_clk_onoff(false);
#endif

	s5ptv_status.vp_layer_enable = false;

	return true;
}
Esempio n. 6
0
bool _s5p_vlayer_start(void)
{
	int i;

	s5p_tv_vp_err verr;
	s5p_tv_vmx_err merr;
	s5p_video_img_address temp_addr;
	s5p_img_size img_size;

	s5p_vl_param param = s5ptv_status.vl_basic_param;

	u8 contrast = s5ptv_status.vl_contrast;

	u32 ty_addr = s5ptv_status.vl_top_y_address;
	u32 tc_addr = s5ptv_status.vl_top_c_address;
	u32 by_addr = s5ptv_status.vl_bottom_y_address;
	u32 bc_addr = s5ptv_status.vl_bottom_c_address;
	u32 endian = param.src_img_endian;
	u32 i_w  = param.src_width;
	u32 i_h  = param.src_height;
	u32 s_ox = s5ptv_status.vl_src_offset_x;
	u32 s_xf = s5ptv_status.vl_src_x_fact_step;
	u32 s_oy = s5ptv_status.vl_src_offset_y;
	u32 s_w  = s5ptv_status.vl_src_width;
	u32 s_h  = s5ptv_status.vl_src_height;
	u32 d_ox = s5ptv_status.vl_dest_offset_x;
	u32 d_oy = s5ptv_status.vl_dest_offset_y;
	u32 d_w  = s5ptv_status.vl_dest_width;
	u32 d_h  = s5ptv_status.vl_dest_height;
	u32 noise = s5ptv_status.vl_sharpness.th_noise;
	u32 saturation = s5ptv_status.vl_saturation;
	u32 alpha = param.alpha;
	u32 priority = param.priority;
	u32 br_offset = s5ptv_status.vl_bright_offset;

	bool ipc = s5ptv_status.vl2d_ipc;
	bool l_skip = s5ptv_status.vl_op_mode.line_skip;
	bool bypass = s5ptv_status.vl_bypass_post_process;
	bool po_def = s5ptv_status.vl_poly_filter_default;
	bool bright = s5ptv_status.us_vl_brightness;
	bool w_blend = param.win_blending;
	bool csc_en = s5ptv_status.vl_csc_control.csc_en;
	bool s_off_en = s5ptv_status.vl_csc_control.sub_y_offset_en;
	bool csc_coef_def = s5ptv_status.vl_csc_coef_default;

	s5p_vp_field f_id = s5ptv_status.field_id;
	s5p_vp_mem_mode m_mode = s5ptv_status.vl_op_mode.mem_mode;
	s5p_vp_chroma_expansion cro_ex = s5ptv_status.vl_op_mode.chroma_exp;
	s5p_vp_filed_id_toggle f_id_tog = s5ptv_status.vl_op_mode.toggle_id;
	s5p_vp_pxl_rate p_rate = s5ptv_status.vl_rate;
	s5p_vp_sharpness_control sharp = s5ptv_status.vl_sharpness.sharpness;
	s5p_vp_csc_type	csc_type = s5ptv_status.vl_csc_type;

	__s5p_tv_clk_set_vp_clk_onoff(true);
	__s5p_vp_sw_reset();
	__s5p_vp_init_field_id(f_id);
	__s5p_vp_init_op_mode(l_skip, m_mode, cro_ex, f_id_tog);
	__s5p_vp_init_pixel_rate_control(p_rate);

	temp_addr.y_address = param.top_y_address;
	temp_addr.c_address = param.top_c_address;
	img_size.img_width = param.src_width;
	img_size.img_height = param.src_height;

	_s5p_vlayer_set_top_address((unsigned long)&temp_addr);
	_s5p_vlayer_set_img_size((unsigned long)&img_size);
	_s5p_vlayer_set_src_size((unsigned long)&img_size);

	if (po_def)
		verr = __s5p_vp_init_layer_def_poly_filter_coef(ty_addr,
				tc_addr, by_addr, bc_addr, endian, i_w, i_h,
				s_ox, s_xf, s_oy, s_w, s_h, d_ox, d_oy, d_w,
				d_h, ipc);
	else
		verr = __s5p_vp_init_layer(ty_addr, tc_addr, by_addr, bc_addr,
				endian, i_w, i_h, s_ox, s_xf, s_oy, s_w, s_h,
				d_ox, d_oy, d_w, d_h, ipc);

	if (verr != VPROC_NO_ERROR)
		return false;

	__s5p_vp_init_bypass_post_process(bypass);
	__s5p_vp_init_sharpness(noise, sharp);
	__s5p_vp_init_saturation(saturation);
	__s5p_vp_init_brightness(bright);
	__s5p_vp_init_contrast(contrast);

	for (i = VProc_LINE_EQ_0 ; i <= VProc_LINE_EQ_7 ; i++) {
		if (s5ptv_status.vl_bc_control[i].eq_num == i)
			verr = __s5p_vp_init_brightness_contrast_control(
					s5ptv_status.vl_bc_control[i].eq_num,
					s5ptv_status.vl_bc_control[i].intc,
					s5ptv_status.vl_bc_control[i].slope);

		if (verr != VPROC_NO_ERROR)
			return false;
	}

	__s5p_vp_init_brightness_offset(br_offset);

	__s5p_vp_init_csc_control(s_off_en, csc_en);

	if (csc_en && csc_coef_def) {
		verr = __s5p_vp_init_csc_coef_default(csc_type);

		if (verr != VPROC_NO_ERROR)
			return false;
	}

	verr = __s5p_vp_start();

	if (verr != VPROC_NO_ERROR)
		return false;

#ifdef CONFIG_CPU_S5PC100
	merr = __s5p_vm_init_layer(VM_VIDEO_LAYER, true, w_blend, alpha,
				priority, VM_DIRECT_RGB565, false, false,
				false, 0, 0, 0, 0, 0, 0, 0, 0, 0);
#endif

#ifdef CONFIG_CPU_S5PV210
	merr = __s5p_vm_init_layer(s5ptv_status.tvout_param.disp_mode,
					VM_VIDEO_LAYER, true, w_blend,
					alpha, priority, VM_DIRECT_RGB565,
					false, false, false, 0, 0, 0, 0,
					0, 0, 0, 0, 0, 0, 0);
#endif

	if (merr != VPROC_NO_ERROR)
		return false;

	__s5p_vm_start();

	s5ptv_status.vp_layer_enable = true;

	return true;
}