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; }
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); }
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; }
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; }