This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/TLV320AIC3106: Disable outpu DAC powering off after audio play.

Part Number: TLV320AIC3106
Other Parts Discussed in Thread: AM3358,

Tool/software: Linux

Hi,

I am using am3358 processor on a custom board with TLV320AIC3106 audio driver.

Audio plays fine but if playing is stopped for more than 5 seconds, the new play has an audible pop sound.

After scoping i2c line I can see that when playing is finished only two driver registers are modified - to mute left and right DACs.

After 5s 9 more registers are modified: all outputs are powered down, left and right DACs are powered down, PLL is disabled.

Because of this the new play causes a pop, as everything has to be powered up again.

I want to modify the driver so that it does not power down everything after tune is played.

Tracing through the source code it looks like functions in soc-dapm.c are called to cycle through widgets and change power state if needed.

I do not know where these functions are called from or how the widgets are set up to be powered down when needed.

I would either want to disable the call of a function that goes through the widgets 5s after playback.

Or modify the widget description so that they are not powered down when playback stops.

Does anyone have any suggestions or examples how to do this?

Kind regards,

Ugnius

  • Ugnius, 

    Is this the driver you are using?

    Unfortunately these drivers are quite dated and we do not have a software team supporting them. I can help you from a device configuration standpoint, but i am not well versed in the driver functionality. 

    best regards, 

    -Steve wilson 

  • Hi Steve,

    Yes this is the driver I am using.

    I think I managed to remove the unwanted sounds. I removed the widgets: 

    * LLOPM_CTRL

    * RLOPM_CTRL

    * HPLOUT_CTRL

    * HPROUT_CTRL

    * HPLCOM_CTRL

    * HPRCOM_CTRL

    And re-routed nodes that these widgets interconnected.

    I also removed the aic3x_set_power(codec, 0); function in SND_SOC_BIAS_OFF state.

    This now only disabled driver PLL when playback stops. And on the new playback no unwanted sounds are heard.

    Kind regards,

    Ugnius