audio: atv source selected by atv demod [1/1]
authorZhe Wang <Zhe.Wang@amlogic.com>
Wed, 12 Jun 2019 06:28:10 +0000 (14:28 +0800)
committerZhe Wang <Zhe.Wang@amlogic.com>
Wed, 12 Jun 2019 06:38:46 +0000 (14:38 +0800)
PD#TV-6044, PD#TV-6047

Problem:
ATV sound output has noise when input non standard signal.

Solution:
release atv source select function to atv demod

Verify:
x301.

Change-Id: I96e58531150c3f20946ab636d701296328215686
Signed-off-by: Zhe Wang <Zhe.Wang@amlogic.com>
sound/soc/amlogic/auge/audio_utils.c
sound/soc/amlogic/auge/audio_utils.h
sound/soc/amlogic/auge/extn.c
sound/soc/amlogic/meson/audio_hw.c
sound/soc/amlogic/meson/audio_hw.h

index f5205a1..2d23226 100644 (file)
@@ -961,9 +961,14 @@ void fratv_enable(bool enable)
  * 0: select from ATV;
  * 1: select from ADEC;
  */
-void fratv_src_select(int src)
+void fratv_src_select(bool src)
 {
-       audiobus_update_bits(EE_AUDIO_FRATV_CTRL0, 0x1 << 20, (bool)src << 20);
+       audiobus_update_bits(EE_AUDIO_FRATV_CTRL0, 0x1 << 20, src << 20);
+}
+
+void fratv_LR_swap(bool swap)
+{
+       audiobus_update_bits(EE_AUDIO_FRATV_CTRL0, 0x1 << 19, swap << 19);
 }
 
 void cec_arc_enable(int src, bool enable)
index 2698181..a665e49 100644 (file)
@@ -27,7 +27,10 @@ extern void audio_locker_set(int enable);
 extern int audio_locker_get(void);
 
 extern void fratv_enable(bool enable);
-extern void fratv_src_select(int src);
+
+extern void fratv_src_select(bool src);
+
+extern void fratv_LR_swap(bool swap);
 
 extern void cec_arc_enable(int src, bool enable);
 #endif
index a5fd642..31a208a 100644 (file)
@@ -442,7 +442,10 @@ static int extn_dai_prepare(
                        msb = 15;
                        lsb = 0;
 
-                       fratv_src_select(1);
+                       /* commented it, selected by atv demod,
+                        * select 0 for non standard signal.
+                        */
+                       /* fratv_src_select(1); */
                } else if (src == FRHDMIRX) {
                        if (p_extn->hdmirx_mode) { /* PAO */
 
index 5c4361d..5f3b72e 100644 (file)
@@ -434,8 +434,10 @@ static void i2sin_fifo2_set_buf(u32 addr, u32 size, u32 src, u32 ch)
        );
 
        if (audio_in_source == 1) {
-               /* ATV from adec */
-               aml_audin_write(AUDIN_ATV_DEMOD_CTRL, 7);
+               /* commented it, selected by atv demod,
+                * select 0 for non standard signal.
+                */
+               /*aml_audin_write(AUDIN_ATV_DEMOD_CTRL, 7);*/
                aml_audin_update_bits(AUDIN_FIFO2_CTRL,
                                 (0x7 << AUDIN_FIFO_DIN_SEL),
                                 (ATV_ADEC << AUDIN_FIFO_DIN_SEL));
@@ -459,6 +461,22 @@ static void i2sin_fifo2_set_buf(u32 addr, u32 size, u32 src, u32 ch)
 
 }
 
+/* source select
+ * 0: select from ATV;
+ * 1: select from ADEC;
+ */
+void atv_src_select(bool src)
+{
+       aml_audin_update_bits(AUDIN_ATV_DEMOD_CTRL,
+                       0x3, (src << 1) && src);
+}
+
+void atv_LR_swap(bool swap)
+{
+       aml_audin_update_bits(AUDIN_ATV_DEMOD_CTRL,
+                       0x1 << 2, swap << 2);
+}
+
 static void spdifin_reg_set(void)
 {
        /* get clk81 clk_rate */
index b4d38b8..e69fca7 100644 (file)
@@ -198,6 +198,9 @@ extern bool is_audin_lr_invert_check(void);
 extern bool is_audbuf_gate_rm(void);
 extern void chipset_set_spdif_pao(void);
 
+extern void atv_src_select(bool src);
+extern void atv_LR_swap(bool swap);
+
 extern unsigned int IEC958_mode_codec;
 extern unsigned int clk81;