From 4d9130d59e96c0153d87d8be137bfbdd312b905b Mon Sep 17 00:00:00 2001 From: Evoke Zhang Date: Tue, 20 Aug 2019 15:02:30 +0800 Subject: [PATCH] tvafe: update snow playing nosig state [1/1] PD#SWPL-12778 Problem: atv signal can't recover after hot plug cable Solution: update snow playing nosig state Verify: x301 Change-Id: I143ca203c60e5090d41e543306f3929b4544af0c Signed-off-by: Evoke Zhang --- drivers/amlogic/media/vin/tvin/tvafe/tvafe.c | 18 ++++++++++++++++-- .../amlogic/media/vin/tvin/tvafe/tvafe_cvd.h | 1 + .../amlogic/media/vin/tvin/tvafe/tvafe_debug.c | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/amlogic/media/vin/tvin/tvafe/tvafe.c b/drivers/amlogic/media/vin/tvin/tvafe/tvafe.c index ca65de035755..b021b348d58f 100644 --- a/drivers/amlogic/media/vin/tvin/tvafe/tvafe.c +++ b/drivers/amlogic/media/vin/tvin/tvafe/tvafe.c @@ -700,8 +700,22 @@ bool tvafe_is_nosig(struct tvin_frontend_s *fe) ret = tvafe_cvd2_no_sig(&tvafe->cvd2, &devp->mem); if ((!tvafe_mode) && (port == TVIN_PORT_CVBS3) && - (devp->flags & TVAFE_FLAG_DEV_SNOW_FLAG)) /* playing snow */ - ret = true; + (devp->flags & TVAFE_FLAG_DEV_SNOW_FLAG)) { /* playing snow */ + tvafe->cvd2.info.snow_state[3] = tvafe->cvd2.info.snow_state[2]; + tvafe->cvd2.info.snow_state[2] = tvafe->cvd2.info.snow_state[1]; + tvafe->cvd2.info.snow_state[1] = tvafe->cvd2.info.snow_state[0]; + if (ret) + tvafe->cvd2.info.snow_state[0] = 0; + else + tvafe->cvd2.info.snow_state[0] = 1; + if ((tvafe->cvd2.info.snow_state[3] + + tvafe->cvd2.info.snow_state[2] + + tvafe->cvd2.info.snow_state[1] + + tvafe->cvd2.info.snow_state[0]) == 4) + ret = false; + else + ret = true; + } if ((port == TVIN_PORT_CVBS3) && (tvafe->cvd2.config_fmt == TVIN_SIG_FMT_CVBS_PAL_I)) { /*fix black side when config atv snow*/ diff --git a/drivers/amlogic/media/vin/tvin/tvafe/tvafe_cvd.h b/drivers/amlogic/media/vin/tvin/tvafe/tvafe_cvd.h index ce6b1715f5ff..7ecfea2a6d33 100644 --- a/drivers/amlogic/media/vin/tvin/tvafe/tvafe_cvd.h +++ b/drivers/amlogic/media/vin/tvin/tvafe/tvafe_cvd.h @@ -136,6 +136,7 @@ struct tvafe_cvd2_info_s { unsigned short dgain[4]; unsigned short dgain_cnt; #endif + unsigned char snow_state[4]; /* 0:nosig, 1:stable */ unsigned int comb_check_cnt; unsigned int fmt_shift_cnt; unsigned short nonstd_cnt; diff --git a/drivers/amlogic/media/vin/tvin/tvafe/tvafe_debug.c b/drivers/amlogic/media/vin/tvin/tvafe/tvafe_debug.c index 40466ca42dbf..4648832a172a 100644 --- a/drivers/amlogic/media/vin/tvin/tvafe/tvafe_debug.c +++ b/drivers/amlogic/media/vin/tvin/tvafe/tvafe_debug.c @@ -491,7 +491,7 @@ static const char *tvafe_debug_usage_str = { "\n" " echo afe_ver > /sys/class/tvafe/tvafe0/debug;show tvafe version\n" "\n" -" echo snow val(d) > /sys/class/tvafe/tvafe0/debug;snow on/off\n" +" echo snowon val(d) > /sys/class/tvafe/tvafe0/debug;snow on/off\n" "\n" " echo frame_skip_enable val(d) > /sys/class/tvafe/tvafe0/debug;frame skip enable/disable\n" "\n"