void __s5p_tv_poweroff(void) { TVPMPRINTK("()\n\r"); __s5p_tv_powerset_dac_onoff(0); if (regulator_disable(s5ptv_status.tv_regulator)) pr_err("%s : failed to turn tv-power-domain off\n", __func__); TVPMPRINTK("0x%08x, 0x%08x)\n\r", readl(S5P_NORMAL_CFG), readl(S5P_BLK_PWR_STAT)); }
void __s5p_tv_poweroff(void) { TVPMPRINTK("()\n\r"); __s5p_tv_powerset_dac_onoff(0); writel(readl(S5P_NORMAL_CFG) & ~TVPWR_SUBSYSTEM_ACTIVE, S5P_NORMAL_CFG); while (TVPWR_TV_BLOCK_STATUS(readl(S5P_BLK_PWR_STAT))) { msleep(1); } TVPMPRINTK("0x%08x,0x%08x)\n\r", readl(S5P_NORMAL_CFG), readl(S5P_BLK_PWR_STAT)); }
void __s5p_tv_poweroff(void) { int regulator_status = 0; TVPMPRINTK("()\n\r"); __s5p_tv_powerset_dac_onoff(0); if (regulator_disable(s5ptv_status.tv_regulator)) pr_err("%s : failed to turn tv-power-domain off\n", __func__); #if defined (CONFIG_S5PC110_DEMPSEY_BOARD) if (regulator_disable(s5ptv_status.tv_tv)) pr_err("%s : failed to turn tv-power-domain off\n", __func__); if (regulator_disable(s5ptv_status.tv_tvout)) pr_err("%s : failed to turn tv-power-domain off\n", __func__); #endif TVPMPRINTK("0x%08x, 0x%08x)\n\r", readl(S5P_NORMAL_CFG), readl(S5P_BLK_PWR_STAT)); }
bool _s5p_tv_if_init_sd_reg(void) { u8 i = 0; s5p_tv_sd_err sderr = 0; s5p_tv_status *st = &s5ptv_status; s5p_tv_o_mode out_mode = st->tvout_param.out_mode; s5p_tv_disp_mode disp_mode = st->tvout_param.disp_mode; s5p_sd_order order = st->sdout_order; u32 delay = st->sdout_delay.delay_y; u32 off_v_start = st->sdout_delay.offset_video_start; u32 off_v_end = st->sdout_delay.offset_video_end; u32 g_bright = st->sdout_bri_hue_set.gain_brightness; u32 off_bright = st->sdout_bri_hue_set.offset_brightness; u32 g0_cb_h_sat = st->sdout_bri_hue_set.gain0_cb_hue_saturation; u32 g1_cb_h_sat = st->sdout_bri_hue_set.gain1_cb_hue_saturation; u32 g0_cr_h_sat = st->sdout_bri_hue_set.gain0_cr_hue_saturation; u32 g1_cr_h_sat = st->sdout_bri_hue_set.gain1_cr_hue_saturation; u32 off_cb_h_sat = st->sdout_bri_hue_set.offset_cb_hue_saturation; u32 off_cr_h_sat = st->sdout_bri_hue_set.offset_cr_hue_saturation; u32 max_rgb_cube = st->sdout_rgb_compen.max_rgb_cube; u32 min_rgb_cube = st->sdout_rgb_compen.min_rgb_cube; u32 y_l_m_c = st->sdout_cvbs_compen.y_lower_mid; u32 y_b_c = st->sdout_cvbs_compen.y_bottom; u32 y_t_c = st->sdout_cvbs_compen.y_top; u32 y_u_m_c = st->sdout_cvbs_compen.y_upper_mid; u32 rad_c = st->sdout_cvbs_compen.radius; u32 y_t_s = st->sdout_svideo_compen.y_top; u32 y_b_s = st->sdout_svideo_compen.y_bottom; u32 y_cylinder_s = st->sdout_svideo_compen.yc_cylinder; u32 back_525 = st->sdout_comp_porch.back_525; u32 front_525 = st->sdout_comp_porch.front_525; u32 back_625 = st->sdout_comp_porch.back_625; u32 front_625 = st->sdout_comp_porch.front_625; u32 display_cc = st->sdout_closed_capt.display_cc; u32 nondisplay_cc = st->sdout_closed_capt.nondisplay_cc; bool br_hue_sat_adj = st->sdout_bri_hue_set.bright_hue_sat_adj; bool wss_cvbs = st->sdout_vbi.wss_cvbs; bool wss_y_svideo = st->sdout_vbi.wss_y_svideo; bool cgmsa_rgb = st->sdout_vbi.cgmsa_rgb; bool wss_rgb = st->sdout_vbi.wss_rgb; bool cgmsa_y = st->sdout_vbi.cgmsa_y_pb_pr; bool wss_y = st->sdout_vbi.wss_y_pb_pr; bool phase_adj = st->sdout_color_sub_carrier_phase_adj; bool ypbpr_comp = st->sdout_y_pb_pr_comp; bool rgb_compen = st->sdout_rgb_compen.rgb_color_compensation; bool y_compen = st->sdout_svideo_compen.y_color_compensation; bool cvbs_compen = st->sdout_cvbs_compen.cvbs_color_compensation; bool w5_analog_on = st->sdout_wss_525.analog_on; bool w6_surroun_f_sound = st->sdout_wss_625.surroun_f_sound; bool w6_copyright = st->sdout_wss_625.copyright; bool w6_copy_protection = st->sdout_wss_625.copy_protection; bool w6_text_subtitles = st->sdout_wss_625.text_subtitles; bool w6_helper_signal = st->sdout_wss_625.helper_signal; bool c5_analog_on = st->sdout_cgms_525.analog_on; bool c6_surroun_f_sound = st->sdout_cgms_625.surroun_f_sound; bool c6_copyright = st->sdout_cgms_625.copyright; bool c6_copy_protection = st->sdout_cgms_625.copy_protection; bool c6_text_subtitles = st->sdout_cgms_625.text_subtitles; bool c6_helper_signal = st->sdout_cgms_625.helper_signal; s5p_sd_level cpn_lev = st->sdout_video_scale_cfg.component_level; s5p_sd_level cps_lev= st->sdout_video_scale_cfg.composite_level; s5p_sd_vsync_ratio cpn_rat= st->sdout_video_scale_cfg.component_ratio; s5p_sd_vsync_ratio cps_rat= st->sdout_video_scale_cfg.composite_ratio; s5p_sd_closed_caption_type cap_cvbs = st->sdout_vbi.caption_cvbs; s5p_sd_closed_caption_type cap_y_svideo = st->sdout_vbi.caption_y_svideo; s5p_sd_closed_caption_type cap_rgb = st->sdout_vbi.caption_rgb; s5p_sd_closed_caption_type cap_y_pb_pr = st->sdout_vbi.caption_y_pb_pr; s5p_sd_sync_sig_pin sync_pin = st->sdout_sync_pin; s5p_sd_vesa_rgb_sync_type sync_type=st->sdout_rgb_sync.sync_type; s5p_tv_active_polarity vsync_active=st->sdout_rgb_sync.vsync_active; s5p_tv_active_polarity hsync_active=st->sdout_rgb_sync.hsync_active; s5p_sd_525_copy_permit w5_copy_permit = st->sdout_wss_525.copy_permit; s5p_sd_525_mv_psp w5_mv_psp = st->sdout_wss_525.mv_psp; s5p_sd_525_copy_info w5_copy_info = st->sdout_wss_525.copy_info; s5p_sd_525_aspect_ratio w5_display_ratio = st->sdout_wss_525.display_ratio; s5p_sd_625_subtitles w6_open_subtitles= st->sdout_wss_625.open_subtitles; s5p_sd_625_camera_film w6_camera_film = st->sdout_wss_625.camera_film; s5p_sd_625_color_encoding w6_color_encoding = st->sdout_wss_625.color_encoding; s5p_sd_625_aspect_ratio w6_display_ratio = st->sdout_wss_625.display_ratio; s5p_sd_525_copy_permit c5_copy_permit = st->sdout_cgms_525.copy_permit; s5p_sd_525_mv_psp c5_mv_psp = st->sdout_cgms_525.mv_psp; s5p_sd_525_copy_info c5_copy_info = st->sdout_cgms_525.copy_info; s5p_sd_525_aspect_ratio c5_display_ratio = st->sdout_cgms_525.display_ratio; s5p_sd_625_subtitles c6_open_subtitles= st->sdout_cgms_625.open_subtitles; s5p_sd_625_camera_film c6_camera_film = st->sdout_cgms_625.camera_film; s5p_sd_625_color_encoding c6_color_encoding = st->sdout_cgms_625.color_encoding; s5p_sd_625_aspect_ratio c6_display_ratio = st->sdout_cgms_625.display_ratio; __s5p_sdout_sw_reset(true); sderr = __s5p_sdout_init_display_mode(disp_mode,out_mode,order); if (sderr != SDOUT_NO_ERROR) { return false; } sderr = __s5p_sdout_init_video_scale_cfg(cpn_lev,cpn_rat, cps_lev,cps_rat); if (sderr != SDOUT_NO_ERROR) { return false; } sderr = __s5p_sdout_init_sync_signal_pin(sync_pin); if (sderr != SDOUT_NO_ERROR) { return false; } sderr = __s5p_sdout_init_vbi(wss_cvbs,cap_cvbs,wss_y_svideo,cap_y_svideo, cgmsa_rgb,wss_rgb,cap_rgb,cgmsa_y,wss_y,cap_y_pb_pr); if (sderr != SDOUT_NO_ERROR) { return false; } for(i = SDOUT_CHANNEL_0;i<=SDOUT_CHANNEL_2;i++){ u32 offset = st->sdout_offset_gain[i].offset; u32 gain = st->sdout_offset_gain[i].gain; sderr = __s5p_sdout_init_offset_gain(i,offset,gain); if (sderr != SDOUT_NO_ERROR) return false; } __s5p_sdout_init_delay(delay,off_v_start,off_v_end); __s5p_sdout_init_schlock(phase_adj); __s5p_sdout_init_color_compensaton_onoff(br_hue_sat_adj,ypbpr_comp, rgb_compen,y_compen,cvbs_compen); __s5p_sdout_init_brightness_hue_saturation(g_bright,off_bright, g0_cb_h_sat,g1_cb_h_sat,g0_cr_h_sat, g1_cr_h_sat,off_cb_h_sat,off_cr_h_sat); __s5p_sdout_init_rgb_color_compensation(max_rgb_cube,min_rgb_cube); __s5p_sdout_init_cvbs_color_compensation(y_l_m_c,y_b_c,y_t_c, y_u_m_c,rad_c); __s5p_sdout_init_svideo_color_compensation(y_t_s,y_b_s,y_cylinder_s); __s5p_sdout_init_component_porch(back_525,front_525,back_625,front_625); sderr = __s5p_sdout_init_vesa_rgb_sync(sync_type,vsync_active,hsync_active); if (sderr != SDOUT_NO_ERROR) { return false; } for(i = SDOUT_CHANNEL_0;i<=SDOUT_CHANNEL_2;i++) { s5p_sd_channel_sel channel = st->sdout_xtalk_cc[i].channel; u32 coeff1 = st->sdout_xtalk_cc[i].coeff1; u32 coeff2 = st->sdout_xtalk_cc[i].coeff2; sderr = __s5p_sdout_init_ch_xtalk_cancel_coef(channel,coeff2,coeff1); if (sderr != SDOUT_NO_ERROR) return false; } __s5p_sdout_init_closed_caption(display_cc,nondisplay_cc); sderr = __s5p_sdout_init_wss525_data(w5_copy_permit,w5_mv_psp, w5_copy_info,w5_analog_on,w5_display_ratio); if (sderr != SDOUT_NO_ERROR) { return false; } sderr = __s5p_sdout_init_wss625_data(w6_surroun_f_sound,w6_copyright, w6_copy_protection,w6_text_subtitles, w6_open_subtitles,w6_camera_film, w6_color_encoding,w6_helper_signal, w6_display_ratio); if (sderr != SDOUT_NO_ERROR) { return false; } sderr = __s5p_sdout_init_cgmsa525_data(c5_copy_permit,c5_mv_psp, c5_copy_info,c5_analog_on, c5_display_ratio); if (sderr != SDOUT_NO_ERROR) { return false; } sderr = __s5p_sdout_init_cgmsa625_data(c6_surroun_f_sound,c6_copyright, c6_copy_protection,c6_text_subtitles, c6_open_subtitles,c6_camera_film, c6_color_encoding,c6_helper_signal, c6_display_ratio); if (sderr != SDOUT_NO_ERROR) { return false; } // Disable All Interrupt __s5p_sdout_set_interrupt_enable(false); // Clear All Interrupt Pending __s5p_sdout_clear_interrupt_pending(); __s5p_sdout_start(); __s5p_tv_powerset_dac_onoff(true); for(i = SDOUT_CHANNEL_0;i<=SDOUT_CHANNEL_2;i++) { bool dac = st->sdout_dac_on[i]; sderr = __s5p_sdout_init_dac_power_onoff(i,dac); if (sderr != SDOUT_NO_ERROR) return false; } return true; }