mirror of
https://github.com/hardkernel/linux.git
synced 2026-04-01 18:53:02 +09:00
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:
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user