audio: Image signal delay of 1.5 seconds when switching to AV source [1/2]

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>
This commit is contained in:
nengwen.chen
2019-03-20 21:10:40 +08:00
committed by Tao Zeng
parent 201c4f6c81
commit d52373b8ce
4 changed files with 31 additions and 17 deletions

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

View 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],

View 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;

View 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),