if ((port >= TVIN_PORT_CVBS0) && (port <= TVIN_PORT_CVBS3)) {
ret = tvafe_cvd2_no_sig(&tvafe->cvd2, &devp->mem);
+ /*fix black side when config atv snow*/
+ if (ret && (port == TVIN_PORT_CVBS3) &&
+ (devp->flags & TVAFE_FLAG_DEV_SNOW_FLAG) &&
+ (tvafe->cvd2.config_fmt == TVIN_SIG_FMT_CVBS_PAL_I) &&
+ (tvafe->cvd2.info.state != TVAFE_CVD2_STATE_FIND))
+ tvafe_snow_config_acd();
+ else if ((tvafe->cvd2.config_fmt == TVIN_SIG_FMT_CVBS_PAL_I) &&
+ (tvafe->cvd2.info.state == TVAFE_CVD2_STATE_FIND) &&
+ (port == TVIN_PORT_CVBS3))
+ tvafe_snow_config_acd_resume();
+
/* normal sigal & adc reg error, reload source mux */
if (tvafe->cvd2.info.adc_reload_en && !ret)
tvafe_set_source_muxing(port, devp->pinmux);
W_APB_REG(ACD_REG_2E, tmp);
scene_colorful_old = 0;
if (cvd_dbg_en)
- tvafe_pr_info("%s: vlines:%d, de_offset:%d tmp:%x\n",
+ tvafe_pr_info("%s: lrg vlines:%d, de_offset:%d tmp:%x\n",
__func__, l_ave, lines->de_offset, tmp);
}
} else {
if (lines->de_offset > 0) {
tmp = ((TVAFE_CVD2_PAL_DE_START -
- lines->de_offset) << 16) |
+ lines->de_offset + 1) << 16) |
(288 + TVAFE_CVD2_PAL_DE_START -
- lines->de_offset);
+ lines->de_offset + 1);
W_APB_REG(ACD_REG_2E, tmp);
scene_colorful_old = 0;
if (cvd_dbg_en)
#ifdef TVAFE_SET_CVBS_PGA_EN
tvafe_cvd2_reset_pga();
#endif
+ /*pali to nosignal,restore default vstart-end after auto de*/
+ if (cvd2->config_fmt == TVIN_SIG_FMT_CVBS_PAL_I) {
+ W_APB_REG(ACD_REG_2E, 0x170137);
+ if (cvd_dbg_en)
+ pr_info("[tvafe..] %s: reset auto de.\n", __func__);
+ }
/* init variable */
memset(&cvd2->info, 0, sizeof(struct tvafe_cvd2_info_s));
cvd2->cvd2_init_en = true;
cvd2->info.hs_adj_level = 0;
acd_h = acd_h_back;
}
+ } else {
+ /*signal unstable,set default value*/
+ W_APB_REG(ACD_REG_2D, acd_h_back);
+ W_APB_BIT(CVD2_ACTIVE_VIDEO_HSTART, cvd_2e,
+ HACTIVE_START_BIT, HACTIVE_START_WID);
+ W_APB_BIT(ACD_REG_28, acd_128, 16, 5);
+ cvd2->info.hs_adj_en = 0;
+ cvd2->info.hs_adj_level = 0;
+ acd_h = acd_h_back;
}
}
/*0x8e035e is debug test result*/
if (acd_h_config)
W_APB_REG(ACD_REG_2D, acd_h_config);
- acd_h = acd_h_back;
}
/*only for pal-i*/
void tvafe_snow_config_acd_resume(void)
extern void ldim_set_matrix(int *data, int reg_sel);
extern void tvafe_snow_config(unsigned int onoff);
extern void tvafe_snow_config_clamp(unsigned int onoff);
-extern void tvafe_snow_config_acd(void);
-extern void tvafe_snow_config_acd_resume(void);
extern void vdin_vf_reg(struct vdin_dev_s *devp);
extern void vdin_vf_unreg(struct vdin_dev_s *devp);
extern void vdin_pause_dec(struct vdin_dev_s *devp);
++sm_p->state_cnt;
#ifdef CONFIG_AMLOGIC_MEDIA_TVIN_AFE
if ((port == TVIN_PORT_CVBS3) &&
- (devp->flags & VDIN_FLAG_SNOW_FLAG)) {
+ (devp->flags & VDIN_FLAG_SNOW_FLAG))
tvafe_snow_config_clamp(1);
- /*fix black side when config atv snow*/
- tvafe_snow_config_acd();
- }
#endif
if (sm_ops->nosig(devp->frontend)) {
sm_p->exit_nosig_cnt = 0;
devp->unstable_flag = true;
#ifdef CONFIG_AMLOGIC_MEDIA_TVIN_AFE
if ((port == TVIN_PORT_CVBS3) &&
- (devp->flags & VDIN_FLAG_SNOW_FLAG)) {
+ (devp->flags & VDIN_FLAG_SNOW_FLAG))
tvafe_snow_config_clamp(0);
- /*fix black side when config atv snow*/
- tvafe_snow_config_acd_resume();
- }
#endif
if (sm_ops->nosig(devp->frontend)) {
nosig = true;