Hello,
I have been working with AM3D regarding their virtual surround component. I had an issue where I could not compile with their components unless I disabled their “center speaker enhancement”. That is when they showed me how to change target of different components so that it would compile. However, this caused another issue where with their new scheme I could not vary the value of the Bass coefficient in another component (Power Bass). Yet I use to be able to vary it. Below is a brief description of what I have done.
Modified to allow center enhancement:
Control |
I2C Page |
I2C Reg |
VS_On_Off |
44 |
8 |
PowerBass |
8 |
12 |
FB_On_Off |
8 |
76 |
Master_Volume |
44 |
32 |
Audio_Tone_Mux |
44 |
52 |
Back to original design which doesn’t allow center enhancement:
Control |
I2C Page |
I2C Reg |
VS_On_Off |
44 |
56 |
PowerBass |
44 |
12 |
FB_On_Off |
44 |
100 |
Master_Volume |
44 |
104 |
Audio_Tone_Mux |
44 |
124 |
I am not sure why I have this issue but I am guessing that it is because I want to change this during run time I need to update Coefficient A and B for DAC (Page 44 , reg 1) and for ADC(page 8, reg 1). It appears that the scheme works for DAC but not ADC,. However given my limited experience with codecs it might be that there is another step involved when doing this for registers on page 8.
Here is the code snippet for varying the Bass Volume:
if(ParamMode == BASS_MODE)
{
BassIndex = Index;
if(BassIndex > 96)
BassIndex = 96;
AIC3254_I2C_PAGE_WRITE(BV_Reg, BV_Page, &(AIC3254_Bass[BassIndex/4]), 4); // Write Volume
AIC3254_I2C_WRITE(0x00, BV_Page);
AIC3254_I2C_WRITE(0x01, 0x05);
while(AIC3254_I2C_READ(0x01)&0x01); //Wait for D0 of Page BV_Page reg 1 to be zero
AIC3254_I2C_PAGE_WRITE(BV_Reg, BV_Page, &(AIC3254_Bass[BassIndex/4]), 4); // Write Voliume again
BassIndex = Index;
}
Where
BV_Page and BV_Reg is from the above tables dependent on which design I am using.
Have any of you ever seen this kind of issue?
Thanks,
Angelo
Modified Purepath design
Original Purepath design