atv_demod: fix first sound carrier output in nicam system [1/1]
authornengwen.chen <nengwen.chen@amlogic.com>
Fri, 20 Sep 2019 05:49:44 +0000 (13:49 +0800)
committerTao Zeng <tao.zeng@amlogic.com>
Fri, 20 Sep 2019 11:48:14 +0000 (04:48 -0700)
PD#TV-9972

Problem:
first sound carrier no output in nicam system.

Solution:
1.fix first sound carrier output in nicam system.

Verify:
Verified by TL1.

Change-Id: Ib89b6a5300a1ebeb9e61bbb3acb6356e2abab08f
Signed-off-by: nengwen.chen <nengwen.chen@amlogic.com>
drivers/amlogic/atv_demod/atvauddemod_func.c
drivers/amlogic/atv_demod/atvdemod_func.h

index 76c02cf..2b4516d 100644 (file)
@@ -872,7 +872,7 @@ void set_mono_dk(void)
 {
        int aa;
 
-       adec_wr_reg(ADDR_ADEC_CTRL, AUDIO_STANDARD_NICAM_DK);
+       adec_wr_reg(ADDR_ADEC_CTRL, AUDIO_STANDARD_NICAM_DK | (3 << 4));
 
        set_filter(filter_100k, ADDR_DDC_FIR0_COEF, 65);
        set_filter(filter_100k, ADDR_DDC_FIR1_COEF, 65);
@@ -889,7 +889,7 @@ void set_mono_i(void)
 {
        int aa;
 
-       adec_wr_reg(ADDR_ADEC_CTRL, AUDIO_STANDARD_NICAM_I);
+       adec_wr_reg(ADDR_ADEC_CTRL, AUDIO_STANDARD_NICAM_I | (3 << 4));
 
        set_filter(filter_100k, ADDR_DDC_FIR0_COEF, 65);
        set_filter(filter_100k, ADDR_DDC_FIR1_COEF, 65);
@@ -906,7 +906,7 @@ void set_mono_bg(void)
 {
        int aa;
 
-       adec_wr_reg(ADDR_ADEC_CTRL, AUDIO_STANDARD_NICAM_BG);
+       adec_wr_reg(ADDR_ADEC_CTRL, AUDIO_STANDARD_NICAM_BG | (3 << 4));
 
        set_filter(filter_100k, ADDR_DDC_FIR0_COEF, 65);
        set_filter(filter_100k, ADDR_DDC_FIR1_COEF, 65);
@@ -923,7 +923,7 @@ void set_mono_l(void)
 {
        int aa;
 
-       adec_wr_reg(ADDR_ADEC_CTRL, AUDIO_STANDARD_NICAM_L);
+       adec_wr_reg(ADDR_ADEC_CTRL, AUDIO_STANDARD_NICAM_L | (3 << 4));
 
        set_filter(filter_100k, ADDR_DDC_FIR0_COEF, 65);
        set_filter(filter_100k, ADDR_DDC_FIR1_COEF, 65);
@@ -1586,7 +1586,7 @@ void set_outputmode(uint32_t standard, uint32_t outmode)
        case AUDIO_STANDARD_MONO_I:
        case AUDIO_STANDARD_MONO_L:
                /* for FM MONO system to detection nicam status */
-               if (!aud_reinit && get_nicam_lock_status()) {
+               if (!aud_mono_only && !aud_reinit && get_nicam_lock_status()) {
                        if (standard == AUDIO_STANDARD_MONO_I)
                                aud_std = AUDIO_STANDARD_NICAM_I;
                        else if (standard == AUDIO_STANDARD_MONO_L)
index 7d8324b..87e73f3 100644 (file)
@@ -31,6 +31,7 @@ extern unsigned int aud_std;
 extern unsigned int aud_mode;
 extern bool audio_thd_en;
 extern bool aud_reinit;
+extern bool aud_mono_only;
 extern bool atv_audio_overmodulated_en;
 extern unsigned int non_std_en;