audio: Image signal delay of 1.5 seconds when switching to AV source [1/2]
authornengwen.chen <nengwen.chen@amlogic.com>
Wed, 20 Mar 2019 13:10:40 +0000 (21:10 +0800)
committerTao Zeng <tao.zeng@amlogic.com>
Fri, 22 Mar 2019 09:22:20 +0000 (02:22 -0700)
PD#TV-3067

Problem:
Image signal delay of 1.5 seconds when switching to AV source.

Solution:
1.add av audio control for audio patch.

Verify:
verified by x301

Change-Id: I3e820923a26439b3aeb9841562b81cd6d55ed4ea
Signed-off-by: nengwen.chen <nengwen.chen@amlogic.com>
include/linux/amlogic/media/sound/misc.h
sound/soc/amlogic/auge/extn.c
sound/soc/amlogic/common/misc.c
sound/soc/amlogic/meson/tv.c

index e4b7bdb..c9e9fbd 100644 (file)
@@ -31,6 +31,15 @@ int aml_get_atv_audio_stable(
 
 #endif
 
+#ifdef CONFIG_AMLOGIC_MEDIA_TVIN_AVDETECT
+extern int tvin_get_av_status(void);
+extern const struct soc_enum av_audio_status_enum;
+
+extern int aml_get_av_audio_stable(
+       struct snd_kcontrol *kcontrol,
+       struct snd_ctl_elem_value *ucontrol);
+#endif
+
 #ifdef CONFIG_AMLOGIC_MEDIA_TVIN_HDMI
 extern int update_spdifin_audio_type(int audio_type);
 
index 722957b..712c6aa 100644 (file)
@@ -772,6 +772,13 @@ static const struct snd_kcontrol_new extn_controls[] = {
                NULL),
 #endif
 
+#ifdef CONFIG_AMLOGIC_MEDIA_TVIN_AVDETECT
+       SOC_ENUM_EXT("AV audio stable",
+               av_audio_status_enum,
+               aml_get_av_audio_stable,
+               NULL),
+#endif
+
 #ifdef CONFIG_AMLOGIC_MEDIA_TVIN_HDMI
        SOC_ENUM_EXT("HDMIIN audio stable",
                hdmi_in_status_enum[0],
index 8da6fd5..1b46705 100644 (file)
@@ -47,6 +47,20 @@ int aml_get_atv_audio_stable(
 }
 #endif /* CONFIG_AMLOGIC_ATV_DEMOD */
 
+#ifdef CONFIG_AMLOGIC_MEDIA_TVIN_AVDETECT
+
+const struct soc_enum av_audio_status_enum =
+       SOC_ENUM_SINGLE(SND_SOC_NOPM, 0, ARRAY_SIZE(audio_is_stable),
+                       audio_is_stable);
+
+int aml_get_av_audio_stable(struct snd_kcontrol *kcontrol,
+                       struct snd_ctl_elem_value *ucontrol)
+{
+       ucontrol->value.integer.value[0] = tvin_get_av_status();
+       return 0;
+}
+#endif /* CONFIG_AMLOGIC_MEDIA_TVIN_AVDETECT */
+
 #ifdef CONFIG_AMLOGIC_MEDIA_TVIN_HDMI
 int hdmiin_fifo_disable_count;
 
index ac46bba..7f6c4df 100644 (file)
@@ -570,22 +570,6 @@ static int aml_set_arc_audio(struct snd_kcontrol *kcontrol,
 }
 #endif
 
-#ifdef CONFIG_TVIN_VDIN
-static const char *const av_audio_is_stable[] = {
-       "false",
-       "true"
-};
-static const struct soc_enum av_audio_status_enum =
-       SOC_ENUM_SINGLE(SND_SOC_NOPM, 0, ARRAY_SIZE(av_audio_is_stable),
-                       av_audio_is_stable);
-static int aml_get_av_audio_stable(struct snd_kcontrol *kcontrol,
-                       struct snd_ctl_elem_value *ucontrol)
-{
-       ucontrol->value.integer.value[0] = tvin_get_av_status();
-       return 0;
-}
-#endif /* CONFIG_TVIN_VDIN */
-
 static const struct snd_kcontrol_new av_controls[] = {
        SOC_ENUM_EXT("AudioIn Switch",
                         audio_in_switch_enum,
@@ -652,7 +636,7 @@ static const struct snd_kcontrol_new aml_tv_controls[] = {
                                aml_get_atv_audio_stable,
                                NULL),
 #endif
-#ifdef CONFIG_TVIN_VDIN
+#ifdef CONFIG_AMLOGIC_MEDIA_TVIN_AVDETECT
        SOC_ENUM_EXT("AV audio stable", av_audio_status_enum,
                                aml_get_av_audio_stable,
                                NULL),