audio: always on DDR arb [1/1]
authorShuai Li <shuai.li@amlogic.com>
Sat, 30 Mar 2019 06:35:53 +0000 (14:35 +0800)
committerZhe Wang <Zhe.Wang@amlogic.com>
Mon, 1 Apr 2019 09:47:11 +0000 (17:47 +0800)
PD#TV-3452

Problem:
Toddr stuck after a long time playback.

Solution:
For debug usage.

Verify:
No need.

Change-Id: Ibf4446148f5e028040d7d6527c7695f23f964f7c
Signed-off-by: Shuai Li <shuai.li@amlogic.com>
Signed-off-by: Zhe Wang <Zhe.Wang@amlogic.com>
sound/soc/amlogic/auge/ddr_mngr.c
sound/soc/amlogic/auge/ddr_mngr.h

index 48babca..7214df7 100644 (file)
@@ -96,8 +96,9 @@ static struct toddr *register_toddr_l(struct device *dev,
        }
        /* enable audio ddr arb */
        mask_bit = i;
-       aml_audiobus_update_bits(actrl, EE_AUDIO_ARB_CTRL,
-                       1<<31|1<<mask_bit, 1<<31|1<<mask_bit);
+       /*aml_audiobus_update_bits(actrl, EE_AUDIO_ARB_CTRL,*/
+       /*              (1 << 31)|(1 << mask_bit),*/
+       /*              (1 << 31)|(1 << mask_bit));*/
 
        to->dev = dev;
        to->actrl = actrl;
@@ -136,13 +137,14 @@ static int unregister_toddr_l(struct device *dev, void *data)
        /* disable audio ddr arb */
        mask_bit = i;
        actrl = to->actrl;
-       aml_audiobus_update_bits(actrl, EE_AUDIO_ARB_CTRL,
-                       1<<mask_bit, 0<<mask_bit);
+       /*aml_audiobus_update_bits(actrl, EE_AUDIO_ARB_CTRL,*/
+       /*              1 << mask_bit, 0 << mask_bit);*/
+
        /* no ddr active, disable arb switch */
        value = aml_audiobus_read(actrl, EE_AUDIO_ARB_CTRL) & 0x77;
-       if (value == 0)
-               aml_audiobus_update_bits(actrl, EE_AUDIO_ARB_CTRL,
-                               1<<31, 0<<31);
+       /*if (value == 0)*/
+       /*      aml_audiobus_update_bits(actrl, EE_AUDIO_ARB_CTRL,*/
+       /*                      1 << 31, 0 << 31);*/
 
        free_irq(to->irq, data);
        to->dev = NULL;
@@ -279,7 +281,7 @@ int aml_toddr_set_intrpt(struct toddr *to, unsigned int intrpt)
        reg = calc_toddr_address(EE_AUDIO_TODDR_A_INT_ADDR, reg_base);
        aml_audiobus_write(actrl, reg, intrpt);
        reg = calc_toddr_address(EE_AUDIO_TODDR_A_CTRL0, reg_base);
-       aml_audiobus_update_bits(actrl, reg, 0xff<<16, 4<<16);
+       aml_audiobus_update_bits(actrl, reg, 0xff << 16, 0x34 << 16);
 
        return 0;
 }
@@ -317,7 +319,7 @@ unsigned int aml_toddr_get_addr(struct toddr *to, enum status_sel sel)
        /* reset to default, current write addr */
        aml_audiobus_update_bits(actrl, reg_sel,
                0xf << 8,
-               0x0 << 8);
+               0x2 << 8);
 
        return addr;
 }
@@ -479,6 +481,40 @@ void aml_toddr_write(struct toddr *to, unsigned int val)
 
        aml_audiobus_write(actrl, reg, val);
 }
+
+unsigned int aml_toddr_read1(struct toddr *to)
+{
+       struct aml_audio_controller *actrl = to->actrl;
+       unsigned int reg_base = to->reg_base;
+       unsigned int reg;
+
+       reg = calc_toddr_address(EE_AUDIO_TODDR_A_CTRL1, reg_base);
+
+       return aml_audiobus_read(actrl, reg);
+}
+
+void aml_toddr_write1(struct toddr *to, unsigned int val)
+{
+       struct aml_audio_controller *actrl = to->actrl;
+       unsigned int reg_base = to->reg_base;
+       unsigned int reg;
+
+       reg = calc_toddr_address(EE_AUDIO_TODDR_A_CTRL1, reg_base);
+
+       aml_audiobus_write(actrl, reg, val);
+}
+
+unsigned int aml_toddr_read_status2(struct toddr *to)
+{
+       struct aml_audio_controller *actrl = to->actrl;
+       unsigned int reg_base = to->reg_base;
+       unsigned int reg;
+
+       reg = calc_toddr_address(EE_AUDIO_TODDR_A_STATUS2, reg_base);
+
+       return aml_audiobus_read(actrl, reg);
+}
+
 /* not for tl1 */
 static void aml_toddr_set_resample(struct toddr *to, bool enable)
 {
@@ -838,8 +874,9 @@ static struct frddr *register_frddr_l(struct device *dev,
 
        /* enable audio ddr arb */
        mask_bit = i + 4;
-       aml_audiobus_update_bits(actrl, EE_AUDIO_ARB_CTRL,
-                       1<<31|1<<mask_bit, 1<<31|1<<mask_bit);
+       /*aml_audiobus_update_bits(actrl, EE_AUDIO_ARB_CTRL,*/
+       /*              (1 << 31)|(1 << mask_bit),*/
+       /*              (1 << 31)|(1 << mask_bit));*/
 
        /* irqs request */
        ret = request_irq(from->irq, handler,
@@ -879,13 +916,14 @@ static int unregister_frddr_l(struct device *dev, void *data)
        /* disable audio ddr arb */
        mask_bit = i + 4;
        actrl = from->actrl;
-       aml_audiobus_update_bits(actrl, EE_AUDIO_ARB_CTRL,
-                       1<<mask_bit, 0<<mask_bit);
+       /*aml_audiobus_update_bits(actrl, EE_AUDIO_ARB_CTRL,*/
+       /*              1 << mask_bit, 0 << mask_bit);*/
+
        /* no ddr active, disable arb switch */
        value = aml_audiobus_read(actrl, EE_AUDIO_ARB_CTRL) & 0x77;
-       if (value == 0)
-               aml_audiobus_update_bits(actrl, EE_AUDIO_ARB_CTRL,
-                               1<<31, 0<<31);
+       /*if (value == 0)*/
+       /*      aml_audiobus_update_bits(actrl, EE_AUDIO_ARB_CTRL,*/
+       /*                      1 << 31, 0 << 31);*/
 
        free_irq(from->irq, data);
        from->dev = NULL;
index 4d87dce..c787662 100644 (file)
@@ -267,6 +267,9 @@ void aml_toddr_set_format(struct toddr *to, struct toddr_fmt *fmt);
 void aml_toddr_insert_chanum(struct toddr *to);
 unsigned int aml_toddr_read(struct toddr *to);
 void aml_toddr_write(struct toddr *to, unsigned int val);
+unsigned int aml_toddr_read1(struct toddr *to);
+void aml_toddr_write1(struct toddr *to, unsigned int val);
+unsigned int aml_toddr_read_status2(struct toddr *to);
 
 /* resample */
 void aml_set_resample(enum resample_idx id,