audio: always on DDR arb [1/1]

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>
This commit is contained in:
Shuai Li
2019-03-30 14:35:53 +08:00
committed by Zhe Wang
parent b506e92a3b
commit d6e5cf539b
2 changed files with 57 additions and 16 deletions

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

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